Updates to ButtonGrid
- adding IsNavigationBarVisible property to ButtonGrid - adding SubHeadLayout row for column "descriptions" like a table design - uses FilterDuplicate with ByRow enabled to keep the full row on matches
This commit is contained in:
parent
a364562fd3
commit
2f030f3c12
@ -86,6 +86,11 @@ namespace TelegramBotBase.Controls
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public List<ButtonBase> HeadLayoutButtonRow { get; set; }
|
public List<ButtonBase> HeadLayoutButtonRow { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Layout of columns which should be displayed below the header
|
||||||
|
/// </summary>
|
||||||
|
public List<ButtonBase> SubHeadLayoutButtonRow { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Defines which type of Button Keyboard should be rendered.
|
/// Defines which type of Button Keyboard should be rendered.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -159,7 +164,9 @@ namespace TelegramBotBase.Controls
|
|||||||
if (!result.IsFirstHandler)
|
if (!result.IsFirstHandler)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var button = HeadLayoutButtonRow?.FirstOrDefault(a => a.Text.Trim() == result.MessageText) ?? ButtonsForm.ToList().FirstOrDefault(a => a.Text.Trim() == result.MessageText);
|
var button = HeadLayoutButtonRow?.FirstOrDefault(a => a.Text.Trim() == result.MessageText)
|
||||||
|
?? SubHeadLayoutButtonRow?.FirstOrDefault(a => a.Text.Trim() == result.MessageText)
|
||||||
|
?? ButtonsForm.ToList().FirstOrDefault(a => a.Text.Trim() == result.MessageText);
|
||||||
|
|
||||||
if (button == null)
|
if (button == null)
|
||||||
{
|
{
|
||||||
@ -236,7 +243,9 @@ namespace TelegramBotBase.Controls
|
|||||||
{
|
{
|
||||||
case eKeyboardType.InlineKeyBoard:
|
case eKeyboardType.InlineKeyBoard:
|
||||||
|
|
||||||
var button = HeadLayoutButtonRow?.FirstOrDefault(a => a.Value == result.RawData) ?? ButtonsForm.ToList().FirstOrDefault(a => a.Value == result.RawData);
|
var button = HeadLayoutButtonRow?.FirstOrDefault(a => a.Value == result.RawData)
|
||||||
|
?? SubHeadLayoutButtonRow?.FirstOrDefault(a => a.Value == result.RawData)
|
||||||
|
?? ButtonsForm.ToList().FirstOrDefault(a => a.Value == result.RawData);
|
||||||
|
|
||||||
if (button == null)
|
if (button == null)
|
||||||
{
|
{
|
||||||
@ -326,7 +335,7 @@ namespace TelegramBotBase.Controls
|
|||||||
|
|
||||||
if (this.EnableSearch && this.SearchQuery != null && this.SearchQuery != "")
|
if (this.EnableSearch && this.SearchQuery != null && this.SearchQuery != "")
|
||||||
{
|
{
|
||||||
form = form.FilterDuplicate(this.SearchQuery);
|
form = form.FilterDuplicate(this.SearchQuery, true);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -343,6 +352,18 @@ namespace TelegramBotBase.Controls
|
|||||||
form.InsertButtonRow(0, this.HeadLayoutButtonRow);
|
form.InsertButtonRow(0, this.HeadLayoutButtonRow);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (this.SubHeadLayoutButtonRow != null && SubHeadLayoutButtonRow.Count > 0)
|
||||||
|
{
|
||||||
|
if (this.IsNavigationBarVisible)
|
||||||
|
{
|
||||||
|
form.InsertButtonRow(2, this.SubHeadLayoutButtonRow);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
form.InsertButtonRow(1, this.SubHeadLayoutButtonRow);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
switch (this.KeyboardType)
|
switch (this.KeyboardType)
|
||||||
{
|
{
|
||||||
//Reply Keyboard could only be updated with a new keyboard.
|
//Reply Keyboard could only be updated with a new keyboard.
|
||||||
@ -416,7 +437,7 @@ namespace TelegramBotBase.Controls
|
|||||||
bf.AddButtonRow(new ButtonBase(NoItemsLabel, "$"));
|
bf.AddButtonRow(new ButtonBase(NoItemsLabel, "$"));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.NavigationBarVisibility == eNavigationBarVisibility.always | (this.NavigationBarVisibility == eNavigationBarVisibility.auto && PagingNecessary))
|
if (this.IsNavigationBarVisible)
|
||||||
{
|
{
|
||||||
//🔍
|
//🔍
|
||||||
List<ButtonBase> lst = new List<ButtonBase>();
|
List<ButtonBase> lst = new List<ButtonBase>();
|
||||||
@ -455,6 +476,19 @@ namespace TelegramBotBase.Controls
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool IsNavigationBarVisible
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (this.NavigationBarVisibility == eNavigationBarVisibility.always | (this.NavigationBarVisibility == eNavigationBarVisibility.auto && PagingNecessary))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns the maximum number of rows
|
/// Returns the maximum number of rows
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -503,6 +537,9 @@ namespace TelegramBotBase.Controls
|
|||||||
if (this.HeadLayoutButtonRow != null && this.HeadLayoutButtonRow.Count > 0)
|
if (this.HeadLayoutButtonRow != null && this.HeadLayoutButtonRow.Count > 0)
|
||||||
layoutRows++;
|
layoutRows++;
|
||||||
|
|
||||||
|
if (this.SubHeadLayoutButtonRow != null && this.SubHeadLayoutButtonRow.Count > 0)
|
||||||
|
layoutRows++;
|
||||||
|
|
||||||
return layoutRows;
|
return layoutRows;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user