Updating Testproject
- adding example for NavigationController - readability improvement in Menu
This commit is contained in:
parent
6f005114bc
commit
9eae63dae6
@ -41,7 +41,9 @@ namespace TelegramBotBaseTest.Tests
|
|||||||
if (call == null)
|
if (call == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
switch(call.Value)
|
message.Handled = true;
|
||||||
|
|
||||||
|
switch (call.Value)
|
||||||
{
|
{
|
||||||
case "text":
|
case "text":
|
||||||
|
|
||||||
@ -93,8 +95,6 @@ namespace TelegramBotBaseTest.Tests
|
|||||||
|
|
||||||
case "data":
|
case "data":
|
||||||
|
|
||||||
message.Handled = true;
|
|
||||||
|
|
||||||
var data = new DataForm();
|
var data = new DataForm();
|
||||||
|
|
||||||
await this.NavigateTo(data);
|
await this.NavigateTo(data);
|
||||||
@ -103,8 +103,6 @@ namespace TelegramBotBaseTest.Tests
|
|||||||
|
|
||||||
case "calendar":
|
case "calendar":
|
||||||
|
|
||||||
message.Handled = true;
|
|
||||||
|
|
||||||
var calendar = new Controls.CalendarPickerForm();
|
var calendar = new Controls.CalendarPickerForm();
|
||||||
|
|
||||||
await this.NavigateTo(calendar);
|
await this.NavigateTo(calendar);
|
||||||
@ -113,8 +111,6 @@ namespace TelegramBotBaseTest.Tests
|
|||||||
|
|
||||||
case "month":
|
case "month":
|
||||||
|
|
||||||
message.Handled = true;
|
|
||||||
|
|
||||||
var month = new Controls.MonthPickerForm();
|
var month = new Controls.MonthPickerForm();
|
||||||
|
|
||||||
await this.NavigateTo(month);
|
await this.NavigateTo(month);
|
||||||
@ -123,8 +119,6 @@ namespace TelegramBotBaseTest.Tests
|
|||||||
|
|
||||||
case "treeview":
|
case "treeview":
|
||||||
|
|
||||||
message.Handled = true;
|
|
||||||
|
|
||||||
var tree = new Controls.TreeViewForms();
|
var tree = new Controls.TreeViewForms();
|
||||||
|
|
||||||
await this.NavigateTo(tree);
|
await this.NavigateTo(tree);
|
||||||
@ -133,8 +127,6 @@ namespace TelegramBotBaseTest.Tests
|
|||||||
|
|
||||||
case "togglebuttons":
|
case "togglebuttons":
|
||||||
|
|
||||||
message.Handled = true;
|
|
||||||
|
|
||||||
var tb = new Controls.ToggleButtons();
|
var tb = new Controls.ToggleButtons();
|
||||||
|
|
||||||
await this.NavigateTo(tb);
|
await this.NavigateTo(tb);
|
||||||
@ -143,8 +135,6 @@ namespace TelegramBotBaseTest.Tests
|
|||||||
|
|
||||||
case "multitogglebuttons":
|
case "multitogglebuttons":
|
||||||
|
|
||||||
message.Handled = true;
|
|
||||||
|
|
||||||
var mtb = new Controls.MultiToggleButtons();
|
var mtb = new Controls.MultiToggleButtons();
|
||||||
|
|
||||||
await this.NavigateTo(mtb);
|
await this.NavigateTo(mtb);
|
||||||
@ -153,8 +143,6 @@ namespace TelegramBotBaseTest.Tests
|
|||||||
|
|
||||||
case "buttongrid":
|
case "buttongrid":
|
||||||
|
|
||||||
message.Handled = true;
|
|
||||||
|
|
||||||
var bg = new Controls.ButtonGridForm();
|
var bg = new Controls.ButtonGridForm();
|
||||||
|
|
||||||
await this.NavigateTo(bg);
|
await this.NavigateTo(bg);
|
||||||
@ -163,8 +151,6 @@ namespace TelegramBotBaseTest.Tests
|
|||||||
|
|
||||||
case "buttongridfilter":
|
case "buttongridfilter":
|
||||||
|
|
||||||
message.Handled = true;
|
|
||||||
|
|
||||||
var bg2 = new Controls.ButtonGridPagingForm();
|
var bg2 = new Controls.ButtonGridPagingForm();
|
||||||
|
|
||||||
await this.NavigateTo(bg2);
|
await this.NavigateTo(bg2);
|
||||||
@ -173,8 +159,6 @@ namespace TelegramBotBaseTest.Tests
|
|||||||
|
|
||||||
case "buttongridtags":
|
case "buttongridtags":
|
||||||
|
|
||||||
message.Handled = true;
|
|
||||||
|
|
||||||
var bg3 = new Controls.ButtonGridTagForm();
|
var bg3 = new Controls.ButtonGridTagForm();
|
||||||
|
|
||||||
await this.NavigateTo(bg3);
|
await this.NavigateTo(bg3);
|
||||||
@ -183,8 +167,6 @@ namespace TelegramBotBaseTest.Tests
|
|||||||
|
|
||||||
case "multiview":
|
case "multiview":
|
||||||
|
|
||||||
message.Handled = true;
|
|
||||||
|
|
||||||
var mvf = new MultiViewForm();
|
var mvf = new MultiViewForm();
|
||||||
|
|
||||||
await NavigateTo(mvf);
|
await NavigateTo(mvf);
|
||||||
@ -194,13 +176,26 @@ namespace TelegramBotBaseTest.Tests
|
|||||||
|
|
||||||
case "checkedbuttonlist":
|
case "checkedbuttonlist":
|
||||||
|
|
||||||
message.Handled = true;
|
|
||||||
|
|
||||||
var cbl = new CheckedButtonListForm();
|
var cbl = new CheckedButtonListForm();
|
||||||
|
|
||||||
await NavigateTo(cbl);
|
await NavigateTo(cbl);
|
||||||
|
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "navigationcontroller":
|
||||||
|
|
||||||
|
var nc = new Navigation.Start();
|
||||||
|
|
||||||
|
await NavigateTo(nc);
|
||||||
|
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
|
||||||
|
message.Handled = false;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -240,6 +235,8 @@ namespace TelegramBotBaseTest.Tests
|
|||||||
|
|
||||||
btn.AddButtonRow(new ButtonBase("#16 CheckedButtonList", new CallbackData("a", "checkedbuttonlist").Serialize()));
|
btn.AddButtonRow(new ButtonBase("#16 CheckedButtonList", new CallbackData("a", "checkedbuttonlist").Serialize()));
|
||||||
|
|
||||||
|
btn.AddButtonRow(new ButtonBase("#17 NavigationController (Push/Pop)", new CallbackData("a", "navigationcontroller").Serialize()));
|
||||||
|
|
||||||
await this.Device.Send("Choose your test:", btn);
|
await this.Device.Send("Choose your test:", btn);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
44
TelegramBotBaseTest/Tests/Navigation/CustomController.cs
Normal file
44
TelegramBotBaseTest/Tests/Navigation/CustomController.cs
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using TelegramBotBase.Form;
|
||||||
|
using TelegramBotBase.Form.Navigation;
|
||||||
|
|
||||||
|
namespace TelegramBotBaseTest.Tests.Navigation
|
||||||
|
{
|
||||||
|
class CustomController : NavigationController
|
||||||
|
{
|
||||||
|
public CustomController(FormBase form) : base(form)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public override Task PushAsync(FormBase form, params object[] args)
|
||||||
|
{
|
||||||
|
Console.WriteLine($"Pushes form (Count on stack {this.Index + 1})");
|
||||||
|
//Device.Send($"Pushes form (Count on stack {this.Index + 1})");
|
||||||
|
|
||||||
|
return base.PushAsync(form, args);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public override Task PopAsync()
|
||||||
|
{
|
||||||
|
Console.WriteLine($"Pops one form (Count on stack {this.Index + 1})");
|
||||||
|
//Device.Send($"Pops one form (Count on stack {this.Index + 1})");
|
||||||
|
|
||||||
|
return base.PopAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
public override Task PopToRootAsync()
|
||||||
|
{
|
||||||
|
Console.WriteLine($"Moved back to root (Count on stack {this.Index + 1})");
|
||||||
|
//Device.Send($"Moved back to root (Count on stack {this.Index + 1})");
|
||||||
|
|
||||||
|
return base.PopToRootAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
88
TelegramBotBaseTest/Tests/Navigation/Form1.cs
Normal file
88
TelegramBotBaseTest/Tests/Navigation/Form1.cs
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Telegram.Bot.Types;
|
||||||
|
using TelegramBotBase.Base;
|
||||||
|
using TelegramBotBase.Form;
|
||||||
|
|
||||||
|
namespace TelegramBotBaseTest.Tests.Navigation
|
||||||
|
{
|
||||||
|
public class Form1 : FormBase
|
||||||
|
{
|
||||||
|
Message msg = null;
|
||||||
|
|
||||||
|
public Form1()
|
||||||
|
{
|
||||||
|
this.Closed += Form1_Closed;
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task Form1_Closed(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (msg == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
await Device.DeleteMessage(msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override async Task Action(MessageResult message)
|
||||||
|
{
|
||||||
|
if (message.Handled)
|
||||||
|
return;
|
||||||
|
|
||||||
|
await message.ConfirmAction();
|
||||||
|
|
||||||
|
switch (message.RawData)
|
||||||
|
{
|
||||||
|
case "next":
|
||||||
|
|
||||||
|
message.Handled = true;
|
||||||
|
|
||||||
|
var f1 = new Form1();
|
||||||
|
|
||||||
|
await NavigationController.PushAsync(f1);
|
||||||
|
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "previous":
|
||||||
|
|
||||||
|
message.Handled = true;
|
||||||
|
|
||||||
|
//Pop's the current form and move the previous one. The root form will be the Start class.
|
||||||
|
await NavigationController.PopAsync();
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "root":
|
||||||
|
|
||||||
|
message.Handled = true;
|
||||||
|
|
||||||
|
await NavigationController.PopToRootAsync();
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public override async Task Render(MessageResult message)
|
||||||
|
{
|
||||||
|
if (msg != null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
var bf = new ButtonForm();
|
||||||
|
bf.AddButtonRow("Next page", "next");
|
||||||
|
bf.AddButtonRow("Previous page", "previous");
|
||||||
|
bf.AddButtonRow("Back to root", "root");
|
||||||
|
|
||||||
|
msg = await Device.Send($"Choose your options (Count on stack {NavigationController.Index + 1})", bf);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
88
TelegramBotBaseTest/Tests/Navigation/Start.cs
Normal file
88
TelegramBotBaseTest/Tests/Navigation/Start.cs
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Telegram.Bot.Types;
|
||||||
|
using TelegramBotBase.Base;
|
||||||
|
using TelegramBotBase.Form;
|
||||||
|
using TelegramBotBase.Form.Navigation;
|
||||||
|
|
||||||
|
namespace TelegramBotBaseTest.Tests.Navigation
|
||||||
|
{
|
||||||
|
public class Start : FormBase
|
||||||
|
{
|
||||||
|
|
||||||
|
Message msg = null;
|
||||||
|
|
||||||
|
public Start()
|
||||||
|
{
|
||||||
|
this.Closed += Start_Closed;
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task Start_Closed(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (msg == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
await Device.DeleteMessage(msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override async Task Load(MessageResult message)
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public override async Task Action(MessageResult message)
|
||||||
|
{
|
||||||
|
if (message.Handled)
|
||||||
|
return;
|
||||||
|
|
||||||
|
await message.ConfirmAction();
|
||||||
|
|
||||||
|
switch (message.RawData)
|
||||||
|
{
|
||||||
|
case "yes":
|
||||||
|
|
||||||
|
message.Handled = true;
|
||||||
|
|
||||||
|
//Create navigation controller and navigate to it, keep the current form as root form so we can get back to here later
|
||||||
|
var nc = new CustomController(this);
|
||||||
|
|
||||||
|
var f1 = new Form1();
|
||||||
|
|
||||||
|
await NavigateTo(nc);
|
||||||
|
|
||||||
|
await nc.PushAsync(f1);
|
||||||
|
|
||||||
|
|
||||||
|
break;
|
||||||
|
case "no":
|
||||||
|
|
||||||
|
message.Handled = true;
|
||||||
|
|
||||||
|
var mn = new Menu();
|
||||||
|
|
||||||
|
await NavigateTo(mn);
|
||||||
|
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public override async Task Render(MessageResult message)
|
||||||
|
{
|
||||||
|
var bf = new ButtonForm();
|
||||||
|
|
||||||
|
bf.AddButtonRow("Yes", "yes");
|
||||||
|
bf.AddButtonRow("No", "no");
|
||||||
|
|
||||||
|
msg = await Device.Send("Open controller?", bf);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user