78 lines
2.8 KiB
C++
78 lines
2.8 KiB
C++
#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 <QTimer>
|
|
#include <iostream>
|
|
|
|
|
|
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);
|
|
}
|