mirror of
https://github.com/AntennaPod/AntennaPod.git
synced 2025-02-02 11:46:55 +01:00
Reopen episode dialog on configuration change
This commit is contained in:
parent
aa700fe4b8
commit
155774557c
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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();
|
||||
}
|
||||
|
@ -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();
|
||||
|
@ -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();
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user