MultiToggleButton minor updates

- updating localization
- adding AllowEmptySelection property
- updating test project
This commit is contained in:
FlorianDahn 2021-03-01 01:48:17 +01:00
parent 6a556af070
commit 5b67f334ff
4 changed files with 39 additions and 10 deletions

View File

@ -11,14 +11,20 @@ namespace TelegramBotBase.Controls.Inline
{ {
public class MultiToggleButton : ControlBase public class MultiToggleButton : ControlBase
{ {
/// <summary>
/// This contains the selected icon.
/// </summary>
public String SelectedIcon { get; set; } = Localizations.Default.Language["MultiToggleButton_SelectedIcon"];
//public String UncheckedIcon { get; set; } = Localizations.Default.Language["ToggleButton_OffIcon"]; /// <summary>
/// This will appear on the ConfirmAction message (if not empty)
/// </summary>
public String ChangedString { get; set; } = Localizations.Default.Language["MultiToggleButton_Changed"];
public String CheckedIcon { get; set; } = "✅"; /// <summary>
/// This holds the title of the control.
public String ChangedString { get; set; } = Localizations.Default.Language["ToggleButton_Changed"]; /// </summary>
public String Title { get; set; } = Localizations.Default.Language["MultiToggleButton_Title"];
public String Title { get; set; } = Localizations.Default.Language["ToggleButton_Title"];
public int? MessageId { get; set; } public int? MessageId { get; set; }
@ -28,8 +34,16 @@ namespace TelegramBotBase.Controls.Inline
private readonly EventHandlerList Events = new EventHandlerList(); private readonly EventHandlerList Events = new EventHandlerList();
/// <summary>
/// This will hold all options available.
/// </summary>
public List<ButtonBase> Options { get; set; } public List<ButtonBase> Options { get; set; }
/// <summary>
/// This will set if an empty selection (null) is allowed.
/// </summary>
public bool AllowEmptySelection { get; set; } = true;
public MultiToggleButton() public MultiToggleButton()
{ {
@ -79,7 +93,7 @@ namespace TelegramBotBase.Controls.Inline
this.SelectedOption = this.Options[index]; this.SelectedOption = this.Options[index];
OnToggled(new EventArgs()); OnToggled(new EventArgs());
} }
else else if(this.AllowEmptySelection)
{ {
this.SelectedOption = null; this.SelectedOption = null;
OnToggled(new EventArgs()); OnToggled(new EventArgs());
@ -114,7 +128,7 @@ namespace TelegramBotBase.Controls.Inline
var index = this.Options.IndexOf(o); var index = this.Options.IndexOf(o);
if (o == this.SelectedOption) if (o == this.SelectedOption)
{ {
lst.Add(new ButtonBase(CheckedIcon + " " + o.Text, "check$" + index)); lst.Add(new ButtonBase(SelectedIcon + " " + o.Text, "check$" + index));
continue; continue;
} }

View File

@ -26,6 +26,10 @@ namespace TelegramBotBase.Localizations
Values["ToggleButton_OnIcon"] = "⚫"; Values["ToggleButton_OnIcon"] = "⚫";
Values["ToggleButton_OffIcon"] = "⚪"; Values["ToggleButton_OffIcon"] = "⚪";
Values["ToggleButton_Title"] = "Toggle"; Values["ToggleButton_Title"] = "Toggle";
Values["ToggleButton_Changed"] = "Choosen";
Values["MultiToggleButton_SelectedIcon"] = "✅";
Values["MultiToggleButton_Title"] = "Multi-Toggle";
Values["MultiToggleButton_Changed"] = "Choosen";
Values["PromptDialog_Back"] = "Back"; Values["PromptDialog_Back"] = "Back";
Values["ToggleButton_Changed"] = "Setting changed"; Values["ToggleButton_Changed"] = "Setting changed";
} }

View File

@ -36,6 +36,10 @@ namespace TelegramBotBase.Localizations
Values["ToggleButton_OnIcon"] = "⚫"; Values["ToggleButton_OnIcon"] = "⚫";
Values["ToggleButton_OffIcon"] = "⚪"; Values["ToggleButton_OffIcon"] = "⚪";
Values["ToggleButton_Title"] = "Schalter"; Values["ToggleButton_Title"] = "Schalter";
Values["ToggleButton_Changed"] = "Ausgewählt";
Values["MultiToggleButton_SelectedIcon"] = "✅";
Values["MultiToggleButton_Title"] = "Mehrfach-Schalter";
Values["MultiToggleButton_Changed"] = "Ausgewählt";
Values["PromptDialog_Back"] = "Zurück"; Values["PromptDialog_Back"] = "Zurück";
Values["ToggleButton_Changed"] = "Einstellung geändert"; Values["ToggleButton_Changed"] = "Einstellung geändert";

View File

@ -31,8 +31,9 @@ namespace TelegramBotBaseTest.Tests.Controls
mtb = new MultiToggleButton(); mtb = new MultiToggleButton();
mtb.Options = new List<ButtonBase>() { new ButtonBase("Option 4", "4"), new ButtonBase("Option 5", "5"), new ButtonBase("Option 6", "6") }; mtb.Options = new List<ButtonBase>() { new ButtonBase("Option 4", "4"), new ButtonBase("Option 5", "5"), new ButtonBase("Option 6", "") };
mtb.SelectedOption = mtb.Options.FirstOrDefault(); mtb.SelectedOption = mtb.Options.FirstOrDefault();
mtb.AllowEmptySelection = false;
mtb.Toggled += Tb_Toggled; mtb.Toggled += Tb_Toggled;
this.AddControl(mtb); this.AddControl(mtb);
} }
@ -40,7 +41,13 @@ namespace TelegramBotBaseTest.Tests.Controls
private void Tb_Toggled(object sender, EventArgs e) private void Tb_Toggled(object sender, EventArgs e)
{ {
var tb = sender as MultiToggleButton; var tb = sender as MultiToggleButton;
if (tb.SelectedOption != null)
{
Console.WriteLine(tb.ID.ToString() + " was pressed, and toggled to " + tb.SelectedOption.Value); Console.WriteLine(tb.ID.ToString() + " was pressed, and toggled to " + tb.SelectedOption.Value);
return;
}
Console.WriteLine("Selection for " + tb.ID.ToString() + " has been removed.");
} }
} }
} }