diff options
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/fragment')
15 files changed, 217 insertions, 203 deletions
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 eeec9ff49..ef522d3b3 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java @@ -50,10 +50,10 @@ import de.danoeh.antennapod.core.util.LongList; import de.danoeh.antennapod.menuhandler.FeedItemMenuHandler; import de.danoeh.antennapod.menuhandler.MenuItemUtils; import de.greenrobot.event.EventBus; -import rx.Observable; -import rx.Subscription; -import rx.android.schedulers.AndroidSchedulers; -import rx.schedulers.Schedulers; +import io.reactivex.Observable; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.disposables.Disposable; +import io.reactivex.schedulers.Schedulers; /** * Shows unread or recently published episodes @@ -84,7 +84,7 @@ public class AllEpisodesFragment extends Fragment { private boolean isUpdatingFeeds; boolean isMenuInvalidationAllowed = false; - Subscription subscription; + Disposable disposable; private LinearLayoutManager layoutManager; boolean showOnlyNewEpisodes() { return false; } @@ -125,8 +125,8 @@ public class AllEpisodesFragment extends Fragment { public void onStop() { super.onStop(); EventDistributor.getInstance().unregister(contentUpdate); - if(subscription != null) { - subscription.unsubscribe(); + if (disposable != null) { + disposable.dispose(); } } @@ -462,15 +462,15 @@ public class AllEpisodesFragment extends Fragment { } void loadItems() { - if(subscription != null) { - subscription.unsubscribe(); + if (disposable != null) { + disposable.dispose(); } if (viewsCreated && !itemsLoaded) { recyclerView.setVisibility(View.GONE); progLoading.setVisibility(View.VISIBLE); } - subscription = Observable.fromCallable(this::loadData) - .subscribeOn(Schedulers.newThread()) + disposable = Observable.fromCallable(this::loadData) + .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(data -> { recyclerView.setVisibility(View.VISIBLE); @@ -495,8 +495,8 @@ public class AllEpisodesFragment extends Fragment { } Log.d(TAG, "markItemAsSeenWithUndo(" + item.getId() + ")"); - if (subscription != null) { - subscription.unsubscribe(); + if (disposable != null) { + disposable.dispose(); } // we're marking it as unplayed since the user didn't actually play it // but they don't want it considered 'NEW' anymore 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 7c28ba21f..4bba9b255 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java @@ -21,10 +21,10 @@ import de.danoeh.antennapod.core.storage.DBReader; import de.danoeh.antennapod.core.storage.DBWriter; import de.danoeh.antennapod.core.util.FeedItemUtil; import de.danoeh.antennapod.dialog.EpisodesApplyActionFragment; -import rx.Observable; -import rx.Subscription; -import rx.android.schedulers.AndroidSchedulers; -import rx.schedulers.Schedulers; +import io.reactivex.Observable; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.disposables.Disposable; +import io.reactivex.schedulers.Schedulers; /** * Displays all running downloads and provides a button to delete them @@ -42,7 +42,7 @@ public class CompletedDownloadsFragment extends ListFragment { private boolean viewCreated = false; - private Subscription subscription; + private Disposable disposable; @Override public void onCreate(Bundle savedInstanceState) { @@ -61,16 +61,16 @@ public class CompletedDownloadsFragment extends ListFragment { public void onStop() { super.onStop(); EventDistributor.getInstance().unregister(contentUpdate); - if(subscription != null) { - subscription.unsubscribe(); + if (disposable != null) { + disposable.dispose(); } } @Override public void onDetach() { super.onDetach(); - if(subscription != null) { - subscription.unsubscribe(); + if (disposable != null) { + disposable.dispose(); } } @@ -79,8 +79,8 @@ public class CompletedDownloadsFragment extends ListFragment { super.onDestroyView(); listAdapter = null; viewCreated = false; - if(subscription != null) { - subscription.unsubscribe(); + if (disposable != null) { + disposable.dispose(); } } @@ -182,21 +182,19 @@ public class CompletedDownloadsFragment extends ListFragment { }; private void loadItems() { - if(subscription != null) { - subscription.unsubscribe(); + if (disposable != null) { + disposable.dispose(); } if (items == null && viewCreated) { setListShown(false); } - subscription = Observable.fromCallable(DBReader::getDownloadedItems) - .subscribeOn(Schedulers.newThread()) + disposable = Observable.fromCallable(DBReader::getDownloadedItems) + .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(result -> { - if (result != null) { - items = result; - if (viewCreated && getActivity() != null) { - onFragmentLoaded(); - } + items = result; + if (viewCreated && getActivity() != null) { + onFragmentLoaded(); } }, error -> Log.e(TAG, Log.getStackTraceString(error))); } 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 0230c9036..5a061c7e6 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/CoverFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/CoverFragment.java @@ -11,6 +11,7 @@ import android.widget.TextView; import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import de.danoeh.antennapod.R; import de.danoeh.antennapod.activity.MediaplayerInfoActivity.MediaplayerInfoContentFragment; import de.danoeh.antennapod.core.glide.ApGlideSettings; @@ -60,9 +61,10 @@ public class CoverFragment extends Fragment implements MediaplayerInfoContentFra txtvEpisodeTitle.setText(media.getEpisodeTitle()); Glide.with(this) .load(media.getImageLocation()) - .diskCacheStrategy(ApGlideSettings.AP_DISK_CACHE_STRATEGY) - .dontAnimate() - .fitCenter() + .apply(new RequestOptions() + .diskCacheStrategy(ApGlideSettings.AP_DISK_CACHE_STRATEGY) + .dontAnimate() + .fitCenter()) .into(imgvCover); } else { Log.w(TAG, "loadMediaInfo was called while media was null"); 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 a5eaa161f..5ab6bac63 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/DownloadLogFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/DownloadLogFragment.java @@ -23,10 +23,10 @@ import de.danoeh.antennapod.core.feed.FeedMedia; import de.danoeh.antennapod.core.service.download.DownloadStatus; import de.danoeh.antennapod.core.storage.DBReader; import de.danoeh.antennapod.core.storage.DBWriter; -import rx.Observable; -import rx.Subscription; -import rx.android.schedulers.AndroidSchedulers; -import rx.schedulers.Schedulers; +import io.reactivex.Observable; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.disposables.Disposable; +import io.reactivex.schedulers.Schedulers; /** * Shows the download log @@ -41,7 +41,7 @@ public class DownloadLogFragment extends ListFragment { private boolean viewsCreated = false; private boolean itemsLoaded = false; - private Subscription subscription; + private Disposable disposable; @Override public void onStart() { @@ -55,8 +55,8 @@ public class DownloadLogFragment extends ListFragment { public void onStop() { super.onStop(); EventDistributor.getInstance().unregister(contentUpdate); - if(subscription != null) { - subscription.unsubscribe(); + if(disposable != null) { + disposable.dispose(); } } @@ -178,11 +178,11 @@ public class DownloadLogFragment extends ListFragment { } private void loadItems() { - if(subscription != null) { - subscription.unsubscribe(); + if(disposable != null) { + disposable.dispose(); } - subscription = Observable.fromCallable(DBReader::getDownloadLog) - .subscribeOn(Schedulers.newThread()) + disposable = Observable.fromCallable(DBReader::getDownloadLog) + .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(result -> { if (result != null) { 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 2055c560e..de2f04590 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/ExternalPlayerFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/ExternalPlayerFragment.java @@ -16,16 +16,17 @@ import android.widget.TextView; import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import de.danoeh.antennapod.R; import de.danoeh.antennapod.core.feed.MediaType; import de.danoeh.antennapod.core.glide.ApGlideSettings; import de.danoeh.antennapod.core.service.playback.PlaybackService; import de.danoeh.antennapod.core.util.playback.Playable; import de.danoeh.antennapod.core.util.playback.PlaybackController; -import rx.Single; -import rx.Subscription; -import rx.android.schedulers.AndroidSchedulers; -import rx.schedulers.Schedulers; +import io.reactivex.Maybe; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.disposables.Disposable; +import io.reactivex.schedulers.Schedulers; /** * Fragment which is supposed to be displayed outside of the MediaplayerActivity @@ -41,7 +42,7 @@ public class ExternalPlayerFragment extends Fragment { private TextView mFeedName; private ProgressBar mProgressBar; private PlaybackController controller; - private Subscription subscription; + private Disposable disposable; public ExternalPlayerFragment() { super(); @@ -143,8 +144,8 @@ public class ExternalPlayerFragment extends Fragment { if (controller != null) { controller.release(); } - if (subscription != null) { - subscription.unsubscribe(); + if (disposable != null) { + disposable.dispose(); } } @@ -181,13 +182,21 @@ public class ExternalPlayerFragment extends Fragment { return false; } - if (subscription != null) { - subscription.unsubscribe(); + if (disposable != null) { + disposable.dispose(); } - subscription = Single.create(subscriber -> subscriber.onSuccess(controller.getMedia())) - .subscribeOn(Schedulers.newThread()) + disposable = Maybe.create(emitter -> { + Playable media = controller.getMedia(); + if (media != null) { + emitter.onSuccess(media); + } else { + emitter.onComplete(); + } + }) + .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) - .subscribe(media -> updateUi((Playable) media)); + .subscribe(media -> updateUi((Playable) media), + error -> Log.e(TAG, Log.getStackTraceString(error))); return true; } @@ -199,11 +208,12 @@ public class ExternalPlayerFragment extends Fragment { Glide.with(getActivity()) .load(media.getImageLocation()) - .placeholder(R.color.light_gray) - .error(R.color.light_gray) - .diskCacheStrategy(ApGlideSettings.AP_DISK_CACHE_STRATEGY) - .fitCenter() - .dontAnimate() + .apply(new RequestOptions() + .placeholder(R.color.light_gray) + .error(R.color.light_gray) + .diskCacheStrategy(ApGlideSettings.AP_DISK_CACHE_STRATEGY) + .fitCenter() + .dontAnimate()) .into(imgvCover); fragmentLayout.setVisibility(View.VISIBLE); diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/FavoriteEpisodesFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/FavoriteEpisodesFragment.java index 76d19d61c..70f82c2ec 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/FavoriteEpisodesFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/FavoriteEpisodesFragment.java @@ -62,8 +62,8 @@ public class FavoriteEpisodesFragment extends AllEpisodesFragment { AllEpisodesRecycleAdapter.Holder holder = (AllEpisodesRecycleAdapter.Holder)viewHolder; Log.d(TAG, "remove(" + holder.getItemId() + ")"); - if (subscription != null) { - subscription.unsubscribe(); + if (disposable != null) { + disposable.dispose(); } FeedItem item = holder.getFeedItem(); if (item != null) { diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/FyydSearchFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/FyydSearchFragment.java index 80c66077e..dadc596e2 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/FyydSearchFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/FyydSearchFragment.java @@ -28,9 +28,9 @@ import de.danoeh.antennapod.menuhandler.MenuItemUtils; import de.mfietz.fyydlin.FyydClient; import de.mfietz.fyydlin.FyydResponse; import de.mfietz.fyydlin.SearchHit; -import rx.Subscription; -import rx.android.schedulers.AndroidSchedulers; -import rx.schedulers.Schedulers; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.disposables.Disposable; +import io.reactivex.schedulers.Schedulers; import static de.danoeh.antennapod.adapter.itunes.ItunesAdapter.Podcast; import static java.util.Collections.emptyList; @@ -55,7 +55,7 @@ public class FyydSearchFragment extends Fragment { * List of podcasts retreived from the search */ private List<Podcast> searchResults; - private Subscription subscription; + private Disposable disposable; /** * Constructor @@ -98,8 +98,8 @@ public class FyydSearchFragment extends Fragment { @Override public void onDestroy() { super.onDestroy(); - if (subscription != null) { - subscription.unsubscribe(); + if (disposable != null) { + disposable.dispose(); } adapter = null; } @@ -141,12 +141,12 @@ public class FyydSearchFragment extends Fragment { } private void search(String query) { - if (subscription != null) { - subscription.unsubscribe(); + if (disposable != null) { + disposable.dispose(); } showOnlyProgressBar(); - subscription = client.searchPodcasts(query) - .subscribeOn(Schedulers.newThread()) + disposable = client.searchPodcasts(query, 10) + .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(result -> { progressBar.setVisibility(View.GONE); @@ -174,7 +174,7 @@ public class FyydSearchFragment extends Fragment { if (!response.getData().isEmpty()) { adapter.clear(); searchResults = new ArrayList<>(); - for (SearchHit searchHit : response.getData().values()) { + for (SearchHit searchHit : response.getData()) { Podcast podcast = Podcast.fromSearch(searchHit); searchResults.add(podcast); } 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 829e1924a..4ee7a06ad 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/ItemDescriptionFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/ItemDescriptionFragment.java @@ -39,10 +39,10 @@ import de.danoeh.antennapod.core.util.ShownotesProvider; import de.danoeh.antennapod.core.util.playback.Playable; import de.danoeh.antennapod.core.util.playback.PlaybackController; import de.danoeh.antennapod.core.util.playback.Timeline; -import rx.Observable; -import rx.Subscription; -import rx.android.schedulers.AndroidSchedulers; -import rx.schedulers.Schedulers; +import io.reactivex.Observable; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.disposables.Disposable; +import io.reactivex.schedulers.Schedulers; /** * Displays the description of a Playable object in a Webview. @@ -66,7 +66,7 @@ public class ItemDescriptionFragment extends Fragment implements MediaplayerInfo private ShownotesProvider shownotesProvider; private Playable media; - private Subscription webViewLoader; + private Disposable webViewLoader; /** * URL that was selected via long-press. @@ -167,7 +167,7 @@ public class ItemDescriptionFragment extends Fragment implements MediaplayerInfo super.onDestroy(); Log.d(TAG, "Fragment destroyed"); if (webViewLoader != null) { - webViewLoader.unsubscribe(); + webViewLoader.dispose(); } if (webvDescription != null) { webvDescription.removeAllViews(); @@ -198,7 +198,7 @@ public class ItemDescriptionFragment extends Fragment implements MediaplayerInfo } else if (args.containsKey(ARG_FEEDITEM_ID)) { long id = getArguments().getLong(ARG_FEEDITEM_ID); Observable.defer(() -> Observable.just(DBReader.getFeedItem(id))) - .subscribeOn(Schedulers.newThread()) + .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(feedItem -> { shownotesProvider = feedItem; @@ -298,13 +298,13 @@ public class ItemDescriptionFragment extends Fragment implements MediaplayerInfo private void load() { Log.d(TAG, "load()"); if(webViewLoader != null) { - webViewLoader.unsubscribe(); + webViewLoader.dispose(); } if(shownotesProvider == null) { return; } - webViewLoader = Observable.defer(() -> Observable.just(loadData())) - .subscribeOn(Schedulers.newThread()) + webViewLoader = Observable.fromCallable(this::loadData) + .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(data -> { webvDescription.loadDataWithBaseURL(null, data, "text/html", 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 c1d9bb9ab..bcca281d4 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/ItemFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/ItemFragment.java @@ -31,6 +31,7 @@ import android.widget.TextView; import android.widget.Toast; import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.joanzapata.iconify.Iconify; import com.joanzapata.iconify.widget.IconButton; @@ -68,10 +69,10 @@ import de.danoeh.antennapod.menuhandler.FeedItemMenuHandler; import de.danoeh.antennapod.view.OnSwipeGesture; import de.danoeh.antennapod.view.SwipeGestureDetector; import de.greenrobot.event.EventBus; -import rx.Observable; -import rx.Subscription; -import rx.android.schedulers.AndroidSchedulers; -import rx.schedulers.Schedulers; +import io.reactivex.Observable; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.disposables.Disposable; +import io.reactivex.schedulers.Schedulers; /** * Displays information about a FeedItem and actions. @@ -134,7 +135,7 @@ public class ItemFragment extends Fragment implements OnSwipeGesture { private IconButton butAction2; private Menu popupMenu; - private Subscription subscription; + private Disposable disposable; /** * URL that was selected via long-press. @@ -285,8 +286,8 @@ public class ItemFragment extends Fragment implements OnSwipeGesture { @Override public void onDestroyView() { super.onDestroyView(); - if(subscription != null) { - subscription.unsubscribe(); + if(disposable != null) { + disposable.dispose(); } if (webvDescription != null && root != null) { root.removeView(webvDescription); @@ -378,11 +379,12 @@ public class ItemFragment extends Fragment implements OnSwipeGesture { Glide.with(getActivity()) .load(item.getImageLocation()) - .placeholder(R.color.light_gray) - .error(R.color.light_gray) - .diskCacheStrategy(ApGlideSettings.AP_DISK_CACHE_STRATEGY) - .fitCenter() - .dontAnimate() + .apply(new RequestOptions() + .placeholder(R.color.light_gray) + .error(R.color.light_gray) + .diskCacheStrategy(ApGlideSettings.AP_DISK_CACHE_STRATEGY) + .fitCenter() + .dontAnimate()) .into(imgvCover); progbarDownload.setVisibility(View.GONE); @@ -571,12 +573,12 @@ public class ItemFragment extends Fragment implements OnSwipeGesture { }; private void load() { - if(subscription != null) { - subscription.unsubscribe(); + if(disposable != null) { + disposable.dispose(); } progbarLoading.setVisibility(View.VISIBLE); - subscription = Observable.fromCallable(this::loadInBackground) - .subscribeOn(Schedulers.newThread()) + disposable = Observable.fromCallable(this::loadInBackground) + .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(result -> { progbarLoading.setVisibility(View.GONE); 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 bc38af9f3..d9e318069 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/ItemlistFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/ItemlistFragment.java @@ -24,6 +24,8 @@ import android.widget.RelativeLayout; import android.widget.TextView; import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; +import com.joanzapata.iconify.IconDrawable; import com.joanzapata.iconify.Iconify; import com.joanzapata.iconify.widget.IconTextView; @@ -66,10 +68,10 @@ import de.danoeh.antennapod.menuhandler.FeedItemMenuHandler; import de.danoeh.antennapod.menuhandler.FeedMenuHandler; import de.danoeh.antennapod.menuhandler.MenuItemUtils; import de.greenrobot.event.EventBus; -import rx.Observable; -import rx.Subscription; -import rx.android.schedulers.AndroidSchedulers; -import rx.schedulers.Schedulers; +import io.reactivex.Observable; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.disposables.Disposable; +import io.reactivex.schedulers.Schedulers; /** * Displays a list of FeedItems. @@ -109,7 +111,7 @@ public class ItemlistFragment extends ListFragment { private TextView txtvInformation; - private Subscription subscription; + private Disposable disposable; /** * Creates new ItemlistFragment which shows the Feeditems of a specific @@ -160,8 +162,8 @@ public class ItemlistFragment extends ListFragment { super.onPause(); EventDistributor.getInstance().unregister(contentUpdate); EventBus.getDefault().unregister(this); - if(subscription != null) { - subscription.unsubscribe(); + if(disposable != null) { + disposable.dispose(); } } @@ -518,20 +520,22 @@ public class ItemlistFragment extends ListFragment { private void loadFeedImage() { Glide.with(getActivity()) .load(feed.getImageLocation()) - .placeholder(R.color.image_readability_tint) - .error(R.color.image_readability_tint) - .diskCacheStrategy(ApGlideSettings.AP_DISK_CACHE_STRATEGY) - .transform(new FastBlurTransformation(getActivity())) - .dontAnimate() + .apply(new RequestOptions() + .placeholder(R.color.image_readability_tint) + .error(R.color.image_readability_tint) + .diskCacheStrategy(ApGlideSettings.AP_DISK_CACHE_STRATEGY) + .transform(new FastBlurTransformation()) + .dontAnimate()) .into(imgvBackground); Glide.with(getActivity()) .load(feed.getImageLocation()) - .placeholder(R.color.light_gray) - .error(R.color.light_gray) - .diskCacheStrategy(ApGlideSettings.AP_DISK_CACHE_STRATEGY) - .fitCenter() - .dontAnimate() + .apply(new RequestOptions() + .placeholder(R.color.light_gray) + .error(R.color.light_gray) + .diskCacheStrategy(ApGlideSettings.AP_DISK_CACHE_STRATEGY) + .fitCenter() + .dontAnimate()) .into(imgvCover); } @@ -607,11 +611,11 @@ public class ItemlistFragment extends ListFragment { private void loadItems() { - if(subscription != null) { - subscription.unsubscribe(); + if(disposable != null) { + disposable.dispose(); } - subscription = Observable.fromCallable(this::loadData) - .subscribeOn(Schedulers.newThread()) + disposable = Observable.fromCallable(this::loadData) + .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(result -> { if (result != null) { 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 57cbdc9c3..a0e2ca22a 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/ItunesSearchFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/ItunesSearchFragment.java @@ -36,13 +36,14 @@ import de.danoeh.antennapod.adapter.itunes.ItunesAdapter; import de.danoeh.antennapod.core.ClientConfig; import de.danoeh.antennapod.core.service.download.AntennapodHttpClient; import de.danoeh.antennapod.menuhandler.MenuItemUtils; +import io.reactivex.Single; +import io.reactivex.SingleOnSubscribe; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.disposables.Disposable; +import io.reactivex.schedulers.Schedulers; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; -import rx.Observable; -import rx.Subscription; -import rx.android.schedulers.AndroidSchedulers; -import rx.schedulers.Schedulers; import static de.danoeh.antennapod.adapter.itunes.ItunesAdapter.Podcast; @@ -69,7 +70,7 @@ public class ItunesSearchFragment extends Fragment { */ private List<Podcast> searchResults; private List<Podcast> topList; - private Subscription subscription; + private Disposable disposable; /** * Replace adapter data with provided search results from SearchTask. @@ -127,7 +128,7 @@ public class ItunesSearchFragment extends Fragment { } else { gridView.setVisibility(View.GONE); progressBar.setVisibility(View.VISIBLE); - subscription = Observable.create((Observable.OnSubscribe<String>) subscriber -> { + disposable = Single.create((SingleOnSubscribe<String>) emitter -> { OkHttpClient client = AntennapodHttpClient.getHttpClient(); Request.Builder httpReq = new Request.Builder() .url(podcast.feedUrl) @@ -139,17 +140,16 @@ public class ItunesSearchFragment extends Fragment { JSONObject result = new JSONObject(resultString); JSONObject results = result.getJSONArray("results").getJSONObject(0); String feedUrl = results.getString("feedUrl"); - subscriber.onNext(feedUrl); + emitter.onSuccess(feedUrl); } else { String prefix = getString(R.string.error_msg_prefix); - subscriber.onError(new IOException(prefix + response)); + emitter.onError(new IOException(prefix + response)); } } catch (IOException | JSONException e) { - subscriber.onError(e); + emitter.onError(e); } - subscriber.onCompleted(); }) - .subscribeOn(Schedulers.newThread()) + .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(feedUrl -> { progressBar.setVisibility(View.GONE); @@ -183,8 +183,8 @@ public class ItunesSearchFragment extends Fragment { @Override public void onDestroy() { super.onDestroy(); - if (subscription != null) { - subscription.unsubscribe(); + if (disposable != null) { + disposable.dispose(); } adapter = null; } @@ -228,15 +228,15 @@ public class ItunesSearchFragment extends Fragment { } private void loadToplist() { - if (subscription != null) { - subscription.unsubscribe(); + if (disposable != null) { + disposable.dispose(); } gridView.setVisibility(View.GONE); txtvError.setVisibility(View.GONE); butRetry.setVisibility(View.GONE); txtvEmpty.setVisibility(View.GONE); progressBar.setVisibility(View.VISIBLE); - subscription = Observable.create((Observable.OnSubscribe<List<Podcast>>) subscriber -> { + disposable = Single.create((SingleOnSubscribe<List<Podcast>>) emitter -> { String lang = Locale.getDefault().getLanguage(); String url = "https://itunes.apple.com/" + lang + "/rss/toppodcasts/limit=25/explicit=true/json"; OkHttpClient client = AntennapodHttpClient.getHttpClient(); @@ -268,15 +268,14 @@ public class ItunesSearchFragment extends Fragment { } else { String prefix = getString(R.string.error_msg_prefix); - subscriber.onError(new IOException(prefix + response)); + emitter.onError(new IOException(prefix + response)); } } catch (IOException | JSONException e) { - subscriber.onError(e); + emitter.onError(e); } - subscriber.onNext(results); - subscriber.onCompleted(); + emitter.onSuccess(results); }) - .subscribeOn(Schedulers.newThread()) + .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(podcasts -> { progressBar.setVisibility(View.GONE); @@ -293,15 +292,15 @@ public class ItunesSearchFragment extends Fragment { } private void search(String query) { - if (subscription != null) { - subscription.unsubscribe(); + if (disposable != null) { + disposable.dispose(); } gridView.setVisibility(View.GONE); txtvError.setVisibility(View.GONE); butRetry.setVisibility(View.GONE); txtvEmpty.setVisibility(View.GONE); progressBar.setVisibility(View.VISIBLE); - subscription = rx.Observable.create((Observable.OnSubscribe<List<Podcast>>) subscriber -> { + disposable = Single.create((SingleOnSubscribe<List<Podcast>>) subscriber -> { String encodedQuery = null; try { encodedQuery = URLEncoder.encode(query, "UTF-8"); @@ -341,10 +340,9 @@ public class ItunesSearchFragment extends Fragment { } catch (IOException | JSONException e) { subscriber.onError(e); } - subscriber.onNext(podcasts); - subscriber.onCompleted(); + subscriber.onSuccess(podcasts); }) - .subscribeOn(Schedulers.newThread()) + .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(podcasts -> { progressBar.setVisibility(View.GONE); 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 fb6280021..c2a9200c8 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java @@ -30,10 +30,10 @@ import de.danoeh.antennapod.core.storage.DBWriter; import de.danoeh.antennapod.core.util.FeedItemUtil; import de.danoeh.antennapod.core.util.LongList; import de.greenrobot.event.EventBus; -import rx.Observable; -import rx.Subscription; -import rx.android.schedulers.AndroidSchedulers; -import rx.schedulers.Schedulers; +import io.reactivex.Observable; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.disposables.Disposable; +import io.reactivex.schedulers.Schedulers; public class PlaybackHistoryFragment extends ListFragment { @@ -50,7 +50,7 @@ public class PlaybackHistoryFragment extends ListFragment { private List<Downloader> downloaderList; - private Subscription subscription; + private Disposable disposable; @Override public void onAttach(Context context) { @@ -107,16 +107,16 @@ public class PlaybackHistoryFragment extends ListFragment { public void onStop() { super.onStop(); EventDistributor.getInstance().unregister(contentUpdate); - if(subscription != null) { - subscription.unsubscribe(); + if(disposable != null) { + disposable.dispose(); } } @Override public void onDetach() { super.onDetach(); - if(subscription != null) { - subscription.unsubscribe(); + if(disposable != null) { + disposable.dispose(); } } @@ -269,11 +269,11 @@ public class PlaybackHistoryFragment extends ListFragment { }; private void loadItems() { - if(subscription != null) { - subscription.unsubscribe(); + if(disposable != null) { + disposable.dispose(); } - subscription = Observable.fromCallable(this::loadData) - .subscribeOn(Schedulers.newThread()) + disposable = Observable.fromCallable(this::loadData) + .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(result -> { if (result != null) { 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 c6db974c1..faeabf75c 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java @@ -53,10 +53,10 @@ import de.danoeh.antennapod.core.util.QueueSorter; import de.danoeh.antennapod.menuhandler.FeedItemMenuHandler; import de.danoeh.antennapod.menuhandler.MenuItemUtils; import de.greenrobot.event.EventBus; -import rx.Observable; -import rx.Subscription; -import rx.android.schedulers.AndroidSchedulers; -import rx.schedulers.Schedulers; +import io.reactivex.Observable; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.disposables.Disposable; +import io.reactivex.schedulers.Schedulers; /** * Shows all items in the queue @@ -84,7 +84,7 @@ public class QueueFragment extends Fragment { private static final String PREF_SCROLL_POSITION = "scroll_position"; private static final String PREF_SCROLL_OFFSET = "scroll_offset"; - private Subscription subscription; + private Disposable disposable; private LinearLayoutManager layoutManager; private ItemTouchHelper itemTouchHelper; @@ -118,8 +118,8 @@ public class QueueFragment extends Fragment { saveScrollPosition(); EventDistributor.getInstance().unregister(contentUpdate); EventBus.getDefault().unregister(this); - if(subscription != null) { - subscription.unsubscribe(); + if(disposable != null) { + disposable.dispose(); } } @@ -423,8 +423,8 @@ public class QueueFragment extends Fragment { @Override public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) { - if(subscription != null) { - subscription.unsubscribe(); + if(disposable != null) { + disposable.dispose(); } final int position = viewHolder.getAdapterPosition(); Log.d(TAG, "remove(" + position + ")"); @@ -623,16 +623,16 @@ public class QueueFragment extends Fragment { private void loadItems(final boolean restoreScrollPosition) { Log.d(TAG, "loadItems()"); - if(subscription != null) { - subscription.unsubscribe(); + if(disposable != null) { + disposable.dispose(); } if (queue == null) { recyclerView.setVisibility(View.GONE); txtvEmpty.setVisibility(View.GONE); progLoading.setVisibility(View.VISIBLE); } - subscription = Observable.fromCallable(DBReader::getQueue) - .subscribeOn(Schedulers.newThread()) + disposable = Observable.fromCallable(DBReader::getQueue) + .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(items -> { if(items != null) { 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 f64b4c20a..8322a5573 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/SearchFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/SearchFragment.java @@ -24,10 +24,10 @@ import de.danoeh.antennapod.core.feed.FeedComponent; import de.danoeh.antennapod.core.feed.FeedItem; import de.danoeh.antennapod.core.feed.SearchResult; import de.danoeh.antennapod.core.storage.FeedSearcher; -import rx.Observable; -import rx.Subscription; -import rx.android.schedulers.AndroidSchedulers; -import rx.schedulers.Schedulers; +import io.reactivex.Observable; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.disposables.Disposable; +import io.reactivex.schedulers.Schedulers; /** * Performs a search operation on all feeds or one specific feed and displays the search result. @@ -44,7 +44,7 @@ public class SearchFragment extends ListFragment { private boolean viewCreated = false; private boolean itemsLoaded = false; - private Subscription subscription; + private Disposable disposable; /** * Create a new SearchFragment that searches all feeds. @@ -85,8 +85,8 @@ public class SearchFragment extends ListFragment { @Override public void onStop() { super.onStop(); - if(subscription != null) { - subscription.unsubscribe(); + if(disposable != null) { + disposable.dispose(); } EventDistributor.getInstance().unregister(contentUpdate); } @@ -94,8 +94,8 @@ public class SearchFragment extends ListFragment { @Override public void onDetach() { super.onDetach(); - if(subscription != null) { - subscription.unsubscribe(); + if(disposable != null) { + disposable.dispose(); } } @@ -205,14 +205,14 @@ public class SearchFragment extends ListFragment { private void search() { - if(subscription != null) { - subscription.unsubscribe(); + if(disposable != null) { + disposable.dispose(); } if (viewCreated && !itemsLoaded) { setListShown(false); } - subscription = Observable.fromCallable(this::performSearch) - .subscribeOn(Schedulers.newThread()) + disposable = Observable.fromCallable(this::performSearch) + .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(result -> { if (result != null) { diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java index 36a9c5ba8..5f09be8ce 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java @@ -27,10 +27,10 @@ import de.danoeh.antennapod.core.storage.DBWriter; import de.danoeh.antennapod.core.util.FeedItemUtil; import de.danoeh.antennapod.core.util.IntentUtils; import de.danoeh.antennapod.dialog.RenameFeedDialog; -import rx.Observable; -import rx.Subscription; -import rx.android.schedulers.AndroidSchedulers; -import rx.schedulers.Schedulers; +import io.reactivex.Observable; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.disposables.Disposable; +import io.reactivex.schedulers.Schedulers; /** * Fragment for displaying feed subscriptions @@ -48,7 +48,7 @@ public class SubscriptionFragment extends Fragment { private int mPosition = -1; - private Subscription subscription; + private Disposable disposable; public SubscriptionFragment() { } @@ -94,17 +94,17 @@ public class SubscriptionFragment extends Fragment { @Override public void onDestroy() { super.onDestroy(); - if(subscription != null) { - subscription.unsubscribe(); + if(disposable != null) { + disposable.dispose(); } } private void loadSubscriptions() { - if(subscription != null) { - subscription.unsubscribe(); + if(disposable != null) { + disposable.dispose(); } - subscription = Observable.fromCallable(DBReader::getNavDrawerData) - .subscribeOn(Schedulers.newThread()) + disposable = Observable.fromCallable(DBReader::getNavDrawerData) + .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(result -> { navDrawerData = result; @@ -161,7 +161,7 @@ public class SubscriptionFragment extends Fragment { dialog.dismiss(); Observable.fromCallable(() -> DBWriter.markFeedSeen(feed.getId())) - .subscribeOn(Schedulers.newThread()) + .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(result -> loadSubscriptions(), error -> Log.e(TAG, Log.getStackTraceString(error))); @@ -178,7 +178,7 @@ public class SubscriptionFragment extends Fragment { public void onConfirmButtonPressed(DialogInterface dialog) { dialog.dismiss(); Observable.fromCallable(() -> DBWriter.markFeedRead(feed.getId())) - .subscribeOn(Schedulers.newThread()) + .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(result -> loadSubscriptions(), error -> Log.e(TAG, Log.getStackTraceString(error))); |