From cf8ede3a50a7e42fca6fdcb8e61e391b359b31db Mon Sep 17 00:00:00 2001 From: jussi Date: Wed, 9 Oct 2019 14:11:35 +0300 Subject: [PATCH] change toolbar buttons to QAction --- src/modules/interface/qt/MainWindow.cpp | 47 +++++++++++++++++++++---- src/modules/interface/qt/MainWindow.h | 14 +++++++- 2 files changed, 53 insertions(+), 8 deletions(-) diff --git a/src/modules/interface/qt/MainWindow.cpp b/src/modules/interface/qt/MainWindow.cpp index bb52753..bf580a4 100644 --- a/src/modules/interface/qt/MainWindow.cpp +++ b/src/modules/interface/qt/MainWindow.cpp @@ -15,14 +15,38 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { m_mainToolBar->setFloatable(true); m_mainLayout->addWidget(m_mainToolBar); - // Add toolbar buttons - QToolButton *settingsButton = new QToolButton; - settingsButton->setCheckable(true); - settingsButton->setIcon(QIcon::fromTheme("configure")); - m_mainToolBar->addWidget(settingsButton); + m_mainStackedWidget = new QStackedWidget; - AssignableWidget *assignableWidget = new AssignableWidget; - m_mainLayout->addWidget(assignableWidget); + m_assignableWidget = new AssignableWidget; + m_mainStackedWidget->addWidget(m_assignableWidget); + + m_settingWidget = new QWidget; + m_mainStackedWidget->addWidget(m_settingWidget); + + m_mainLayout->addWidget(m_mainStackedWidget); + + // Add toolbar buttons + + // Connect tool buttons to changing the active stacked widget + QAction *activateSettings = new QAction; + activateSettings->setCheckable(true); + activateSettings->setIcon(QIcon::fromTheme("configure")); + m_mainToolBar->addAction(activateSettings); + + QAction *activateEditor = new QAction; + activateEditor->setCheckable(true); + activateEditor->setIcon(QIcon::fromTheme("edit-entry")); + m_mainToolBar->addAction(activateEditor); + + connect(activateSettings, &QAction::triggered, [=]() { + changeActiveWidget(m_settingWidget, activateSettings); + }); + + /*connect(settingsButton, &QToolButton::toggled, [=](bool toggled) { + if (toggled) { + m_mainStackedWidget->setCurrentWidget(m_settingWidget); + } + });*/ m_mainWidget->setLayout(m_mainLayout); setCentralWidget(m_mainWidget); @@ -30,3 +54,12 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { MainWindow::~MainWindow() { } + +void MainWindow::changeActiveWidget(QWidget *widget, const QAction *action) { + + // Replace this with list of actions that change widgets + for (QAction *i_actions : m_mainToolBar->actions()) { + + } + m_mainStackedWidget->setCurrentWidget(widget); +} diff --git a/src/modules/interface/qt/MainWindow.h b/src/modules/interface/qt/MainWindow.h index 37548f8..8f8186d 100644 --- a/src/modules/interface/qt/MainWindow.h +++ b/src/modules/interface/qt/MainWindow.h @@ -1,10 +1,13 @@ #pragma once +#include + #include #include #include #include #include +#include namespace Ui { class MainWindow; @@ -20,9 +23,18 @@ private: QGridLayout *m_mainLayout; QStatusBar *m_mainStatusBar; QWidget *m_mainWidget; + QToolBar *m_mainToolBar; // Stacked widgets for the main view QStackedWidget *m_mainStackedWidget; - QVector m_mainStackedWidgetWidgets; + AssignableWidget *m_assignableWidget; + QWidget *m_settingWidget; + + // List of widget switch triggers so we know which ones to uncheck + QVector m_widgetSwitchTriggers; + // Setup connections + void setupConnections(); + // Change current stacked widget according to the action that was triggered + void changeActiveWidget(QWidget *widget, const QAction *action); };