summaryrefslogtreecommitdiff
path: root/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java')
-rw-r--r--app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java773
1 files changed, 0 insertions, 773 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java
deleted file mode 100644
index b7c7d86c7..000000000
--- a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java
+++ /dev/null
@@ -1,773 +0,0 @@
-package de.danoeh.antennapod.activity;
-
-import android.annotation.TargetApi;
-import android.app.ProgressDialog;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.content.SharedPreferences;
-import android.content.res.Configuration;
-import android.database.DataSetObserver;
-import android.os.Build;
-import android.os.Bundle;
-import android.os.Handler;
-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.ActionBarDrawerToggle;
-import android.support.v7.app.AlertDialog;
-import android.support.v7.widget.Toolbar;
-import android.util.Log;
-import android.util.TypedValue;
-import android.view.ContextMenu;
-import android.view.Menu;
-import android.view.MenuInflater;
-import android.view.MenuItem;
-import android.view.View;
-import android.widget.AdapterView;
-import android.widget.ListView;
-
-import com.bumptech.glide.Glide;
-
-import org.apache.commons.lang3.ArrayUtils;
-import org.apache.commons.lang3.Validate;
-
-import java.util.List;
-
-import de.danoeh.antennapod.R;
-import de.danoeh.antennapod.adapter.NavListAdapter;
-import de.danoeh.antennapod.core.asynctask.FeedRemover;
-import de.danoeh.antennapod.core.dialog.ConfirmationDialog;
-import de.danoeh.antennapod.core.event.ProgressEvent;
-import de.danoeh.antennapod.core.event.QueueEvent;
-import de.danoeh.antennapod.core.feed.EventDistributor;
-import de.danoeh.antennapod.core.feed.Feed;
-import de.danoeh.antennapod.core.preferences.PlaybackPreferences;
-import de.danoeh.antennapod.core.preferences.UserPreferences;
-import de.danoeh.antennapod.core.service.playback.PlaybackService;
-import de.danoeh.antennapod.core.storage.DBReader;
-import de.danoeh.antennapod.core.storage.DBWriter;
-import de.danoeh.antennapod.core.util.FeedItemUtil;
-import de.danoeh.antennapod.core.util.StorageUtils;
-import de.danoeh.antennapod.dialog.RatingDialog;
-import de.danoeh.antennapod.fragment.AddFeedFragment;
-import de.danoeh.antennapod.fragment.DownloadsFragment;
-import de.danoeh.antennapod.fragment.EpisodesFragment;
-import de.danoeh.antennapod.fragment.ExternalPlayerFragment;
-import de.danoeh.antennapod.fragment.ItemlistFragment;
-import de.danoeh.antennapod.fragment.PlaybackHistoryFragment;
-import de.danoeh.antennapod.fragment.QueueFragment;
-import de.danoeh.antennapod.fragment.SubscriptionFragment;
-import de.danoeh.antennapod.menuhandler.NavDrawerActivity;
-import de.danoeh.antennapod.preferences.PreferenceController;
-import de.greenrobot.event.EventBus;
-import rx.Observable;
-import rx.Subscription;
-import rx.android.schedulers.AndroidSchedulers;
-import rx.schedulers.Schedulers;
-
-/**
- * The activity that is shown when the user launches the app.
- */
-public class MainActivity extends CastEnabledActivity implements NavDrawerActivity {
-
- private static final String TAG = "MainActivity";
-
- private static final int EVENTS = EventDistributor.FEED_LIST_UPDATE
- | EventDistributor.UNREAD_ITEMS_UPDATE;
-
- public static final String PREF_NAME = "MainActivityPrefs";
- public static final String PREF_IS_FIRST_LAUNCH = "prefMainActivityIsFirstLaunch";
- public static final String PREF_LAST_FRAGMENT_TAG = "prefMainActivityLastFragmentTag";
-
- public static final String EXTRA_NAV_TYPE = "nav_type";
- public static final String EXTRA_NAV_INDEX = "nav_index";
- public static final String EXTRA_FRAGMENT_TAG = "fragment_tag";
- public static final String EXTRA_FRAGMENT_ARGS = "fragment_args";
- public static final String EXTRA_FEED_ID = "fragment_feed_id";
-
- public static final String SAVE_BACKSTACK_COUNT = "backstackCount";
- public static final String SAVE_TITLE = "title";
-
- public static final String[] NAV_DRAWER_TAGS = {
- QueueFragment.TAG,
- EpisodesFragment.TAG,
- SubscriptionFragment.TAG,
- DownloadsFragment.TAG,
- PlaybackHistoryFragment.TAG,
- AddFeedFragment.TAG,
- NavListAdapter.SUBSCRIPTION_LIST_TAG
- };
-
- private Toolbar toolbar;
- private ExternalPlayerFragment externalPlayerFragment;
- private DrawerLayout drawerLayout;
-
- private View navDrawer;
- private ListView navList;
- private NavListAdapter navAdapter;
- private int mPosition = -1;
-
- private ActionBarDrawerToggle drawerToggle;
-
- private CharSequence currentTitle;
-
- private ProgressDialog pd;
-
- private Subscription subscription;
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- setTheme(UserPreferences.getNoTitleTheme());
- super.onCreate(savedInstanceState);
- StorageUtils.checkStorageAvailability(this);
- setContentView(R.layout.main);
-
- toolbar = (Toolbar) findViewById(R.id.toolbar);
- setSupportActionBar(toolbar);
-
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
- findViewById(R.id.shadow).setVisibility(View.GONE);
- int elevation = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 4,
- getResources().getDisplayMetrics());
- getSupportActionBar().setElevation(elevation);
- }
-
- currentTitle = getTitle();
-
- drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
- navList = (ListView) findViewById(R.id.nav_list);
- navDrawer = findViewById(R.id.nav_layout);
-
- drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, R.string.drawer_open, R.string.drawer_close);
- if (savedInstanceState != null) {
- int backstackCount = savedInstanceState.getInt(SAVE_BACKSTACK_COUNT, 0);
- drawerToggle.setDrawerIndicatorEnabled(backstackCount == 0);
- }
- drawerLayout.setDrawerListener(drawerToggle);
-
- final FragmentManager fm = getSupportFragmentManager();
-
- fm.addOnBackStackChangedListener(() -> {
- drawerToggle.setDrawerIndicatorEnabled(fm.getBackStackEntryCount() == 0);
- });
-
- getSupportActionBar().setDisplayHomeAsUpEnabled(true);
- getSupportActionBar().setHomeButtonEnabled(true);
-
- navAdapter = new NavListAdapter(itemAccess, this);
- navList.setAdapter(navAdapter);
- navList.setOnItemClickListener(navListClickListener);
- navList.setOnItemLongClickListener(newListLongClickListener);
- registerForContextMenu(navList);
-
- navAdapter.registerDataSetObserver(new DataSetObserver() {
- @Override
- public void onChanged() {
- selectedNavListIndex = getSelectedNavListIndex();
- }
- });
-
- findViewById(R.id.nav_settings).setOnClickListener(v -> {
- drawerLayout.closeDrawer(navDrawer);
- startActivity(new Intent(MainActivity.this, PreferenceController.getPreferenceActivity()));
- });
-
- FragmentTransaction transaction = fm.beginTransaction();
-
- Fragment mainFragment = fm.findFragmentByTag("main");
- if (mainFragment != null) {
- transaction.replace(R.id.main_view, mainFragment);
- } else {
- String lastFragment = getLastNavFragment();
- if (ArrayUtils.contains(NAV_DRAWER_TAGS, lastFragment)) {
- loadFragment(lastFragment, null);
- } else {
- try {
- loadFeedFragmentById(Integer.parseInt(lastFragment), null);
- } catch (NumberFormatException e) {
- // it's not a number, this happens if we removed
- // a label from the NAV_DRAWER_TAGS
- // give them a nice default...
- loadFragment(QueueFragment.TAG, null);
- }
- }
- }
- externalPlayerFragment = new ExternalPlayerFragment();
- transaction.replace(R.id.playerFragment, externalPlayerFragment, ExternalPlayerFragment.TAG);
- transaction.commit();
-
- checkFirstLaunch();
- }
-
- private void saveLastNavFragment(String tag) {
- Log.d(TAG, "saveLastNavFragment(tag: " + tag +")");
- SharedPreferences prefs = getSharedPreferences(PREF_NAME, MODE_PRIVATE);
- SharedPreferences.Editor edit = prefs.edit();
- if(tag != null) {
- edit.putString(PREF_LAST_FRAGMENT_TAG, tag);
- } else {
- edit.remove(PREF_LAST_FRAGMENT_TAG);
- }
- edit.commit();
- }
-
- private String getLastNavFragment() {
- SharedPreferences prefs = getSharedPreferences(PREF_NAME, MODE_PRIVATE);
- String lastFragment = prefs.getString(PREF_LAST_FRAGMENT_TAG, QueueFragment.TAG);
- Log.d(TAG, "getLastNavFragment() -> " + lastFragment);
- return lastFragment;
- }
-
- private void checkFirstLaunch() {
- SharedPreferences prefs = getSharedPreferences(PREF_NAME, MODE_PRIVATE);
- if (prefs.getBoolean(PREF_IS_FIRST_LAUNCH, true)) {
- new Handler().postDelayed(() -> drawerLayout.openDrawer(navDrawer), 1500);
-
- // for backward compatibility, we only change defaults for fresh installs
- UserPreferences.setUpdateInterval(12);
-
- SharedPreferences.Editor edit = prefs.edit();
- edit.putBoolean(PREF_IS_FIRST_LAUNCH, false);
- edit.commit();
- }
- }
-
- public void showDrawerPreferencesDialog() {
- final List<String> hiddenDrawerItems = UserPreferences.getHiddenDrawerItems();
- String[] navLabels = new String[NAV_DRAWER_TAGS.length];
- final boolean[] checked = new boolean[NAV_DRAWER_TAGS.length];
- for (int i = 0; i < NAV_DRAWER_TAGS.length; i++) {
- String tag = NAV_DRAWER_TAGS[i];
- navLabels[i] = navAdapter.getLabel(tag);
- if (!hiddenDrawerItems.contains(tag)) {
- checked[i] = true;
- }
- }
-
- AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
- builder.setTitle(R.string.drawer_preferences);
- builder.setMultiChoiceItems(navLabels, checked, (dialog, which, isChecked) -> {
- if (isChecked) {
- hiddenDrawerItems.remove(NAV_DRAWER_TAGS[which]);
- } else {
- hiddenDrawerItems.add(NAV_DRAWER_TAGS[which]);
- }
- });
- builder.setPositiveButton(R.string.confirm_label, (dialog, which) -> {
- UserPreferences.setHiddenDrawerItems(hiddenDrawerItems);
- });
- builder.setNegativeButton(R.string.cancel_label, null);
- builder.create().show();
- }
-
- public boolean isDrawerOpen() {
- return drawerLayout != null && navDrawer != null && drawerLayout.isDrawerOpen(navDrawer);
- }
-
- public List<Feed> getFeeds() {
- return (navDrawerData != null) ? navDrawerData.feeds : null;
- }
-
- public void loadFragment(int index, Bundle args) {
- Log.d(TAG, "loadFragment(index: " + index + ", args: " + args + ")");
- if (index < navAdapter.getSubscriptionOffset()) {
- String tag = navAdapter.getTags().get(index);
- loadFragment(tag, args);
- } else {
- int pos = index - navAdapter.getSubscriptionOffset();
- loadFeedFragmentByPosition(pos, args);
- }
- }
-
- public void loadFragment(String tag, Bundle args) {
- Log.d(TAG, "loadFragment(tag: " + tag + ", args: " + args + ")");
- Fragment fragment = null;
- switch (tag) {
- case QueueFragment.TAG:
- fragment = new QueueFragment();
- break;
- case EpisodesFragment.TAG:
- fragment = new EpisodesFragment();
- break;
- case DownloadsFragment.TAG:
- fragment = new DownloadsFragment();
- break;
- case PlaybackHistoryFragment.TAG:
- fragment = new PlaybackHistoryFragment();
- break;
- case AddFeedFragment.TAG:
- fragment = new AddFeedFragment();
- break;
- case SubscriptionFragment.TAG:
- SubscriptionFragment subscriptionFragment = new SubscriptionFragment();
- fragment = subscriptionFragment;
- break;
- default:
- // default to the queue
- tag = QueueFragment.TAG;
- fragment = new QueueFragment();
- args = null;
- break;
- }
- currentTitle = navAdapter.getLabel(tag);
- getSupportActionBar().setTitle(currentTitle);
- saveLastNavFragment(tag);
- if (args != null) {
- fragment.setArguments(args);
- }
- loadFragment(fragment);
- }
-
- private void loadFeedFragmentByPosition(int relPos, Bundle args) {
- if(relPos < 0) {
- return;
- }
- Feed feed = itemAccess.getItem(relPos);
- loadFeedFragmentById(feed.getId(), args);
- }
-
- public void loadFeedFragmentById(long feedId, Bundle args) {
- Fragment fragment = ItemlistFragment.newInstance(feedId);
- if(args != null) {
- fragment.setArguments(args);
- }
- saveLastNavFragment(String.valueOf(feedId));
- currentTitle = "";
- getSupportActionBar().setTitle(currentTitle);
- loadFragment(fragment);
- }
-
- private void loadFragment(Fragment fragment) {
- FragmentManager fragmentManager = getSupportFragmentManager();
- // clear back stack
- for (int i = 0; i < fragmentManager.getBackStackEntryCount(); i++) {
- fragmentManager.popBackStack();
- }
- FragmentTransaction t = fragmentManager.beginTransaction();
- t.replace(R.id.main_view, fragment, "main");
- fragmentManager.popBackStack();
- // TODO: we have to allow state loss here
- // since this function can get called from an AsyncTask which
- // could be finishing after our app has already committed state
- // and is about to get shutdown. What we *should* do is
- // not commit anything in an AsyncTask, but that's a bigger
- // change than we want now.
- t.commitAllowingStateLoss();
- if (navAdapter != null) {
- navAdapter.notifyDataSetChanged();
- }
- }
-
- public void loadChildFragment(Fragment fragment) {
- Validate.notNull(fragment);
- FragmentManager fm = getSupportFragmentManager();
- fm.beginTransaction()
- .replace(R.id.main_view, fragment, "main")
- .addToBackStack(null)
- .commit();
- }
-
- public void dismissChildFragment() {
- getSupportFragmentManager().popBackStack();
- }
-
- private int getSelectedNavListIndex() {
- String currentFragment = getLastNavFragment();
- if(currentFragment == null) {
- // should not happen, but better safe than sorry
- return -1;
- }
- int tagIndex = navAdapter.getTags().indexOf(currentFragment);
- if(tagIndex >= 0) {
- return tagIndex;
- } else if(ArrayUtils.contains(NAV_DRAWER_TAGS, currentFragment)) {
- // the fragment was just hidden
- return -1;
- } else { // last fragment was not a list, but a feed
- long feedId = Long.parseLong(currentFragment);
- if (navDrawerData != null) {
- List<Feed> feeds = navDrawerData.feeds;
- for (int i = 0; i < feeds.size(); i++) {
- if (feeds.get(i).getId() == feedId) {
- return i + navAdapter.getSubscriptionOffset();
- }
- }
- }
- return -1;
- }
- }
-
- 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) {
- loadFragment(position, null);
- }
- drawerLayout.closeDrawer(navDrawer);
- }
- };
-
- private AdapterView.OnItemLongClickListener newListLongClickListener = new AdapterView.OnItemLongClickListener() {
- @Override
- public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
- if(position < navAdapter.getTags().size()) {
- showDrawerPreferencesDialog();
- return true;
- } else {
- mPosition = position;
- return false;
- }
- }
- };
-
-
- @Override
- protected void onPostCreate(Bundle savedInstanceState) {
- super.onPostCreate(savedInstanceState);
- drawerToggle.syncState();
- if (savedInstanceState != null) {
- currentTitle = savedInstanceState.getString(SAVE_TITLE);
- if (!drawerLayout.isDrawerOpen(navDrawer)) {
- getSupportActionBar().setTitle(currentTitle);
- }
- selectedNavListIndex = getSelectedNavListIndex();
- }
- }
-
- @Override
- public void onConfigurationChanged(Configuration newConfig) {
- super.onConfigurationChanged(newConfig);
- drawerToggle.onConfigurationChanged(newConfig);
- }
-
- @Override
- protected void onSaveInstanceState(Bundle outState) {
- super.onSaveInstanceState(outState);
- outState.putString(SAVE_TITLE, getSupportActionBar().getTitle().toString());
- outState.putInt(SAVE_BACKSTACK_COUNT, getSupportFragmentManager().getBackStackEntryCount());
- }
-
- @Override
- public void onStart() {
- super.onStart();
- EventDistributor.getInstance().register(contentUpdate);
- EventBus.getDefault().register(this);
- RatingDialog.init(this);
- }
-
- @Override
- protected void onPause() {
- super.onPause();
- }
-
- @Override
- protected void onResume() {
- super.onResume();
- StorageUtils.checkStorageAvailability(this);
-
- Intent intent = getIntent();
- if (intent.hasExtra(EXTRA_FEED_ID) ||
- (navDrawerData != null && intent.hasExtra(EXTRA_NAV_TYPE) &&
- (intent.hasExtra(EXTRA_NAV_INDEX) || intent.hasExtra(EXTRA_FRAGMENT_TAG)))) {
- handleNavIntent();
- }
- loadData();
- RatingDialog.check();
- }
-
- @Override
- protected void onStop() {
- super.onStop();
- EventDistributor.getInstance().unregister(contentUpdate);
- EventBus.getDefault().unregister(this);
- if(subscription != null) {
- subscription.unsubscribe();
- }
- if(pd != null) {
- pd.dismiss();
- }
- }
-
-
- @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
- @Override
- public void onTrimMemory(int level) {
- super.onTrimMemory(level);
- Glide.get(this).trimMemory(level);
- }
-
- @Override
- public void onLowMemory() {
- super.onLowMemory();
- Glide.get(this).clearMemory();
- }
-
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- boolean retVal = super.onCreateOptionsMenu(menu);
- switch (getLastNavFragment()) {
- case QueueFragment.TAG:
- case EpisodesFragment.TAG:
- requestCastButton(MenuItem.SHOW_AS_ACTION_IF_ROOM);
- return retVal;
- case DownloadsFragment.TAG:
- case PlaybackHistoryFragment.TAG:
- case AddFeedFragment.TAG:
- case SubscriptionFragment.TAG:
- return retVal;
- default:
- requestCastButton(MenuItem.SHOW_AS_ACTION_NEVER);
- return retVal;
- }
-
- }
-
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- if (drawerToggle.onOptionsItemSelected(item)) {
- return true;
- } else if (item.getItemId() == android.R.id.home) {
- if (getSupportFragmentManager().getBackStackEntryCount() > 0) {
- dismissChildFragment();
- }
- return true;
- } else {
- return super.onOptionsItemSelected(item);
- }
- }
-
-
- @Override
- public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
- super.onCreateContextMenu(menu, v, menuInfo);
- if(v.getId() != R.id.nav_list) {
- return;
- }
- AdapterView.AdapterContextMenuInfo adapterInfo = (AdapterView.AdapterContextMenuInfo) menuInfo;
- int position = adapterInfo.position;
- if(position < navAdapter.getSubscriptionOffset()) {
- return;
- }
- MenuInflater inflater = getMenuInflater();
- inflater.inflate(R.menu.nav_feed_context, menu);
- Feed feed = navDrawerData.feeds.get(position - navAdapter.getSubscriptionOffset());
- menu.setHeaderTitle(feed.getTitle());
- // episodes are not loaded, so we cannot check if the podcast has new or unplayed ones!
- }
-
-
- @Override
- public boolean onContextItemSelected(MenuItem item) {
- final int position = mPosition;
- mPosition = -1; // reset
- if(position < 0) {
- return false;
- }
- Feed feed = navDrawerData.feeds.get(position - navAdapter.getSubscriptionOffset());
- switch(item.getItemId()) {
- case R.id.mark_all_seen_item:
- DBWriter.markFeedSeen(feed.getId());
- return true;
- case R.id.mark_all_read_item:
- DBWriter.markFeedRead(feed.getId());
- return true;
- case R.id.remove_item:
- final FeedRemover remover = new FeedRemover(this, feed) {
- @Override
- protected void onPostExecute(Void result) {
- super.onPostExecute(result);
- if(getSelectedNavListIndex() == position) {
- loadFragment(EpisodesFragment.TAG, null);
- }
- }
- };
- ConfirmationDialog conDialog = new ConfirmationDialog(this,
- R.string.remove_feed_label,
- R.string.feed_delete_confirmation_msg) {
- @Override
- public void onConfirmButtonPressed(
- DialogInterface dialog) {
- dialog.dismiss();
- long mediaId = PlaybackPreferences.getCurrentlyPlayingFeedMediaId();
- if (mediaId > 0 &&
- FeedItemUtil.indexOfItemWithMediaId(feed.getItems(), mediaId) >= 0) {
- Log.d(TAG, "Currently playing episode is about to be deleted, skipping");
- remover.skipOnCompletion = true;
- int playerStatus = PlaybackPreferences.getCurrentPlayerStatus();
- if(playerStatus == PlaybackPreferences.PLAYER_STATUS_PLAYING) {
- sendBroadcast(new Intent(
- PlaybackService.ACTION_PAUSE_PLAY_CURRENT_EPISODE));
- }
- }
- remover.executeAsync();
- }
- };
- conDialog.createNewDialog().show();
- return true;
- default:
- return super.onContextItemSelected(item);
- }
- }
-
- @Override
- public void onBackPressed() {
- if(isDrawerOpen()) {
- drawerLayout.closeDrawer(navDrawer);
- } else {
- super.onBackPressed();
- }
- }
-
- private DBReader.NavDrawerData navDrawerData;
- 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 && 0 <= position && 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 getNumberOfNewItems() {
- return (navDrawerData != null) ? navDrawerData.numNewItems : 0;
- }
-
- @Override
- public int getNumberOfDownloadedItems() {
- return (navDrawerData != null) ? navDrawerData.numDownloadedItems : 0;
- }
-
- @Override
- public int getReclaimableItems() {
- return (navDrawerData != null) ? navDrawerData.reclaimableSpace : 0;
- }
-
- @Override
- public int getFeedCounter(long feedId) {
- return navDrawerData != null ? navDrawerData.feedCounters.get(feedId) : 0;
- }
-
- @Override
- public int getFeedCounterSum() {
- if(navDrawerData == null) {
- return 0;
- }
- int sum = 0;
- for(int counter : navDrawerData.feedCounters.values()) {
- sum += counter;
- }
- return sum;
- }
-
- };
-
- private void loadData() {
- subscription = Observable.fromCallable(DBReader::getNavDrawerData)
- .subscribeOn(Schedulers.newThread())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(result -> {
- boolean handleIntent = (navDrawerData == null);
-
- navDrawerData = result;
- navAdapter.notifyDataSetChanged();
-
- if (handleIntent) {
- handleNavIntent();
- }
- }, error -> {
- Log.e(TAG, Log.getStackTraceString(error));
- });
- }
-
- public void onEvent(QueueEvent event) {
- Log.d(TAG, "onEvent(" + event + ")");
- // we are only interested in the number of queue items, not download status or position
- if(event.action == QueueEvent.Action.DELETED_MEDIA ||
- event.action == QueueEvent.Action.SORTED ||
- event.action == QueueEvent.Action.MOVED) {
- return;
- }
- loadData();
- }
-
- public void onEventMainThread(ProgressEvent event) {
- Log.d(TAG, "onEvent(" + event + ")");
- switch(event.action) {
- case START:
- pd = new ProgressDialog(this);
- pd.setMessage(event.message);
- pd.setIndeterminate(true);
- pd.setCancelable(false);
- pd.show();
- break;
- case END:
- if(pd != null) {
- pd.dismiss();
- }
- break;
- }
- }
-
- private EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() {
-
- @Override
- public void update(EventDistributor eventDistributor, Integer arg) {
- if ((EVENTS & arg) != 0) {
- Log.d(TAG, "Received contentUpdate Intent.");
- loadData();
- }
- }
- };
-
- private void handleNavIntent() {
- Log.d(TAG, "handleNavIntent()");
- Intent intent = getIntent();
- if (intent.hasExtra(EXTRA_FEED_ID) ||
- (intent.hasExtra(EXTRA_NAV_TYPE) &&
- (intent.hasExtra(EXTRA_NAV_INDEX) || intent.hasExtra(EXTRA_FRAGMENT_TAG)))) {
- int index = intent.getIntExtra(EXTRA_NAV_INDEX, -1);
- String tag = intent.getStringExtra(EXTRA_FRAGMENT_TAG);
- Bundle args = intent.getBundleExtra(EXTRA_FRAGMENT_ARGS);
- long feedId = intent.getLongExtra(EXTRA_FEED_ID, 0);
- if (index >= 0) {
- loadFragment(index, args);
- } else if (tag != null) {
- loadFragment(tag, args);
- } else if(feedId > 0) {
- loadFeedFragmentById(feedId, 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);
- }
-}