package nerdydog.domoHomeProd;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import nerdydog.domoHomeProd.db.ConfDatabase;
import nerdydog.domoHomeProd.db.ToDoDBAdapter;
import nerdydog.domoHomeProd.json.ParseJSON;
import nerdydog.domoHomeProd.object.Action;
import nerdydog.domoHomeProd.object.Actuator;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.text.Spannable;
import android.text.style.ClickableSpan;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnLongClickListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
public class ActionShowAdapter extends ArrayAdapter<Action>{
private ArrayList<Action> items;
String TAG = "ActionShowAdapter";
String actuatorName = "";
ProgressDialog dialogLoading;
Context c;
public ActionShowAdapter(Context context, int textViewResourceId, ArrayList<Action> items) {
super(context, textViewResourceId, items);
c = context;
this.items = items;
}
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater)c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.actionshowadapter, null);
}
Action a = items.get(position);
v.setTag(a);
if (a != null) {
//check if is a trigger
boolean is_trigger = false;
if(!a.getStarttime().equals(a.getEndtime())){
is_trigger = true;
}
TextView tt = (TextView) v.findViewById(R.id.info1actionshowadapter);
if(!is_trigger){
tt.setText(a.getName());
TextView tt2 = (TextView) v.findViewById(R.id.info2actionshowadapter);
tt2.setText("Triggered manually");
Button buttonAction = (Button) v.findViewById(R.id.buttonactionshowadapter);
buttonAction.setTag(a);
buttonAction.setOnClickListener(buttonActionClicked);
}else{
SimpleDateFormat formatter = new SimpleDateFormat("hh:mm dd-MM-yy");
tt.setText(a.getName());
if(a.getIs_trigger() == 1)
{
TextView tt2 = (TextView) v.findViewById(R.id.info2actionshowadapter);
tt2.setText(formatter.format(a.getEndtime()));
TextView tt3 = (TextView) v.findViewById(R.id.info3actionshowadapter);
tt3.setText(formatter.format(a.getStarttime()));
TextView tt4 = (TextView) v.findViewById(R.id.info4actionshowadapter);
tt4.setText("Days of the week: " + Utility.getScheduledDays(a.getScheduled()));
}
}
}
v.setOnClickListener(elementClicked);
v.setOnLongClickListener(onlong);
// long click listener
return v;
}
View.OnLongClickListener onlong = new View.OnLongClickListener() {
public boolean onLongClick(final View v) {
//set up dialog
//set up dialog
final Dialog dialog = new Dialog(c);
dialog.setContentView(R.layout.popupaction);
dialog.setTitle("Options available");
dialog.setCancelable(true);
TextView tv = (TextView)dialog.findViewById(R.id.textviewpopup);
tv.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
Action a = (Action) v.getTag();
Log.i(TAG, "click " + a.getId() + " parent " + a.getParent_id());
removeAction(a);
Intent iHome = new Intent(c, DomoHome.class);
c.startActivity(iHome);
}
});
//now that the dialog is set up, it's time to show it
dialog.show();
return false;
}
};
View.OnClickListener elementClicked = new View.OnClickListener() {
public void onClick(View arg0) {
// TODO Auto-generated method stub
Log.i(TAG, "elementClicked");
}
};
View.OnClickListener buttonActionClicked = new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
Log.i(TAG, "buttonActionClicked");
Action a = (Action)v.getTag();
Log.i(TAG, "buttonActionClicked " + a.getId() + " parent " + a.getParent_id());
ArrayList<Actuator> aryActuator = new ArrayList<Actuator>();
ToDoDBAdapter toDoDBAdapter = new ToDoDBAdapter(c);
toDoDBAdapter.open();
Log.i(TAG, "action id root " + a.getId());
ArrayList<Action> aryAction = new ArrayList<Action>();
aryAction.add(a);
ArrayList<Action> aryParkAction = toDoDBAdapter.getAllAction(ConfDatabase.ACTION_ROOT_ID + "=" + "?",
new String[]{Integer.toString(a.getId())},
null);
for(int i = 0; i < aryParkAction.size(); i++){
aryAction.add((Action)aryParkAction.get(i));
}
for(int i = 0; i < aryAction.size(); i++){
Action parkAction = aryAction.get(i);
int parkDomoId = parkAction.getId();
if(i==0){
//execute
Log.i(TAG, "domo id root " + parkAction.getDomo_id());
ArrayList<Actuator> aryParkActuator = toDoDBAdapter.getAllActuators(ConfDatabase.ACTUATOR_ID + "=" + "?",
new String[]{Integer.toString(parkAction.getDomo_id())},
null);
if(aryParkActuator.get(0)!=null)
aryActuator.add(aryParkActuator.get(0));
}else{
if(aryAction.get(i-1).getDomo_id() == parkAction.getParent_id()){
// do nect action
Log.i(TAG, "domo id " + parkAction.getDomo_id());
ArrayList<Actuator> aryParkActuator = toDoDBAdapter.getAllActuators(ConfDatabase.ACTUATOR_ID + "=" + "?",
new String[]{Integer.toString(parkAction.getDomo_id())},
null);
if(aryParkActuator.get(0)!=null)
aryActuator.add(aryParkActuator.get(0));
}
}
}
toDoDBAdapter.close();
Utility.runActuator(aryActuator);
}
};
private boolean removeAction(Action a){
ToDoDBAdapter toDoDBAdapter = new ToDoDBAdapter(c);
toDoDBAdapter.open();
ArrayList<Action> aryAction = toDoDBAdapter.getAllAction(ConfDatabase.ACTION_ROOT_ID + "=" + "?",
new String[]{Integer.toString(a.getId())},
null);
for( int i = 0; i < aryAction.size(); i++){
Action parkAction = aryAction.get(i);
if(parkAction!=null){
toDoDBAdapter.removeAction(parkAction.getId());
}
}
toDoDBAdapter.removeAction(a.getId());
toDoDBAdapter.close();
return false;
}
}