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); }
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(); }
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; }
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()); }
private AnimeDetailsPageGeneralTabFragment() { ViewModel = ViewModelLocator.AnimeDetails; }
private AnimeDetailsPageReviewsTabFragment() { ViewModel = ViewModelLocator.AnimeDetails; }
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); }