package it.angelic.soulissclient;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.os.Looper;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import java.util.List;
import it.angelic.soulissclient.helpers.AlertDialogHelper;
import it.angelic.soulissclient.model.SoulissNode;
import it.angelic.soulissclient.model.SoulissTypical;
import it.angelic.soulissclient.model.db.SoulissDBHelper;
import it.angelic.soulissclient.model.typicals.SoulissTypical15;
import it.angelic.soulissclient.net.UDPHelper;
import static it.angelic.soulissclient.Constants.TAG;
import static junit.framework.Assert.assertTrue;
public class T15RGBIrActivity extends AbstractStatusedFragmentActivity {
private SoulissTypical collected;
@Override
protected void onCreate(Bundle savedInstanceState) {
// tema
if (opzioni.isLightThemeSelected())
setTheme(R.style.LightThemeSelector);
else
setTheme(R.style.DarkThemeSelector);
super.onCreate(savedInstanceState);
setContentView(R.layout.main_t15_irrgb);
if (!opzioni.isDbConfigured()) {
AlertDialogHelper.dbNotInitedDialog(this);
}
Button buttPlus = (Button) findViewById(R.id.buttonPlus);
Button buttMinus = (Button) findViewById(R.id.buttonMinus);
Button btOff = (Button) findViewById(R.id.buttonTurnOff);
Button btOn = (Button) findViewById(R.id.buttonTurnOn);
Button btWhite = (Button) findViewById(R.id.white);
Button btFlash = (Button) findViewById(R.id.flash);
Button btFade = (Button) findViewById(R.id.fade);
Button btShoot = (Button) findViewById(R.id.smooth);
Button btStrobo = (Button) findViewById(R.id.strobe);
Button btRed = (Button) findViewById(R.id.red);
Button btRed2 = (Button) findViewById(R.id.red2);
Button btRed3 = (Button) findViewById(R.id.red3);
Button btRed4 = (Button) findViewById(R.id.red4);
Button btRed5 = (Button) findViewById(R.id.red5);
Button btGreen = (Button) findViewById(R.id.green);
Button btGreen2 = (Button) findViewById(R.id.green2);
Button btGreen3 = (Button) findViewById(R.id.green3);
Button btGreen4 = (Button) findViewById(R.id.green4);
Button btGreen5 = (Button) findViewById(R.id.green5);
Button btBlu = (Button) findViewById(R.id.blue);
Button btBlu2 = (Button) findViewById(R.id.blue2);
Button btBlu3 = (Button) findViewById(R.id.blue3);
Button btBlu4 = (Button) findViewById(R.id.blue4);
Button btBlu5 = (Button) findViewById(R.id.blue5);
btOff.setTag(Constants.Typicals.Souliss_T1n_RGB_OffCmd);
btOn.setTag(Constants.Typicals.Souliss_T1n_RGB_OnCmd);
buttPlus.setTag(Constants.Typicals.Souliss_T_IrCom_RGB_bright_up);
buttMinus.setTag(Constants.Typicals.Souliss_T_IrCom_RGB_bright_down);
btWhite.setTag(Constants.Typicals.Souliss_T1n_RGB_W);
btFlash.setTag(Constants.Typicals.Souliss_T_IrCom_RGB_mode_flash);
btFade.setTag(Constants.Typicals.Souliss_T_IrCom_RGB_mode_fade);
btShoot.setTag(Constants.Typicals.Souliss_T_IrCom_RGB_mode_smooth);
btStrobo.setTag(Constants.Typicals.Souliss_T_IrCom_RGB_mode_strobe);
btRed.setTag(Constants.Typicals.Souliss_T1n_RGB_R);
btRed2.setTag(Constants.Typicals.Souliss_T1n_RGB_R2);
btRed3.setTag(Constants.Typicals.Souliss_T1n_RGB_R3);
btRed4.setTag(Constants.Typicals.Souliss_T1n_RGB_R4);
btRed5.setTag(Constants.Typicals.Souliss_T1n_RGB_R5);
btGreen.setTag(Constants.Typicals.Souliss_T1n_RGB_G);
btGreen2.setTag(Constants.Typicals.Souliss_T1n_RGB_G2);
btGreen3.setTag(Constants.Typicals.Souliss_T1n_RGB_G3);
btGreen4.setTag(Constants.Typicals.Souliss_T1n_RGB_G4);
btGreen5.setTag(Constants.Typicals.Souliss_T1n_RGB_G5);
btBlu.setTag(Constants.Typicals.Souliss_T1n_RGB_B);
btBlu2.setTag(Constants.Typicals.Souliss_T1n_RGB_B2);
btBlu3.setTag(Constants.Typicals.Souliss_T1n_RGB_B3);
btBlu4.setTag(Constants.Typicals.Souliss_T1n_RGB_B4);
btBlu5.setTag(Constants.Typicals.Souliss_T1n_RGB_B5);
SoulissDBHelper datasource = new SoulissDBHelper(this);
SoulissDBHelper.open();
Bundle extras = getIntent().getExtras();
collected = (SoulissTypical15) extras.get("TIPICO");
assertTrue("TIPICO NULLO", collected instanceof SoulissTypical15);
OnClickListener plus = new OnClickListener() {
public void onClick(View v) {
Short cmd = (Short) v.getTag();
assertTrue(cmd != null);
issueIrCommand(cmd);
}
};
buttPlus.setOnClickListener(plus);
buttMinus.setOnClickListener(plus);
btOff.setOnClickListener(plus);
btOn.setOnClickListener(plus);
btWhite.setOnClickListener(plus);
btFlash.setOnClickListener(plus);
btFade.setOnClickListener(plus);
btShoot.setOnClickListener(plus);
btStrobo.setOnClickListener(plus);
btRed.setOnClickListener(plus);
btRed2.setOnClickListener(plus);
btRed3.setOnClickListener(plus);
btRed4.setOnClickListener(plus);
btRed5.setOnClickListener(plus);
btGreen.setOnClickListener(plus);
btGreen2.setOnClickListener(plus);
btGreen3.setOnClickListener(plus);
btGreen4.setOnClickListener(plus);
btGreen5.setOnClickListener(plus);
btBlu.setOnClickListener(plus);
btBlu2.setOnClickListener(plus);
btBlu3.setOnClickListener(plus);
btBlu4.setOnClickListener(plus);
btBlu5.setOnClickListener(plus);
// upcast
// Integer status =
// Integer.valueOf(collected.getTypicalDTO().getOutput());
}
@Override
protected void onStart() {
super.onStart();
setActionBarInfo(collected.getNiceName());
// final ToggleButton tog = (ToggleButton)
// findViewById(R.id.toggleButton1);
this.getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
finish();
if (opzioni.isAnimationsEnabled())
overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_right);
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
protected void onResume() {
super.onResume();
SoulissDBHelper.open();
IntentFilter filtere = new IntentFilter();
filtere.addAction("it.angelic.soulissclient.GOT_DATA");
registerReceiver(datareceiver, filtere);
}
@Override
protected void onPause() {
super.onPause();
unregisterReceiver(datareceiver);
}
/**************************************************************************
* Souliss RGB light command Souliss OUTPUT Data is:
*
*
* INPUT data 'read' from GUI
**************************************************************************/
void issueIrCommand(final short val) {
Thread t = new Thread() {
public void run() {
Looper.prepare();
UDPHelper.issueSoulissCommand("" + collected.getParentNode().getNodeId(), ""
+ collected.getTypicalDTO().getSlot(), opzioni, "" + val);
}
};
t.start();
return;
}
// Aggiorna il feedback
private BroadcastReceiver datareceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
SoulissNode coll = collected.getParentNode();
Bundle extras = intent.getExtras();
Bundle vers = (Bundle) extras.get("NODES");
Log.d(TAG, "Detected data arrival: " + vers.size() + " nodes");
int howmany = extras.getInt("quantity");
// SoulissNode[] numversioni = new SoulissNode[(int) howmany];
int temp = howmany - 1;
while (temp >= 0) {
SoulissNode temrp = (SoulissNode) vers.getSerializable("" + temp);
temp--;
if (coll.getNodeId() == temrp.getNodeId()) {
// rinfresca padre
coll.setHealth(temrp.getHealth());
coll.setRefreshedAt(temrp.getRefreshedAt());
List<SoulissTypical> tips = temrp.getTypicals();
for (SoulissTypical soulissTypical : tips) {
if (soulissTypical.getSlot() == collected.getSlot()) {
collected = soulissTypical;
// collected.getTypicalDTO().setOutput(soulissTypical.getTypicalDTO().getOutput());
// collected.getTypicalDTO().setRefreshedAt(soulissTypical.getTypicalDTO().getRefreshedAt());
Log.i(Constants.TAG, "RGB data refreshed");
// TODO setta gli spinner
}
}// ciclo tipici
}
}// ciclo nodi
}
};
}