#include "mainwindow.h" #include "./ui_mainwindow.h" #include "tree/SwayTreeModel.h" #include "Keys/HelpKeyListener.h" #include "Keys/CloseHelpKeyListener.h" #include "Keys/CreateWorkspaceKeyListener.h" #include "Keys/CloseSwaymuxKeyListener.h" #include "Keys/SwitchToKeybindListener.h" #include "Keys/PrevOutputKeyListener.h" #include "Keys/NextOutputKeyListener.h" #include "Keys/CloseKeyListener.h" #include "Keys/MoveToScratchpadKeyListener.h" #include "Keys/RestoreKeyListener.h" #include #include MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); model = new SwayTreeModel(ui->treeView); ui->statusbar->showMessage(QString::fromStdString("Press ? for keybind listing")); ui->treeView->setSelectionMode(QAbstractItemView::ExtendedSelection); updateModel(); swayTreeKeyHandler = new KeyHandler(); swayTreeKeyHandler->addListener(new HelpKeyListener(ui->help_page)); swayTreeKeyHandler->addListener(new CloseSwaymuxKeyListener()); swayTreeKeyHandler->addListener(new CreateWorkspaceKeyListener(model, ui->treeView)); swayTreeKeyHandler->addListener(new SwitchToKeybindListener(model, ui->treeView)); swayTreeKeyHandler->addListener(new PrevOutputKeyListener(model, ui->treeView)); swayTreeKeyHandler->addListener(new NextOutputKeyListener(model, ui->treeView)); swayTreeKeyHandler->addListener(new CloseKeyListener(this)); swayTreeKeyHandler->addListener(new MoveToScratchpadKeyListener(this)); swayTreeKeyHandler->addListener(new RestoreKeyListener(this)); closeHelpKeyHandler = new KeyHandler(ui->tree_page); closeHelpKeyHandler->addListener(new CloseHelpKeyListener(ui->tree_page)); ui->stackedWidget->setCurrentWidget(ui->tree_page); ui->treeView->installEventFilter(swayTreeKeyHandler); ui->tableView->setModel(swayTreeKeyHandler); ui->tableView->resizeColumnsToContents(); ui->tableView->installEventFilter(closeHelpKeyHandler); } MainWindow::~MainWindow() { delete ui; delete model; delete swayTreeKeyHandler; delete closeHelpKeyHandler; } void MainWindow::updateModel() const { ui->treeView->setModel(nullptr); auto *focused = model->getRoot() == nullptr ? nullptr : model->getRoot()->findFocused(); int id; if (focused != nullptr) id = focused->node.id; model->generateRoot(); if (focused == nullptr) focused = model->getRoot()->findFocused(); else focused = model->getRoot()->findById(id); if (focused != nullptr) focused->node.focused = true; ui->treeView->setModel(model); ui->treeView->expandAll(); ui->treeView->selectionModel()->setCurrentIndex(model->findIndexByNode(focused), QItemSelectionModel::ClearAndSelect); for (int c = 0; c < model->columnCount(); ++c) ui->treeView->resizeColumnToContents(c); }