package it.angelic.soulissclient.model.typicals; import android.content.Context; import android.support.annotation.NonNull; import android.support.v4.content.ContextCompat; import android.view.View; import android.view.View.OnClickListener; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; import java.util.ArrayList; import it.angelic.soulissclient.Constants; import it.angelic.soulissclient.R; import it.angelic.soulissclient.helpers.SoulissPreferenceHelper; import it.angelic.soulissclient.model.ISoulissCommand; import it.angelic.soulissclient.model.ISoulissTypical; import it.angelic.soulissclient.model.SoulissCommand; import it.angelic.soulissclient.model.SoulissTypical; import it.angelic.soulissclient.net.UDPHelper; import it.angelic.soulissclient.views.ListButton; public class SoulissTypical12DigitalOutputAuto extends SoulissTypical implements ISoulissTypical { /** * */ private static final long serialVersionUID = 4292781263370980816L; public SoulissTypical12DigitalOutputAuto(Context ctx, SoulissPreferenceHelper opts) { super(ctx, opts); } @Override public ArrayList<ISoulissCommand> getCommands(Context ctx) { // ritorna le bozze dei comandi, da riempire con la schermata addProgram ArrayList<ISoulissCommand> ret = new ArrayList<>(); SoulissCommand t = new SoulissCommand(this); t.setCommand(Constants.Typicals.Souliss_T1n_OnCmd); t.setSlot(typicalDTO.getSlot()); t.setNodeId(typicalDTO.getNodeId()); ret.add(t); SoulissCommand tr = new SoulissCommand(this); tr.setCommand(Constants.Typicals.Souliss_T1n_OffCmd); tr.setSlot(typicalDTO.getSlot()); tr.setNodeId(typicalDTO.getNodeId()); ret.add(tr); SoulissCommand tj = new SoulissCommand(this); tj.setCommand(Constants.Typicals.Souliss_T1n_ToogleCmd); tj.setSlot(typicalDTO.getSlot()); tj.setNodeId(typicalDTO.getNodeId()); ret.add(tj); SoulissCommand td = new SoulissCommand(this); td.setCommand(Constants.Typicals.Souliss_T1n_AutoCmd); td.setSlot(typicalDTO.getSlot()); td.setNodeId(typicalDTO.getNodeId()); ret.add(td); return ret; } @Override public String getOutputDesc() { if (typicalDTO.getOutput() == Constants.Typicals.Souliss_T1n_OnCoil) return context.getString(R.string.ON); else if (typicalDTO.getOutput() == Constants.Typicals.Souliss_T1n_OnCoil_Auto) return context.getString(R.string.ON) + " (AUTO)"; else if (typicalDTO.getOutput() == Constants.Typicals.Souliss_T1n_OffCoil) return context.getString(R.string.OFF); else if (typicalDTO.getOutput() == Constants.Typicals.Souliss_T1n_OffCoil_Auto) return "OFF (AUTO)"; else return "UNKNOWN"; } @Override public void setOutputDescView(@NonNull TextView textStatusVal) { textStatusVal.setText(getOutputDesc()); if (typicalDTO.getOutput() == Constants.Typicals.Souliss_T1n_OffCoil || "UNKNOWN".compareTo(getOutputDesc()) == 0 || typicalDTO.getOutput() == Constants.Typicals.Souliss_T1n_OffCoil_Auto) { textStatusVal.setTextColor(ContextCompat.getColor(context, R.color.std_red)); textStatusVal.setBackgroundResource(R.drawable.borderedbackoff); } else { textStatusVal.setTextColor(ContextCompat.getColor(context, R.color.std_green)); textStatusVal.setBackgroundResource(R.drawable.borderedbackon); } } /** * Ottiene il layout del pannello comandi * */ @Override public void getActionsLayout(Context ctx, LinearLayout cont) { cont.removeAllViews(); RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); cont.addView(getQuickActionTitle()); // cmd.setVisibility(View.GONE); final ListButton turnOnButton = new ListButton(ctx); turnOnButton.setText(ctx.getString(R.string.ON)); cont.addView(turnOnButton); final ListButton turnOffButton = new ListButton(ctx); turnOffButton.setText(ctx.getString(R.string.OFF)); cont.addView(turnOffButton); // disabilitazioni interlock if (typicalDTO.getOutput() == Constants.Typicals.Souliss_T1n_OnCoil || typicalDTO.getOutput() == Constants.Typicals.Souliss_T1n_OnCoil_Auto) { turnOnButton.setEnabled(false); } else { turnOffButton.setEnabled(false); } final ListButton tog = new ListButton(ctx); // final int tpos = position; //tog.setLayoutParams(lp); tog.setText("Auto"); cont.addView(tog); turnOnButton.setOnClickListener(new OnClickListener() { public void onClick(View v) { Thread t = new Thread() { public void run() { UDPHelper.issueSoulissCommand("" + getTypicalDTO().getNodeId(), "" + typicalDTO.getSlot(), prefs, String.valueOf(Constants.Typicals.Souliss_T1n_OnCmd)); } }; t.start(); } }); turnOffButton.setOnClickListener(new OnClickListener() { public void onClick(View v) { Thread t = new Thread() { public void run() { UDPHelper.issueSoulissCommand("" + getTypicalDTO().getNodeId(), "" + typicalDTO.getSlot(), prefs, String.valueOf(Constants.Typicals.Souliss_T1n_OffCmd)); } }; t.start(); } }); tog.setOnClickListener(new OnClickListener() { public void onClick(View v) { Thread t = new Thread() { public void run() { UDPHelper.issueSoulissCommand("" + getTypicalDTO().getNodeId(), "" + typicalDTO.getSlot(), prefs, String.valueOf(Constants.Typicals.Souliss_T1n_AutoCmd)); // cmd.setText("Souliss command sent"); } }; t.start(); } }); } }