From 5b67f334ffde5c0784eb1a9f5e540300e2d405f0 Mon Sep 17 00:00:00 2001 From: FlorianDahn Date: Mon, 1 Mar 2021 01:48:17 +0100 Subject: [PATCH] MultiToggleButton minor updates - updating localization - adding AllowEmptySelection property - updating test project --- .../Controls/Inline/MultiToggleButton.cs | 30 ++++++++++++++----- TelegramBotBase/Localizations/English.cs | 4 +++ TelegramBotBase/Localizations/Localization.cs | 4 +++ .../Tests/Controls/MultiToggleButtons.cs | 11 +++++-- 4 files changed, 39 insertions(+), 10 deletions(-) diff --git a/TelegramBotBase/Controls/Inline/MultiToggleButton.cs b/TelegramBotBase/Controls/Inline/MultiToggleButton.cs index d5f44f3..1828f2b 100644 --- a/TelegramBotBase/Controls/Inline/MultiToggleButton.cs +++ b/TelegramBotBase/Controls/Inline/MultiToggleButton.cs @@ -11,14 +11,20 @@ namespace TelegramBotBase.Controls.Inline { public class MultiToggleButton : ControlBase { + /// + /// This contains the selected icon. + /// + public String SelectedIcon { get; set; } = Localizations.Default.Language["MultiToggleButton_SelectedIcon"]; - //public String UncheckedIcon { get; set; } = Localizations.Default.Language["ToggleButton_OffIcon"]; + /// + /// This will appear on the ConfirmAction message (if not empty) + /// + public String ChangedString { get; set; } = Localizations.Default.Language["MultiToggleButton_Changed"]; - public String CheckedIcon { get; set; } = "✅"; - - public String ChangedString { get; set; } = Localizations.Default.Language["ToggleButton_Changed"]; - - public String Title { get; set; } = Localizations.Default.Language["ToggleButton_Title"]; + /// + /// This holds the title of the control. + /// + public String Title { get; set; } = Localizations.Default.Language["MultiToggleButton_Title"]; public int? MessageId { get; set; } @@ -28,8 +34,16 @@ namespace TelegramBotBase.Controls.Inline private readonly EventHandlerList Events = new EventHandlerList(); + /// + /// This will hold all options available. + /// public List Options { get; set; } + /// + /// This will set if an empty selection (null) is allowed. + /// + public bool AllowEmptySelection { get; set; } = true; + public MultiToggleButton() { @@ -79,7 +93,7 @@ namespace TelegramBotBase.Controls.Inline this.SelectedOption = this.Options[index]; OnToggled(new EventArgs()); } - else + else if(this.AllowEmptySelection) { this.SelectedOption = null; OnToggled(new EventArgs()); @@ -114,7 +128,7 @@ namespace TelegramBotBase.Controls.Inline var index = this.Options.IndexOf(o); if (o == this.SelectedOption) { - lst.Add(new ButtonBase(CheckedIcon + " " + o.Text, "check$" + index)); + lst.Add(new ButtonBase(SelectedIcon + " " + o.Text, "check$" + index)); continue; } diff --git a/TelegramBotBase/Localizations/English.cs b/TelegramBotBase/Localizations/English.cs index ed97089..1082c21 100644 --- a/TelegramBotBase/Localizations/English.cs +++ b/TelegramBotBase/Localizations/English.cs @@ -26,6 +26,10 @@ namespace TelegramBotBase.Localizations Values["ToggleButton_OnIcon"] = "⚫"; Values["ToggleButton_OffIcon"] = "⚪"; 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["ToggleButton_Changed"] = "Setting changed"; } diff --git a/TelegramBotBase/Localizations/Localization.cs b/TelegramBotBase/Localizations/Localization.cs index e00c25c..7f60247 100644 --- a/TelegramBotBase/Localizations/Localization.cs +++ b/TelegramBotBase/Localizations/Localization.cs @@ -36,6 +36,10 @@ namespace TelegramBotBase.Localizations Values["ToggleButton_OnIcon"] = "⚫"; Values["ToggleButton_OffIcon"] = "⚪"; 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["ToggleButton_Changed"] = "Einstellung geändert"; diff --git a/TelegramBotBaseTest/Tests/Controls/MultiToggleButtons.cs b/TelegramBotBaseTest/Tests/Controls/MultiToggleButtons.cs index 54fddca..b2db8f9 100644 --- a/TelegramBotBaseTest/Tests/Controls/MultiToggleButtons.cs +++ b/TelegramBotBaseTest/Tests/Controls/MultiToggleButtons.cs @@ -31,8 +31,9 @@ namespace TelegramBotBaseTest.Tests.Controls mtb = new MultiToggleButton(); - mtb.Options = new List() { new ButtonBase("Option 4", "4"), new ButtonBase("Option 5", "5"), new ButtonBase("Option 6", "6") }; + mtb.Options = new List() { new ButtonBase("Option 4", "4"), new ButtonBase("Option 5", "5"), new ButtonBase("Option 6", "") }; mtb.SelectedOption = mtb.Options.FirstOrDefault(); + mtb.AllowEmptySelection = false; mtb.Toggled += Tb_Toggled; this.AddControl(mtb); } @@ -40,7 +41,13 @@ namespace TelegramBotBaseTest.Tests.Controls private void Tb_Toggled(object sender, EventArgs e) { var tb = sender as MultiToggleButton; - Console.WriteLine(tb.ID.ToString() + " was pressed, and toggled to " + tb.SelectedOption.Value); + if (tb.SelectedOption != null) + { + Console.WriteLine(tb.ID.ToString() + " was pressed, and toggled to " + tb.SelectedOption.Value); + return; + } + + Console.WriteLine("Selection for " + tb.ID.ToString() + " has been removed."); } } }