示例#1
0
        public static void BuildTagDialog(AnimeDetailsPageViewModel viewModel)
        {
            _tagsDialogBindings = new List <Binding>();
            _tagsDialogContext  = viewModel;
            var dialogBuilder = DialogPlus.NewDialog(MainActivity.CurrentContext);

            dialogBuilder.SetContentHolder(new ViewHolder(Resource.Layout.AnimeTagsDialog));
            dialogBuilder.SetContentBackgroundResource(ResourceExtension.BrushFlyoutBackgroundRes);
            dialogBuilder.SetOnDismissListener(new DialogDismissedListener(CleanupTagsDialog));
            dialogBuilder.SetGravity((int)GravityFlags.Top);
            dialogBuilder.SetOnDismissListener(
                new DialogDismissedListener(() => ViewModelLocator.NavMgr.ResetOneTimeOverride()));
            ViewModelLocator.NavMgr.RegisterOneTimeMainOverride(new RelayCommand(CleanupTagsDialog));
            _tagsDialog = dialogBuilder.Create();
            var view = _tagsDialog.HolderView;

            view.FindViewById <ListView>(Resource.Id.AnimeTagsDialogList).Adapter =
                viewModel.MyTags.GetAdapter(GetTagItem);
            var editBox = view.FindViewById <EditText>(Resource.Id.AnimeTagsDialogEditBox);

            _tagsDialogBindings.Add(new Binding <string, string>(
                                        viewModel,
                                        () => viewModel.NewTagInput,
                                        editBox,
                                        () => editBox.Text, BindingMode.TwoWay));

            view.FindViewById <ImageButton>(Resource.Id.AnimeTagsDialogAddTagButton).SetCommand("Click", viewModel.AddTagCommand);

            _tagsDialog.Show();
        }
 protected override void Init(Bundle savedInstanceState)
 {
     ViewModel = ViewModelLocator.AnimeDetails;
     ViewModel.RegisterOneTimeOnPropertyChangedAction(nameof(ViewModel.AnimeMode), SetupForAnimeMode);
     ViewModel.PropertyChanged += ViewModelOnPropertyChanged;
     ViewModel.Init(_navArgs);
 }
示例#3
0
        private async void ListViewBase_OnItemClick(object sender, ItemClickEventArgs e)
        {
            ViewModel.Loading = true;
            await Task.Delay(1);

            await AnimeDetailsPageViewModel.OpenVideo(e.ClickedItem as AnimeVideoData);

            ViewModel.Loading = false;
        }
        public static void BuildPromotionalVideoDialog(AnimeDetailsPageViewModel viewModel)
        {
            viewModel.LoadVideosCommand.Execute(null);
            var dialogBuilder = DialogPlus.NewDialog(MainActivity.CurrentContext);

            dialogBuilder.SetGravity((int)GravityFlags.Center);
            dialogBuilder.SetContentHolder(new ViewHolder(Resource.Layout.AnimeDetailsPageVideosDialog));
            dialogBuilder.SetContentBackgroundResource(ResourceExtension.BrushFlyoutBackgroundRes);
            dialogBuilder.SetOnDismissListener(
                new DialogDismissedListener(() => ViewModelLocator.NavMgr.ResetOneTimeOverride()));
            ViewModelLocator.NavMgr.RegisterOneTimeMainOverride(new RelayCommand(CleanupVideosDialog));
            _videosDialog = dialogBuilder.Create();
            var dialogView = _videosDialog.HolderView;

            var spinner = dialogView.FindViewById(Resource.Id.AnimeDetailsPageVideosDialogProgressBar);

            _videosDialogBindings = new List <Binding>
            {
                new Binding <bool, ViewStates>(
                    viewModel,
                    () => viewModel.LoadingVideosVisibility,
                    spinner,
                    () => spinner.Visibility).ConvertSourceToTarget(Converters.BoolToVisibility)
            };

            dialogView.FindViewById <ListView>(Resource.Id.AnimeDetailsPageVideosDialogList).Adapter = viewModel
                                                                                                       .AvailableVideos.GetAdapter(
                (i, data, convertView) =>
            {
                var view = convertView;
                if (view == null)
                {
                    view =
                        MainActivity.CurrentContext.LayoutInflater.Inflate(
                            Resource.Layout.AnimeDetailsPageVideosDialogItem, null);
                    view.SetOnClickListener(new OnClickListener(VideoItemOnClick));
                }

                ImageService.Instance.LoadUrl(data.Thumb)
                .FadeAnimation(false)
                .Success(view.FindViewById(Resource.Id.AnimeDetailsPageVideosDialogItemImage).AnimateFadeIn)
                .Into(view.FindViewById <ImageViewAsync>(Resource.Id.AnimeDetailsPageVideosDialogItemImage));

                view.FindViewById <TextView>(Resource.Id.AnimeDetailsPageVideosDialogItemText).Text = data.Name;

                view.Tag = data.Wrap();

                return(view);
            });

            _videosDialog.Show();
        }
