private async void AnimeListPageGridViewOnItemClick(AnimeItemViewModel model) { await Task.Delay(75); //let's behold this ripple effect var args = ViewModelLocator.GeneralMain.GetCurrentListOrderParams(); args.SelectedItemIndex = ViewModel.AnimeItems.IndexOf(model); model.NavigateDetails(null, args); }
public static void BuildWatchedDialog(AnimeItemViewModel ViewModel,Action<AnimeItemViewModel, string> action = null,bool volumes = false) { _watchedDialogContext = ViewModel; _watchedDialogAction = action; var dialogBuilder = DialogPlus.NewDialog(MainActivity.CurrentContext); dialogBuilder.SetContentHolder(new ViewHolder(Resource.Layout.AnimeItemWatchedDialog)); dialogBuilder.SetContentBackgroundResource(Resource.Color.BrushFlyoutBackground); dialogBuilder.SetOnDismissListener(new DialogDismissedListener(CleanupWatchedDialog)); dialogBuilder.SetOnDismissListener( new DialogDismissedListener(() => ViewModelLocator.NavMgr.ResetOneTimeOverride())); ViewModelLocator.NavMgr.RegisterOneTimeMainOverride(new RelayCommand(CleanupWatchedDialog)); _watchedDialog = dialogBuilder.Create(); var view = _watchedDialog.HolderView; view.FindViewById<ImageButton>(Resource.Id.AnimeItemWatchedDialogAcceptButton) .SetCommand("Click", new RelayCommand( () => { if (!volumes) ViewModel.OnFlyoutEpsKeyDown.Execute(null); else action.Invoke(_watchedDialogContext, _watchedDialog.HolderView.FindViewById<TextView>( Resource.Id.AnimeItemWatchedDialogTextInput).Text); CleanupWatchedDialog(); })); var grid = view.FindViewById<GridView>(Resource.Id.AnimeItemWatchedDialogEpisodesGridView); if (volumes) { grid.Adapter = new WatchedDialogAdapter(MainActivity.CurrentContext, ViewModel.MyVolumes, ViewModel.AllVolumes); view.FindViewById<TextView>(Resource.Id.AnimeItemWatchedDialogTitleTextView).Text = "Read volumes"; } else { var input = view.FindViewById<EditText>(Resource.Id.AnimeItemWatchedDialogTextInput); _watchedDialogBindings.Add(new Binding<string, string>(ViewModel, () => ViewModel.WatchedEpsInput, input, () => input.Text, BindingMode.TwoWay)); grid.Adapter = new WatchedDialogAdapter(MainActivity.CurrentContext, ViewModel.MyEpisodesFocused, ViewModel.AllEpisodesFocused); view.FindViewById<TextView>(Resource.Id.AnimeItemWatchedDialogTitleTextView).Text = ViewModel.WatchedEpsLabel; } grid.ItemClick += GridOnItemClick; _watchedDialog.Show(); }
public static DroppyMenuPopup BuildForAnimeItem(Context context, View parent, AnimeItemViewModel viewModel, Action<AnimeGridItemMoreFlyoutButtons> callback,bool forceSmall = false) { AnimeListPageFlyoutBuilder.ParamRelativeLayout = new ViewGroup.LayoutParams(300, 75); var droppyBuilder = new DroppyMenuPopup.Builder(context, parent); AnimeListPageFlyoutBuilder.InjectAnimation(droppyBuilder); var listener = new Action<int>(i => callback.Invoke((AnimeGridItemMoreFlyoutButtons)i)); droppyBuilder.AddMenuItem(new DroppyMenuCustomItem(AnimeListPageFlyoutBuilder.BuildItem(context, "Copy to clipboard", listener, 0))); droppyBuilder.AddMenuItem(new DroppyMenuCustomItem(AnimeListPageFlyoutBuilder.BuildItem(context, "Open in browser", listener, 1))); if (!forceSmall && viewModel.Auth) { droppyBuilder.AddSeparator(); droppyBuilder.AddMenuItem(new DroppyMenuCustomItem(AnimeListPageFlyoutBuilder.BuildItem(context, "Set status", listener, 2))); droppyBuilder.AddMenuItem(new DroppyMenuCustomItem(AnimeListPageFlyoutBuilder.BuildItem(context, "Set score", listener, 3))); droppyBuilder.AddMenuItem(new DroppyMenuCustomItem(AnimeListPageFlyoutBuilder.BuildItem(context, "Set watched", listener, 4))); } return droppyBuilder.Build(); }
//private StorageFile _originaPickedStorageFile; //private async void LoadSelectedImage() //{ // var fp = new FileOpenPicker(); // fp.ViewMode = PickerViewMode.Thumbnail; // fp.SuggestedStartLocation = PickerLocationId.PicturesLibrary; // fp.FileTypeFilter.Add(".png"); // fp.FileTypeFilter.Add(".jpg"); // var file = await fp.PickSingleFileAsync(); // if (file != null) // { // _selectedImageOptionIndex = 1; // ImagePreviewVisibility = Visibility.Visible; // RaisePropertyChanged(() => SelectedImageOptionIndex); // } // _originaPickedStorageFile = file; // var bmp = new BitmapImage(); // var bmp1 = new BitmapImage(); // using (var fs = (await file.OpenStreamForReadAsync()).AsRandomAccessStream()) // { // bmp.SetSource(fs); // fs.Seek(0); // bmp1.SetSource(fs); // } // PreviewImageWide = bmp1; // PreviewImageNormal = bmp; //} //public async void HidePinDialog() //{ // var sb = ViewModelLocator.Main.View.HidePinDialogStoryboard; // sb.Completed += SbOnCompleted; // sb.Begin(); //} public void Load(AnimeItemViewModel data) { GeneralVisibility = Visibility.Visible; _lastCroppedFileName = null; _lastCroppedFileNameWide = null; EntryData = data; ResetCrop(); ResetCrop(true); RaisePropertyChanged(() => EntryData); }
private static void CleanupWatchedDialog() { ViewModelLocator.NavMgr.ResetOneTimeMainOverride(); _watchedDialogBindings.ForEach(binding => binding.Detach()); _watchedDialogBindings = new List<Binding>(); _watchedDialog?.Dismiss(); _watchedDialog = null; _watchedDialogContext = null; _watchedDialogAction = null; }