actually display keybinds in the menu

This commit is contained in:
LordGrimmauld 2024-03-07 20:44:00 +01:00
parent 6f1498d65c
commit 4ace4c2398
4 changed files with 61 additions and 18 deletions

View file

@ -10,7 +10,7 @@ bool KeyHandler::eventFilter(QObject *obj, QEvent *event) {
auto *key = dynamic_cast<QKeyEvent *>(event);
return std::any_of(listeners.cbegin(), listeners.cend(),
[key](const auto *listener) {
[key](auto* listener) {
return listener->testAndInvoke(key);
});
} else {

View file

@ -7,14 +7,55 @@
#include <QObject>
#include <QAbstractItemModel>
#include <iostream>
#include "AbstractKeyListener.h"
class KeyHandler : public QObject {
Q_OBJECT
class KeyHandler : public QAbstractTableModel {
public:
explicit KeyHandler(QObject *parent = nullptr) : QAbstractTableModel{parent} {};
void addListener(AbstractKeyListener *listener) { listeners.push_back(listener); }
[[nodiscard]] int rowCount(const QModelIndex &parent = {}) const override {
return listeners.size();
}
[[nodiscard]] int columnCount(const QModelIndex &parent = {}) const override {
return 2;
}
[[nodiscard]] QVariant data(const QModelIndex &index, int role) const override {
if (!index.isValid() || role != Qt::DisplayRole)
return {};
auto *l = listeners[index.row()];
switch (index.column()) {
case 0:
return QString::fromStdString(l->getKeyText());
case 1:
return QString::fromStdString(l->getDescription());
default:
return QVariant{};
}
}
[[nodiscard]] QVariant headerData(int section, Qt::Orientation orientation,
int role) const override {
if (orientation != Qt::Horizontal || role != Qt::DisplayRole)
return QVariant{};
switch (section) {
case 0:
return "Key";
case 1:
return "Description";
default:
return QVariant{};
}
}
protected:
bool eventFilter(QObject *obj, QEvent *event) override;

View file

@ -29,18 +29,20 @@ MainWindow::MainWindow(QWidget *parent)
swayTreeKeyHandler = new KeyHandler();
swayTreeKeyHandler->addListener(new HelpKeyListener(ui->help_page));
closeHelpKeyHandler = new KeyHandler();
closeHelpKeyHandler = new KeyHandler(ui->tree_page);
closeHelpKeyHandler->addListener(new CloseHelpKeyListener(ui->tree_page));
ui->stackedWidget->setCurrentIndex(0);
ui->stackedWidget->setCurrentWidget(ui->tree_page);
ui->treeView->installEventFilter(swayTreeKeyHandler);
ui->listView->installEventFilter(closeHelpKeyHandler);
ui->tableView->setModel(swayTreeKeyHandler);
ui->tableView->resizeColumnsToContents();
ui->tableView->installEventFilter(closeHelpKeyHandler);
}
MainWindow::~MainWindow() {
delete ui;
delete model;
// delete modelUpdateTimer;
delete swayTreeKeyHandler;
delete closeHelpKeyHandler;
}

View file

@ -30,7 +30,7 @@
<item row="0" column="0">
<widget class="QStackedWidget" name="stackedWidget">
<property name="currentIndex">
<number>0</number>
<number>1</number>
</property>
<widget class="QWidget" name="tree_page">
<property name="sizePolicy">
@ -60,7 +60,7 @@
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QListView" name="listView">
<widget class="QTableView" name="tableView">
<property name="font">
<font>
<pointsize>20</pointsize>