Exemple #1
0
 public async Task PagedMembersMenuAsync()
 {
     var members      = Context.Guild.Members.Values as CachedMember[];
     var pageProvider = new ArrayPageProvider <CachedMember>(members);
     var menu         = new PagedMenu(Context.User.Id, pageProvider);
     await Context.Channel.StartMenuAsync(menu);
 }
Exemple #2
0
 public async Task PagedMenuAsync()
 {
     var pages = new Page[]
     {
         /* string */ "First page!",
         /* embed  */ new LocalEmbedBuilder().WithDescription("Second page!").Build(),
         /* tuple  */ ("Third page!", new LocalEmbedBuilder().WithAuthor(Context.User).Build())
     };
     var pageProvider = new DefaultPageProvider(pages);
     var menu         = new PagedMenu(Context.User.Id, pageProvider);
     await Context.Channel.StartMenuAsync(menu);
 }
        public FolderBrowserOverlay(Screen parent, string currentPath, int width, int height) : base(parent)
        {
            label = new Label(currentPath)
            {
                ForegroundColor = ConsoleColor.Green, BackgroundColor = ConsoleColor.Black,
                Top             = Top,
                Left            = Left
            };
            background = new Background
            {
                BackgroundColor = ConsoleColor.Black,
                ForegroundColor = ConsoleColor.Green,
                Top             = 0,
                Left            = 0,
                MinHeight       = Console.WindowHeight,
                Width           = Console.WindowWidth
            };
            this.currentPath = currentPath;
            currentDir       = new DirectoryInfo(currentPath);
            menu             = new ConsoleMenu("Select a folder")
            {
                BackgroundColor = ConsoleColor.DarkGray,
                SelectedColor   = ConsoleColor.DarkGreen,
                Top             = Top + 10,
                Left            = Left
            };

            pagedMenu = new PagedMenu("Select a folder", GetSubDirsAsMenuItems())
            {
                BackgroundColor = ConsoleColor.DarkGray,
                ForegroundColor = ConsoleColor.DarkGreen,
                Top             = Top + 10,
                Left            = Left,
                ItemPopulator   = this
            };

            ItemSelected(currentPath);

            ForegroundColor = ConsoleColor.Green;
            BackgroundColor = ConsoleColor.DarkCyan;

            AddComponent(background);
            AddComponent(pagedMenu);
            AddComponent(label);
        }
Exemple #4
0
        public async Task ListRemindersAsync()
        {
            var reminders = ReminderService.GetRemindersForUser(Context.Member.Id)
                            .Where(reminder => reminder.UserId == Context.Member.Id.RawValue && Context.Guild.Channels.ContainsKey(reminder.ChannelId))
                            .OrderBy(reminder => reminder.TriggerAt)
                            .ToList();

            switch (reminders.Count)
            {
            case 0:
                await ReplyAsync(NO_REMINDERS_FOUND);

                return;

            case <= BatchSize:
                var embed = await CreateReminderEmbedAsync(reminders);
                await ReplyAsync(embed : embed.Build());

                return;
            }

            var numberOfPages   = MathEx.CeilingDivision(reminders.Count, BatchSize);
            var reminderBatches = reminders.Batch(BatchSize);
            var pageIndex       = 0;
            var reminderPages   = new List <Page>();

            foreach (var reminderBatch in reminderBatches)
            {
                var reminderEmbedBuilder = await CreateReminderEmbedAsync(reminderBatch);

                reminderEmbedBuilder.Footer = new LocalEmbedFooterBuilder {
                    Text = $"Page [{++pageIndex}/{numberOfPages}]"
                };
                reminderPages.Add(reminderEmbedBuilder.Build());
            }
            var pageProvider = new DefaultPageProvider(reminderPages);
            var menu         = new PagedMenu(Context.User.Id, pageProvider);
            await Context.Channel.StartMenuAsync(menu);
        }