89 lines
2.2 KiB
C#
89 lines
2.2 KiB
C#
using InlineAndReplyCombination.Forms;
|
|
using InlineAndReplyCombination.Model;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using TelegramBotBase.Attributes;
|
|
using TelegramBotBase.Controls.Hybrid;
|
|
using TelegramBotBase.Form;
|
|
|
|
namespace InlineAndReplyCombination.Baseclasses
|
|
{
|
|
public class MultipleChoiceForm : AutoCleanForm
|
|
{
|
|
[SaveState]
|
|
public UserDetails? UserDetails { get; set; }
|
|
|
|
ButtonGrid? ReplyButtonGrid;
|
|
|
|
public String ReplyButtonTitle { get; set; } = "Restart";
|
|
|
|
protected int CurrentStep = 1;
|
|
protected int MaxSteps = 3;
|
|
|
|
public MultipleChoiceForm()
|
|
{
|
|
this.Init += MultipleChoiceForm_Init;
|
|
}
|
|
|
|
private Task MultipleChoiceForm_Init(object sender, TelegramBotBase.Args.InitEventArgs e)
|
|
{
|
|
//Reply keyboard
|
|
var bf = new ButtonForm();
|
|
|
|
bf.AddButtonRow(ReplyButtonTitle, "replyButtonID");
|
|
|
|
ReplyButtonGrid = new ButtonGrid(bf);
|
|
|
|
ReplyButtonGrid.Title = $"Step {CurrentStep} / {MaxSteps}";
|
|
ReplyButtonGrid.KeyboardType = TelegramBotBase.Enums.EKeyboardType.ReplyKeyboard;
|
|
|
|
ReplyButtonGrid.ButtonClicked += ReplyButtonGrid_ButtonClicked;
|
|
|
|
AddControl(ReplyButtonGrid);
|
|
|
|
return Task.CompletedTask;
|
|
}
|
|
|
|
|
|
private async Task ReplyButtonGrid_ButtonClicked(object sender, TelegramBotBase.Args.ButtonClickedEventArgs e)
|
|
{
|
|
if (e.Button == null)
|
|
return;
|
|
|
|
switch (e.Button.Value)
|
|
{
|
|
case "replyButtonID":
|
|
|
|
await PressReplyButton();
|
|
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
public virtual Task PressReplyButton()
|
|
{
|
|
return Task.CompletedTask;
|
|
}
|
|
|
|
public override Task NavigateTo(FormBase newForm, params object[] args)
|
|
{
|
|
//Move user details over to navigating form
|
|
if (newForm is MultipleChoiceForm mcf)
|
|
{
|
|
mcf.UserDetails = UserDetails;
|
|
}
|
|
|
|
return base.NavigateTo(newForm, args);
|
|
}
|
|
|
|
|
|
}
|
|
}
|