示例#5
0
        public static void BuildTagDialog(AnimeDetailsPageViewModel viewModel)
        {
            _tagsDialogBindings = new List <Binding>();
            _tagsDialogContext  = viewModel;
            var dialogBuilder = DialogPlus.NewDialog(MainActivity.CurrentContext);

            dialogBuilder.SetContentHolder(new ViewHolder(Resource.Layout.AnimeTagsDialog));
            dialogBuilder.SetOnDismissListener(new DialogDismissedListener(CleanupTagsDialog));
            dialogBuilder.SetOnBackPressListener(new OnBackPressListener(CleanupTagsDialog));
            dialogBuilder.SetGravity((int)GravityFlags.Top);
            _tagsDialog = dialogBuilder.Create();
            var view = _tagsDialog.HolderView;

            var list = view.FindViewById <ListView>(Resource.Id.AnimeTagsDialogList);

            list.EmptyView = view.FindViewById(Resource.Id.AnimeTagsDialogEmptyNotice);
            list.Adapter   = viewModel.MyTags.GetAdapter(GetTagItem);
            var editBox = view.FindViewById <AutoCompleteTextView>(Resource.Id.AnimeTagsDialogEditBox);

            editBox.Threshold = 1;
            editBox.Adapter   = new ArrayAdapter <string>(MainActivity.CurrentContext, global::Android.Resource.Layout.SelectDialogItem, ViewModelLocator.GeneralMain.SearchHints);
            //editBox.SetOnEditorActionListener(new OnEditorActionListener(action =>
            //{
            //    if(action == ImeAction.Done)
            //        viewModel.AddTagCommand.Execute(null);
            //}));
            editBox.AddTextChangedListener(new OnTextEnterListener(() =>
            {
                viewModel.AddTagCommand.Execute(null);
            }));

            _tagsDialogBindings.Add(new Binding <string, string>(
                                        viewModel,
                                        () => viewModel.NewTagInput,
                                        editBox,
                                        () => editBox.Text, BindingMode.TwoWay));

            view.FindViewById <ImageButton>(Resource.Id.AnimeTagsDialogAddTagButton).SetOnClickListener(new OnClickListener(
                                                                                                            v =>
            {
                viewModel.AddTagCommand.Execute(null);
            }));

            _tagsDialog.Show();
            MainActivity.CurrentContext.DialogToCollapseOnBack = _tagsDialog;
        }
示例#6
0
        public static DroppyMenuPopup BuildForAnimeDetailsPage(Context context, AnimeDetailsPageViewModel viewModel, View parent, Action <int> listener)
        {
            AnimeListPageFlyoutBuilder.ParamRelativeLayout = new ViewGroup.LayoutParams(DimensionsHelper.DpToPx(150), DimensionsHelper.DpToPx(38));

            var droppyBuilder = new DroppyMenuPopup.Builder(context, parent);

            AnimeListPageFlyoutBuilder.InjectAnimation(droppyBuilder);



            droppyBuilder.AddMenuItem(new DroppyMenuCustomItem(AnimeListPageFlyoutBuilder.BuildItem(context, "Forum board", listener, 0)));
            if (viewModel.AnimeMode)
            {
                droppyBuilder.AddMenuItem(new DroppyMenuCustomItem(AnimeListPageFlyoutBuilder.BuildItem(context, "Promotional videos", listener, 1)));
            }
            if (!viewModel.AddAnimeVisibility)
            {
                droppyBuilder.AddMenuItem(new DroppyMenuCustomItem(AnimeListPageFlyoutBuilder.BuildItem(context, "Tags", listener, 2)));
            }
            if (viewModel.IsRewatchingButtonVisibility)
            {
                droppyBuilder.AddMenuItem(
                    new DroppyMenuCustomItem(
                        AnimeListPageFlyoutBuilder.BuildItem(context, viewModel.RewatchingLabel, listener, 6, viewModel.IsRewatching ? (int?)ResourceExtension.AccentColour : null)));
            }
            droppyBuilder.AddMenuItem(new DroppyMenuCustomItem(AnimeListPageFlyoutBuilder.BuildItem(context, "Copy title", listener, 7)));
            droppyBuilder.AddMenuItem(new DroppyMenuCustomItem(AnimeListPageFlyoutBuilder.BuildItem(context, "Copy link", listener, 3)));
            droppyBuilder.AddMenuItem(new DroppyMenuCustomItem(AnimeListPageFlyoutBuilder.BuildItem(context, "Open in browser", listener, 4)));
            if (!viewModel.AddAnimeVisibility)
            {
                droppyBuilder.AddMenuItem(new DroppyMenuCustomItem(AnimeListPageFlyoutBuilder.BuildItem(context, "Remove from my list", listener, 5)));
            }
            if (viewModel.AiringNotificationsButtonVisibility)
            {
                droppyBuilder.AddMenuItem(
                    new DroppyMenuCustomItem(
                        AnimeListPageFlyoutBuilder.BuildItem(context, "Air Notifications", listener, 8,
                                                             viewModel.AreAirNotificationsEnabled ? (int?)ResourceExtension.AccentColour : null,
                                                             viewModel.AreAirNotificationsEnabled
                                ? (int?)ResourceExtension.White
                                : null)));
            }

            return(droppyBuilder.Build());
        }
