MainActivity.java 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. package de.tudarmstadt.informatik.hostage.ui2.activity;
  2. import java.util.ArrayList;
  3. import android.app.ActionBar;
  4. import android.app.Activity;
  5. import android.app.Fragment;
  6. import android.app.FragmentManager;
  7. import android.content.Context;
  8. import android.content.Intent;
  9. import android.content.res.Configuration;
  10. import android.content.res.TypedArray;
  11. import android.os.Bundle;
  12. import android.support.v4.app.ActionBarDrawerToggle;
  13. import android.support.v4.widget.DrawerLayout;
  14. import android.view.MenuItem;
  15. import android.view.View;
  16. import android.widget.AdapterView;
  17. import android.widget.ListView;
  18. import de.tudarmstadt.informatik.hostage.R;
  19. import de.tudarmstadt.informatik.hostage.ui.LogFilter;
  20. import de.tudarmstadt.informatik.hostage.ui.ViewLogTable;
  21. import de.tudarmstadt.informatik.hostage.ui2.adapter.DrawerListAdapter;
  22. import de.tudarmstadt.informatik.hostage.ui2.fragment.HomeFragment;
  23. import de.tudarmstadt.informatik.hostage.ui2.fragment.ProfileManagerFragment;
  24. import de.tudarmstadt.informatik.hostage.ui2.fragment.RecordOverviewFragment;
  25. import de.tudarmstadt.informatik.hostage.ui2.fragment.opengl.ThreatIndicatorGLRenderer;
  26. import de.tudarmstadt.informatik.hostage.ui2.model.DrawerListItem;
  27. /**
  28. * @author Alexander Brakowski
  29. * @created 12.01.14 23:24
  30. */
  31. public class MainActivity extends Activity {
  32. private DrawerLayout mDrawerLayout;
  33. private ListView mDrawerList;
  34. private ActionBarDrawerToggle mDrawerToggle;
  35. private CharSequence mDrawerTitle;
  36. private CharSequence mTitle;
  37. public Fragment displayedFragment;
  38. private ArrayList<DrawerListItem> drawerItems;
  39. public static volatile Context context;
  40. @Override
  41. protected void onCreate(Bundle savedInstanceState) {
  42. super.onCreate(savedInstanceState);
  43. MainActivity.context = getApplicationContext();
  44. setContentView(R.layout.activity_drawer_main);
  45. ThreatIndicatorGLRenderer.assets = getAssets();
  46. ThreatIndicatorGLRenderer.setThreatLevel(0);
  47. // set background color
  48. TypedArray arr = getTheme().obtainStyledAttributes(
  49. new int[] { android.R.attr.colorBackground });
  50. ThreatIndicatorGLRenderer.setBackgroundColor(arr.getColor(0, 0xFFFFFF));
  51. arr.recycle();
  52. ActionBar actionBar = getActionBar();
  53. actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_TITLE
  54. | ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_HOME_AS_UP);
  55. mTitle = mDrawerTitle = getTitle();
  56. mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
  57. mDrawerList = (ListView) findViewById(R.id.left_drawer);
  58. drawerItems = new ArrayList<DrawerListItem>();
  59. drawerItems.add(new DrawerListItem(R.string.drawer_overview,
  60. R.drawable.ic_menu_home));
  61. drawerItems.add(new DrawerListItem(R.string.drawer_threat_map,
  62. R.drawable.ic_menu_mapmode));
  63. drawerItems.add(new DrawerListItem(R.string.drawer_records,
  64. R.drawable.ic_menu_gallery));
  65. drawerItems.add(new DrawerListItem(R.string.drawer_services,
  66. R.drawable.ic_menu_set_as));
  67. drawerItems.add(new DrawerListItem(R.string.drawer_profile_manager,
  68. R.drawable.ic_menu_set_as));
  69. drawerItems.add(new DrawerListItem(R.string.drawer_settings,
  70. R.drawable.ic_menu_preferences));
  71. drawerItems.add(new DrawerListItem(R.string.drawer_app_info,
  72. R.drawable.ic_menu_info_details));
  73. DrawerListAdapter listAdapter = new DrawerListAdapter(this, drawerItems);
  74. mDrawerList.setAdapter(listAdapter);
  75. mDrawerList.setOnItemClickListener(new DrawerItemClickListener());
  76. getActionBar().setDisplayHomeAsUpEnabled(true);
  77. getActionBar().setHomeButtonEnabled(true);
  78. mDrawerToggle = new ActionBarDrawerToggle(this, /* host Activity */
  79. mDrawerLayout, /* DrawerLayout object */
  80. R.drawable.ic_navigation_drawer, /*
  81. * nav drawer image to replace 'Up'
  82. * caret
  83. */
  84. R.string.drawer_open, /* "open drawer" description for accessibility */
  85. R.string.drawer_close /* "close drawer" description for accessibility */
  86. ) {
  87. public void onDrawerClosed(View view) {
  88. getActionBar().setTitle(mTitle);
  89. invalidateOptionsMenu(); // creates call to
  90. // onPrepareOptionsMenu()
  91. }
  92. public void onDrawerOpened(View drawerView) {
  93. getActionBar().setTitle(mDrawerTitle);
  94. invalidateOptionsMenu(); // creates call to
  95. // onPrepareOptionsMenu()
  96. }
  97. };
  98. mDrawerLayout.setDrawerListener(mDrawerToggle);
  99. if (savedInstanceState == null) {
  100. // on first time display view for first nav item
  101. displayView(0);
  102. }
  103. }
  104. @Override
  105. public boolean onOptionsItemSelected(MenuItem item) {
  106. // toggle nav drawer on selecting action bar app icon/title
  107. if (mDrawerToggle.onOptionsItemSelected(item)) {
  108. return true;
  109. }
  110. return super.onOptionsItemSelected(item);
  111. }
  112. @Override
  113. public void setTitle(CharSequence title) {
  114. mTitle = title;
  115. getActionBar().setTitle(mTitle);
  116. }
  117. /**
  118. * When using the ActionBarDrawerToggle, you must call it during
  119. * onPostCreate() and onConfigurationChanged()...
  120. */
  121. @Override
  122. protected void onPostCreate(Bundle savedInstanceState) {
  123. super.onPostCreate(savedInstanceState);
  124. // Sync the toggle state after onRestoreInstanceState has occurred.
  125. mDrawerToggle.syncState();
  126. }
  127. @Override
  128. public void onConfigurationChanged(Configuration newConfig) {
  129. super.onConfigurationChanged(newConfig);
  130. // Pass any configuration change to the drawer toggls
  131. mDrawerToggle.onConfigurationChanged(newConfig);
  132. }
  133. private void displayView(int position) {
  134. // update the main content by replacing fragments
  135. Fragment fragment = null;
  136. switch (position) {
  137. case 0:
  138. fragment = new HomeFragment();
  139. break;
  140. case 2:
  141. // LogFilter filter = new LogFilter();
  142. Intent intent = this.getIntent(); // new Intent(this,
  143. // ViewLogTable.class);
  144. intent.removeExtra(LogFilter.LOG_FILTER_INTENT_KEY);
  145. // intent.putExtra(LogFilter.LOG_FILTER_INTENT_KEY, null);
  146. fragment = new RecordOverviewFragment();
  147. break;
  148. case 4:
  149. fragment = new ProfileManagerFragment();
  150. break;
  151. default:
  152. break;
  153. }
  154. if (fragment != null) {
  155. this.displayedFragment = fragment;
  156. FragmentManager fragmentManager = getFragmentManager();
  157. fragmentManager.beginTransaction()
  158. .replace(R.id.content_frame, fragment).commit();
  159. // update selected item and title, then close the drawer
  160. mDrawerList.setItemChecked(position, true);
  161. mDrawerList.setSelection(position);
  162. setTitle(drawerItems.get(position).text);
  163. mDrawerLayout.closeDrawer(mDrawerList);
  164. }
  165. }
  166. private class DrawerItemClickListener implements
  167. ListView.OnItemClickListener {
  168. public void onItemClick(AdapterView<?> parent, View view, int position,
  169. long id) {
  170. displayView(position);
  171. }
  172. }
  173. public Fragment getDisplayedFragment() {
  174. return this.displayedFragment;
  175. }
  176. }