package org.iilab.pb; import android.content.ComponentName; import android.content.Intent; import android.content.pm.PackageManager; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.util.Log; import android.view.View; import android.widget.TextView; import android.widget.Toast; import org.iilab.pb.alert.PanicAlert; import org.iilab.pb.common.AppConstants; import org.iilab.pb.common.ApplicationSettings; import org.iilab.pb.data.PBDatabase; import org.iilab.pb.fragment.LanguageSettingsFragment; import org.iilab.pb.fragment.MainSetupAlertFragment; import org.iilab.pb.fragment.SetupCodeFragment; import org.iilab.pb.fragment.SetupContactsFragment; import org.iilab.pb.fragment.SetupMessageFragment; import org.iilab.pb.fragment.SimpleFragment; import org.iilab.pb.fragment.WarningFragment; import org.iilab.pb.model.Page; import org.iilab.pb.trigger.HardwareTriggerService; /** * Created by aoe on 2/15/14. */ public class MainActivity extends BaseFragmentActivity { TextView tvToastMessage; Page currentPage; String pageId; String selectedLang; Boolean flagRiseFromPause = false; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.root_layout); tvToastMessage = (TextView) findViewById(R.id.tv_toast); try { pageId = getIntent().getExtras().getString("page_id"); } catch (Exception e) { pageId = "home-not-configured"; e.printStackTrace(); } selectedLang = ApplicationSettings.getSelectedLanguage(this); Log.e("MainActivity.onCreate", "pageId = " + pageId); if(pageId.equals("home-not-configured")){ Log.e("??????????????", "Restarting the Wizard"); if((ApplicationSettings.isAlertActive(this))){ new PanicAlert(this).deActivate(); } ApplicationSettings.setWizardState(MainActivity.this, AppConstants.WIZARD_FLAG_HOME_NOT_CONFIGURED); changeAppIcontoPB(); // We're restarting the wizard so we deactivate the HardwareTriggerService stopService(new Intent(this, HardwareTriggerService.class)); Intent i = new Intent(MainActivity.this, WizardActivity.class); i.putExtra("page_id", pageId); startActivity(i); callFinishActivityReceiver(); Intent broadcastIntent = new Intent(); broadcastIntent.setAction("org.iilab.pb.RESTART_INSTALL"); sendBroadcast(broadcastIntent); finish(); return; } PBDatabase dbInstance = new PBDatabase(this); dbInstance.open(); currentPage = dbInstance.retrievePage(pageId, selectedLang); dbInstance.close(); if (currentPage == null) { Log.e(">>>>>>", "page = null"); Toast.makeText(this, "Still to be implemented.", Toast.LENGTH_SHORT).show(); AppConstants.PAGE_FROM_NOT_IMPLEMENTED = true; finish(); return; } else { FragmentManager fragmentManager = getSupportFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); Fragment fragment = null; if (currentPage.getType().equals("simple")) { tvToastMessage.setVisibility(View.INVISIBLE); fragment = new SimpleFragment().newInstance(pageId, AppConstants.FROM_MAIN_ACTIVITY); }else if (currentPage.getType().equals("warning")) { tvToastMessage.setVisibility(View.INVISIBLE); fragment = new WarningFragment().newInstance(pageId,AppConstants.FROM_MAIN_ACTIVITY); } else if (currentPage.getType().equals("modal")){ tvToastMessage.setVisibility(View.INVISIBLE); Intent i = new Intent(MainActivity.this, MainModalActivity.class); i.putExtra("page_id", pageId); // i.putExtra("parent_activity", AppConstants.FROM_MAIN_ACTIVITY); startActivity(i); finish(); return; } else { if (currentPage.getComponent().equals("contacts")) fragment = new SetupContactsFragment().newInstance(pageId, AppConstants.FROM_MAIN_ACTIVITY); else if (currentPage.getComponent().equals("message")) fragment = new SetupMessageFragment().newInstance(pageId, AppConstants.FROM_MAIN_ACTIVITY); else if (currentPage.getComponent().equals("code")) fragment = new SetupCodeFragment().newInstance(pageId, AppConstants.FROM_MAIN_ACTIVITY); else if (currentPage.getComponent().equals("alert")) fragment = new MainSetupAlertFragment().newInstance(pageId, AppConstants.FROM_MAIN_ACTIVITY); else if (currentPage.getComponent().equals("language")) fragment = new LanguageSettingsFragment().newInstance(pageId, AppConstants.FROM_MAIN_ACTIVITY); else fragment = new SimpleFragment().newInstance(pageId, AppConstants.FROM_MAIN_ACTIVITY); } fragmentTransaction.add(R.id.fragment_container, fragment); fragmentTransaction.commit(); } } private void changeAppIcontoPB() { Log.e("MainActivity.changeAppIcontoPB", ""); getPackageManager().setComponentEnabledSetting( new ComponentName("org.iilab.pb", "org.iilab.pb.HomeActivity-setup"), PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP); getPackageManager().setComponentEnabledSetting( new ComponentName("org.iilab.pb", "org.iilab.pb.HomeActivity-calculator"), PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); } @Override protected void onResume() { super.onResume(); Log.e("MainActivity.onResume", "pageId = " + pageId + " and flagRiseFromPause = " + flagRiseFromPause); /* Check-1 if this page is resumed from the page still not implemented, then we'll handle it here. If we don't do this check, then the resume procedure falls under Check-3 & execute that code snippet, which is not proper. */ if (AppConstants.PAGE_FROM_NOT_IMPLEMENTED) { Log.e("MainActivity.onResume", "returning from not-implemented page."); AppConstants.PAGE_FROM_NOT_IMPLEMENTED = false; return; } /* Check-2 if this page is resumed by navigating-back from the next page, then we'll handle it here. If we don't do this check, then the resume procedure falls under Check-3 & execute that code snippet, which is not proper. */ if (AppConstants.IS_BACK_BUTTON_PRESSED) { Log.e("MainActivity.onResume", "back button pressed"); AppConstants.IS_BACK_BUTTON_PRESSED = false; return; } if (flagRiseFromPause) { Intent i = new Intent(MainActivity.this, CalculatorActivity.class); startActivity(i); overridePendingTransition(R.anim.show_from_bottom, R.anim.hide_to_top); callFinishActivityReceiver(); finish(); return; } return; } @Override protected void onPause() { super.onPause(); Log.e("MainActivity.onPause", "."); Log.e("MainActivity.onPause", "flagRiseFromPause = " + true); flagRiseFromPause = true; } protected void onStop(){ super.onStop(); Log.e("MainActivity.onStop", "."); } @Override protected void onStart() { super.onStart(); // if(pageId.equals("home-not-configured")){ // Log.e("??????????????", "home-not-configured"); // ApplicationSettings.setWizardState(MainActivity.this, AppConstants.WIZARD_FLAG_HOME_NOT_CONFIGURED); // Intent i = new Intent(MainActivity.this, WizardActivity.class); // i.putExtra("page_id", "home-not-configured"); // startActivity(i); // } Log.e("MainActivity.onStart", "."); } @Override public void onBackPressed() { if(pageId.equals("home-ready")){ // don't go back // finish(); // startActivity(AppUtil.behaveAsHomeButton()); } else{ super.onBackPressed(); AppConstants.IS_BACK_BUTTON_PRESSED = true; } } }