示例#7
0
 private AnimeDetailsPageGeneralTabFragment()
 {
     ViewModel = ViewModelLocator.AnimeDetails;
 }
 private AnimeDetailsPageReviewsTabFragment()
 {
     ViewModel = ViewModelLocator.AnimeDetails;
 }
示例#9
0
 public void Include(AnimeDetailsPageViewModel vm)
 {
     var vm1 = new AnimeDetailsPageViewModel(null, null, null, null);
 }
 protected override void Init(Bundle savedInstanceState)
 {
     ViewModel = ViewModelLocator.AnimeDetails;
     ViewModel.Init(_navArgs, false);
 }
 protected override void Init(Bundle savedInstanceState)
 {
     ViewModel = ViewModelLocator.AnimeDetails;
 }
 private async void VideoItemOnClickOpenVideo(object sender, EventArgs eventArgs)
 {
     await AnimeDetailsPageViewModel.OpenVideo(((sender as View).Parent as View).Tag.Unwrap <AnimeVideoData>());
 }
 public AnimeDetailsPagerAdapter(FragmentManager fm) : base(fm)
 {
     _viewModel = ViewModelLocator.AnimeDetails;
 }
        public static DroppyMenuPopup BuildForAnimeDetailsPage(Context context, View parent, AnimeDetailsPageViewModel viewModel)
        {
            AnimeListPageFlyoutBuilder.ParamRelativeLayout = new ViewGroup.LayoutParams(DimensionsHelper.DpToPx(150), DimensionsHelper.DpToPx(38));

            var droppyBuilder = new DroppyMenuPopup.Builder(context, parent);

            AnimeListPageFlyoutBuilder.InjectAnimation(droppyBuilder);

            Action <int> listener = i =>
            {
                switch (i)
                {
                case 0:
                    viewModel.NavigateForumBoardCommand.Execute(null);
                    break;

                case 1:
                    AnimeDetailsPageDialogBuilder.BuildPromotionalVideoDialog(viewModel);
                    break;

                case 2:
                    AnimeUpdateDialogBuilder.BuildTagDialog(viewModel);
                    break;

                case 3:
                    viewModel.CopyToClipboardCommand.Execute(null);
                    break;

                case 4:
                    viewModel.OpenInMalCommand.Execute(null);
                    break;

                case 5:
                    viewModel.RemoveAnimeCommand.Execute(null);
                    break;
                }
            };

            droppyBuilder.AddMenuItem(new DroppyMenuCustomItem(AnimeListPageFlyoutBuilder.BuildItem(context, "Forum board", listener, 0)));
            droppyBuilder.AddMenuItem(new DroppyMenuCustomItem(AnimeListPageFlyoutBuilder.BuildItem(context, "Promotional videos", listener, 1)));
            droppyBuilder.AddMenuItem(new DroppyMenuCustomItem(AnimeListPageFlyoutBuilder.BuildItem(context, "Tags", listener, 2)));
            droppyBuilder.AddMenuItem(new DroppyMenuCustomItem(AnimeListPageFlyoutBuilder.BuildItem(context, "Copy link", listener, 3)));
            droppyBuilder.AddMenuItem(new DroppyMenuCustomItem(AnimeListPageFlyoutBuilder.BuildItem(context, "Open in browser", listener, 4)));
            droppyBuilder.AddMenuItem(new DroppyMenuCustomItem(AnimeListPageFlyoutBuilder.BuildItem(context, "Remove from my list", listener, 5)));


            return(droppyBuilder.Build());
        }
 private AnimeDetailsPageDetailsTabFragment()
 {
     ViewModel = ViewModelLocator.AnimeDetails;
     _activity = MainActivity.CurrentContext;
 }
 private void ListViewBase_OnItemClick(object sender, ItemClickEventArgs e)
 {
     AnimeDetailsPageViewModel.OpenVideo(e.ClickedItem as AnimeVideoData);
 }