2022-10-08 19:26:34 +03:00

104 lines
2.3 KiB
C#

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using TelegramBotBase.Form;
namespace TelegramBotBase.Controls.Hybrid;
[DebuggerDisplay("{Count} columns")]
public class ButtonRow
{
private List<ButtonBase> _buttons = new();
public ButtonRow()
{
}
public ButtonRow(params ButtonBase[] buttons)
{
_buttons = buttons.ToList();
}
public ButtonBase this[int index] => _buttons[index];
public int Count => _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<ButtonBase> GetEnumerator()
{
return _buttons.GetEnumerator();
}
public ButtonBase[] ToArray()
{
return _buttons.ToArray();
}
public List<ButtonBase> 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;
}
/// <summary>
/// Returns the button inside of the row which matches.
/// </summary>
/// <param name="text"></param>
/// <param name="useText"></param>
/// <returns></returns>
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<ButtonBase> list)
{
return new ButtonRow { _buttons = list };
}
}