diff options
author | daniel oeh <daniel.oeh@gmail.com> | 2014-04-22 13:55:20 +0200 |
---|---|---|
committer | daniel oeh <daniel.oeh@gmail.com> | 2014-04-22 13:55:20 +0200 |
commit | 1fe2a8da456a3fbf3752c7a8ae218891b632d552 (patch) | |
tree | 6734ccb076b47bd8105d9fe8fea4c48bdfdfd198 /src/de | |
parent | e68482e1b8646884cc7e7a749bd5a2954472b8cf (diff) | |
download | AntennaPod-1fe2a8da456a3fbf3752c7a8ae218891b632d552.zip |
Resolved dialog issues + fragment crashes
Diffstat (limited to 'src/de')
7 files changed, 71 insertions, 25 deletions
diff --git a/src/de/danoeh/antennapod/dialog/FeedItemDialog.java b/src/de/danoeh/antennapod/dialog/FeedItemDialog.java index 62c274858..cb8e5b877 100644 --- a/src/de/danoeh/antennapod/dialog/FeedItemDialog.java +++ b/src/de/danoeh/antennapod/dialog/FeedItemDialog.java @@ -33,6 +33,7 @@ import de.danoeh.antennapod.util.QueueAccess; import de.danoeh.antennapod.util.ShownotesProvider; import de.danoeh.antennapod.util.menuhandler.FeedItemMenuHandler; import org.apache.commons.lang3.StringEscapeUtils; +import org.shredzone.flattr4j.model.User; import java.util.Collection; import java.util.concurrent.Callable; @@ -53,14 +54,35 @@ public class FeedItemDialog extends Dialog { private ImageButton butMore; private PopupMenu popupMenu; - public FeedItemDialog(Context context, FeedItem item, QueueAccess queue) { - super(context); + public static FeedItemDialog newInstace(Context context, FeedItem item, QueueAccess queue) { + if (useDarkThemeWorkAround()) { + return new FeedItemDialog(context, R.style.Theme_AntennaPod_Dark, item, queue); + } else { + return new FeedItemDialog(context, item, queue); + } + } + + public FeedItemDialog(Context context, int theme, FeedItem item, QueueAccess queue) { + super(context, theme); if (item == null) throw new IllegalArgumentException("item = null"); if (queue == null) throw new IllegalArgumentException("queue = null"); this.item = item; this.queue = queue; } + private FeedItemDialog(Context context, FeedItem item, QueueAccess queue) { + this(context, 0, item, queue); + } + + /** + * Returns true if the dialog should use a dark theme. This has to be done on Gingerbread devices + * because dialogs are only available in a dark theme. + */ + private static boolean useDarkThemeWorkAround() { + return Build.VERSION.SDK_INT <= Build.VERSION_CODES.GINGERBREAD_MR1 + && UserPreferences.getTheme() != R.style.Theme_AntennaPod_Dark; + } + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -170,6 +192,8 @@ public class FeedItemDialog extends Dialog { updateMenuAppearance(); } + + private final FeedItemMenuHandler.MenuInterface popupMenuInterface = new FeedItemMenuHandler.MenuInterface() { @Override public void setItemVisibility(int id, boolean visible) { @@ -260,7 +284,12 @@ public class FeedItemDialog extends Dialog { .getTheme() .obtainStyledAttributes( new int[]{android.R.attr.textColorPrimary}); - int colorResource = res.getColor(0, 0); + int colorResource; + if (useDarkThemeWorkAround()) { + colorResource = getContext().getResources().getColor(R.color.black); + } else { + colorResource = res.getColor(0, 0); + } String colorString = String.format("#%06X", 0xFFFFFF & colorResource); Log.i(TAG, "text color: " + colorString); diff --git a/src/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java b/src/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java index fe661a38a..51c92e234 100644 --- a/src/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java +++ b/src/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java @@ -53,6 +53,11 @@ public class CompletedDownloadsFragment extends ListFragment { public void onDetach() { super.onDetach(); stopItemLoader(); + } + + @Override + public void onDestroyView() { + super.onDestroyView(); listAdapter = null; viewCreated = false; } diff --git a/src/de/danoeh/antennapod/fragment/ItemlistFragment.java b/src/de/danoeh/antennapod/fragment/ItemlistFragment.java index 8a958c758..c3533bff5 100644 --- a/src/de/danoeh/antennapod/fragment/ItemlistFragment.java +++ b/src/de/danoeh/antennapod/fragment/ItemlistFragment.java @@ -118,7 +118,6 @@ public class ItemlistFragment extends ListFragment { super.onStop(); EventDistributor.getInstance().unregister(contentUpdate); stopItemLoader(); - resetViewState(); } @Override @@ -131,6 +130,11 @@ public class ItemlistFragment extends ListFragment { public void onDetach() { super.onDetach(); stopItemLoader(); + } + + @Override + public void onDestroyView() { + super.onDestroyView(); resetViewState(); } @@ -233,7 +237,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 = new FeedItemDialog(getActivity(), selection, queue); + feedItemDialog = FeedItemDialog.newInstace(getActivity(), selection, queue); feedItemDialog.show(); } diff --git a/src/de/danoeh/antennapod/fragment/NewEpisodesFragment.java b/src/de/danoeh/antennapod/fragment/NewEpisodesFragment.java index 05ac37554..ae4083c86 100644 --- a/src/de/danoeh/antennapod/fragment/NewEpisodesFragment.java +++ b/src/de/danoeh/antennapod/fragment/NewEpisodesFragment.java @@ -100,7 +100,6 @@ public class NewEpisodesFragment extends Fragment { super.onStop(); EventDistributor.getInstance().unregister(contentUpdate); stopItemLoader(); - resetViewState(); } @Override @@ -110,8 +109,8 @@ public class NewEpisodesFragment extends Fragment { } @Override - public void onDetach() { - super.onDetach(); + public void onDestroyView() { + super.onDestroyView(); resetViewState(); } @@ -192,7 +191,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 = new FeedItemDialog(activity.get(), item, queueAccess); + feedItemDialog = FeedItemDialog.newInstace(activity.get(), item, queueAccess); feedItemDialog.show(); } diff --git a/src/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java b/src/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java index c4e02c5f0..2abc7a9fb 100644 --- a/src/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java +++ b/src/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java @@ -73,13 +73,7 @@ public class PlaybackHistoryFragment extends ListFragment { public void onDetach() { super.onDetach(); stopItemLoader(); - adapter = null; - viewsCreated = false; activity.set(null); - if (downloadObserver != null) { - downloadObserver.onPause(); - } - feedItemDialog = null; } @Override @@ -96,6 +90,17 @@ public class PlaybackHistoryFragment extends ListFragment { } @Override + public void onDestroyView() { + super.onDestroyView(); + adapter = null; + viewsCreated = false; + if (downloadObserver != null) { + downloadObserver.onPause(); + } + feedItemDialog = null; + } + + @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); viewsCreated = true; @@ -109,7 +114,7 @@ public class PlaybackHistoryFragment extends ListFragment { super.onListItemClick(l, v, position, id); FeedItem item = adapter.getItem(position - l.getHeaderViewsCount()); if (item != null) { - feedItemDialog = new FeedItemDialog(activity.get(), item, queue); + feedItemDialog = FeedItemDialog.newInstace(activity.get(), item, queue); feedItemDialog.show(); } } diff --git a/src/de/danoeh/antennapod/fragment/QueueFragment.java b/src/de/danoeh/antennapod/fragment/QueueFragment.java index 838da7e6a..13f21e3c8 100644 --- a/src/de/danoeh/antennapod/fragment/QueueFragment.java +++ b/src/de/danoeh/antennapod/fragment/QueueFragment.java @@ -96,7 +96,6 @@ public class QueueFragment extends Fragment { super.onStop(); EventDistributor.getInstance().unregister(contentUpdate); stopItemLoader(); - resetViewState(); } @Override @@ -105,12 +104,6 @@ public class QueueFragment extends Fragment { this.activity.set((MainActivity) activity); } - @Override - public void onDetach() { - super.onDetach(); - resetViewState(); - } - private void resetViewState() { listAdapter = null; undoBarController = null; @@ -124,6 +117,12 @@ public class QueueFragment extends Fragment { } @Override + public void onDestroyView() { + super.onDestroyView(); + resetViewState(); + } + + @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); final SearchView sv = new SearchView(getActivity()); @@ -160,7 +159,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 = new FeedItemDialog(activity.get(), item, QueueAccess.ItemListAccess(queue)); + feedItemDialog = FeedItemDialog.newInstace(activity.get(), item, QueueAccess.ItemListAccess(queue)); feedItemDialog.show(); } } diff --git a/src/de/danoeh/antennapod/fragment/SearchFragment.java b/src/de/danoeh/antennapod/fragment/SearchFragment.java index 268e36c37..566695465 100644 --- a/src/de/danoeh/antennapod/fragment/SearchFragment.java +++ b/src/de/danoeh/antennapod/fragment/SearchFragment.java @@ -89,6 +89,11 @@ public class SearchFragment extends ListFragment { public void onDetach() { super.onDetach(); stopSearchTask(); + } + + @Override + public void onDestroyView() { + super.onDestroyView(); searchAdapter = null; viewCreated = false; } @@ -112,7 +117,7 @@ public class SearchFragment extends ListFragment { ((MainActivity)getActivity()).loadFeedFragment(comp.getId()); } else { if (comp.getClass() == FeedItem.class) { - feedItemDialog = new FeedItemDialog(getActivity(), (FeedItem) comp, queue); + feedItemDialog = FeedItemDialog.newInstace(getActivity(), (FeedItem) comp, queue); feedItemDialog.show(); } } |