19#include "ui_sessionmanagerdialog.h"
32 setAttribute(Qt::WA_DeleteOnClose);
36 connect(ui->newButton, &QPushButton::clicked,
this, &SessionManagerDialog::newSession);
37 connect(ui->renameButton, &QPushButton::clicked,
this, &SessionManagerDialog::renameSession);
38 connect(ui->cloneButton, &QPushButton::clicked,
this, &SessionManagerDialog::cloneSession);
39 connect(ui->deleteButton, &QPushButton::clicked,
this, &SessionManagerDialog::deleteSession);
40 connect(ui->switchToButton, &QPushButton::clicked,
this, &SessionManagerDialog::switchToSession);
41 connect(ui->treeWidget, &QTreeWidget::currentItemChanged,
this, &SessionManagerDialog::updateButtons);
52void SessionManagerDialog::newSession()
54 mApp->sessionManager()->newSession();
57void SessionManagerDialog::renameSession()
59 QTreeWidgetItem *item = ui->treeWidget->currentItem();
63 const QString filePath = item->data(0, SessionFileRole).toString();
64 if (!filePath.isEmpty()) {
65 mApp->sessionManager()->renameSession(filePath);
69void SessionManagerDialog::cloneSession()
71 QTreeWidgetItem *item = ui->treeWidget->currentItem();
75 const QString filePath = item->data(0, SessionFileRole).toString();
76 if (!filePath.isEmpty()) {
77 mApp->sessionManager()->cloneSession(filePath);
81void SessionManagerDialog::deleteSession()
83 QTreeWidgetItem *item = ui->treeWidget->currentItem();
87 const QString filePath = item->data(0, SessionFileRole).toString();
88 if (!filePath.isEmpty()) {
89 mApp->sessionManager()->deleteSession(filePath);
93void SessionManagerDialog::switchToSession()
95 QTreeWidgetItem *item = ui->treeWidget->currentItem();
99 const QString filePath = item->data(0, SessionFileRole).toString();
100 if (!filePath.isEmpty()) {
101 if (item->data(0, IsBackupSessionRole).toBool()) {
102 mApp->sessionManager()->replaceSession(filePath);
104 mApp->sessionManager()->switchToSession(filePath);
109void SessionManagerDialog::refresh()
111 ui->treeWidget->clear();
113 const auto sessions =
mApp->sessionManager()->sessionMetaData();
114 for (
const auto &session : sessions) {
115 auto *item =
new QTreeWidgetItem;
116 item->setText(0, session.name);
117 item->setText(1, QLocale().toString(QFileInfo(session.filePath).lastModified(), QLocale::ShortFormat));
118 item->setData(0, SessionFileRole, session.filePath);
119 item->setData(0, IsBackupSessionRole, session.isBackup);
120 item->setData(0, IsActiveSessionRole, session.isActive);
121 item->setData(0, IsDefaultSessionRole, session.isDefault);
123 ui->treeWidget->addTopLevelItem(item);
129void SessionManagerDialog::updateButtons()
131 QTreeWidgetItem *item = ui->treeWidget->currentItem();
132 const bool isBackup = item && item->data(0, IsBackupSessionRole).toBool();
133 const bool isActive = item && item->data(0, IsActiveSessionRole).toBool();
134 const bool isDefault = item && item->data(0, IsDefaultSessionRole).toBool();
136 ui->renameButton->setEnabled(item && !isDefault && !isBackup);
137 ui->cloneButton->setEnabled(item && !isBackup);
138 ui->deleteButton->setEnabled(item && !isBackup && !isDefault && !isActive);
139 ui->switchToButton->setEnabled(item && !isActive);
140 ui->switchToButton->setText(isBackup ? tr(
"Restore") : tr(
"Switch To"));
143void SessionManagerDialog::updateItem(QTreeWidgetItem *item)
145 const bool isBackup = item->data(0, IsBackupSessionRole).toBool();
146 const bool isActive = item->data(0, IsActiveSessionRole).toBool();
147 const bool isDefault = item->data(0, IsDefaultSessionRole).toBool();
149 QFont font = item->font(0);
152 const QColor color = palette().color(QPalette::Disabled, QPalette::WindowText);
153 item->setForeground(0, color);
154 item->setForeground(1, color);
159 item->setFont(0, font);
160 item->setFont(1, font);
164 font.setItalic(
true);
165 item->setFont(0, font);
166 item->setFont(1, font);
170void SessionManagerDialog::showEvent(QShowEvent *e)
172 QDialog::showEvent(e);
176void SessionManagerDialog::resizeEvent(QResizeEvent *e)
178 QDialog::resizeEvent(e);
182void SessionManagerDialog::resizeViewHeader()
184 const int headerWidth = ui->treeWidget->header()->width();
185 ui->treeWidget->header()->resizeSection(0, headerWidth - headerWidth / 2.5);
~SessionManagerDialog() override
SessionManagerDialog(QWidget *parent=nullptr)
void sessionsMetaDataChanged()