package com.spielpark.steve.bernieapp; import android.content.SharedPreferences; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; 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.Menu; import android.view.View; import android.widget.TextView; import com.spielpark.steve.bernieapp.fragments.BernRateFragment; import com.spielpark.steve.bernieapp.fragments.ConnectFragment; import com.spielpark.steve.bernieapp.fragments.FeedbackFragment; import com.spielpark.steve.bernieapp.fragments.IssuesFragment; import com.spielpark.steve.bernieapp.fragments.NavigationDrawerFragment; import com.spielpark.steve.bernieapp.fragments.NewsFragment; import com.spielpark.steve.bernieapp.fragments.OrganizeFragment; import com.spielpark.steve.bernieapp.fragments.SingleIssueFragment; import com.spielpark.steve.bernieapp.fragments.SingleNewsFragment; import com.spielpark.steve.bernieapp.tasks.NewsTask; import com.spielpark.steve.bernieapp.wrappers.Issue; import com.spielpark.steve.bernieapp.wrappers.NewsArticle; public class actMainPage extends ActionBarActivity implements NavigationDrawerFragment.NavigationDrawerCallbacks { /** * Fragment managing the behaviors, interactions and presentation of the navigation drawer. */ private NavigationDrawerFragment mNavigationDrawerFragment; private static SharedPreferences preferences; private static Fragment curFrag; /** * Used to store the last screen title. For use in {@link #restoreActionBar()}. */ private CharSequence mTitle; @Override protected void onStop() { super.onStop(); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.layout_main_page); mNavigationDrawerFragment = (NavigationDrawerFragment) getSupportFragmentManager().findFragmentById(R.id.navigation_drawer); mTitle = getTitle(); // Set up the drawer. mNavigationDrawerFragment.setUp( R.id.navigation_drawer, (DrawerLayout) findViewById(R.id.drawer_layout)); ActionBar bar = getSupportActionBar(); bar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#147FD7"))); mTitle = "News"; preferences = getApplicationContext().getSharedPreferences("bernie_app_prefs", 0); adjustNavBarText(0); } @Override public void onNavigationDrawerItemSelected(int position) { if (curFrag instanceof ConnectFragment) { ConnectFragment.cancelTask(); //cancel loading the map. Log.d("AMP - ONDIS", "Cancelled loading the map."); } // update the main content by replacing fragments FragmentManager fragmentManager = getSupportFragmentManager(); fragmentManager.popBackStack("base", FragmentManager.POP_BACK_STACK_INCLUSIVE); Fragment replacement; switch(position) { case 0 : { replacement = NewsFragment.getInstance(); break; } case 1 : { replacement = IssuesFragment.getInstance(); break; } case 2 : { replacement = OrganizeFragment.getInstance(); break; } case 3 : { replacement = ConnectFragment.getInstance(); break; } case 4 : { replacement = BernRateFragment.getInstance(); break; } case 5 : { replacement = FeedbackFragment.getInstance(); break; } default: { replacement = NewsFragment.getInstance(); } } if (replacement.isAdded()) return; adjustNavBarText(position); curFrag = replacement; onSectionAttached(++position); fragmentManager.beginTransaction() .replace(R.id.container, replacement) .commit(); } public void onSectionAttached(int number) { switch (number) { case 1: mTitle = getString(R.string.title_section1); break; case 2: mTitle = getString(R.string.title_section2); break; case 3: mTitle = getString(R.string.title_section3); break; case 4: mTitle = getString(R.string.title_section4); break; case 5: mTitle = getString(R.string.title_section5); break; case 6: mTitle = getString(R.string.title_section6); break; } } public void restoreActionBar() { ActionBar actionBar = getSupportActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); actionBar.setDisplayShowTitleEnabled(true); actionBar.setTitle(mTitle); } @Override public boolean onCreateOptionsMenu(Menu menu) { if (!mNavigationDrawerFragment.isDrawerOpen()) { restoreActionBar(); return true; } return super.onCreateOptionsMenu(menu); } @Override public void onBackPressed() { if (curFrag instanceof ConnectFragment) { ((ConnectFragment) curFrag).backPressed(); return; } else if (curFrag instanceof OrganizeFragment) { if (((OrganizeFragment) curFrag).canGoBack()) { return; } } if (getSupportFragmentManager().getBackStackEntryCount() == 0) { this.finish(); } else { getSupportFragmentManager().popBackStack("base", FragmentManager.POP_BACK_STACK_INCLUSIVE); } } public void loadEvent(NewsArticle e) { Fragment f = SingleNewsFragment.getInstance(e); FragmentManager manager = getSupportFragmentManager(); if (manager.getBackStackEntryCount() > 0) { manager.popBackStack(); } manager.beginTransaction().addToBackStack("base").replace(R.id.container, f).commit(); } public void loadIssue(Issue i) { Fragment f = SingleIssueFragment.newInstance(i); FragmentManager manager = getSupportFragmentManager(); if (manager.getBackStackEntryCount() > 0) { manager.popBackStack(); } manager.beginTransaction().addToBackStack("base").replace(R.id.container, f).commit(); } public SharedPreferences getPrefs() { return this.preferences; } public void loadHeaderArticle(View view) { if (NewsTask.getData() != null) { for (NewsArticle a : NewsTask.getData()) { if (a.getUrl().contains("press-release")) { this.loadEvent(a); break; } } } } public void adjustNavBarText(int selected) { TextView[] views = new TextView[] { (TextView) findViewById(R.id.newsTxt), (TextView) findViewById(R.id.issuesTxt), (TextView) findViewById(R.id.organizeTxt), (TextView) findViewById(R.id.connectTxt) }; for (int i = 0; i < views.length; i++) { TextView t = views[i]; if (t == null) { return; } if (i == selected) { t.setTextColor(Color.parseColor("#FFC207")); } else { t.setTextColor(Color.parseColor("#FFFFFF")); } } } public void switchPage(View view) { int selected = Integer.parseInt((String) view.getTag()); onNavigationDrawerItemSelected(selected); onSectionAttached(selected + 1); restoreActionBar(); adjustNavBarText(selected); NavigationDrawerFragment.setSelected(selected); } }