package it.angelic.soulissclient;
import android.app.AlertDialog;
import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
import it.angelic.soulissclient.adapters.SceneCommandListAdapter;
import it.angelic.soulissclient.helpers.AlertDialogHelper;
import it.angelic.soulissclient.helpers.ScenesDialogHelper;
import it.angelic.soulissclient.model.SoulissCommand;
import it.angelic.soulissclient.model.SoulissScene;
import it.angelic.soulissclient.model.db.SoulissDBHelper;
import it.angelic.soulissclient.util.FontAwesomeUtil;
import it.angelic.tagviewlib.SimpleTagViewUtils;
import static junit.framework.Assert.assertTrue;
public class SceneDetailActivity extends AbstractStatusedFragmentActivity {
private SoulissScene collected;
private SoulissDBHelper datasource;
private ListView listaComandiView;
// private boolean thru;
private SceneCommandListAdapter ta;
private TextView upda;
/**
* Riga grigia crea spazio
*
* @return
*/
private void createHeader() {
// nodoInfo.removeAllViews();
// titolo = (TextView) findViewById(R.id.TextViewNodeTitle);
//TextView tt = (TextView) findViewById(R.id.TextViewTypicals);
TextView health = (TextView) findViewById(R.id.TextViewHealth);
upda = (TextView) findViewById(R.id.TextViewNodeUpdate);
TextView aweIcon = (TextView) findViewById(R.id.scene_icon);
// titolo.setText(getString(R.string.scene) + " " +
// Constants.int2roman(collected.getNodeId()));
FontAwesomeUtil.prepareAwesomeFontAweTextView(this, aweIcon, SimpleTagViewUtils.getAwesomeNames(SceneDetailActivity.this).get(collected.getIconResourceId()));
//icon.setImageResource(collected.getIconResourceId());
// Animazione icona nodo
if (opzioni.getTextFx()) {
Animation a = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.scalerotale);
a.reset();
aweIcon.startAnimation(a);
}
upda.setText(collected.toString());
String strMeatFormat = getString(R.string.scene_subtitle);
health.setText(String.format(strMeatFormat, collected.getCommandArray().size()));
if (getSupportActionBar() != null) getSupportActionBar().setDisplayShowHomeEnabled(true);
}
@Override
public boolean onContextItemSelected(android.view.MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
SceneCommandListAdapter ada = (SceneCommandListAdapter) listaComandiView.getAdapter();
long arrayAdapterPosition = info.position;
final SoulissCommand todoItem = (SoulissCommand) ada.getItem((int) arrayAdapterPosition);
switch (item.getItemId()) {
case R.id.eliminaComando:
ScenesDialogHelper.removeCommandDialog(this, listaComandiView, datasource, collected, todoItem, opzioni);
return true;
case R.id.eseguiComando:
Toast.makeText(this, "TOIMPLEMENT", Toast.LENGTH_SHORT).show();
// nodesAdapter.notifyDataSetChanged();
// listaNodiView.invalidateViews();
return true;
default:
return super.onContextItemSelected(item);
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
opzioni = SoulissApp.getOpzioni();
// recuper nodo da extra
Bundle extras = getIntent().getExtras();
collected = (SoulissScene) extras.get("SCENA");
assertTrue("SCENA NULLO", collected != null);
if (opzioni.isLightThemeSelected())
setTheme(R.style.LightThemeSelector);
else
setTheme(R.style.DarkThemeSelector);
super.onCreate(savedInstanceState);
setTitle(getString(R.string.souliss_app_name) + " - " + getString(R.string.scene) + " "
+ Constants.int2roman(collected.getId()));
setContentView(R.layout.main_scenedetail);
// Backg. stuff
//SoulissApp.setBackground(findViewById(R.id.containerlista), getWindowManager());
// Testata, info scena
createHeader();
listaComandiView = (ListView) findViewById(R.id.ListViewListaScene);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
//fab.attachToListView(listaComandiView);
//SoulissApp.setBackground(findViewById(R.id.containerlistaScenes), getWindowManager());
//ADD NEW SCENE
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ScenesDialogHelper.executeSceneDialog(SceneDetailActivity.this, collected);
}
});
datasource = new SoulissDBHelper(this);
// datasource.open();
// typs = gottardo.toArray(typs);
registerForContextMenu(listaComandiView);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
android.view.MenuInflater inflater = getMenuInflater();
// Rinomina nodo e scelta icona
inflater.inflate(R.menu.scenes_commands_ctx_menu, menu);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.scenedetail_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
TextView icon = (TextView) findViewById(R.id.scene_icon);
switch (item.getItemId()) {
case R.id.Opzioni:
Intent settingsActivity = new Intent(getBaseContext(), PreferencesActivity.class);
startActivity(settingsActivity);
return true;
case R.id.AddScene:
//FrameLayout f1 = (FrameLayout) findViewById(android.R.id.custom);
ScenesDialogHelper.addSceneCommandDialog(SceneDetailActivity.this, listaComandiView, datasource, collected,
opzioni).show();
return true;
case R.id.CambiaIconaScena:
AlertDialog.Builder alert2 = AlertDialogHelper.chooseIconDialog(this, icon, null, datasource, collected);
alert2.show();
return true;
case R.id.RinominaScena:
AlertDialog.Builder alert = AlertDialogHelper.renameSoulissObjectDialog(this, upda, listaComandiView,
datasource, collected);
alert.show();
return true;
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();
// thru = opzioni.isSoulissReachable();
SoulissDBHelper.open();
ArrayList<SoulissCommand> gottardo = datasource.getSceneCommands(collected.getId());
SceneCommandListAdapter progsAdapter = new SceneCommandListAdapter(this, gottardo,
opzioni);
listaComandiView.setAdapter(progsAdapter);
listaComandiView.invalidateViews();
}
@Override
protected void onStart() {
//int versionNumber = Integer.valueOf(android.os.Build.VERSION.SDK_INT);
super.onStart();
setActionBarInfo(getString(R.string.scenes_title));
this.getSupportActionBar().setDisplayHomeAsUpEnabled(true);
opzioni.initializePrefs();
Bundle extras = getIntent().getExtras();
collected = (SoulissScene) extras.get("SCENA");
setActionBarInfo(collected == null ? getString(R.string.scenes_title) : collected.getNiceName());
createHeader();
// tipici dal DB
SoulissDBHelper.open();
listaComandiView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
// TODO exec single command ?
}
});
//listaComandiView.invalidateViews();
}
}