Search in sources :

Example 1 with Filter

use of butter.droid.provider.base.filter.Filter in project butter-android by butterproject.

the class TVMediaGridActivity method onCreate.

@SuppressLint("MissingSuperCall")
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState, R.layout.activity_movie_media_grid);
    Bundle extras = getIntent().getExtras();
    final Filter filter = extras.getParcelable(EXTRA_FILTER);
    @StringRes int title = extras.getInt(EXTRA_TITLE);
    final int providerId = extras.getInt(EXTRA_PROVIDER);
    // add media fragment
    getSupportFragmentManager().beginTransaction().replace(R.id.fragment, TVMediaGridFragment.newInstance(providerId, title, filter)).commit();
}
Also used : Filter(butter.droid.provider.base.filter.Filter) Bundle(android.os.Bundle) StringRes(android.support.annotation.StringRes) SuppressLint(android.annotation.SuppressLint) SuppressLint(android.annotation.SuppressLint)

Example 2 with Filter

use of butter.droid.provider.base.filter.Filter in project butter-android by butterproject.

the class TVMediaGridFragment method onCreate.

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    backgroundUpdater.initialise(getActivity(), R.color.black);
    setupUi();
    Bundle args = getArguments();
    int providerId = args.getInt(ARG_PROVIDER);
    Filter filter = args.getParcelable(ARG_FILTER);
    presenter.onCreate(providerId, filter);
}
Also used : Filter(butter.droid.provider.base.filter.Filter) Bundle(android.os.Bundle)

Example 3 with Filter

use of butter.droid.provider.base.filter.Filter in project butter-android by butterproject.

the class TVOverviewPresenterImpl method loadProviderMedia.

private void loadProviderMedia(final int providerId) {
    cancelMovieCall(providerId);
    final butter.droid.provider.MediaProvider provider = providerManager.getMediaProvider(providerId);
    provider.getDefaultSorter().flatMap(sorter -> {
        Filter f;
        if (sorter.isPresent()) {
            f = new Filter(null, sorter.get());
        } else {
            f = new Filter(null, null);
        }
        return provider.items(f, new Pager(null));
    }).flatMap(w -> Single.zip(Single.just(w.getPaging()), Observable.fromIterable(w.getMedia()).map(m -> new MediaWrapper(m, providerId)).toList(), Pair::create)).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new SingleObserver<Pair<Paging, List<MediaWrapper>>>() {

        @Override
        public void onSubscribe(final Disposable d) {
            listRequests.add(providerId, d);
        }

        @Override
        public void onSuccess(final Pair<Paging, List<MediaWrapper>> items) {
            List<MediaWrapper> mediaItems = items.second;
            List<MediaCardItem> cardItems = convertMediaToOverview(mediaItems);
            view.displayProviderData(providerId, cardItems);
            if (selectedRow == 0) {
                view.updateBackgroundImage(mediaItems.get(0).getMedia().getBackdrop());
            }
        }

        @Override
        public void onError(final Throwable e) {
            view.showErrorMessage(R.string.movies_error);
        }
    });
}
Also used : MediaCardItem(butter.droid.tv.presenters.MediaCardPresenter.MediaCardItem) MaybeObserver(io.reactivex.MaybeObserver) Pair(android.util.Pair) NavItem(butter.droid.provider.base.nav.NavItem) Filter(butter.droid.provider.base.filter.Filter) NonNull(android.support.annotation.NonNull) Single(io.reactivex.Single) AndroidSchedulers(io.reactivex.android.schedulers.AndroidSchedulers) ArrayList(java.util.ArrayList) Disposable(io.reactivex.disposables.Disposable) List(java.util.List) SingleObserver(io.reactivex.SingleObserver) ProviderManager(butter.droid.base.manager.internal.provider.ProviderManager) KeyDisposable(butter.droid.base.utils.rx.KeyDisposable) R(butter.droid.tv.R) Pager(butter.droid.provider.filter.Pager) Observable(io.reactivex.Observable) Schedulers(io.reactivex.schedulers.Schedulers) MediaWrapper(butter.droid.base.providers.media.model.MediaWrapper) Nullable(android.support.annotation.Nullable) MoreItem(butter.droid.tv.presenters.MorePresenter.MoreItem) Paging(butter.droid.provider.base.paging.Paging) MediaWrapper(butter.droid.base.providers.media.model.MediaWrapper) Disposable(io.reactivex.disposables.Disposable) KeyDisposable(butter.droid.base.utils.rx.KeyDisposable) Paging(butter.droid.provider.base.paging.Paging) Filter(butter.droid.provider.base.filter.Filter) Pager(butter.droid.provider.filter.Pager) ArrayList(java.util.ArrayList) List(java.util.List) Pair(android.util.Pair)

