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());
        }
Пример #4
0
        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());
        }
Пример #6
0
        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());
        }
Пример #7
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());
        }
        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());
        }
Пример #10
0
        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());
        }
Пример #11
0
        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());
        }
Пример #12
0
        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());
        }