summaryrefslogtreecommitdiff
path: root/src/de/danoeh/antennapod/activity/MainActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/de/danoeh/antennapod/activity/MainActivity.java')
-rw-r--r--src/de/danoeh/antennapod/activity/MainActivity.java432
1 files changed, 0 insertions, 432 deletions
diff --git a/src/de/danoeh/antennapod/activity/MainActivity.java b/src/de/danoeh/antennapod/activity/MainActivity.java
deleted file mode 100644
index b7014dab2..000000000
--- a/src/de/danoeh/antennapod/activity/MainActivity.java
+++ /dev/null
@@ -1,432 +0,0 @@
-package de.danoeh.antennapod.activity;
-
-import android.content.Intent;
-import android.content.SharedPreferences;
-import android.content.res.Configuration;
-import android.content.res.TypedArray;
-import android.media.AudioManager;
-import android.os.AsyncTask;
-import android.os.Bundle;
-import android.os.Handler;
-import android.support.v4.app.ActionBarDrawerToggle;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentManager;
-import android.support.v4.app.FragmentTransaction;
-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.*;
-import android.widget.AdapterView;
-import android.widget.ListView;
-
-import org.apache.commons.lang3.Validate;
-
-import de.danoeh.antennapod.BuildConfig;
-import de.danoeh.antennapod.R;
-import de.danoeh.antennapod.adapter.NavListAdapter;
-import de.danoeh.antennapod.feed.EventDistributor;
-import de.danoeh.antennapod.feed.Feed;
-import de.danoeh.antennapod.fragment.*;
-import de.danoeh.antennapod.preferences.UserPreferences;
-import de.danoeh.antennapod.storage.DBReader;
-import de.danoeh.antennapod.util.StorageUtils;
-import de.danoeh.antennapod.util.menuhandler.NavDrawerActivity;
-
-import java.util.List;
-
-/**
- * The activity that is shown when the user launches the app.
- */
-public class MainActivity extends ActionBarActivity implements NavDrawerActivity{
- private static final String TAG = "MainActivity";
- private static final int EVENTS = EventDistributor.DOWNLOAD_HANDLED
- | EventDistributor.DOWNLOAD_QUEUED
- | EventDistributor.FEED_LIST_UPDATE
- | EventDistributor.UNREAD_ITEMS_UPDATE
- | EventDistributor.QUEUE_UPDATE;
-
- public static final String PREF_NAME = "MainActivityPrefs";
- public static final String PREF_IS_FIRST_LAUNCH = "prefMainActivityIsFirstLaunch";
-
- public static final String EXTRA_NAV_INDEX = "nav_index";
- public static final String EXTRA_NAV_TYPE = "nav_type";
- public static final String EXTRA_FRAGMENT_ARGS = "fragment_args";
-
- public static final int POS_NEW = 0,
- POS_QUEUE = 1,
- POS_DOWNLOADS = 2,
- POS_HISTORY = 3,
- POS_ADD = 4;
-
- private ExternalPlayerFragment externalPlayerFragment;
- private DrawerLayout drawerLayout;
-
- private ListView navList;
- private NavListAdapter navAdapter;
-
- private ActionBarDrawerToggle drawerToggle;
-
- private CharSequence drawerTitle;
- private CharSequence currentTitle;
-
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- setTheme(UserPreferences.getTheme());
- super.onCreate(savedInstanceState);
- supportRequestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
- StorageUtils.checkStorageAvailability(this);
- setContentView(R.layout.main);
- setVolumeControlStream(AudioManager.STREAM_MUSIC);
-
- drawerTitle = currentTitle = getTitle();
-
- drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
- navList = (ListView) findViewById(R.id.nav_list);
-
- TypedArray typedArray = obtainStyledAttributes(new int[]{R.attr.nav_drawer_toggle});
- drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, typedArray.getResourceId(0, 0), R.string.drawer_open, R.string.drawer_close) {
- @Override
- public void onDrawerOpened(View drawerView) {
- super.onDrawerOpened(drawerView);
- currentTitle = getSupportActionBar().getTitle();
- getSupportActionBar().setTitle(drawerTitle);
- supportInvalidateOptionsMenu();
- }
-
- @Override
- public void onDrawerClosed(View drawerView) {
- super.onDrawerClosed(drawerView);
- getSupportActionBar().setTitle(currentTitle);
- supportInvalidateOptionsMenu();
-
- }
- };
- typedArray.recycle();
-
- drawerLayout.setDrawerListener(drawerToggle);
- FragmentManager fm = getSupportFragmentManager();
-
- FragmentTransaction transaction = fm.beginTransaction();
-
- Fragment mainFragment = fm.findFragmentByTag("main");
- if (mainFragment != null) {
- transaction.replace(R.id.main_view, mainFragment);
- } else {
- loadFragment(NavListAdapter.VIEW_TYPE_NAV, POS_NEW, null);
- }
-
- externalPlayerFragment = new ExternalPlayerFragment();
- transaction.replace(R.id.playerFragment, externalPlayerFragment);
- transaction.commit();
-
- getSupportActionBar().setDisplayHomeAsUpEnabled(true);
- getSupportActionBar().setHomeButtonEnabled(true);
-
- navAdapter = new NavListAdapter(itemAccess, this);
- navList.setAdapter(navAdapter);
- navList.setOnItemClickListener(navListClickListener);
-
- checkFirstLaunch();
- }
-
- private void checkFirstLaunch() {
- SharedPreferences prefs = getSharedPreferences(PREF_NAME, MODE_PRIVATE);
- if (prefs.getBoolean(PREF_IS_FIRST_LAUNCH, true)) {
- new Handler().postDelayed(new Runnable() {
- @Override
- public void run() {
- drawerLayout.openDrawer(navList);
- }
- }, 1500);
-
- SharedPreferences.Editor edit = prefs.edit();
- edit.putBoolean(PREF_IS_FIRST_LAUNCH, false);
- edit.commit();
- }
- }
-
- public ActionBar getMainActivtyActionBar() {
- return getSupportActionBar();
- }
-
- public boolean isDrawerOpen() {
- return drawerLayout != null && navList != null && drawerLayout.isDrawerOpen(navList);
- }
-
- public List<Feed> getFeeds() {
- return (navDrawerData != null) ? navDrawerData.feeds : null;
- }
-
- private void loadFragment(int viewType, int relPos, Bundle args) {
- FragmentManager fragmentManager = getSupportFragmentManager();
- // clear back stack
- for (int i = 0; i < fragmentManager.getBackStackEntryCount(); i++) {
- fragmentManager.popBackStack();
- }
-
- FragmentTransaction fT = fragmentManager.beginTransaction();
- Fragment fragment = null;
- if (viewType == NavListAdapter.VIEW_TYPE_NAV) {
- switch (relPos) {
- case POS_NEW:
- fragment = new NewEpisodesFragment();
- break;
- case POS_QUEUE:
- fragment = new QueueFragment();
- break;
- case POS_DOWNLOADS:
- fragment = new DownloadsFragment();
- break;
- case POS_HISTORY:
- fragment = new PlaybackHistoryFragment();
- break;
- case POS_ADD:
- fragment = new AddFeedFragment();
- break;
-
- }
- currentTitle = getString(NavListAdapter.NAV_TITLES[relPos]);
- selectedNavListIndex = relPos;
-
- } else if (viewType == NavListAdapter.VIEW_TYPE_SUBSCRIPTION) {
- Feed feed = itemAccess.getItem(relPos);
- currentTitle = "";
- fragment = ItemlistFragment.newInstance(feed.getId());
- selectedNavListIndex = NavListAdapter.SUBSCRIPTION_OFFSET + relPos;
-
- }
- if (fragment != null) {
- if (args != null) {
- fragment.setArguments(args);
- }
- fT.replace(R.id.main_view, fragment, "main");
- fragmentManager.popBackStack();
- }
- fT.commit();
- getSupportActionBar().setTitle(currentTitle);
- if (navAdapter != null) {
- navAdapter.notifyDataSetChanged();
- }
- }
-
- public void loadNavFragment(int position, Bundle args) {
- loadFragment(NavListAdapter.VIEW_TYPE_NAV, position, args);
- }
-
- public void loadFeedFragment(long feedID) {
- if (navDrawerData != null) {
- for (int i = 0; i < navDrawerData.feeds.size(); i++) {
- if (navDrawerData.feeds.get(i).getId() == feedID) {
- loadFragment(NavListAdapter.VIEW_TYPE_SUBSCRIPTION, i, null);
- break;
- }
- }
- }
- }
-
- public void loadChildFragment(Fragment fragment) {
- Validate.notNull(fragment);
- FragmentManager fm = getSupportFragmentManager();
- fm.beginTransaction()
- .replace(R.id.main_view, fragment, "main")
- .addToBackStack(null)
- .commit();
- }
-
- private AdapterView.OnItemClickListener navListClickListener = new AdapterView.OnItemClickListener() {
- @Override
- public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
- int viewType = parent.getAdapter().getItemViewType(position);
- if (viewType != NavListAdapter.VIEW_TYPE_SECTION_DIVIDER && position != selectedNavListIndex) {
- int relPos = (viewType == NavListAdapter.VIEW_TYPE_NAV) ? position : position - NavListAdapter.SUBSCRIPTION_OFFSET;
- loadFragment(viewType, relPos, null);
- selectedNavListIndex = position;
- navAdapter.notifyDataSetChanged();
- }
- drawerLayout.closeDrawer(navList);
- }
- };
-
- @Override
- protected void onPostCreate(Bundle savedInstanceState) {
- super.onPostCreate(savedInstanceState);
- drawerToggle.syncState();
- if (savedInstanceState != null) {
- currentTitle = savedInstanceState.getString("title");
- if (!drawerLayout.isDrawerOpen(navList)) {
- getSupportActionBar().setTitle(currentTitle);
- }
- selectedNavListIndex = savedInstanceState.getInt("selectedNavIndex");
- }
- }
-
- @Override
- public void onConfigurationChanged(Configuration newConfig) {
- super.onConfigurationChanged(newConfig);
- drawerToggle.onConfigurationChanged(newConfig);
- }
-
- @Override
- protected void onSaveInstanceState(Bundle outState) {
- super.onSaveInstanceState(outState);
- outState.putString("title", getSupportActionBar().getTitle().toString());
- outState.putInt("selectedNavIndex", selectedNavListIndex);
-
- }
-
- @Override
- protected void onPause() {
- super.onPause();
- }
-
- @Override
- protected void onResume() {
- super.onResume();
- StorageUtils.checkStorageAvailability(this);
- EventDistributor.getInstance().register(contentUpdate);
-
- Intent intent = getIntent();
- if (navDrawerData != null && intent.hasExtra(EXTRA_NAV_INDEX) && intent.hasExtra(EXTRA_NAV_TYPE)) {
- handleNavIntent();
- }
-
- loadData();
- }
-
- @Override
- protected void onStop() {
- super.onStop();
- cancelLoadTask();
- EventDistributor.getInstance().unregister(contentUpdate);
- }
-
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- if (drawerToggle.onOptionsItemSelected(item)) {
- return true;
- }
- switch (item.getItemId()) {
- case R.id.show_preferences:
- startActivity(new Intent(this, PreferenceActivity.class));
- return true;
- default:
- return super.onOptionsItemSelected(item);
- }
- }
-
- @Override
- public boolean onPrepareOptionsMenu(Menu menu) {
- super.onPrepareOptionsMenu(menu);
- return true;
- }
-
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- super.onCreateOptionsMenu(menu);
- MenuInflater inflater = getMenuInflater();
- inflater.inflate(R.menu.main, menu);
- return true;
- }
-
- private DBReader.NavDrawerData navDrawerData;
- private AsyncTask<Void, Void, DBReader.NavDrawerData> loadTask;
- private int selectedNavListIndex = 0;
-
- private NavListAdapter.ItemAccess itemAccess = new NavListAdapter.ItemAccess() {
- @Override
- public int getCount() {
- if (navDrawerData != null) {
- return navDrawerData.feeds.size();
- } else {
- return 0;
- }
- }
-
- @Override
- public Feed getItem(int position) {
- if (navDrawerData != null && position < navDrawerData.feeds.size()) {
- return navDrawerData.feeds.get(position);
- } else {
- return null;
- }
- }
-
- @Override
- public int getSelectedItemIndex() {
- return selectedNavListIndex;
- }
-
- @Override
- public int getQueueSize() {
- return (navDrawerData != null) ? navDrawerData.queueSize : 0;
- }
-
- @Override
- public int getNumberOfUnreadItems() {
- return (navDrawerData != null) ? navDrawerData.numUnreadItems : 0;
- }
-
-
- };
-
- private void loadData() {
- cancelLoadTask();
- loadTask = new AsyncTask<Void, Void, DBReader.NavDrawerData>() {
- @Override
- protected DBReader.NavDrawerData doInBackground(Void... params) {
- return DBReader.getNavDrawerData(MainActivity.this);
- }
-
- @Override
- protected void onPostExecute(DBReader.NavDrawerData result) {
- super.onPostExecute(navDrawerData);
- boolean handleIntent = (navDrawerData == null);
-
- navDrawerData = result;
- navAdapter.notifyDataSetChanged();
-
- if (handleIntent) {
- handleNavIntent();
- }
- }
- };
- loadTask.execute();
- }
-
- private void cancelLoadTask() {
- if (loadTask != null) {
- loadTask.cancel(true);
- }
- }
-
- private EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() {
-
- @Override
- public void update(EventDistributor eventDistributor, Integer arg) {
- if ((EVENTS & arg) != 0) {
- if (BuildConfig.DEBUG)
- Log.d(TAG, "Received contentUpdate Intent.");
- loadData();
- }
- }
- };
-
- private void handleNavIntent() {
- Intent intent = getIntent();
- if (intent.hasExtra(EXTRA_NAV_INDEX) && intent.hasExtra(EXTRA_NAV_TYPE)) {
- int index = intent.getIntExtra(EXTRA_NAV_INDEX, 0);
- int type = intent.getIntExtra(EXTRA_NAV_TYPE, NavListAdapter.VIEW_TYPE_NAV);
- Bundle args = intent.getBundleExtra(EXTRA_FRAGMENT_ARGS);
- loadFragment(type, index, args);
- }
- setIntent(new Intent(MainActivity.this, MainActivity.class)); // to avoid handling the intent twice when the configuration changes
- }
-
- @Override
- protected void onNewIntent(Intent intent) {
- super.onNewIntent(intent);
- setIntent(intent);
- }
-}