feat: Improved searching for hotkeys (#5884)
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user