diff options
Diffstat (limited to 'src/de/danoeh')
7 files changed, 71 insertions, 15 deletions
diff --git a/src/de/danoeh/antennapod/dialog/FeedItemDialog.java b/src/de/danoeh/antennapod/dialog/FeedItemDialog.java index 25458399b..fdd0cd09b 100644 --- a/src/de/danoeh/antennapod/dialog/FeedItemDialog.java +++ b/src/de/danoeh/antennapod/dialog/FeedItemDialog.java @@ -54,7 +54,16 @@ public class FeedItemDialog extends Dialog { private ImageButton butMore; private PopupMenu popupMenu; - public static FeedItemDialog newInstace(Context context, FeedItem item, QueueAccess queue) { + public static FeedItemDialog newInstance(Context context, FeedItemDialogSavedInstance savedInstance) { + if (savedInstance == null) throw new IllegalArgumentException("savedInstance = null"); + FeedItemDialog dialog = newInstance(context, savedInstance.item, savedInstance.queueAccess); + if (savedInstance.isShowing) { + dialog.show(); + } + return dialog; + } + + public static FeedItemDialog newInstance(Context context, FeedItem item, QueueAccess queue) { if (useDarkThemeWorkAround()) { return new FeedItemDialog(context, R.style.Theme_AntennaPod_Dark, item, queue); } else { @@ -362,4 +371,23 @@ public class FeedItemDialog extends Dialog { public QueueAccess getQueue() { return queue; } + + public FeedItemDialogSavedInstance save() { + return new FeedItemDialogSavedInstance(item, queue, isShowing()); + } + + /** + * Used to save the FeedItemDialog's state across configuration changes + * */ + public static class FeedItemDialogSavedInstance { + final FeedItem item; + final QueueAccess queueAccess; + final boolean isShowing; + + private FeedItemDialogSavedInstance(FeedItem item, QueueAccess queueAccess, boolean isShowing) { + this.item = item; + this.queueAccess = queueAccess; + this.isShowing = isShowing; + } + } } diff --git a/src/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java b/src/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java index 6eaa33713..ed304ad37 100644 --- a/src/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java +++ b/src/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java @@ -23,9 +23,9 @@ import java.util.List; public class CompletedDownloadsFragment extends ListFragment { private static final int EVENTS = EventDistributor.DOWNLOAD_HANDLED | - EventDistributor.DOWNLOADLOG_UPDATE | - EventDistributor.QUEUE_UPDATE | - EventDistributor.UNREAD_ITEMS_UPDATE; + EventDistributor.DOWNLOADLOG_UPDATE | + EventDistributor.QUEUE_UPDATE | + EventDistributor.UNREAD_ITEMS_UPDATE; private List<FeedItem> items; private QueueAccess queue; @@ -92,7 +92,7 @@ public class CompletedDownloadsFragment extends ListFragment { super.onListItemClick(l, v, position, id); FeedItem item = listAdapter.getItem(position - l.getHeaderViewsCount()); if (item != null) { - feedItemDialog = FeedItemDialog.newInstace(getActivity(), item, queue); + feedItemDialog = FeedItemDialog.newInstance(getActivity(), item, queue); feedItemDialog.show(); } @@ -186,8 +186,8 @@ public class CompletedDownloadsFragment extends ListFragment { protected Object[] doInBackground(Void... params) { Context context = getActivity(); if (context != null) { - return new Object[] {DBReader.getDownloadedItems(context), - QueueAccess.IDListAccess(DBReader.getQueueIDList(context))}; + return new Object[]{DBReader.getDownloadedItems(context), + QueueAccess.IDListAccess(DBReader.getQueueIDList(context))}; } return null; } diff --git a/src/de/danoeh/antennapod/fragment/ItemlistFragment.java b/src/de/danoeh/antennapod/fragment/ItemlistFragment.java index 6bd850120..4956b6884 100644 --- a/src/de/danoeh/antennapod/fragment/ItemlistFragment.java +++ b/src/de/danoeh/antennapod/fragment/ItemlistFragment.java @@ -36,7 +36,6 @@ import de.danoeh.antennapod.storage.DBReader; import de.danoeh.antennapod.storage.DownloadRequestException; import de.danoeh.antennapod.storage.DownloadRequester; import de.danoeh.antennapod.util.QueueAccess; -import de.danoeh.antennapod.util.menuhandler.FeedItemMenuHandler; import de.danoeh.antennapod.util.menuhandler.FeedMenuHandler; import de.danoeh.antennapod.util.menuhandler.MenuItemUtils; @@ -70,6 +69,7 @@ public class ItemlistFragment extends ListFragment { private List<Downloader> downloaderList; private FeedItemDialog feedItemDialog; + private FeedItemDialog.FeedItemDialogSavedInstance feedItemDialogSavedInstance; /** @@ -143,6 +143,9 @@ public class ItemlistFragment extends ListFragment { if (downloadObserver != null) { downloadObserver.onPause(); } + if (feedItemDialog != null) { + feedItemDialogSavedInstance = feedItemDialog.save(); + } feedItemDialog = null; } @@ -236,7 +239,7 @@ public class ItemlistFragment extends ListFragment { @Override public void onListItemClick(ListView l, View v, int position, long id) { FeedItem selection = adapter.getItem(position - l.getHeaderViewsCount()); - feedItemDialog = FeedItemDialog.newInstace(getActivity(), selection, queue); + feedItemDialog = FeedItemDialog.newInstance(getActivity(), selection, queue); feedItemDialog.show(); } @@ -285,6 +288,8 @@ public class ItemlistFragment extends ListFragment { if (feedItemDialog != null) { feedItemDialog.updateContent(queue, feed.getItems()); + } else if (feedItemDialogSavedInstance != null) { + feedItemDialog = FeedItemDialog.newInstance(getActivity(), feedItemDialogSavedInstance); } getActivity().supportInvalidateOptionsMenu(); } diff --git a/src/de/danoeh/antennapod/fragment/NewEpisodesFragment.java b/src/de/danoeh/antennapod/fragment/NewEpisodesFragment.java index f23130eb5..4bf7a4b76 100644 --- a/src/de/danoeh/antennapod/fragment/NewEpisodesFragment.java +++ b/src/de/danoeh/antennapod/fragment/NewEpisodesFragment.java @@ -6,7 +6,6 @@ import android.content.SharedPreferences; import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; -import android.preference.PreferenceManager; import android.support.v4.app.Fragment; import android.support.v7.app.ActionBarActivity; import android.support.v7.widget.SearchView; @@ -72,6 +71,7 @@ public class NewEpisodesFragment extends Fragment { private DownloadObserver downloadObserver = null; private FeedItemDialog feedItemDialog; + private FeedItemDialog.FeedItemDialogSavedInstance feedItemDialogSavedInstance; @Override public void onCreate(Bundle savedInstanceState) { @@ -128,6 +128,9 @@ public class NewEpisodesFragment extends Fragment { if (downloadObserver != null) { downloadObserver.onPause(); } + if (feedItemDialog != null) { + feedItemDialogSavedInstance = feedItemDialog.save(); + } feedItemDialog = null; } @@ -204,7 +207,7 @@ public class NewEpisodesFragment extends Fragment { public void onItemClick(AdapterView<?> parent, View view, int position, long id) { FeedItem item = (FeedItem) listAdapter.getItem(position - listView.getHeaderViewsCount()); if (item != null) { - feedItemDialog = FeedItemDialog.newInstace(activity.get(), item, queueAccess); + feedItemDialog = FeedItemDialog.newInstance(activity.get(), item, queueAccess); feedItemDialog.show(); } @@ -235,6 +238,8 @@ public class NewEpisodesFragment extends Fragment { } if (feedItemDialog != null) { feedItemDialog.updateContent(queueAccess, unreadItems, recentItems); + } else if (feedItemDialogSavedInstance != null) { + feedItemDialog = FeedItemDialog.newInstance(activity.get(), feedItemDialogSavedInstance); } listAdapter.notifyDataSetChanged(); getActivity().supportInvalidateOptionsMenu(); diff --git a/src/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java b/src/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java index 1ccc9d9a4..ed668febb 100644 --- a/src/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java +++ b/src/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java @@ -14,7 +14,6 @@ import android.view.MenuItem; import android.view.View; import android.widget.ListView; import de.danoeh.antennapod.R; -import de.danoeh.antennapod.adapter.ActionButtonCallback; import de.danoeh.antennapod.adapter.DefaultActionButtonCallback; import de.danoeh.antennapod.adapter.InternalFeedItemlistAdapter; import de.danoeh.antennapod.asynctask.DownloadObserver; @@ -46,6 +45,7 @@ public class PlaybackHistoryFragment extends ListFragment { private List<Downloader> downloaderList; private FeedItemDialog feedItemDialog; + private FeedItemDialog.FeedItemDialogSavedInstance feedItemDialogSavedInstance; @Override public void onCreate(Bundle savedInstanceState) { @@ -101,6 +101,9 @@ public class PlaybackHistoryFragment extends ListFragment { if (downloadObserver != null) { downloadObserver.onPause(); } + if (feedItemDialog != null) { + feedItemDialogSavedInstance = feedItemDialog.save(); + } feedItemDialog = null; } @@ -118,7 +121,7 @@ public class PlaybackHistoryFragment extends ListFragment { super.onListItemClick(l, v, position, id); FeedItem item = adapter.getItem(position - l.getHeaderViewsCount()); if (item != null) { - feedItemDialog = FeedItemDialog.newInstace(activity.get(), item, queue); + feedItemDialog = FeedItemDialog.newInstance(activity.get(), item, queue); feedItemDialog.show(); } } @@ -176,6 +179,8 @@ public class PlaybackHistoryFragment extends ListFragment { adapter.notifyDataSetChanged(); if (feedItemDialog != null && feedItemDialog.isShowing()) { feedItemDialog.updateContent(queue, playbackHistory); + } else if (feedItemDialogSavedInstance != null) { + feedItemDialog = FeedItemDialog.newInstance(activity.get(), feedItemDialogSavedInstance); } getActivity().supportInvalidateOptionsMenu(); } diff --git a/src/de/danoeh/antennapod/fragment/QueueFragment.java b/src/de/danoeh/antennapod/fragment/QueueFragment.java index ef191631e..e3f0bb19d 100644 --- a/src/de/danoeh/antennapod/fragment/QueueFragment.java +++ b/src/de/danoeh/antennapod/fragment/QueueFragment.java @@ -60,6 +60,7 @@ public class QueueFragment extends Fragment { private DownloadObserver downloadObserver = null; private FeedItemDialog feedItemDialog; + private FeedItemDialog.FeedItemDialogSavedInstance feedItemDialogSavedInstance; /** * Download observer updates won't result in an upate of the list adapter if this is true. @@ -117,6 +118,9 @@ public class QueueFragment extends Fragment { if (downloadObserver != null) { downloadObserver.onPause(); } + if (feedItemDialog != null) { + feedItemDialogSavedInstance = feedItemDialog.save(); + } feedItemDialog = null; } @@ -202,7 +206,7 @@ public class QueueFragment extends Fragment { public void onItemClick(AdapterView<?> parent, View view, int position, long id) { FeedItem item = (FeedItem) listAdapter.getItem(position - listView.getHeaderViewsCount()); if (item != null) { - feedItemDialog = FeedItemDialog.newInstace(activity.get(), item, QueueAccess.ItemListAccess(queue)); + feedItemDialog = FeedItemDialog.newInstance(activity.get(), item, QueueAccess.ItemListAccess(queue)); feedItemDialog.show(); } } @@ -277,6 +281,8 @@ public class QueueFragment extends Fragment { listAdapter.notifyDataSetChanged(); if (feedItemDialog != null) { feedItemDialog.updateContent(QueueAccess.ItemListAccess(queue), queue); + } else if (feedItemDialogSavedInstance != null) { + feedItemDialog = FeedItemDialog.newInstance(activity.get(), feedItemDialogSavedInstance); } } diff --git a/src/de/danoeh/antennapod/fragment/SearchFragment.java b/src/de/danoeh/antennapod/fragment/SearchFragment.java index 566695465..f89e44717 100644 --- a/src/de/danoeh/antennapod/fragment/SearchFragment.java +++ b/src/de/danoeh/antennapod/fragment/SearchFragment.java @@ -41,6 +41,7 @@ public class SearchFragment extends ListFragment { private QueueAccess queue; private FeedItemDialog feedItemDialog; + private FeedItemDialog.FeedItemDialogSavedInstance feedItemDialogSavedInstance; /** * Create a new SearchFragment that searches all feeds. @@ -96,6 +97,10 @@ public class SearchFragment extends ListFragment { super.onDestroyView(); searchAdapter = null; viewCreated = false; + if (feedItemDialog != null) { + feedItemDialogSavedInstance = feedItemDialog.save(); + } + feedItemDialog = null; } @Override @@ -117,7 +122,7 @@ public class SearchFragment extends ListFragment { ((MainActivity)getActivity()).loadFeedFragment(comp.getId()); } else { if (comp.getClass() == FeedItem.class) { - feedItemDialog = FeedItemDialog.newInstace(getActivity(), (FeedItem) comp, queue); + feedItemDialog = FeedItemDialog.newInstance(getActivity(), (FeedItem) comp, queue); feedItemDialog.show(); } } @@ -178,6 +183,8 @@ public class SearchFragment extends ListFragment { } } feedItemDialog.updateMenuAppearance(); + } else if (feedItemDialogSavedInstance != null) { + feedItemDialog = FeedItemDialog.newInstance(getActivity(), feedItemDialogSavedInstance); } } |