Search in sources :

Example 1 with MetaProvider

use of butter.droid.base.providers.meta.MetaProvider in project butter-android by butterproject.

the class EpisodeDialogFragment method onActivityCreated.

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    if (!TextUtils.isEmpty(episode.getTitle())) {
        title.setText(episode.getTitle());
        headerImage.setContentDescription(episode.getTitle());
    } else {
        title.setText(R.string.no_title_available);
        headerImage.setContentDescription(getString(R.string.no_title_available));
    }
    // TODO: 6/17/17 meta provider
    // aired.setVisibility(episode.aired > 0 ? View.VISIBLE : View.GONE);
    // Date airedDate = new Date((long) episode.aired * 1000);
    // aired.setText(String.format(getString(R.string.aired), new SimpleDateFormat("MMMM dd, yyyy", LocaleUtils.getCurrent())
    // .format(airedDate)));
    // if (!TextUtils.isEmpty(episode.getOverview())) {
    // synopsis.setText(episode.getOverview());
    // } else {
    // synopsis.setText(R.string.no_synopsis_available);
    // }
    // info.setText(String.format(Locale.US, "S%02dE%02d", episode.getSeasion(), episode.getEpisode()));
    // subtitlesPreview.setFragmentManager(getFragmentManager());
    subtitlesPreview.setOnClickListener(v -> showSubsPickerDialog());
    quality.setFragmentManager(getFragmentManager());
    final Format[] formats = mediaDisplayManager.getSortedTorrentFormats(episode.getTorrents());
    String[] formatDisplay = new String[formats.length];
    for (int i = 0; i < formats.length; i++) {
        formatDisplay[i] = mediaDisplayManager.getFormatDisplayName(formats[i]);
    }
    quality.setData(formatDisplay);
    int defaultFormatIndex = mediaDisplayManager.getDefaultFormatIndex(formats);
    // // TODO: 7/30/17 Handle sorting
    selectedTorrent = episode.getTorrents()[defaultFormatIndex];
    this.quality.setText(formatDisplay[defaultFormatIndex]);
    this.quality.setDefault(defaultFormatIndex);
    updateMagnet();
    this.quality.setListener((position, value) -> {
        selectedTorrent = episode.getTorrents()[position];
        updateMagnet();
    });
    if (providerManager.hasSubsProvider(mediaMeta.getProviderId())) {
        subtitlesPreview.setText(R.string.loading_subs);
        subtitlesPreview.setClickable(false);
        providerManager.getSubsProvider(mediaMeta.getProviderId()).list(episode).flatMap(subs -> {
            if (subs.isEmpty()) {
                return Single.<List<UiSubItem>>just(Collections.EMPTY_LIST);
            } else {
                final String defaultSubtitle = preferencesHandler.getSubtitleDefaultLanguage();
                return Observable.fromIterable(subs).map(sub -> new UiSubItem(sub, sub.equals(defaultSubtitle))).startWith(new UiSubItem(null, defaultSubtitle == null)).toList();
            }
        }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new SingleObserver<List<UiSubItem>>() {

            @Override
            public void onSubscribe(final Disposable d) {
            // TODO dispose
            }

            @Override
            public void onSuccess(final List<UiSubItem> subs) {
                if (subs.isEmpty()) {
                    subtitlesPreview.setText(R.string.no_subs_available);
                    subtitleList = null;
                } else {
                    subtitlesPreview.setClickable(true);
                    subtitleList = subs;
                    UiSubItem selectedItem = null;
                    for (final UiSubItem sub : subs) {
                        if (sub.isSelected()) {
                            selectedItem = sub;
                            String name = sub.getName();
                            if (TextUtils.isEmpty(name)) {
                                subtitlesPreview.setText(R.string.no_subs);
                            } else {
                                subtitlesPreview.setText(name);
                            }
                            break;
                        }
                    }
                    if (selectedItem == null) {
                        selectedItem = subs.get(0);
                    }
                    selectedSub = selectedItem;
                }
            }

            @Override
            public void onError(final Throwable e) {
                // subtitleList = null;
                subtitlesPreview.setText(R.string.no_subs_available);
                subtitlesPreview.setClickable(false);
            }
        });
    } else {
        subtitlesPreview.setText(R.string.no_subs_available);
        subtitlesPreview.setClickable(false);
    }
    scrollView.setListener(new BottomSheetScrollView.Listener() {

        @Override
        public void onScroll(int scrollY, BottomSheetScrollView.Direction direction) {
        }

        @Override
        public void onTouch(boolean touching) {
            EpisodeDialogFragment.this.touching = touching;
            int scrollY = scrollView.getScrollY();
            if (!EpisodeDialogFragment.this.touching && opened && scrollY <= threshold) {
                smoothDismiss();
            }
        }

        @Override
        public void onScrollStart() {
        }

        @Override
        public void onScrollEnd() {
            if (!touching && opened && scrollView.getScrollY() <= threshold) {
                smoothDismiss();
            }
        }
    });
    if (metaProvider != null) {
    // TODO: 6/17/17 meta
    // metaProvider.getEpisodeMeta(episode.imdbId, episode.getSeasion(), episode.getEpisode(),
    // (Callback) (metaData, ex) -> {
    // String imageUrl = episode.getBackdrop();
    // if (ex == null) {
    // imageUrl = metaData.images.poster;
    // }
    // Picasso.with(headerImage.getContext()).load(imageUrl).into(headerImage);
    // });
    } else {
        Picasso.with(headerImage.getContext()).load(episode.getBackdrop()).into(headerImage);
    }
}
Also used : ImageButton(android.widget.ImageButton) LinearLayout(android.widget.LinearLayout) Bundle(android.os.Bundle) ImageView(android.widget.ImageView) AndroidSchedulers(io.reactivex.android.schedulers.AndroidSchedulers) OnClick(butterknife.OnClick) BindView(butterknife.BindView) Picasso(com.squareup.picasso.Picasso) ProviderManager(butter.droid.base.manager.internal.provider.ProviderManager) ContextThemeWrapper(android.view.ContextThemeWrapper) View(android.view.View) Schedulers(io.reactivex.schedulers.Schedulers) SubtitleWrapper(butter.droid.base.providers.subs.model.SubtitleWrapper) PreferencesHandler(butter.droid.base.content.preferences.PreferencesHandler) ViewGroup(android.view.ViewGroup) OptionPreview(butter.droid.widget.OptionPreview) SubsPickerCallback(butter.droid.ui.media.detail.dialog.subs.SubsPickerDialog.SubsPickerCallback) Disposable(io.reactivex.disposables.Disposable) List(java.util.List) TextView(android.widget.TextView) Nullable(android.support.annotation.Nullable) SubsPickerDialog(butter.droid.ui.media.detail.dialog.subs.SubsPickerDialog) KeyEvent(android.view.KeyEvent) DaggerAppCompatDialogFragment(dagger.android.support.DaggerAppCompatDialogFragment) ButterKnife(butterknife.ButterKnife) Dialog(android.app.Dialog) NonNull(android.support.annotation.NonNull) StreamInfo(butter.droid.base.providers.media.model.StreamInfo) Single(io.reactivex.Single) Format(butter.droid.provider.base.model.Format) SynopsisDialogFragment(butter.droid.ui.media.detail.streamable.dialog.SynopsisDialogFragment) Inject(javax.inject.Inject) Episode(butter.droid.provider.base.model.Episode) Observable(io.reactivex.Observable) MediaWrapper(butter.droid.base.providers.media.model.MediaWrapper) OptionSelector(butter.droid.widget.OptionSelector) DialogInterface(android.content.DialogInterface) MediaDisplayManager(butter.droid.base.manager.internal.media.MediaDisplayManager) R(butter.droid.R) LayoutInflater(android.view.LayoutInflater) TextUtils(android.text.TextUtils) MediaMeta(butter.droid.base.providers.media.model.MediaMeta) Torrent(butter.droid.provider.base.model.Torrent) BottomSheetScrollView(butter.droid.widget.BottomSheetScrollView) Magnet(butter.droid.base.torrent.Magnet) SingleObserver(io.reactivex.SingleObserver) MetaProvider(butter.droid.base.providers.meta.MetaProvider) UiSubItem(butter.droid.ui.media.detail.model.UiSubItem) PixelUtils(butter.droid.base.utils.PixelUtils) Activity(android.app.Activity) Collections(java.util.Collections) Disposable(io.reactivex.disposables.Disposable) Format(butter.droid.provider.base.model.Format) UiSubItem(butter.droid.ui.media.detail.model.UiSubItem) List(java.util.List) BottomSheetScrollView(butter.droid.widget.BottomSheetScrollView)

Aggregations

Activity (android.app.Activity)1 Dialog (android.app.Dialog)1 DialogInterface (android.content.DialogInterface)1 Bundle (android.os.Bundle)1 NonNull (android.support.annotation.NonNull)1 Nullable (android.support.annotation.Nullable)1 TextUtils (android.text.TextUtils)1 ContextThemeWrapper (android.view.ContextThemeWrapper)1 KeyEvent (android.view.KeyEvent)1 LayoutInflater (android.view.LayoutInflater)1 View (android.view.View)1 ViewGroup (android.view.ViewGroup)1 ImageButton (android.widget.ImageButton)1 ImageView (android.widget.ImageView)1 LinearLayout (android.widget.LinearLayout)1 TextView (android.widget.TextView)1 R (butter.droid.R)1 PreferencesHandler (butter.droid.base.content.preferences.PreferencesHandler)1 MediaDisplayManager (butter.droid.base.manager.internal.media.MediaDisplayManager)1 ProviderManager (butter.droid.base.manager.internal.provider.ProviderManager)1