public static DroppyMenuPopup BuildForAnimeSortingSelection(Context context, View parent, Action <SortOptions> callback, SortOptions currentOption) { ParamRelativeLayout = new ViewGroup.LayoutParams(DimensionsHelper.DpToPx(150), DimensionsHelper.DpToPx(38)); var droppyBuilder = new DroppyMenuPopup.Builder(context, parent); InjectAnimation(droppyBuilder); var listener = new Action <int>(i => callback.Invoke((SortOptions)i)); foreach (SortOptions value in Enum.GetValues(typeof(SortOptions))) { if (value == currentOption) { droppyBuilder.AddMenuItem( new DroppyMenuCustomItem(BuildItem(context, value.GetDescription(), listener, (int)value, ResourceExtension.BrushSelectedDialogItem, ResourceExtension.AccentColour))); } else //highlighted { droppyBuilder.AddMenuItem( new DroppyMenuCustomItem(BuildItem(context, value.GetDescription(), listener, (int)value))); } } droppyBuilder.SetYOffset(DimensionsHelper.DpToPx(30)); return(droppyBuilder.Build()); }
public static void InjectAnimation(DroppyMenuPopup.Builder builder) { builder.SetPopupAnimation(new DroppyFadeInAnimation()); builder.TriggerOnAnchorClick(false); builder.SetXOffset(5); builder.SetYOffset(5); }
public static DroppyMenuPopup BuildForAnimeListDisplayModeSelection(Context context, View parent, IEnumerable <Tuple <AnimeListDisplayModes, string> > items, Action <AnimeListDisplayModes> callback, AnimeListDisplayModes currentMode) { ParamRelativeLayout = new ViewGroup.LayoutParams(DimensionsHelper.DpToPx(150), DimensionsHelper.DpToPx(38)); var droppyBuilder = new DroppyMenuPopup.Builder(context, parent); InjectAnimation(droppyBuilder); var listener = new Action <int>(i => callback.Invoke((AnimeListDisplayModes)i)); foreach (var item in items) { if (item.Item1 == currentMode) { droppyBuilder.AddMenuItem( new DroppyMenuCustomItem(BuildItem(context, item.Item2, listener, (int)item.Item1, ResourceExtension.BrushSelectedDialogItem, ResourceExtension.AccentColour))); } else //highlighted { droppyBuilder.AddMenuItem( new DroppyMenuCustomItem(BuildItem(context, item.Item2, listener, (int)item.Item1))); } } droppyBuilder.SetYOffset(DimensionsHelper.DpToPx(30)); return(droppyBuilder.Build()); }
public static DroppyMenuPopup BuildForRecommendationsPage(Context context, View parent, RecommendationsViewModel viewModel, Action <int> callback) { AnimeListPageFlyoutBuilder.ParamRelativeLayout = new ViewGroup.LayoutParams(DimensionsHelper.DpToPx(200), DimensionsHelper.DpToPx(38)); var droppyBuilder = new DroppyMenuPopup.Builder(context, parent); AnimeListPageFlyoutBuilder.InjectAnimation(droppyBuilder); droppyBuilder.AddMenuItem(new DroppyMenuCustomItem(AnimeListPageFlyoutBuilder.BuildItem(context, "Anime recommendations", callback, 0))); droppyBuilder.AddMenuItem(new DroppyMenuCustomItem(AnimeListPageFlyoutBuilder.BuildItem(context, "Manga recommendations", callback, 1))); return(droppyBuilder.Build()); }
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()); }
public static DroppyMenuPopup BuildForAnimeItemTags(Context context, View parent, AnimeItemViewModel viewModel, Action callback) { AnimeListPageFlyoutBuilder.ParamRelativeLayout = new ViewGroup.LayoutParams(DimensionsHelper.DpToPx(150), DimensionsHelper.DpToPx(38)); var droppyBuilder = new DroppyMenuPopup.Builder(context, parent); AnimeListPageFlyoutBuilder.InjectAnimation(droppyBuilder); var listener = new Action <int>(i => callback.Invoke()); droppyBuilder.AddMenuItem(new DroppyMenuCustomItem(AnimeListPageFlyoutBuilder.BuildItem(context, "Tags:", listener, 0, ResourceExtension.BrushRowAlternate2, null, false, GravityFlags.CenterHorizontal))); droppyBuilder.AddMenuItem(new DroppyMenuCustomItem(new DroppyMenuSeparatorView(context))); droppyBuilder.AddMenuItem(new DroppyMenuCustomItem(AnimeListPageFlyoutBuilder.BuildItem(context, viewModel.Notes, listener, 1, null, null, false, GravityFlags.CenterHorizontal))); return(droppyBuilder.Build()); }
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()); }
public static DroppyMenuPopup BuildForAnimeDetailsPage(Context context,View parent,AnimeDetailsPageViewModel viewModel) { AnimeListPageFlyoutBuilder.ParamRelativeLayout = new ViewGroup.LayoutParams(300, 75); 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: 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(); }
public static DroppyMenuPopup BuildForAnimeSeasonSelection(Context context, View parent, Action <int> callback, AnimeListViewModel viewModel) { ParamRelativeLayout = new ViewGroup.LayoutParams(DimensionsHelper.DpToPx(150), DimensionsHelper.DpToPx(38)); var droppyBuilder = new DroppyMenuPopup.Builder(context, parent); InjectAnimation(droppyBuilder); var listener = new Action <int>(callback.Invoke); int index = 0; foreach (var season in viewModel.SeasonSelection) { droppyBuilder.AddMenuItem(new DroppyMenuCustomItem(BuildItem(context, season.Name, listener, index++))); } droppyBuilder.AddMenuItem(new DroppyMenuCustomItem(Resource.Layout.SeasonSelectionPopup)); return(droppyBuilder.Build()); }
public static DroppyMenuPopup BuildGenericFlyout(Context context, View parent, List <string> items, Action <int> callback, string header = null) { AnimeListPageFlyoutBuilder.ParamRelativeLayout = new ViewGroup.LayoutParams(DimensionsHelper.DpToPx(200), DimensionsHelper.DpToPx(38)); var droppyBuilder = new DroppyMenuPopup.Builder(context, parent); AnimeListPageFlyoutBuilder.InjectAnimation(droppyBuilder); if (header != null) { droppyBuilder.AddMenuItem(new DroppyMenuCustomItem(AnimeListPageFlyoutBuilder.BuildItem(context, header, i => {}, 0, ResourceExtension.BrushRowAlternate2, null, false, GravityFlags.CenterHorizontal))); droppyBuilder.AddMenuItem(new DroppyMenuCustomItem(new DroppyMenuSeparatorView(context))); } for (int i = 0; i < items.Count; i++) { droppyBuilder.AddMenuItem(new DroppyMenuCustomItem(AnimeListPageFlyoutBuilder.BuildItem(context, items[i], callback, i))); } return(droppyBuilder.Build()); }
public static DroppyMenuPopup BuildForAnimeItem(Context context, View parent, AnimeItemViewModel viewModel, Action <AnimeGridItemMoreFlyoutButtons> callback, bool forceSmall = false) { AnimeListPageFlyoutBuilder.ParamRelativeLayout = new ViewGroup.LayoutParams(DimensionsHelper.DpToPx(150), DimensionsHelper.DpToPx(38)); 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()); }
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 DroppyMenuPopup BuildForPinnedPosts() { AnimeListPageFlyoutBuilder.ParamRelativeLayout = new ViewGroup.LayoutParams(DimensionsHelper.DpToPx(250), DimensionsHelper.DpToPx(38)); var droppyBuilder = new DroppyMenuPopup.Builder(_parent.Context, _parent); AnimeListPageFlyoutBuilder.InjectAnimation(droppyBuilder); droppyBuilder.AddMenuItem(new DroppyMenuCustomItem(AnimeListPageFlyoutBuilder.BuildItem(_parent.Context, "Pinned posts", i => { }, 0, ResourceExtension.BrushRowAlternate2, null, false, GravityFlags.CenterHorizontal))); droppyBuilder.AddMenuItem(new DroppyMenuCustomItem(new DroppyMenuSeparatorView(_parent.Context))); if (_viewModel.PinnedTopics.Any()) { _list = new ListView(_parent.Context) { LayoutParameters = new ViewGroup.LayoutParams(DimensionsHelper.DpToPx(250), -2), Id = 7890 }; _list.SetBackgroundColor(new Color(ResourceExtension.BrushAnimeItemInnerBackground)); _list.Adapter = _viewModel.PinnedTopics.GetAdapter(GetTemplateDelegate); droppyBuilder.AddMenuItem(new DroppyMenuCustomItem(_list)); } else { var txt = new TextView(_parent.Context) { LayoutParameters = new ViewGroup.LayoutParams(-1, -2), Text = "Hold topic to pin it.", Gravity = GravityFlags.CenterHorizontal }; txt.SetTypeface(Typeface.Create(ResourceExtension.FontSizeLight, TypefaceStyle.Normal), TypefaceStyle.Normal); txt.SetTextColor(new Color(ResourceExtension.BrushNoSearchResults)); var padding = DimensionsHelper.DpToPx(10); txt.SetPadding(0, padding, 0, padding); txt.SetBackgroundColor(new Color(ResourceExtension.BrushAnimeItemInnerBackground)); droppyBuilder.AddMenuItem(new DroppyMenuCustomItem(txt)); } return(droppyBuilder.Build()); }