summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordaniel oeh <daniel.oeh@gmail.com>2014-05-12 18:55:58 +0200
committerdaniel oeh <daniel.oeh@gmail.com>2014-05-12 18:55:58 +0200
commit155774557cd170cd88941c3daee0f3949c4e26b8 (patch)
treee617edb182b29d3556d804ff7932f173b6268615
parentaa700fe4b8fb9489e2312dc5ee25975bd3912f9e (diff)
downloadAntennaPod-155774557cd170cd88941c3daee0f3949c4e26b8.zip
Reopen episode dialog on configuration change
-rw-r--r--src/de/danoeh/antennapod/dialog/FeedItemDialog.java30
-rw-r--r--src/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java12
-rw-r--r--src/de/danoeh/antennapod/fragment/ItemlistFragment.java9
-rw-r--r--src/de/danoeh/antennapod/fragment/NewEpisodesFragment.java9
-rw-r--r--src/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java9
-rw-r--r--src/de/danoeh/antennapod/fragment/QueueFragment.java8
-rw-r--r--src/de/danoeh/antennapod/fragment/SearchFragment.java9
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);
}
}