diff options
author | Tom Hennen <tom.hennen@gmail.com> | 2016-03-25 10:50:41 -0400 |
---|---|---|
committer | Tom Hennen <tom.hennen@gmail.com> | 2016-03-25 10:50:41 -0400 |
commit | 4cd58a9b37899e0c886a930f268b701d29a9a989 (patch) | |
tree | 42d5f7964c8d5114902f4e15538b39941ce82b4b /app/src/main/java/de/danoeh/antennapod/fragment | |
parent | 5cc6f12acb0213dbca37e02c019ee27c28f4a0bb (diff) | |
download | AntennaPod-4cd58a9b37899e0c886a930f268b701d29a9a989.zip |
updated and fixed PR AntennaPod/AntennPod#1624
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/fragment')
17 files changed, 146 insertions, 148 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/AddFeedFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/AddFeedFragment.java index d979dc382..45364ca07 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/AddFeedFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/AddFeedFragment.java @@ -47,36 +47,18 @@ public class AddFeedFragment extends Fragment { final MainActivity activity = (MainActivity) getActivity(); activity.getSupportActionBar().setTitle(R.string.add_feed_label); - butSearchITunes.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - activity.loadChildFragment(new ItunesSearchFragment()); - } - }); + butSearchITunes.setOnClickListener(v -> activity.loadChildFragment(new ItunesSearchFragment())); - butBrowserGpoddernet.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - activity.loadChildFragment(new GpodnetMainFragment()); - } - }); + butBrowserGpoddernet.setOnClickListener(v -> activity.loadChildFragment(new GpodnetMainFragment())); - butOpmlImport.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - startActivity(new Intent(getActivity(), - OpmlImportFromPathActivity.class)); - } - }); + butOpmlImport.setOnClickListener(v -> startActivity(new Intent(getActivity(), + OpmlImportFromPathActivity.class))); - butConfirm.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - Intent intent = new Intent(getActivity(), OnlineFeedViewActivity.class); - intent.putExtra(OnlineFeedViewActivity.ARG_FEEDURL, etxtFeedurl.getText().toString()); - intent.putExtra(OnlineFeedViewActivity.ARG_TITLE, getString(R.string.add_feed_label)); - startActivity(intent); - } + butConfirm.setOnClickListener(v -> { + Intent intent = new Intent(getActivity(), OnlineFeedViewActivity.class); + intent.putExtra(OnlineFeedViewActivity.ARG_FEEDURL, etxtFeedurl.getText().toString()); + intent.putExtra(OnlineFeedViewActivity.ARG_TITLE, getString(R.string.add_feed_label)); + startActivity(intent); }); return root; diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java index 273c75240..335cf5414 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java @@ -1,6 +1,5 @@ package de.danoeh.antennapod.fragment; -import android.app.Activity; import android.content.Context; import android.content.DialogInterface; import android.content.SharedPreferences; @@ -24,7 +23,6 @@ import android.widget.Toast; import com.yqritc.recyclerviewflexibledivider.HorizontalDividerItemDecoration; import java.util.List; -import java.util.concurrent.atomic.AtomicReference; import de.danoeh.antennapod.R; import de.danoeh.antennapod.activity.MainActivity; @@ -81,8 +79,6 @@ public class AllEpisodesFragment extends Fragment { private boolean itemsLoaded = false; private boolean viewsCreated = false; - private AtomicReference<MainActivity> activity = new AtomicReference<MainActivity>(); - private boolean isUpdatingFeeds; protected Subscription subscription; @@ -101,7 +97,6 @@ public class AllEpisodesFragment extends Fragment { public void onStart() { super.onStart(); EventDistributor.getInstance().register(contentUpdate); - this.activity.set((MainActivity) getActivity()); if (viewsCreated && itemsLoaded) { onFragmentLoaded(); } @@ -133,12 +128,6 @@ public class AllEpisodesFragment extends Fragment { } @Override - public void onAttach(Activity activity) { - super.onAttach(activity); - this.activity.set((MainActivity) getActivity()); - } - - @Override public void onDestroyView() { super.onDestroyView(); resetViewState(); @@ -176,18 +165,13 @@ public class AllEpisodesFragment extends Fragment { } protected void resetViewState() { - listAdapter = null; - activity.set(null); viewsCreated = false; + listAdapter = null; } - private final MenuItemUtils.UpdateRefreshMenuItemChecker updateRefreshMenuItemChecker = new MenuItemUtils.UpdateRefreshMenuItemChecker() { - @Override - public boolean isRefreshing() { - return DownloadService.isRunning && DownloadRequester.getInstance().isDownloadingFeeds(); - } - }; + private final MenuItemUtils.UpdateRefreshMenuItemChecker updateRefreshMenuItemChecker = + () -> DownloadService.isRunning && DownloadRequester.getInstance().isDownloadingFeeds(); @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { @@ -325,7 +309,7 @@ public class AllEpisodesFragment extends Fragment { viewsCreated = true; - if (itemsLoaded && activity.get() != null) { + if (itemsLoaded) { onFragmentLoaded(); } @@ -334,9 +318,10 @@ public class AllEpisodesFragment extends Fragment { private void onFragmentLoaded() { if (listAdapter == null) { - MainActivity mainActivity = activity.get(); + MainActivity mainActivity = (MainActivity) getActivity(); listAdapter = new AllEpisodesRecycleAdapter(mainActivity, itemAccess, new DefaultActionButtonCallback(mainActivity), showOnlyNewEpisodes()); + listAdapter.setHasStableIds(true); recyclerView.setAdapter(listAdapter); } listAdapter.notifyDataSetChanged(); @@ -378,10 +363,7 @@ public class AllEpisodesFragment extends Fragment { @Override public boolean isInQueue(FeedItem item) { - if (item != null) { - return item.isTagged(FeedItem.TAG_QUEUE); - } - return false; + return item != null && item.isTagged(FeedItem.TAG_QUEUE); } @Override @@ -470,7 +452,7 @@ public class AllEpisodesFragment extends Fragment { recyclerView.setVisibility(View.GONE); progLoading.setVisibility(View.VISIBLE); } - subscription = Observable.fromCallable(() -> loadData()) + subscription = Observable.fromCallable(this::loadData) .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(data -> { @@ -479,7 +461,7 @@ public class AllEpisodesFragment extends Fragment { if (data != null) { episodes = data; itemsLoaded = true; - if (viewsCreated && activity.get() != null) { + if (viewsCreated) { onFragmentLoaded(); } } diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/ChaptersFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/ChaptersFragment.java index ce1d753e8..aea911f79 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/ChaptersFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/ChaptersFragment.java @@ -2,6 +2,7 @@ package de.danoeh.antennapod.fragment; import android.os.Bundle; import android.support.v4.app.ListFragment; +import android.util.Log; import android.view.View; import android.widget.ListView; @@ -15,15 +16,16 @@ import de.danoeh.antennapod.core.util.playback.PlaybackController; public class ChaptersFragment extends ListFragment implements AudioplayerContentFragment { + private static final String TAG = "ChaptersFragment"; + private Playable media; private PlaybackController controller; private ChaptersListAdapter adapter; - public static ChaptersFragment newInstance(Playable media, PlaybackController controller) { + public static ChaptersFragment newInstance(Playable media) { ChaptersFragment f = new ChaptersFragment(); f.media = media; - f.controller = controller; return f; } @@ -37,6 +39,10 @@ public class ChaptersFragment extends ListFragment implements AudioplayerContent lv.setPadding(0, vertPadding, 0, vertPadding); adapter = new ChaptersListAdapter(getActivity(), 0, pos -> { + if(controller == null) { + Log.d(TAG, "controller is null"); + return; + } Chapter chapter = (Chapter) getListAdapter().getItem(pos); controller.seekToChapter(chapter); }); @@ -58,6 +64,7 @@ public class ChaptersFragment extends ListFragment implements AudioplayerContent public void onDestroy() { super.onDestroy(); adapter = null; + controller = null; } @Override @@ -68,10 +75,15 @@ public class ChaptersFragment extends ListFragment implements AudioplayerContent this.media = media; adapter.setMedia(media); adapter.notifyDataSetChanged(); - if(media.getChapters() == null) { + if(media == null || media.getChapters() == null || media.getChapters().size() == 0) { setEmptyText(getString(R.string.no_items_label)); } else { setEmptyText(null); } } + + public void setController(PlaybackController controller) { + this.controller = controller; + } + } diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java index 954c4c9e2..261974f2f 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java @@ -1,12 +1,20 @@ package de.danoeh.antennapod.fragment; -import android.app.Activity; +import android.content.Context; +import android.content.res.TypedArray; +import android.graphics.Color; import android.os.Bundle; import android.support.v4.app.ListFragment; import android.util.Log; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; import android.view.View; import android.widget.ListView; +import com.joanzapata.iconify.IconDrawable; +import com.joanzapata.iconify.fonts.FontAwesomeIcons; + import java.util.List; import de.danoeh.antennapod.R; @@ -14,8 +22,10 @@ import de.danoeh.antennapod.activity.MainActivity; import de.danoeh.antennapod.adapter.DownloadedEpisodesListAdapter; import de.danoeh.antennapod.core.feed.EventDistributor; import de.danoeh.antennapod.core.feed.FeedItem; +import de.danoeh.antennapod.core.preferences.UserPreferences; import de.danoeh.antennapod.core.storage.DBReader; import de.danoeh.antennapod.core.storage.DBWriter; +import de.danoeh.antennapod.dialog.EpisodesApplyActionFragment; import rx.Observable; import rx.Subscription; import rx.android.schedulers.AndroidSchedulers; @@ -28,22 +38,21 @@ public class CompletedDownloadsFragment extends ListFragment { private static final String TAG = CompletedDownloadsFragment.class.getSimpleName(); - private static final int EVENTS = - EventDistributor.DOWNLOAD_HANDLED | - EventDistributor.DOWNLOADLOG_UPDATE | - EventDistributor.UNREAD_ITEMS_UPDATE; + private static final int EVENTS = EventDistributor.DOWNLOAD_HANDLED | + EventDistributor.DOWNLOADLOG_UPDATE | + EventDistributor.UNREAD_ITEMS_UPDATE; private List<FeedItem> items; private DownloadedEpisodesListAdapter listAdapter; private boolean viewCreated = false; - private boolean itemsLoaded = false; private Subscription subscription; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + setHasOptionsMenu(true); loadItems(); } @@ -81,9 +90,9 @@ public class CompletedDownloadsFragment extends ListFragment { } @Override - public void onAttach(Activity activity) { - super.onAttach(activity); - if (viewCreated && itemsLoaded) { + public void onAttach(Context context) { + super.onAttach(context); + if (viewCreated && items != null) { onFragmentLoaded(); } } @@ -99,7 +108,7 @@ public class CompletedDownloadsFragment extends ListFragment { lv.setPadding(0, vertPadding, 0, vertPadding); viewCreated = true; - if (itemsLoaded && getActivity() != null) { + if (items != null && getActivity() != null) { onFragmentLoaded(); } } @@ -111,7 +120,6 @@ public class CompletedDownloadsFragment extends ListFragment { if (item != null) { ((MainActivity) getActivity()).loadChildFragment(ItemFragment.newInstance(item.getId())); } - } private void onFragmentLoaded() { @@ -121,6 +129,43 @@ public class CompletedDownloadsFragment extends ListFragment { } setListShown(true); listAdapter.notifyDataSetChanged(); + getActivity().supportInvalidateOptionsMenu(); + } + + @Override + public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { + if(!isAdded()) { + return; + } + super.onCreateOptionsMenu(menu, inflater); + if(items != null) { + inflater.inflate(R.menu.downloads_completed, menu); + MenuItem episodeActions = menu.findItem(R.id.episode_actions); + if(items.size() > 0) { + int[] attrs = {R.attr.action_bar_icon_color}; + TypedArray ta = getActivity().obtainStyledAttributes(UserPreferences.getTheme(), attrs); + int textColor = ta.getColor(0, Color.GRAY); + ta.recycle(); + episodeActions.setIcon(new IconDrawable(getActivity(), + FontAwesomeIcons.fa_gears).color(textColor).actionBarSize()); + episodeActions.setVisible(true); + } else { + episodeActions.setVisible(false); + } + } + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + case R.id.episode_actions: + EpisodesApplyActionFragment fragment = EpisodesApplyActionFragment + .newInstance(items, EpisodesApplyActionFragment.ACTION_REMOVE); + ((MainActivity) getActivity()).loadChildFragment(fragment); + return true; + default: + return false; + } } private DownloadedEpisodesListAdapter.ItemAccess itemAccess = new DownloadedEpisodesListAdapter.ItemAccess() { @@ -157,16 +202,15 @@ public class CompletedDownloadsFragment extends ListFragment { if(subscription != null) { subscription.unsubscribe(); } - if (!itemsLoaded && viewCreated) { + if (items == null && viewCreated) { setListShown(false); } - subscription = Observable.fromCallable(() -> DBReader.getDownloadedItems()) + subscription = Observable.fromCallable(DBReader::getDownloadedItems) .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(result -> { if (result != null) { items = result; - itemsLoaded = true; if (viewCreated && getActivity() != null) { onFragmentLoaded(); } diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/CoverFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/CoverFragment.java index 931d14924..d3b97f9df 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/CoverFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/CoverFragment.java @@ -63,12 +63,7 @@ public class CoverFragment extends Fragment implements AudioplayerContentFragmen } private void loadMediaInfo() { - if(imgvCover == null) { - return; - } if (media != null) { - Log.d(TAG, "feed title: " + media.getFeedTitle()); - Log.d(TAG, "episode title: " + media.getEpisodeTitle()); txtvPodcastTitle.setText(media.getFeedTitle()); txtvEpisodeTitle.setText(media.getEpisodeTitle()); Glide.with(this) @@ -103,7 +98,7 @@ public class CoverFragment extends Fragment implements AudioplayerContentFragmen @Override public void onMediaChanged(Playable media) { - if(this.media == media) { + if(!isAdded() || this.media == media) { return; } this.media = media; diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/DownloadLogFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/DownloadLogFragment.java index b470d379a..93527b149 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/DownloadLogFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/DownloadLogFragment.java @@ -154,7 +154,7 @@ public class DownloadLogFragment extends ListFragment { if(subscription != null) { subscription.unsubscribe(); } - subscription = Observable.fromCallable(() -> DBReader.getDownloadLog()) + subscription = Observable.fromCallable(DBReader::getDownloadLog) .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(result -> { diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/ExternalPlayerFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/ExternalPlayerFragment.java index 80a9bf0b3..ca60e7bf2 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/ExternalPlayerFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/ExternalPlayerFragment.java @@ -5,7 +5,6 @@ import android.support.v4.app.Fragment; import android.util.Log; import android.view.LayoutInflater; import android.view.View; -import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.ImageButton; import android.widget.ImageView; @@ -53,16 +52,12 @@ public class ExternalPlayerFragment extends Fragment { mFeedName = (TextView) root.findViewById(R.id.txtvAuthor); mProgressBar = (ProgressBar) root.findViewById(R.id.episodeProgress); - fragmentLayout.setOnClickListener(new OnClickListener() { + fragmentLayout.setOnClickListener(v -> { + Log.d(TAG, "layoutInfo was clicked"); - @Override - public void onClick(View v) { - Log.d(TAG, "layoutInfo was clicked"); - - if (controller != null && controller.getMedia() != null) { - startActivity(PlaybackService.getPlayerActivityIntent( - getActivity(), controller.getMedia())); - } + if (controller != null && controller.getMedia() != null) { + startActivity(PlaybackService.getPlayerActivityIntent( + getActivity(), controller.getMedia())); } }); return root; @@ -72,7 +67,11 @@ public class ExternalPlayerFragment extends Fragment { public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); controller = setupPlaybackController(); - butPlay.setOnClickListener(controller.newOnPlayButtonClickListener()); + butPlay.setOnClickListener(v -> { + if(controller != null) { + controller.playPause(); + } + }); } private PlaybackController setupPlaybackController() { @@ -88,7 +87,6 @@ public class ExternalPlayerFragment extends Fragment { return butPlay; } - @Override public boolean loadMediaInfo() { ExternalPlayerFragment fragment = ExternalPlayerFragment.this; @@ -145,8 +143,11 @@ public class ExternalPlayerFragment extends Fragment { } controller = setupPlaybackController(); if (butPlay != null) { - butPlay.setOnClickListener(controller - .newOnPlayButtonClickListener()); + butPlay.setOnClickListener(v -> { + if(controller != null) { + controller.playPause(); + } + }); } controller.init(); } diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/ItemDescriptionFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/ItemDescriptionFragment.java index 4c723e5ff..5b301333e 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/ItemDescriptionFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/ItemDescriptionFragment.java @@ -62,7 +62,6 @@ public class ItemDescriptionFragment extends Fragment implements AudioplayerCont private static final String ARG_HIGHLIGHT_TIMECODES = "arg.highlightTimecodes"; private WebView webvDescription; - private String webvData; private ShownotesProvider shownotesProvider; private Playable media; @@ -112,7 +111,7 @@ public class ItemDescriptionFragment extends Fragment implements AudioplayerCont public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { Log.d(TAG, "Creating view"); - webvDescription = new WebView(getActivity()); + webvDescription = new WebView(getActivity().getApplicationContext()); if (Build.VERSION.SDK_INT >= 11) { webvDescription.setLayerType(View.LAYER_TYPE_SOFTWARE, null); } @@ -149,7 +148,7 @@ public class ItemDescriptionFragment extends Fragment implements AudioplayerCont super.onPageFinished(view, url); Log.d(TAG, "Page finished"); // Restoring the scroll position might not always work - view.postDelayed(() -> restoreFromPreference(), 50); + view.postDelayed(ItemDescriptionFragment.this::restoreFromPreference, 50); } }); @@ -309,7 +308,6 @@ public class ItemDescriptionFragment extends Fragment implements AudioplayerCont .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(data -> { - webvData = data; webvDescription.loadDataWithBaseURL(null, data, "text/html", "utf-8", "about:blank"); Log.d(TAG, "Webview loaded"); @@ -320,8 +318,7 @@ public class ItemDescriptionFragment extends Fragment implements AudioplayerCont private String loadData() { Timeline timeline = new Timeline(getActivity(), shownotesProvider); - String data = timeline.processShownotes(highlightTimecodes); - return data; + return timeline.processShownotes(highlightTimecodes); } @Override @@ -384,7 +381,7 @@ public class ItemDescriptionFragment extends Fragment implements AudioplayerCont @Override public void onMediaChanged(Playable media) { - if(this.media == media) { + if(this.media == media || webvDescription == null) { return; } this.media = media; diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/ItemFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/ItemFragment.java index ce80dc827..92f4a9f7c 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/ItemFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/ItemFragment.java @@ -9,6 +9,7 @@ import android.os.Build; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; +import android.support.v4.content.ContextCompat; import android.text.TextUtils; import android.util.Log; import android.view.ContextMenu; @@ -101,6 +102,7 @@ public class ItemFragment extends Fragment { private ViewGroup root; private WebView webvDescription; + private TextView txtvPodcast; private TextView txtvTitle; private TextView txtvDuration; private TextView txtvPublished; @@ -134,6 +136,7 @@ public class ItemFragment extends Fragment { View layout = inflater.inflate(R.layout.feeditem_fragment, container, false); root = (ViewGroup) layout.findViewById(R.id.content_root); + txtvPodcast = (TextView) layout.findViewById(R.id.txtvPodcast); txtvTitle = (TextView) layout.findViewById(R.id.txtvTitle); txtvDuration = (TextView) layout.findViewById(R.id.txtvDuration); txtvPublished = (TextView) layout.findViewById(R.id.txtvPublished); @@ -146,8 +149,7 @@ public class ItemFragment extends Fragment { && Build.VERSION.SDK_INT <= Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1) { webvDescription.setLayerType(View.LAYER_TYPE_SOFTWARE, null); } - webvDescription.setBackgroundColor(getResources().getColor( - R.color.black)); + webvDescription.setBackgroundColor(ContextCompat.getColor(getContext(), R.color.black)); } webvDescription.getSettings().setUseWideViewPort(false); webvDescription.getSettings().setLayoutAlgorithm( @@ -219,6 +221,7 @@ public class ItemFragment extends Fragment { EventDistributor.getInstance().register(contentUpdate); EventBus.getDefault().registerSticky(this); if(itemsLoaded) { + progbarLoading.setVisibility(View.GONE); updateAppearance(); } } @@ -295,6 +298,7 @@ public class ItemFragment extends Fragment { return; } getActivity().supportInvalidateOptionsMenu(); + txtvPodcast.setText(item.getFeed().getTitle()); txtvTitle.setText(item.getTitle()); if (item.getPubDate() != null) { @@ -503,7 +507,7 @@ public class ItemFragment extends Fragment { if(subscription != null) { subscription.unsubscribe(); } - subscription = Observable.fromCallable(() -> loadInBackground()) + subscription = Observable.fromCallable(this::loadInBackground) .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(result -> { diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/ItemlistFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/ItemlistFragment.java index 7a9b73982..4faa7be2d 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/ItemlistFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/ItemlistFragment.java @@ -185,11 +185,7 @@ public class ItemlistFragment extends ListFragment { private final MenuItemUtils.UpdateRefreshMenuItemChecker updateRefreshMenuItemChecker = new MenuItemUtils.UpdateRefreshMenuItemChecker() { @Override public boolean isRefreshing() { - if (feed != null && DownloadService.isRunning && DownloadRequester.getInstance().isDownloadingFile(feed)) { - return true; - } else { - return false; - } + return feed != null && DownloadService.isRunning && DownloadRequester.getInstance().isDownloadingFile(feed); } }; @@ -252,8 +248,8 @@ public class ItemlistFragment extends ListFragment { if (!FeedMenuHandler.onOptionsItemClicked(getActivity(), item, feed)) { switch (item.getItemId()) { case R.id.episode_actions: - EpisodesApplyActionFragment fragment = new EpisodesApplyActionFragment(); - fragment.setEpisodes(feed.getItems()); + EpisodesApplyActionFragment fragment = EpisodesApplyActionFragment + .newInstance(feed.getItems()); ((MainActivity)getActivity()).loadChildFragment(fragment); return true; case R.id.remove_item: @@ -405,7 +401,6 @@ public class ItemlistFragment extends ListFragment { public void onEventMainThread(FeedItemEvent event) { Log.d(TAG, "onEventMainThread() called with: " + "event = [" + event + "]"); - boolean queueChanged = false; if(feed == null || feed.getItems() == null || adapter == null) { return; } @@ -628,7 +623,7 @@ public class ItemlistFragment extends ListFragment { if(subscription != null) { subscription.unsubscribe(); } - subscription = Observable.fromCallable(() -> loadData()) + subscription = Observable.fromCallable(this::loadData) .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(result -> { diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/ItunesSearchFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/ItunesSearchFragment.java index eb947dc2b..b736688b9 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/ItunesSearchFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/ItunesSearchFragment.java @@ -124,7 +124,7 @@ public class ItunesSearchFragment extends Fragment { } else { gridView.setVisibility(View.GONE); progressBar.setVisibility(View.VISIBLE); - rx.Observable.create((Observable.OnSubscribe<String>) subscriber -> { + subscription = Observable.create((Observable.OnSubscribe<String>) subscriber -> { OkHttpClient client = AntennapodHttpClient.getHttpClient(); Request.Builder httpReq = new Request.Builder() .url(podcast.feedUrl) @@ -233,7 +233,7 @@ public class ItunesSearchFragment extends Fragment { butRetry.setVisibility(View.GONE); txtvEmpty.setVisibility(View.GONE); progressBar.setVisibility(View.VISIBLE); - subscription = rx.Observable.create((Observable.OnSubscribe<List<Podcast>>) subscriber -> { + subscription = Observable.create((Observable.OnSubscribe<List<Podcast>>) subscriber -> { String lang = Locale.getDefault().getLanguage(); String url = "https://itunes.apple.com/" + lang + "/rss/toppodcasts/limit=25/explicit=true/json"; OkHttpClient client = AntennapodHttpClient.getHttpClient(); diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java index c5b77fae2..f6cb71af5 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java @@ -220,7 +220,7 @@ public class PlaybackHistoryFragment extends ListFragment { private FeedItemlistAdapter.ItemAccess itemAccess = new FeedItemlistAdapter.ItemAccess() { @Override public boolean isInQueue(FeedItem item) { - return (queue != null) ? queue.contains(item.getId()) : false; + return (queue != null) && queue.contains(item.getId()); } @Override @@ -255,7 +255,7 @@ public class PlaybackHistoryFragment extends ListFragment { if(subscription != null) { subscription.unsubscribe(); } - subscription = Observable.fromCallable(() -> loadData()) + subscription = Observable.fromCallable(this::loadData) .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(result -> { diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java index b3f6c3534..4bfc3c9da 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java @@ -230,9 +230,8 @@ public class QueueFragment extends Fragment { resetViewState(); } - private final MenuItemUtils.UpdateRefreshMenuItemChecker updateRefreshMenuItemChecker = () -> { - return DownloadService.isRunning && DownloadRequester.getInstance().isDownloadingFeeds(); - }; + private final MenuItemUtils.UpdateRefreshMenuItemChecker updateRefreshMenuItemChecker = + () -> DownloadService.isRunning && DownloadRequester.getInstance().isDownloadingFeeds(); @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { @@ -415,7 +414,7 @@ public class QueueFragment extends Fragment { Snackbar snackbar = Snackbar.make(root, getString(R.string.marked_as_read_label), Snackbar.LENGTH_LONG); snackbar.setAction(getString(R.string.undo), v -> { DBWriter.addQueueItemAt(getActivity(), item.getId(), position, false); - if(false == isRead) { + if(!isRead) { DBWriter.markItemPlayed(FeedItem.UNPLAYED, item.getId()); } }); @@ -424,12 +423,12 @@ public class QueueFragment extends Fragment { @Override public boolean isLongPressDragEnabled() { - return false == UserPreferences.isQueueLocked(); + return !UserPreferences.isQueueLocked(); } @Override public boolean isItemViewSwipeEnabled() { - return false == UserPreferences.isQueueLocked(); + return !UserPreferences.isQueueLocked(); } @Override @@ -474,6 +473,7 @@ public class QueueFragment extends Fragment { MainActivity activity = (MainActivity) getActivity(); recyclerAdapter = new QueueRecyclerAdapter(activity, itemAccess, new DefaultActionButtonCallback(activity), itemTouchHelper); + recyclerAdapter.setHasStableIds(true); recyclerView.setAdapter(recyclerAdapter); } if(queue == null || queue.size() == 0) { @@ -607,7 +607,7 @@ public class QueueFragment extends Fragment { txtvEmpty.setVisibility(View.GONE); progLoading.setVisibility(View.VISIBLE); } - subscription = Observable.fromCallable(() -> DBReader.getQueue()) + subscription = Observable.fromCallable(DBReader::getQueue) .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(items -> { diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/SearchFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/SearchFragment.java index dbd18163c..510909379 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/SearchFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/SearchFragment.java @@ -208,7 +208,7 @@ public class SearchFragment extends ListFragment { if (viewCreated && !itemsLoaded) { setListShown(false); } - subscription = Observable.fromCallable(() -> performSearch()) + subscription = Observable.fromCallable(this::performSearch) .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(result -> { diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/PodcastListFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/PodcastListFragment.java index 204f36956..15e9c9943 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/PodcastListFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/PodcastListFragment.java @@ -14,7 +14,6 @@ import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; -import android.widget.AdapterView; import android.widget.Button; import android.widget.GridView; import android.widget.ProgressBar; @@ -84,18 +83,9 @@ public abstract class PodcastListFragment extends Fragment { txtvError = (TextView) root.findViewById(R.id.txtvError); butRetry = (Button) root.findViewById(R.id.butRetry); - gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView<?> parent, View view, int position, long id) { - onPodcastSelected((GpodnetPodcast) gridView.getAdapter().getItem(position)); - } - }); - butRetry.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - loadData(); - } - }); + gridView.setOnItemClickListener((parent, view, position, id) -> + onPodcastSelected((GpodnetPodcast) gridView.getAdapter().getItem(position))); + butRetry.setOnClickListener(v -> loadData()); loadData(); return root; diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/SuggestionListFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/SuggestionListFragment.java index 133bb0281..1b1b61efb 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/SuggestionListFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/SuggestionListFragment.java @@ -1,13 +1,13 @@ package de.danoeh.antennapod.fragment.gpodnet; +import java.util.Collections; +import java.util.List; + import de.danoeh.antennapod.core.gpoddernet.GpodnetService; import de.danoeh.antennapod.core.gpoddernet.GpodnetServiceException; import de.danoeh.antennapod.core.gpoddernet.model.GpodnetPodcast; import de.danoeh.antennapod.core.preferences.GpodnetPreferences; -import java.util.ArrayList; -import java.util.List; - /** * Displays suggestions from gpodder.net */ @@ -20,7 +20,7 @@ public class SuggestionListFragment extends PodcastListFragment { service.authenticate(GpodnetPreferences.getUsername(), GpodnetPreferences.getPassword()); return service.getSuggestions(SUGGESTIONS_COUNT); } else { - return new ArrayList<GpodnetPodcast>(); + return Collections.emptyList(); } } } diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/TagListFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/TagListFragment.java index 338f02e61..d2c7f32dd 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/TagListFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/TagListFragment.java @@ -11,7 +11,6 @@ import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; -import android.widget.AdapterView; import android.widget.TextView; import java.util.List; @@ -65,13 +64,10 @@ public class TagListFragment extends ListFragment { public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); - getListView().setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView<?> parent, View view, int position, long id) { - GpodnetTag tag = (GpodnetTag) getListAdapter().getItem(position); - MainActivity activity = (MainActivity) getActivity(); - activity.loadChildFragment(TagFragment.newInstance(tag)); - } + getListView().setOnItemClickListener((parent, view1, position, id) -> { + GpodnetTag tag = (GpodnetTag) getListAdapter().getItem(position); + MainActivity activity = (MainActivity) getActivity(); + activity.loadChildFragment(TagFragment.newInstance(tag)); }); startLoadTask(); |