Example #1
0
        private async void LoadEpisodeData(string link)
        {
            loadingView.Visibility = Android.Views.ViewStates.Visible;
            epData = await WebData.GetDetailsForTVShowEpisode(link);
            loadingView.Visibility = Android.Views.ViewStates.Gone;
            if (epData != null)
            {
                InvalidateOptionsMenu();
                collapseToolbar.TitleEnabled = false;
                SupportActionBar.SetDisplayShowTitleEnabled(false);

                var titleView = FindViewById<AppCompatTextView>(Resource.Id.image_toolbar_main_title);
                var descriptionView = FindViewById<AppCompatTextView>(Resource.Id.image_toolbar_main_description);
                var releaseView = FindViewById<AppCompatTextView>(Resource.Id.image_toolbar_main_release);
                var genreView = FindViewById<AppCompatTextView>(Resource.Id.image_toolbar_main_genre);
                var imageView = FindViewById<AppCompatImageView>(Resource.Id.image_toolbar_main_image);
                SupportActionBar.Title = titleView.Text = epData.EpisodeShowTitle;
                descriptionView.Text = epData.EpisodeSummary;
                releaseView.Text = epData.EpisodeAirDate;
                genreView.Text = epData.EpisodeFullNameNumber;
                SupportActionBar.Subtitle = epData.EpisodeNumber;
                Picasso.With(this).Load(epData.EpisodeImage).Into(imageView);
                
                if (epData.IsEpisodeWatchable)
                {
                    var adapter = new EpisodesAdapter<EpisodeStreamLink>(epData.EpisodeStreamLinks, DataEnum.DataType.EpisodeStreamLinks, null);
                    dataRV.SetAdapter(adapter);
                    adapter.ItemClick += (s, e) =>
                    {
                        // handle watch episode here
                        // first get the decoded link from WebView and JavaValueCallback
                        LoadEncodedLinkFromWebView(adapter.GetItem(e));
                    };
                }
                else
                {
                    Helper.Error.Instance.ShowErrorSnack("No links found. Episode cannot be streamed.", dataRV);
                }
            }
            else
            {
                Helper.Error.Instance.ShowErrorSnack("Episode data could not be loaded.", dataRV);
            }
        }
Example #2
0
        private async void LoadDataForType()
        {
            switch (tabType)
            {
            case DataEnum.DataType.NewEpisodes:
            case DataEnum.DataType.NewPopularEpisodes:
            case DataEnum.DataType.PopularShows:
                var mainAdapter = new EpisodesAdapter <EpisodeList>(tabType, emptyView, refreshView);
                recyclerView.SetAdapter(mainAdapter);
                mainAdapter.ItemClick += (s, e) =>
                {
                    AppView.HandleItemShowEpisodeClick(mainAdapter.GetItem(e), Activity);
                };
                break;

            case DataEnum.DataType.TVSchedule:
                var scheduleAdapter = new EpisodesAdapter <CalenderScheduleList>(new List <CalenderScheduleList>(items.Cast <CalenderScheduleList>()), tabType, emptyView);
                recyclerView.SetAdapter(scheduleAdapter);
                scheduleAdapter.ItemClick += (s, e) =>
                {
                    AppView.HandleItemShowEpisodeClick(scheduleAdapter.GetItem(e), Activity);
                };
                break;

            case DataEnum.DataType.Genres:
                EpisodesAdapter <GenresShow> genresAdapter = null;
                if (genresType == DataEnum.GenreDataType.LatestEpisodes)
                {
                    genresAdapter = new EpisodesAdapter <GenresShow>(tabType, emptyView, refreshView);
                }
                else if (genresType == DataEnum.GenreDataType.PopularEpisodes)
                {
                    genresAdapter = new EpisodesAdapter <GenresShow>(tabType, emptyView, refreshView);
                }
                else if (genresType == DataEnum.GenreDataType.Shows)
                {
                    if (refreshView != null)
                    {
                        refreshView.Refreshing = true;
                    }
                    var genreList = await WebData.GetGenresShows(genre, genrePage ++, year);

                    if (refreshView != null)
                    {
                        refreshView.Refreshing = false;
                    }
                    genresAdapter = new EpisodesAdapter <GenresShow>(genreList, tabType, emptyView);
                    var scrollListener = new EndlessScroll(layoutManager);
                    scrollListener.LoadMoreTask += async delegate
                    {
                        refreshView.Refreshing = true;
                        var items = await WebData.GetGenresShows(genre, genrePage ++, year);

                        if (items != null)
                        {
                            genresAdapter.AddItem(items.ToArray());
                        }
                        refreshView.Refreshing = false;
                    };
                    recyclerView.AddOnScrollListener(scrollListener);
                }
                recyclerView.SetAdapter(genresAdapter);
                genresAdapter.ItemClick += (s, e) =>
                {
                    AppView.HandleItemShowEpisodeClick(genresAdapter.GetItem(e), Activity);
                };
                break;

            case DataEnum.DataType.SeasonsEpisodes:
                if (refreshView != null)
                {
                    refreshView.Refreshing = true;
                }
                var seasonsEpisodesAdapter = new EpisodesAdapter <ShowEpisodeDetails>(new List <ShowEpisodeDetails>(items.Cast <ShowEpisodeDetails>()), tabType, emptyView);
                recyclerView.SetAdapter(seasonsEpisodesAdapter);
                if (refreshView != null)
                {
                    refreshView.Refreshing = false;
                }
                seasonsEpisodesAdapter.ItemClick += (s, e) =>
                {
                    AppView.HandleItemShowEpisodeClick(seasonsEpisodesAdapter.GetItem(e), Activity);
                };
                break;

            case DataEnum.DataType.UserFavorites:
                var favsAdapter = new EpisodesAdapter <SeriesDetails>(tabType, emptyView, refreshView);
                recyclerView.SetAdapter(favsAdapter);
                favsAdapter.ItemClick += (s, e) =>
                {
                    AppView.HandleItemShowEpisodeClick(favsAdapter.GetItem(e), Activity);
                };
                break;

            default:
                break;
            }
        }