2024-03-02 22:33:27 +01:00
|
|
|
#include "mainwindow.h"
|
|
|
|
#include "./ui_mainwindow.h"
|
2024-03-04 00:27:05 +01:00
|
|
|
#include "tree/SwayTreeModel.h"
|
2024-03-07 17:37:18 +01:00
|
|
|
#include "Keys/HelpKeyListener.h"
|
|
|
|
#include "Keys/CloseHelpKeyListener.h"
|
2024-03-08 10:53:30 +01:00
|
|
|
#include "Keys/CreateWorkspaceKeyListener.h"
|
2024-03-08 13:13:28 +01:00
|
|
|
#include "Keys/CloseSwaymuxKeyListener.h"
|
2024-03-09 12:55:29 +01:00
|
|
|
#include "Keys/SwitchToKeybindListener.h"
|
2024-03-09 23:44:43 +01:00
|
|
|
#include "Keys/PrevOutputKeyListener.h"
|
|
|
|
#include "Keys/NextOutputKeyListener.h"
|
2024-03-11 13:33:26 +01:00
|
|
|
#include "Keys/CloseKeyListener.h"
|
|
|
|
#include "Keys/MoveToScratchpadKeyListener.h"
|
|
|
|
#include "Keys/RestoreKeyListener.h"
|
2024-03-12 11:48:43 +01:00
|
|
|
#include "Keys/ToggleDetailsKeyListener.h"
|
2024-03-02 22:33:27 +01:00
|
|
|
#include <QTimer>
|
2024-03-06 23:40:48 +01:00
|
|
|
#include <iostream>
|
2024-03-02 22:33:27 +01:00
|
|
|
|
2024-03-07 17:37:18 +01:00
|
|
|
|
2024-03-02 22:33:27 +01:00
|
|
|
MainWindow::MainWindow(QWidget *parent)
|
|
|
|
: QMainWindow(parent), ui(new Ui::MainWindow) {
|
|
|
|
ui->setupUi(this);
|
|
|
|
|
2024-03-04 00:27:05 +01:00
|
|
|
model = new SwayTreeModel(ui->treeView);
|
2024-03-09 17:58:15 +01:00
|
|
|
ui->statusbar->showMessage(QString::fromStdString("Press ? for keybind listing"));
|
2024-03-06 23:40:48 +01:00
|
|
|
ui->treeView->setSelectionMode(QAbstractItemView::ExtendedSelection);
|
2024-03-11 13:33:26 +01:00
|
|
|
updateModel();
|
2024-03-07 17:37:18 +01:00
|
|
|
|
|
|
|
swayTreeKeyHandler = new KeyHandler();
|
|
|
|
swayTreeKeyHandler->addListener(new HelpKeyListener(ui->help_page));
|
2024-03-08 13:13:28 +01:00
|
|
|
swayTreeKeyHandler->addListener(new CloseSwaymuxKeyListener());
|
2024-03-11 17:11:26 +01:00
|
|
|
swayTreeKeyHandler->addListener(new CreateWorkspaceKeyListener(this));
|
2024-03-09 12:55:29 +01:00
|
|
|
swayTreeKeyHandler->addListener(new SwitchToKeybindListener(model, ui->treeView));
|
2024-03-09 23:44:43 +01:00
|
|
|
swayTreeKeyHandler->addListener(new PrevOutputKeyListener(model, ui->treeView));
|
|
|
|
swayTreeKeyHandler->addListener(new NextOutputKeyListener(model, ui->treeView));
|
2024-03-11 13:33:26 +01:00
|
|
|
swayTreeKeyHandler->addListener(new CloseKeyListener(this));
|
|
|
|
swayTreeKeyHandler->addListener(new MoveToScratchpadKeyListener(this));
|
|
|
|
swayTreeKeyHandler->addListener(new RestoreKeyListener(this));
|
2024-03-12 11:48:43 +01:00
|
|
|
swayTreeKeyHandler->addListener(new ToggleDetailsKeyListener(this));
|
2024-03-07 17:37:18 +01:00
|
|
|
|
2024-03-07 20:44:00 +01:00
|
|
|
closeHelpKeyHandler = new KeyHandler(ui->tree_page);
|
2024-03-07 17:37:18 +01:00
|
|
|
closeHelpKeyHandler->addListener(new CloseHelpKeyListener(ui->tree_page));
|
|
|
|
|
2024-03-07 20:44:00 +01:00
|
|
|
ui->stackedWidget->setCurrentWidget(ui->tree_page);
|
2024-03-07 17:37:18 +01:00
|
|
|
ui->treeView->installEventFilter(swayTreeKeyHandler);
|
2024-03-07 20:44:00 +01:00
|
|
|
|
|
|
|
ui->tableView->setModel(swayTreeKeyHandler);
|
|
|
|
ui->tableView->resizeColumnsToContents();
|
|
|
|
ui->tableView->installEventFilter(closeHelpKeyHandler);
|
2024-03-12 11:48:43 +01:00
|
|
|
|
|
|
|
ui->windowDetails->hide();
|
|
|
|
selChanged();
|
|
|
|
|
|
|
|
connect( ui->treeView->selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)),
|
|
|
|
this, SLOT(selChanged()), Qt::DirectConnection ) ;
|
2024-03-02 22:33:27 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
MainWindow::~MainWindow() {
|
|
|
|
delete ui;
|
|
|
|
delete model;
|
2024-03-07 17:37:18 +01:00
|
|
|
delete swayTreeKeyHandler;
|
|
|
|
delete closeHelpKeyHandler;
|
2024-03-02 22:33:27 +01:00
|
|
|
}
|
|
|
|
|
2024-03-11 13:33:26 +01:00
|
|
|
void MainWindow::updateModel() const {
|
2024-03-12 11:48:43 +01:00
|
|
|
ui->windowDetails->setModel(nullptr);
|
2024-03-11 13:33:26 +01:00
|
|
|
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);
|
2024-03-12 11:48:43 +01:00
|
|
|
|
2024-03-12 12:49:47 +01:00
|
|
|
ui->windowDetails->verticalHeader()->hide();
|
|
|
|
ui->tableView->verticalHeader()->hide();
|
|
|
|
|
2024-03-12 11:48:43 +01:00
|
|
|
selChanged();
|
2024-03-11 13:33:26 +01:00
|
|
|
}
|
2024-03-12 11:48:43 +01:00
|
|
|
|
|
|
|
void MainWindow::selChanged() const {
|
|
|
|
auto current = ui->treeView->selectionModel()->currentIndex();
|
|
|
|
auto *selected = model->getSelectedNode(current);
|
|
|
|
ui->windowDetails->setModel(nullptr);
|
|
|
|
ui->windowDetails->setModel(&selected->node);
|
|
|
|
ui->windowDetails->resizeColumnsToContents();
|
|
|
|
ui->windowDetails->horizontalHeader()->setDefaultAlignment(Qt::AlignLeft);
|
|
|
|
}
|