- adding OpenModal/CloseModal features to leave a form open and "just" show a prompt and get back
- added new "ModalDialog" class to present modal forms - updating examples for prompt dialog to use the modal feature
This commit is contained in:
parent
3bea2783b1
commit
9cbde4830e
@ -297,6 +297,53 @@ namespace TelegramBotBase.Form
|
|||||||
await newForm.OnOpened(new EventArgs());
|
await newForm.OnOpened(new EventArgs());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Opens this form modal, but don't closes the original ones
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="newForm"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task OpenModal(ModalDialog newForm, params object[] args)
|
||||||
|
{
|
||||||
|
DeviceSession ds = this.Device;
|
||||||
|
if (ds == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
var parentForm = this;
|
||||||
|
|
||||||
|
ds.FormSwitched = true;
|
||||||
|
|
||||||
|
ds.PreviousForm = ds.ActiveForm;
|
||||||
|
|
||||||
|
ds.ActiveForm = newForm;
|
||||||
|
newForm.Client = parentForm.Client;
|
||||||
|
newForm.Device = ds;
|
||||||
|
|
||||||
|
newForm.Closed += async (s, en) =>
|
||||||
|
{
|
||||||
|
await CloseModal(newForm, parentForm);
|
||||||
|
};
|
||||||
|
|
||||||
|
await newForm.OnInit(new InitEventArgs(args));
|
||||||
|
|
||||||
|
await newForm.OnOpened(new EventArgs());
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task CloseModal(ModalDialog modalForm, FormBase oldForm)
|
||||||
|
{
|
||||||
|
DeviceSession ds = this.Device;
|
||||||
|
if (ds == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (modalForm == null)
|
||||||
|
throw new Exception("No modal form");
|
||||||
|
|
||||||
|
ds.FormSwitched = true;
|
||||||
|
|
||||||
|
ds.PreviousForm = ds.ActiveForm;
|
||||||
|
|
||||||
|
ds.ActiveForm = oldForm;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Adds a control to the formular and sets its ID and Device.
|
/// Adds a control to the formular and sets its ID and Device.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@ -8,7 +8,7 @@ using TelegramBotBase.Base;
|
|||||||
|
|
||||||
namespace TelegramBotBase.Form
|
namespace TelegramBotBase.Form
|
||||||
{
|
{
|
||||||
public class ConfirmDialog : FormBase
|
public class ConfirmDialog : ModalDialog
|
||||||
{
|
{
|
||||||
public String Message { get; set; }
|
public String Message { get; set; }
|
||||||
|
|
||||||
|
|||||||
24
TelegramBotBase/Form/ModalDialog.cs
Normal file
24
TelegramBotBase/Form/ModalDialog.cs
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace TelegramBotBase.Form
|
||||||
|
{
|
||||||
|
public class ModalDialog : FormBase
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// This is a modal only function and does everything to close this form.
|
||||||
|
/// </summary>
|
||||||
|
public async Task CloseForm()
|
||||||
|
{
|
||||||
|
|
||||||
|
await this.CloseControls();
|
||||||
|
|
||||||
|
await this.OnClosed(new EventArgs());
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -8,7 +8,7 @@ using TelegramBotBase.Base;
|
|||||||
|
|
||||||
namespace TelegramBotBase.Form
|
namespace TelegramBotBase.Form
|
||||||
{
|
{
|
||||||
public class PromptDialog : FormBase
|
public class PromptDialog : ModalDialog
|
||||||
{
|
{
|
||||||
public String Message { get; set; }
|
public String Message { get; set; }
|
||||||
|
|
||||||
@ -53,6 +53,8 @@ namespace TelegramBotBase.Form
|
|||||||
|
|
||||||
|
|
||||||
OnCompleted(new EventArgs());
|
OnCompleted(new EventArgs());
|
||||||
|
|
||||||
|
await this.CloseForm();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -31,7 +31,7 @@ namespace TelegramBaseTest.Tests
|
|||||||
{
|
{
|
||||||
await this.Device.Send("Ciao from Form 2");
|
await this.Device.Send("Ciao from Form 2");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -84,12 +84,9 @@ namespace TelegramBaseTest.Tests
|
|||||||
pd.Completed += async (s, en) =>
|
pd.Completed += async (s, en) =>
|
||||||
{
|
{
|
||||||
await this.Device.Send("Hello " + pd.Value);
|
await this.Device.Send("Hello " + pd.Value);
|
||||||
|
|
||||||
var tf = new TestForm2();
|
|
||||||
await pd.NavigateTo(tf);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
await this.NavigateTo(pd);
|
await this.OpenModal(pd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user