Example 4 with Filter

use of butter.droid.provider.base.filter.Filter in project butter-android by butterproject.

the class TVSearchPresenterImpl method getProviderRequests.

private List<Single<SearchResult>> getProviderRequests(String query) {
    List<Single<SearchResult>> requests = new ArrayList<>();
    ProviderWrapper[] providers = providerManager.getProviders();
    for (int i = 0; i < providers.length; i++) {
        MediaProvider provider = providers[i].getMediaProvider();
        final int providerId = i;
        // TODO: 6/17/17 Define title of search row
        requests.add(provider.items(new Filter(null, null, query), new Pager(null)).flatMapObservable(w -> Observable.fromIterable(w.getMedia())).map(m -> new MediaWrapper(m, providerId)).toList().map(l -> new SearchResult(R.string.movie_results, l)));
    }
    return requests;
}
Also used : MediaCardPresenter(butter.droid.tv.presenters.MediaCardPresenter) MediaCardItem(butter.droid.tv.presenters.MediaCardPresenter.MediaCardItem) BehaviorSubject(io.reactivex.subjects.BehaviorSubject) Filter(butter.droid.provider.base.filter.Filter) StringRes(android.support.annotation.StringRes) Single(io.reactivex.Single) AndroidSchedulers(io.reactivex.android.schedulers.AndroidSchedulers) Timber(timber.log.Timber) ArrayList(java.util.ArrayList) TimeUnit(java.util.concurrent.TimeUnit) CompositeDisposable(io.reactivex.disposables.CompositeDisposable) Disposable(io.reactivex.disposables.Disposable) List(java.util.List) ProviderWrapper(butter.droid.base.manager.internal.provider.model.ProviderWrapper) PublishSubject(io.reactivex.subjects.PublishSubject) ProviderManager(butter.droid.base.manager.internal.provider.ProviderManager) Observer(io.reactivex.Observer) R(butter.droid.tv.R) Pager(butter.droid.provider.filter.Pager) Observable(io.reactivex.Observable) Schedulers(io.reactivex.schedulers.Schedulers) MediaWrapper(butter.droid.base.providers.media.model.MediaWrapper) MediaProvider(butter.droid.provider.MediaProvider) MediaWrapper(butter.droid.base.providers.media.model.MediaWrapper) Single(io.reactivex.Single) MediaProvider(butter.droid.provider.MediaProvider) Filter(butter.droid.provider.base.filter.Filter) Pager(butter.droid.provider.filter.Pager) ArrayList(java.util.ArrayList) ProviderWrapper(butter.droid.base.manager.internal.provider.model.ProviderWrapper)

Example 5 with Filter

use of butter.droid.provider.base.filter.Filter in project butter-android by butterproject.

the class MediaListPresenterImpl method onGenreChanged.

@Override
public void onGenreChanged(UiGenre genre) {
    Genre g = genre.getGenre();
    if (filter.getGenre() == null || !filter.getGenre().equals(g)) {
        filter = new Filter(g, filter.getSorter(), filter.getQuery());
        items.clear();
        view.refreshAdapter();
    }
}
Also used : Filter(butter.droid.provider.base.filter.Filter) Genre(butter.droid.provider.base.filter.Genre) UiGenre(butter.droid.ui.main.genre.list.model.UiGenre)

Aggregations

Filter (butter.droid.provider.base.filter.Filter)8 ProviderManager (butter.droid.base.manager.internal.provider.ProviderManager)4 MediaWrapper (butter.droid.base.providers.media.model.MediaWrapper)4 Pager (butter.droid.provider.filter.Pager)4 Observable (io.reactivex.Observable)4 Single (io.reactivex.Single)4 AndroidSchedulers (io.reactivex.android.schedulers.AndroidSchedulers)4 Disposable (io.reactivex.disposables.Disposable)4 Schedulers (io.reactivex.schedulers.Schedulers)4 List (java.util.List)4 Bundle (android.os.Bundle)3 Nullable (android.support.annotation.Nullable)3 StringRes (android.support.annotation.StringRes)3 Pair (android.util.Pair)3 Paging (butter.droid.provider.base.paging.Paging)3 MediaCardItem (butter.droid.tv.presenters.MediaCardPresenter.MediaCardItem)3 SingleObserver (io.reactivex.SingleObserver)3 ArrayList (java.util.ArrayList)3 R (butter.droid.tv.R)2 Timber (timber.log.Timber)2