diff --git a/Keys/KeyHandler.cpp b/Keys/KeyHandler.cpp index 8f8c9fc..30846d5 100644 --- a/Keys/KeyHandler.cpp +++ b/Keys/KeyHandler.cpp @@ -10,7 +10,7 @@ bool KeyHandler::eventFilter(QObject *obj, QEvent *event) { auto *key = dynamic_cast(event); return std::any_of(listeners.cbegin(), listeners.cend(), - [key](const auto *listener) { + [key](auto* listener) { return listener->testAndInvoke(key); }); } else { diff --git a/Keys/KeyHandler.h b/Keys/KeyHandler.h index 188d4a3..3ac7619 100644 --- a/Keys/KeyHandler.h +++ b/Keys/KeyHandler.h @@ -7,14 +7,55 @@ #include +#include +#include #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; diff --git a/mainwindow.cpp b/mainwindow.cpp index 79762db..243d5e4 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -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; } diff --git a/mainwindow.ui b/mainwindow.ui index 18673f0..47e1277 100644 --- a/mainwindow.ui +++ b/mainwindow.ui @@ -30,7 +30,7 @@ - 0 + 1 @@ -59,15 +59,15 @@ - - - - - 20 - - - - + + + + + 20 + + + +