feat: add table/grid toggle
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
This commit is contained in:
parent
4ea038cb4b
commit
3f23ec4bf9
@ -40,6 +40,7 @@
|
||||
#include "net/PasteUpload.h"
|
||||
#include "ui/MainWindow.h"
|
||||
#include "ui/InstanceWindow.h"
|
||||
#include "ui/instanceview/InstanceView.h"
|
||||
|
||||
#include "ui/pages/BasePageProvider.h"
|
||||
#include "ui/pages/global/LauncherPage.h"
|
||||
@ -609,6 +610,7 @@ Application::Application(int &argc, char **argv) : QApplication(argc, argv)
|
||||
|
||||
// The cat
|
||||
m_settings->registerSetting("TheCat", false);
|
||||
m_settings->registerSetting("InstanceDisplayMode", InstanceView::TableMode);
|
||||
|
||||
m_settings->registerSetting("InstSortMode", "Name");
|
||||
m_settings->registerSetting("SelectedInstance", QString());
|
||||
|
@ -229,6 +229,8 @@ public:
|
||||
TranslatedAction actionViewSelectedInstFolder;
|
||||
TranslatedAction actionDeleteInstance;
|
||||
TranslatedAction actionCAT;
|
||||
TranslatedAction actionTableMode;
|
||||
TranslatedAction actionGridMode;
|
||||
TranslatedAction actionCopyInstance;
|
||||
TranslatedAction actionLaunchInstanceOffline;
|
||||
TranslatedAction actionLaunchInstanceDemo;
|
||||
@ -408,6 +410,24 @@ public:
|
||||
actionCAT->setPriority(QAction::LowPriority);
|
||||
all_actions.append(&actionCAT);
|
||||
|
||||
actionTableMode = TranslatedAction(MainWindow);
|
||||
actionTableMode->setObjectName(QStringLiteral("actionTableMode"));
|
||||
actionTableMode->setCheckable(true);
|
||||
actionTableMode->setIcon(APPLICATION->getThemedIcon("view-list-symbolic")); // FIXME: add custom icon
|
||||
actionTableMode.setTextId(QT_TRANSLATE_NOOP("MainWindow", "&Table View"));
|
||||
actionTableMode.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Display instances in a table"));
|
||||
actionTableMode->setPriority(QAction::LowPriority);
|
||||
all_actions.append(&actionTableMode);
|
||||
|
||||
actionGridMode = TranslatedAction(MainWindow);
|
||||
actionGridMode->setObjectName(QStringLiteral("actionGridMode"));
|
||||
actionGridMode->setCheckable(true);
|
||||
actionGridMode->setIcon(APPLICATION->getThemedIcon("view-grid-symbolic")); // FIXME: add custom icon
|
||||
actionGridMode.setTextId(QT_TRANSLATE_NOOP("MainWindow", "&Grid View"));
|
||||
actionGridMode.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Display instances in a grid"));
|
||||
actionGridMode->setPriority(QAction::LowPriority);
|
||||
all_actions.append(&actionGridMode);
|
||||
|
||||
// profile menu and its actions
|
||||
actionManageAccounts = TranslatedAction(MainWindow);
|
||||
actionManageAccounts->setObjectName(QStringLiteral("actionManageAccounts"));
|
||||
@ -484,6 +504,9 @@ public:
|
||||
|
||||
mainToolBar->addAction(actionCAT);
|
||||
|
||||
mainToolBar->addAction(actionTableMode);
|
||||
mainToolBar->addAction(actionGridMode);
|
||||
|
||||
all_toolbars.append(&mainToolBar);
|
||||
MainWindow->addToolBar(Qt::TopToolBarArea, mainToolBar);
|
||||
}
|
||||
@ -518,6 +541,8 @@ public:
|
||||
viewMenu = menuBar->addMenu(tr("&View"));
|
||||
viewMenu->setSeparatorsCollapsible(false);
|
||||
viewMenu->addAction(actionCAT);
|
||||
viewMenu->addAction(actionTableMode);
|
||||
viewMenu->addAction(actionGridMode);
|
||||
viewMenu->addSeparator();
|
||||
|
||||
menuBar->addMenu(foldersMenu);
|
||||
@ -861,6 +886,36 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new MainWindow
|
||||
connect(ui->actionCAT.operator->(), SIGNAL(toggled(bool)), SLOT(onCatToggled(bool)));
|
||||
view->setCatDisplayed(cat_enable);
|
||||
}
|
||||
// Table/Grid mode
|
||||
{
|
||||
int displayMode = APPLICATION->settings()->get("InstanceDisplayMode").toInt();
|
||||
ui->actionTableMode->setChecked(false);
|
||||
ui->actionGridMode->setChecked(false);
|
||||
if (displayMode == InstanceView::TableMode) {
|
||||
ui->actionTableMode->setChecked(true);
|
||||
} else {
|
||||
ui->actionGridMode->setChecked(true);
|
||||
}
|
||||
view->switchDisplayMode(displayMode == InstanceView::TableMode ? InstanceView::TableMode : InstanceView::GridMode);
|
||||
|
||||
connect(ui->actionTableMode, &QAction::triggered, this, [this](bool state){
|
||||
if (!state) {
|
||||
ui->actionTableMode->setChecked(true);
|
||||
}
|
||||
ui->actionGridMode->setChecked(false);
|
||||
view->switchDisplayMode(InstanceView::TableMode);
|
||||
APPLICATION->settings()->set("InstanceDisplayMode", InstanceView::TableMode);
|
||||
});
|
||||
|
||||
connect(ui->actionGridMode, &QAction::triggered, this, [this](bool state){
|
||||
if (!state) {
|
||||
ui->actionGridMode->setChecked(true);
|
||||
}
|
||||
ui->actionTableMode->setChecked(false);
|
||||
view->switchDisplayMode(InstanceView::GridMode);
|
||||
APPLICATION->settings()->set("InstanceDisplayMode", InstanceView::GridMode);
|
||||
});
|
||||
}
|
||||
// start instance when double-clicked
|
||||
connect(view, &InstanceView::instanceActivated, this, &MainWindow::instanceActivated);
|
||||
|
||||
|
@ -41,7 +41,6 @@ InstanceView::InstanceView(QWidget* parent, InstanceList* instances) : QStackedW
|
||||
|
||||
addWidget(m_table);
|
||||
addWidget(m_grid);
|
||||
switchDisplayMode(InstanceView::GridMode);
|
||||
}
|
||||
|
||||
void InstanceView::storeState()
|
||||
|
@ -31,9 +31,9 @@ class InstanceList;
|
||||
class InstanceView : public QStackedWidget {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
enum DisplayMode { TableMode = 0, GridMode };
|
||||
|
||||
public:
|
||||
explicit InstanceView(QWidget* parent = nullptr, InstanceList* instances = nullptr);
|
||||
|
||||
void switchDisplayMode(DisplayMode mode);
|
||||
|
Loading…
x
Reference in New Issue
Block a user