using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Runtime.CompilerServices; using System.Text; using TelegramBotBase.Form; namespace TelegramBotBase.Controls.Hybrid { [DebuggerDisplay("{Count} columns")] public class ButtonRow { List __buttons = new List(); public ButtonRow() { } public ButtonRow(params ButtonBase[] buttons) { __buttons = buttons.ToList(); } public ButtonBase this[int index] { get { return __buttons[index]; } } public int Count { get { return __buttons.Count; } } public void Add(ButtonBase button) { __buttons.Add(button); } public void AddRange(ButtonBase button) { __buttons.Add(button); } public void Insert(int index, ButtonBase button) { __buttons.Insert(index, button); } public IEnumerator GetEnumerator() { return __buttons.GetEnumerator(); } public ButtonBase[] ToArray() { return __buttons.ToArray(); } public List ToList() { return __buttons.ToList(); } public bool Matches(String text, bool useText = true) { foreach (var b in __buttons) { if (useText && b.Text.Trim().Equals(text, StringComparison.InvariantCultureIgnoreCase)) return true; if (!useText && b.Value.Equals(text, StringComparison.InvariantCultureIgnoreCase)) return true; } return false; } /// /// Returns the button inside of the row which matches. /// /// /// /// public ButtonBase GetButtonMatch(String text, bool useText = true) { foreach (var b in __buttons) { if (useText && b.Text.Trim().Equals(text, StringComparison.InvariantCultureIgnoreCase)) return b; if (!useText && b.Value.Equals(text, StringComparison.InvariantCultureIgnoreCase)) return b; } return null; } public static implicit operator ButtonRow(List list) { return new ButtonRow() { __buttons = list }; } } }