diff options
Diffstat (limited to 'src/de/danoeh/antennapod/activity')
5 files changed, 143 insertions, 85 deletions
diff --git a/src/de/danoeh/antennapod/activity/AudioplayerActivity.java b/src/de/danoeh/antennapod/activity/AudioplayerActivity.java index 2ffaae967..090c3f1f5 100644 --- a/src/de/danoeh/antennapod/activity/AudioplayerActivity.java +++ b/src/de/danoeh/antennapod/activity/AudioplayerActivity.java @@ -34,8 +34,6 @@ import de.danoeh.antennapod.storage.DBReader; import de.danoeh.antennapod.util.playback.ExternalMedia; import de.danoeh.antennapod.util.playback.Playable; -import java.util.List; - /** * Activity for playing audio files. */ @@ -624,20 +622,20 @@ public class AudioplayerActivity extends MediaplayerActivity { } } - private List<Feed> feeds; - private AsyncTask<Void, Void, List<Feed>> loadTask; + private DBReader.NavDrawerData navDrawerData; + private AsyncTask<Void, Void, DBReader.NavDrawerData> loadTask; private void loadData() { - loadTask = new AsyncTask<Void, Void, List<Feed>>() { + loadTask = new AsyncTask<Void, Void, DBReader.NavDrawerData>() { @Override - protected List<Feed> doInBackground(Void... params) { - return DBReader.getFeedList(AudioplayerActivity.this); + protected DBReader.NavDrawerData doInBackground(Void... params) { + return DBReader.getNavDrawerData(AudioplayerActivity.this); } @Override - protected void onPostExecute(List<Feed> result) { + protected void onPostExecute(DBReader.NavDrawerData result) { super.onPostExecute(result); - feeds = result; + navDrawerData = result; if (navAdapter != null) { navAdapter.notifyDataSetChanged(); } @@ -667,8 +665,8 @@ public class AudioplayerActivity extends MediaplayerActivity { private final NavListAdapter.ItemAccess itemAccess = new NavListAdapter.ItemAccess() { @Override public int getCount() { - if (feeds != null) { - return feeds.size(); + if (navDrawerData != null) { + return navDrawerData.feeds.size(); } else { return 0; } @@ -676,8 +674,8 @@ public class AudioplayerActivity extends MediaplayerActivity { @Override public Feed getItem(int position) { - if (feeds != null && position < feeds.size()) { - return feeds.get(position); + if (navDrawerData != null && position < navDrawerData.feeds.size()) { + return navDrawerData.feeds.get(position); } else { return null; } @@ -687,5 +685,15 @@ public class AudioplayerActivity extends MediaplayerActivity { public int getSelectedItemIndex() { return -1; } + + @Override + public int getQueueSize() { + return (navDrawerData != null) ? navDrawerData.queueSize : 0; + } + + @Override + public int getNumberOfUnreadItems() { + return (navDrawerData != null) ? navDrawerData.numUnreadItems : 0; + } }; } diff --git a/src/de/danoeh/antennapod/activity/FeedInfoActivity.java b/src/de/danoeh/antennapod/activity/FeedInfoActivity.java index f00ce13e8..7f60d0b10 100644 --- a/src/de/danoeh/antennapod/activity/FeedInfoActivity.java +++ b/src/de/danoeh/antennapod/activity/FeedInfoActivity.java @@ -166,6 +166,7 @@ public class FeedInfoActivity extends ActionBarActivity { menu.findItem(R.id.support_item).setVisible( feed != null && feed.getPaymentLink() != null); menu.findItem(R.id.share_link_item).setVisible(feed != null &&feed.getLink() != null); + menu.findItem(R.id.visit_website_item).setVisible(feed != null && feed.getLink() != null); return true; } diff --git a/src/de/danoeh/antennapod/activity/MainActivity.java b/src/de/danoeh/antennapod/activity/MainActivity.java index 92afea77c..257bea82d 100644 --- a/src/de/danoeh/antennapod/activity/MainActivity.java +++ b/src/de/danoeh/antennapod/activity/MainActivity.java @@ -39,10 +39,11 @@ public class MainActivity extends ActionBarActivity { private static final int EVENTS = EventDistributor.DOWNLOAD_HANDLED | EventDistributor.DOWNLOAD_QUEUED | EventDistributor.FEED_LIST_UPDATE - | EventDistributor.UNREAD_ITEMS_UPDATE; + | EventDistributor.UNREAD_ITEMS_UPDATE + | EventDistributor.QUEUE_UPDATE; - private static final String PREF_NAME = "MainActivityPrefs"; - private static final String PREF_IS_FIRST_LAUNCH = "prefMainActivityIsFirstLaunch"; + 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"; @@ -147,7 +148,7 @@ public class MainActivity extends ActionBarActivity { } public List<Feed> getFeeds() { - return feeds; + return (navDrawerData != null) ? navDrawerData.feeds : null; } private void loadFragment(int viewType, int relPos, Bundle args) { @@ -207,9 +208,9 @@ public class MainActivity extends ActionBarActivity { } public void loadFeedFragment(long feedID) { - if (feeds != null) { - for (int i = 0; i < feeds.size(); i++) { - if (feeds.get(i).getId() == 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; } @@ -279,7 +280,7 @@ public class MainActivity extends ActionBarActivity { EventDistributor.getInstance().register(contentUpdate); Intent intent = getIntent(); - if (feeds != null && intent.hasExtra(EXTRA_NAV_INDEX) && intent.hasExtra(EXTRA_NAV_TYPE)) { + if (navDrawerData != null && intent.hasExtra(EXTRA_NAV_INDEX) && intent.hasExtra(EXTRA_NAV_TYPE)) { handleNavIntent(); } @@ -322,15 +323,15 @@ public class MainActivity extends ActionBarActivity { return true; } - private List<Feed> feeds; - private AsyncTask<Void, Void, List<Feed>> loadTask; + 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 (feeds != null) { - return feeds.size(); + if (navDrawerData != null) { + return navDrawerData.feeds.size(); } else { return 0; } @@ -338,8 +339,8 @@ public class MainActivity extends ActionBarActivity { @Override public Feed getItem(int position) { - if (feeds != null && position < feeds.size()) { - return feeds.get(position); + if (navDrawerData != null && position < navDrawerData.feeds.size()) { + return navDrawerData.feeds.get(position); } else { return null; } @@ -350,23 +351,33 @@ public class MainActivity extends ActionBarActivity { 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, List<Feed>>() { + loadTask = new AsyncTask<Void, Void, DBReader.NavDrawerData>() { @Override - protected List<Feed> doInBackground(Void... params) { - return DBReader.getFeedList(MainActivity.this); + protected DBReader.NavDrawerData doInBackground(Void... params) { + return DBReader.getNavDrawerData(MainActivity.this); } @Override - protected void onPostExecute(List<Feed> result) { - super.onPostExecute(result); - boolean handleIntent = (feeds == null); + protected void onPostExecute(DBReader.NavDrawerData result) { + super.onPostExecute(navDrawerData); + boolean handleIntent = (navDrawerData == null); - feeds = result; + navDrawerData = result; navAdapter.notifyDataSetChanged(); if (handleIntent) { diff --git a/src/de/danoeh/antennapod/activity/OnlineFeedViewActivity.java b/src/de/danoeh/antennapod/activity/OnlineFeedViewActivity.java index 271cc19d5..e397ff2ca 100644 --- a/src/de/danoeh/antennapod/activity/OnlineFeedViewActivity.java +++ b/src/de/danoeh/antennapod/activity/OnlineFeedViewActivity.java @@ -61,6 +61,8 @@ public abstract class OnlineFeedViewActivity extends ActionBarActivity { private Map<String, String> alternateFeedUrls; private Downloader downloader; + private boolean isPaused; + @Override protected void onCreate(Bundle savedInstanceState) { setTheme(UserPreferences.getTheme()); @@ -97,6 +99,18 @@ public abstract class OnlineFeedViewActivity extends ActionBarActivity { } @Override + protected void onResume() { + super.onResume(); + isPaused = false; + } + + @Override + protected void onPause() { + super.onPause(); + isPaused = true; + } + + @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); if (feed != null && feed.getPreferences() != null) { @@ -126,9 +140,11 @@ public abstract class OnlineFeedViewActivity extends ActionBarActivity { if (status.isSuccessful()) { parseFeed(); } else if (status.getReason() == DownloadError.ERROR_UNAUTHORIZED) { - Dialog dialog = new FeedViewAuthenticationDialog(OnlineFeedViewActivity.this, - R.string.authentication_notification_title, downloader.getDownloadRequest().getSource()); - dialog.show(); + if (!isFinishing() && !isPaused) { + Dialog dialog = new FeedViewAuthenticationDialog(OnlineFeedViewActivity.this, + R.string.authentication_notification_title, downloader.getDownloadRequest().getSource()); + dialog.show(); + } } else { String errorMsg = status.getReason().getErrorString( OnlineFeedViewActivity.this); @@ -276,32 +292,30 @@ public abstract class OnlineFeedViewActivity extends ActionBarActivity { } private void showErrorDialog(String errorMsg) { - AlertDialog.Builder builder = new AlertDialog.Builder(this); - builder.setTitle(R.string.error_label); - if (errorMsg != null) { - builder.setMessage(getString(R.string.error_msg_prefix) + errorMsg); - } else { - builder.setMessage(R.string.error_msg_prefix); - } - builder.setNeutralButton(android.R.string.ok, - new DialogInterface.OnClickListener() { + if (!isFinishing() && !isPaused) { + AlertDialog.Builder builder = new AlertDialog.Builder(this); + builder.setTitle(R.string.error_label); + if (errorMsg != null) { + builder.setMessage(getString(R.string.error_msg_prefix) + errorMsg); + } else { + builder.setMessage(R.string.error_msg_prefix); + } + builder.setNeutralButton(android.R.string.ok, + new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.cancel(); + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.cancel(); + } } + ); + builder.setOnCancelListener(new OnCancelListener() { + @Override + public void onCancel(DialogInterface dialog) { + setResult(RESULT_ERROR); + finish(); } - ); - builder.setOnCancelListener(new OnCancelListener() { - @Override - public void onCancel(DialogInterface dialog) { - setResult(RESULT_ERROR); - finish(); - } - }); - - if (!isFinishing()) { - builder.show(); + }); } } diff --git a/src/de/danoeh/antennapod/activity/PreferenceActivity.java b/src/de/danoeh/antennapod/activity/PreferenceActivity.java index 1070c71f8..77ec579ed 100644 --- a/src/de/danoeh/antennapod/activity/PreferenceActivity.java +++ b/src/de/danoeh/antennapod/activity/PreferenceActivity.java @@ -15,6 +15,7 @@ import android.preference.Preference; import android.preference.Preference.OnPreferenceChangeListener; import android.preference.Preference.OnPreferenceClickListener; import android.preference.PreferenceScreen; +import android.support.v4.app.NavUtils; import android.util.Log; import android.view.Menu; import android.view.MenuItem; @@ -46,7 +47,7 @@ public class PreferenceActivity extends android.preference.PreferenceActivity { private static final String PREF_FLATTR_THIS_APP = "prefFlattrThisApp"; private static final String PREF_FLATTR_AUTH = "pref_flattr_authenticate"; private static final String PREF_FLATTR_REVOKE = "prefRevokeAccess"; - private static final String PREF_AUTO_FLATTR = "pref_auto_flattr"; + private static final String PREF_AUTO_FLATTR = "pref_auto_flattr"; private static final String PREF_OPML_EXPORT = "prefOpmlExport"; private static final String PREF_ABOUT = "prefAbout"; private static final String PREF_CHOOSE_DATA_DIR = "prefChooseDataDir"; @@ -89,7 +90,8 @@ public class PreferenceActivity extends android.preference.PreferenceActivity { return true; } - }); + } + ); findPreference(PREF_FLATTR_REVOKE).setOnPreferenceClickListener( new OnPreferenceClickListener() { @@ -101,7 +103,8 @@ public class PreferenceActivity extends android.preference.PreferenceActivity { return true; } - }); + } + ); findPreference(PREF_ABOUT).setOnPreferenceClickListener( new OnPreferenceClickListener() { @@ -113,7 +116,8 @@ public class PreferenceActivity extends android.preference.PreferenceActivity { return true; } - }); + } + ); findPreference(PREF_OPML_EXPORT).setOnPreferenceClickListener( new OnPreferenceClickListener() { @@ -125,7 +129,8 @@ public class PreferenceActivity extends android.preference.PreferenceActivity { return true; } - }); + } + ); findPreference(PREF_CHOOSE_DATA_DIR).setOnPreferenceClickListener( new OnPreferenceClickListener() { @@ -135,10 +140,12 @@ public class PreferenceActivity extends android.preference.PreferenceActivity { startActivityForResult( new Intent(PreferenceActivity.this, DirectoryChooserActivity.class), - DirectoryChooserActivity.RESULT_CODE_DIR_SELECTED); + DirectoryChooserActivity.RESULT_CODE_DIR_SELECTED + ); return true; } - }); + } + ); findPreference(UserPreferences.PREF_THEME) .setOnPreferenceChangeListener( new OnPreferenceChangeListener() { @@ -153,18 +160,19 @@ public class PreferenceActivity extends android.preference.PreferenceActivity { startActivity(i); return true; } - }); + } + ); findPreference(UserPreferences.PREF_ENABLE_AUTODL) .setOnPreferenceChangeListener(new OnPreferenceChangeListener() { - @Override - public boolean onPreferenceChange(Preference preference, Object newValue) { - if (newValue instanceof Boolean) { - findPreference(UserPreferences.PREF_ENABLE_AUTODL_WIFI_FILTER).setEnabled((Boolean) newValue); - setSelectedNetworksEnabled((Boolean) newValue && UserPreferences.isEnableAutodownloadWifiFilter()); - } - return true; - } - }); + @Override + public boolean onPreferenceChange(Preference preference, Object newValue) { + if (newValue instanceof Boolean) { + findPreference(UserPreferences.PREF_ENABLE_AUTODL_WIFI_FILTER).setEnabled((Boolean) newValue); + setSelectedNetworksEnabled((Boolean) newValue && UserPreferences.isEnableAutodownloadWifiFilter()); + } + return true; + } + }); findPreference(UserPreferences.PREF_ENABLE_AUTODL_WIFI_FILTER) .setOnPreferenceChangeListener( new OnPreferenceChangeListener() { @@ -179,7 +187,8 @@ public class PreferenceActivity extends android.preference.PreferenceActivity { return false; } } - }); + } + ); findPreference(UserPreferences.PREF_EPISODE_CACHE_SIZE) .setOnPreferenceChangeListener( new OnPreferenceChangeListener() { @@ -190,7 +199,8 @@ public class PreferenceActivity extends android.preference.PreferenceActivity { } return true; } - }); + } + ); findPreference(PREF_PLAYBACK_SPEED_LAUNCHER) .setOnPreferenceClickListener(new OnPreferenceClickListener() { @Override @@ -343,12 +353,14 @@ public class PreferenceActivity extends android.preference.PreferenceActivity { public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: + Intent destIntent = new Intent(this, MainActivity.class); + destIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + startActivity(destIntent); finish(); - break; + return true; default: return false; } - return true; } @Override @@ -389,7 +401,8 @@ public class PreferenceActivity extends android.preference.PreferenceActivity { String key = preference.getKey(); ArrayList<String> prefValuesList = new ArrayList<String>( Arrays.asList(UserPreferences - .getAutodownloadSelectedNetworks())); + .getAutodownloadSelectedNetworks()) + ); boolean newValue = ((CheckBoxPreference) preference) .isChecked(); if (BuildConfig.DEBUG) @@ -406,8 +419,9 @@ public class PreferenceActivity extends android.preference.PreferenceActivity { UserPreferences.setAutodownloadSelectedNetworks( PreferenceActivity.this, prefValuesList - .toArray(new String[prefValuesList - .size()])); + .toArray(new String[prefValuesList + .size()]) + ); return true; } else { return false; @@ -461,7 +475,17 @@ public class PreferenceActivity extends android.preference.PreferenceActivity { .setBackgroundDrawable( this.getWindow().getDecorView() .getBackground().getConstantState() - .newDrawable()); + .newDrawable() + ); return false; } + + @Override + public void onBackPressed() { + // The default back button behavior has to be overwritten because changing the theme clears the back stack + Intent destIntent = new Intent(this, MainActivity.class); + destIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + startActivity(destIntent); + finish(); + } } |