feat: Improved searching for hotkeys (#5884)

This commit is contained in:
apa420
2025-03-04 14:15:50 +00:00
committed by GitHub
parent 8dd19d2d5e
commit c053fd5c60
5 changed files with 97 additions and 1 deletions
@@ -11,10 +11,13 @@
#include <QFormLayout>
#include <QHeaderView>
#include <QKeySequenceEdit>
#include <QLabel>
#include <QMessageBox>
#include <QTableView>
#include <array>
namespace {
using namespace chatterino;
@@ -51,6 +54,7 @@ KeyboardSettingsPage::KeyboardSettingsPage()
auto *model = getApp()->getHotkeys()->createModel(nullptr);
EditableModelView *view =
layout.emplace<EditableModelView>(model).getElement();
this->view_ = view;
view->setTitles({"Hotkey name", "Keybinding"});
view->getTableView()->horizontalHeader()->setVisible(true);
@@ -73,11 +77,25 @@ KeyboardSettingsPage::KeyboardSettingsPage()
}
});
QObject::connect(view->getTableView(), &QTableView::doubleClicked,
QObject::connect(view_->getTableView(), &QTableView::doubleClicked,
[view, model](const QModelIndex &clicked) {
tableCellClicked(clicked, view, model);
});
auto *keySequenceInput = new QKeySequenceEdit(this);
#if QT_VERSION >= QT_VERSION_CHECK(6, 4, 0)
keySequenceInput->setClearButtonEnabled(true);
#endif
auto *searchText = new QLabel("Search keybind:", this);
QObject::connect(keySequenceInput, &QKeySequenceEdit::keySequenceChanged,
[view](const QKeySequence &keySequence) {
view->filterSearchResultsHotkey(keySequence);
});
view->addCustomButton(searchText);
view->addCustomButton(keySequenceInput);
auto *resetEverything = new QPushButton("Reset to defaults");
QObject::connect(resetEverything, &QPushButton::clicked, [this]() {
auto reply = QMessageBox::question(
@@ -129,4 +147,11 @@ KeyboardSettingsPage::KeyboardSettingsPage()
}
}
bool KeyboardSettingsPage::filterElements(const QString &query)
{
std::array fields{0};
return this->view_->filterSearchResults(query, fields);
}
} // namespace chatterino
@@ -11,6 +11,10 @@ class KeyboardSettingsPage : public SettingsPage
{
public:
KeyboardSettingsPage();
bool filterElements(const QString &query) override;
private:
EditableModelView *view_;
};
} // namespace chatterino