package com.jparkie.aizoban.views.activities; import android.content.Context; import android.content.res.Configuration; import android.os.Bundle; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.FrameLayout; import com.jparkie.aizoban.R; import com.jparkie.aizoban.presenters.MainPresenter; import com.jparkie.aizoban.presenters.MainPresenterImpl; import com.jparkie.aizoban.views.MainView; public class MainActivity extends BaseActivity implements MainView { public static final String TAG = MainActivity.class.getSimpleName(); public static final String POSITION_ARGUMENT_KEY = TAG + ":" + "PositionArgumentKey"; private MainPresenter mMainPresenter; private Toolbar mToolbar; private FrameLayout mMainLayout; private FrameLayout mNavigationLayout; private ActionBarDrawerToggle mDrawerToggle; private DrawerLayout mDrawerLayout; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mMainPresenter = new MainPresenterImpl(this); setContentView(R.layout.activity_main); mToolbar = (Toolbar)findViewById(R.id.mainToolbar); mMainLayout = (FrameLayout)findViewById(R.id.mainFragmentContainer); mNavigationLayout = (FrameLayout)findViewById(R.id.navigationFragmentContainer); mDrawerLayout = (DrawerLayout)findViewById(R.id.drawerLayout); mMainPresenter.initializeViews(); if (savedInstanceState != null) { mMainPresenter.restoreState(savedInstanceState); } else { mMainPresenter.initializeMainLayout(getIntent()); mMainPresenter.initializeNavigationLayout(); } } @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); if (mDrawerToggle != null) { mDrawerToggle.syncState(); } } @Override protected void onStart() { super.onStart(); mMainPresenter.registerForEvents(); } @Override protected void onStop() { mMainPresenter.unregisterForEvents(); super.onStop(); } @Override protected void onDestroy() { super.onDestroy(); mMainPresenter.destroyAllSubscriptions(); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); mMainPresenter.saveState(outState); } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); if (mDrawerToggle != null) { mDrawerToggle.onConfigurationChanged(newConfig); } } @Override public boolean onPrepareOptionsMenu(Menu menu) { if (mDrawerLayout != null) { if (mDrawerLayout.isDrawerOpen(mNavigationLayout)) { menu.clear(); } } return super.onPrepareOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { if (mDrawerToggle != null) { return mDrawerToggle.onOptionsItemSelected(item); } return super.onOptionsItemSelected(item); } @Override public void onBackPressed() { if (mDrawerLayout != null) { if (mDrawerLayout.isDrawerOpen(mNavigationLayout)) { mDrawerLayout.closeDrawer(mNavigationLayout); return; } } super.onBackPressed(); } // MainView: @Override public void initializeToolbar() { if (mToolbar != null) { mToolbar.setTitle(R.string.app_name); mToolbar.setBackgroundColor(getResources().getColor(R.color.primaryBlue500)); setSupportActionBar(mToolbar); } } @Override public void initializeDrawerLayout() { if (mDrawerLayout != null) { mDrawerToggle = new ActionBarDrawerToggle( this, mDrawerLayout, mToolbar, R.string.action_drawer_open, R.string.action_drawer_close ){ @Override public void onDrawerOpened(View drawerView) { super.onDrawerOpened(drawerView); invalidateOptionsMenu(); // Do Nothing. } @Override public void onDrawerClosed(View drawerView) { super.onDrawerClosed(drawerView); invalidateOptionsMenu(); // Do Nothing. } }; mDrawerToggle.setHomeAsUpIndicator(android.R.drawable.menu_frame); mDrawerLayout.setDrawerListener(mDrawerToggle); } } @Override public void closeDrawerLayout() { if (mDrawerLayout != null) { mDrawerLayout.closeDrawer(mNavigationLayout); } } @Override public Context getContext() { return this; } @Override public int getNavigationLayoutId() { return R.id.navigationFragmentContainer; } @Override public int getMainLayoutId() { return R.id.mainFragmentContainer; } }