game: add a search box to the scripts list

This commit is contained in:
Crypto City 2021-09-22 13:15:23 +00:00
parent 302ca386ef
commit 780435ab3e
3 changed files with 13 additions and 0 deletions

View File

@ -7,6 +7,7 @@ TBLayout: distribution: "gravity"
TBToggleContainer: id: "list-container", toggle: "expanded", gravity: "all"
TBLayout: axis: y, distribution-position: "left top", distribution: "gravity", gravity: "all"
TBSelectList: id: "scripts-list", gravity: "all"
TBEditField: id: "search", placeholder: "search", type: "search", gravity: "left right", autofocus: 1
TBLayout: axis: x
TBClickLabel: text: "Show all"
TBCheckBox: id: "show-all"

View File

@ -147,6 +147,7 @@ UIScriptsDialog::UIScriptsDialog(Context *ctx, const GameState *game, mode_t mod
scriptsList = GetWidgetByIDAndType<TBSelectList>("scripts-list");
showAllWidget = GetWidgetByIDAndType<TBCheckBox>("show-all");
reallyShowAllWidget = GetWidgetByIDAndType<TBCheckBox>("really-show-all");
searchWidget = GetWidgetByIDAndType<TBEditField>("search");
choicesLayout = GetWidgetByIDAndType<TBLayout>("choices-layout");
choiceMadeMessageWidget = GetWidgetByIDAndType<TBEditField>("choice-made-message");
scriptRowPlayingWidget = GetWidgetByIDAndType<TBWidget>("script-row-playing");
@ -585,6 +586,11 @@ void UIScriptsDialog::HandleChoiceMade(StringHash eventType, VariantMap& eventDa
waitingContainer->SetValue(1);
}
void UIScriptsDialog::HandleSearch(StringHash eventType, VariantMap& eventData)
{
scriptsList->SetFilter(searchWidget->GetText());
}
void UIScriptsDialog::HandleTBMessage(StringHash eventType, VariantMap& eventData)
{
#define CONNECT(name, function) do { if (ev->target->GetID() == TBIDC(name)) function(eventType, eventData); } while(0)
@ -603,6 +609,7 @@ void UIScriptsDialog::HandleTBMessage(StringHash eventType, VariantMap& eventDat
else if (ev->type == EVENT_TYPE_CHANGED)
{
CONNECT("scripts-list", HandleScriptSelected);
CONNECT("search", HandleSearch);
}
#undef CONNECT

View File

@ -56,6 +56,7 @@ private:
void HandleScriptSelected(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
void HandleConnect(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
void HandleEnableScriptConfirmation(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
void HandleSearch(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
void HandleTBMessage(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
void HandleClose(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
@ -70,6 +71,9 @@ private:
void ViewSource(const std::shared_ptr<GameWallet> &w, uint32_t script);
void RequestEnableScript(uint32_t script, bool enable);
class ScriptItem;
void RequestPlay(const ScriptItem *item);
private:
class ScriptItem: public tb::TBGenericStringItem
{
@ -121,6 +125,7 @@ private:
tb::TBEditField *choiceMadeMessageWidget;
tb::TBSelectList *scriptsList;
tb::TBLayout *choicesLayout;
tb::TBEditField *searchWidget;
tb::TBCheckBox *showAllWidget;
tb::TBCheckBox *reallyShowAllWidget;
tb::TBWidget *scriptRowPlayingWidget;