package net.kismetwireless.android.smarterwifimanager; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.content.res.Configuration; import android.net.Uri; import android.os.Bundle; import android.preference.PreferenceManager; import android.support.v4.app.ActionBarDrawerToggle; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBar; import android.support.v7.app.ActionBarActivity; import android.util.Log; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; import java.util.ArrayList; // Main icon color shifts // 00e8d5 b8b8b8 a40000 public class MainActivity extends ActionBarActivity { Context context; private static int PREFS_REQ = 1; private SmarterWifiServiceBinder serviceBinder; // private SmarterPagerAdapter pagerAdapter; // private ViewPager viewPager; private ActionBar actionBar; private ArrayList<Integer[]> drawerContent = new ArrayList<Integer[]>(); private DrawerLayout drawerLayout; private ListView drawerList; private ActionBarDrawerToggle drawerToggle; private DualDrawerListAdapter listAdapter; private FragmentMain mainFragment; @Override protected void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); context = this; SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); SharedPreferences.Editor e = prefs.edit(); e.putBoolean("everbeenrun", true); e.commit(); serviceBinder = new SmarterWifiServiceBinder(this); serviceBinder.doCallAndBindService(new SmarterWifiServiceBinder.BinderCallback() { @Override public void run(SmarterWifiServiceBinder b) { b.doUpdatePreferences(); } }); drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); drawerList = (ListView) findViewById(R.id.left_drawer); drawerContent.add(new Integer[] {R.string.nav_learned, R.drawable.ic_action_save}); drawerContent.add(new Integer[] {R.string.nav_ignore, R.drawable.ic_action_bad}); drawerContent.add(new Integer[] {R.string.nav_bluetooth, R.drawable.ic_action_bluetooth_connected}); drawerContent.add(new Integer[] {R.string.nav_time, R.drawable.ic_action_time}); listAdapter = new DualDrawerListAdapter(this, R.layout.drawer_list_item, drawerContent); drawerList.setAdapter(listAdapter); drawerList.setOnItemClickListener(new DrawerItemClickListener()); actionBar = getSupportActionBar(); actionBar.setDisplayHomeAsUpEnabled(true); // actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); // actionBar.setDisplayHomeAsUpEnabled(false); drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, R.drawable.ic_drawer, R.string.drawer_open, R.string.drawer_close) { /** Called when a drawer has settled in a completely closed state. */ public void onDrawerClosed(View view) { getActionBar().setTitle(getTitle()); invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() } /** Called when a drawer has settled in a completely open state. */ public void onDrawerOpened(View drawerView) { getActionBar().setTitle(getTitle()); invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() } }; // Set the drawer toggle as the DrawerListener drawerLayout.setDrawerListener(drawerToggle); if (savedInstanceState != null) { mainFragment = (FragmentMain) getSupportFragmentManager().findFragmentByTag("mainfragment"); } else if (findViewById(R.id.fragment_container) != null) { mainFragment = new FragmentMain(); mainFragment.setArguments(getIntent().getExtras()); getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, mainFragment, "mainfragment").commit(); } showNagCleanup(); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); } @Override public void onPause() { super.onPause(); } @Override public void onResume() { super.onResume(); } @Override public void onDestroy() { super.onDestroy(); if (serviceBinder != null) serviceBinder.doUnbindService(); } @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); // Sync the toggle state after onRestoreInstanceState has occurred. drawerToggle.syncState(); } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); drawerToggle.onConfigurationChanged(newConfig); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { if (drawerToggle.onOptionsItemSelected(item)) { return true; } if (item.getItemId() == R.id.action_settings) { startActivityForResult(new Intent(MainActivity.this, ActivityPrefs.class), PREFS_REQ); return true; } if (item.getItemId() == R.id.action_about) { showAbout(); return true; } return true; } /* public class SmarterTabsListener implements ActionBar.TabListener { public Fragment fragment; public SmarterTabsListener(Fragment fragment) { this.fragment = fragment; } @Override public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) { // ignore } @Override public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) { // show tab viewPager.setCurrentItem(tab.getPosition()); } @Override public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) { // hide } } public class SmarterPagerAdapter extends FragmentStatePagerAdapter { private List<Fragment> fragments = new ArrayList<Fragment>(); public SmarterPagerAdapter(FragmentManager fm, List<Fragment> frags) { super(fm); fragments = frags; } @Override public Fragment getItem(int i) { return fragments.get(i); } @Override public int getCount() { return fragments.size(); } } */ public void showAbout() { AlertDialog.Builder alert = new AlertDialog.Builder(context); WebView wv = new WebView(this); wv.loadUrl("file:///android_asset/html_no_copy/about.html"); wv.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { Uri uri = Uri.parse(url); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent); return true; } }); alert.setView(wv); alert.setNegativeButton("Close", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int id) { } }); alert.show(); } public void showNagCleanup() { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); if (prefs.getBoolean("nag_showed_cleanup2", false)) { return; } SharedPreferences.Editor e = prefs.edit(); e.putBoolean("nag_showed_cleanup2", true); e.commit(); AlertDialog.Builder alert = new AlertDialog.Builder(context); alert.setMessage(R.string.nag_tower_maintenance); alert.setPositiveButton(R.string.nag_tower_maintenance_prefs, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { startActivityForResult(new Intent(MainActivity.this, ActivityPrefs.class), PREFS_REQ); } }); alert.setNegativeButton(R.string.nag_tower_maintenance_cancel, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { } }); alert.show(); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == PREFS_REQ) { serviceBinder.doUpdatePreferences(); } } private class DrawerItemClickListener implements ListView.OnItemClickListener { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { Integer[] item = listAdapter.getItem(position); switch (item[0]) { case R.string.nav_learned: startActivity(new Intent(MainActivity.this, ActivitySsidLearned.class)); drawerLayout.closeDrawer(drawerList); break; case R.string.nav_ignore: startActivity(new Intent(MainActivity.this, ActivitySsidBlacklist.class)); drawerLayout.closeDrawer(drawerList); break; case R.string.nav_bluetooth: startActivity(new Intent(MainActivity.this, ActivityBluetoothBlacklist.class)); drawerLayout.closeDrawer(drawerList); break; case R.string.nav_time: startActivity(new Intent(MainActivity.this, ActivityTimeRange.class)); drawerLayout.closeDrawer(drawerList); break; } } } public class DualDrawerListAdapter extends ArrayAdapter<Integer[]> { private int layoutResourceId; public DualDrawerListAdapter(Context context, int textViewResourceId, ArrayList<Integer[]> items) { super(context, textViewResourceId, items); layoutResourceId = textViewResourceId; } @Override public View getView(int position, View convertView, ViewGroup parent) { try { final Integer[] entry = getItem(position); View v = null; if (convertView == null) { LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); v = inflater.inflate(layoutResourceId, null); } else { v = convertView; } TextView text1 = (TextView) v.findViewById(R.id.text1); ImageView img1 = (ImageView) v.findViewById(R.id.image1); text1.setText(getString(entry[0])); img1.setImageResource(entry[1]); return v; } catch (Exception ex) { Log.e("smarter", "error", ex); return null; } } } }