diff options
author | Berthold Stoeger <bstoeger@mail.tuwien.ac.at> | 2021-02-14 20:59:02 +0100 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2021-02-17 07:26:55 -0800 |
commit | 5b3cb5898fead63750ea860417d1853710832d34 (patch) | |
tree | f9dbcd03ddcac45b9f6017b416c764504cf50d07 /desktop-widgets | |
parent | 80c92acc339237502d1d7f1eeb5d5a8801d6f908 (diff) | |
download | subsurface-5b3cb5898fead63750ea860417d1853710832d34.tar.gz |
desktop: fold ApplicationState into MainWindow
The application state is a desktop-only thing. The mobile UI
also has its application state, but that is something completely
different.
The last remaining user of the application state was to flag
whether the planner is active. Since this has all been
unglobalized, the ApplicationState structure can be moved
from core to the desktop UI. And there it can be made local
to the MainWindow class.
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'desktop-widgets')
-rw-r--r-- | desktop-widgets/filterwidget.cpp | 2 | ||||
-rw-r--r-- | desktop-widgets/locationinformation.cpp | 2 | ||||
-rw-r--r-- | desktop-widgets/mainwindow.cpp | 16 | ||||
-rw-r--r-- | desktop-widgets/mainwindow.h | 17 | ||||
-rw-r--r-- | desktop-widgets/statswidget.cpp | 2 |
5 files changed, 27 insertions, 12 deletions
diff --git a/desktop-widgets/filterwidget.cpp b/desktop-widgets/filterwidget.cpp index b6a1429fe..5c910ea72 100644 --- a/desktop-widgets/filterwidget.cpp +++ b/desktop-widgets/filterwidget.cpp @@ -181,7 +181,7 @@ void FilterWidget::clearFilter() void FilterWidget::closeFilter() { - MainWindow::instance()->setApplicationState(ApplicationState::Default); + MainWindow::instance()->setApplicationState(MainWindow::ApplicationState::Default); } FilterData FilterWidget::createFilterData() const diff --git a/desktop-widgets/locationinformation.cpp b/desktop-widgets/locationinformation.cpp index 780390198..2f5648461 100644 --- a/desktop-widgets/locationinformation.cpp +++ b/desktop-widgets/locationinformation.cpp @@ -219,7 +219,7 @@ void LocationInformationWidget::acceptChanges() MainWindow::instance()->diveList->setEnabled(true); MainWindow::instance()->setEnabledToolbar(true); - MainWindow::instance()->setApplicationState(ApplicationState::Default); + MainWindow::instance()->setApplicationState(MainWindow::ApplicationState::Default); DiveFilter::instance()->stopFilterDiveSites(); // Subtlety alert: diveSite must be cleared *after* exiting the dive-site mode. diff --git a/desktop-widgets/mainwindow.cpp b/desktop-widgets/mainwindow.cpp index e2fb7368a..2a932d278 100644 --- a/desktop-widgets/mainwindow.cpp +++ b/desktop-widgets/mainwindow.cpp @@ -112,6 +112,7 @@ extern "C" void showErrorFromC(char *buf) } MainWindow::MainWindow() : QMainWindow(), + appState((ApplicationState)-1), // Invalid state actionNextDive(nullptr), actionPreviousDive(nullptr), #ifndef NO_USERMANUAL @@ -653,8 +654,7 @@ void MainWindow::updateLastUsedDir(const QString &dir) void MainWindow::on_actionPrint_triggered() { #ifndef NO_PRINTING - bool in_planner = getAppState() == ApplicationState::PlanDive || - getAppState() == ApplicationState::EditPlannedDive; + bool in_planner = appState == ApplicationState::PlanDive || appState == ApplicationState::EditPlannedDive; PrintDialog dlg(in_planner, this); dlg.exec(); @@ -1132,7 +1132,7 @@ void MainWindow::writeSettings() settings.setValue("geometry", saveGeometry()); settings.setValue("windowState", saveState()); settings.setValue("maximized", isMaximized()); - settings.setValue("lastState", (int)getAppState()); + settings.setValue("lastState", (int)appState); saveSplitterSizes(); settings.endGroup(); } @@ -1562,14 +1562,14 @@ void MainWindow::on_actionFilterTags_triggered() { if (!userMayChangeAppState()) return; - setApplicationState(getAppState() == ApplicationState::FilterDive ? ApplicationState::Default : ApplicationState::FilterDive); + setApplicationState(appState == ApplicationState::FilterDive ? ApplicationState::Default : ApplicationState::FilterDive); } void MainWindow::on_actionStats_triggered() { if (!userMayChangeAppState()) return; - setApplicationState(getAppState() == ApplicationState::Statistics ? ApplicationState::Default : ApplicationState::Statistics); + setApplicationState(appState == ApplicationState::Statistics ? ApplicationState::Default : ApplicationState::Statistics); } void MainWindow::registerApplicationState(ApplicationState state, Quadrants q) @@ -1602,17 +1602,17 @@ void MainWindow::setQuadrantWidgets(QSplitter &splitter, const Quadrant &left, c bool MainWindow::userMayChangeAppState() const { - return applicationState[(int)getAppState()].allowUserChange; + return applicationState[(int)appState].allowUserChange; } void MainWindow::setApplicationState(ApplicationState state) { - if (getAppState() == state) + if (appState == state) return; saveSplitterSizes(); - setAppState(state); + appState = state; clearSplitter(*topSplitter); clearSplitter(*bottomSplitter); diff --git a/desktop-widgets/mainwindow.h b/desktop-widgets/mainwindow.h index ae8e11740..4b28c0a9e 100644 --- a/desktop-widgets/mainwindow.h +++ b/desktop-widgets/mainwindow.h @@ -19,7 +19,6 @@ #include "ui_plannerDetails.h" #include "desktop-widgets/notificationwidget.h" #include "desktop-widgets/filterwidget.h" -#include "core/applicationstate.h" #include "core/dive.h" #include "core/subsurface-qt/divelistnotifier.h" @@ -53,6 +52,21 @@ public: LocationInformationWidget *locationInformationWidget(); void setTitle(); + enum class ApplicationState { + Default, + EditDive, + PlanDive, + EditPlannedDive, + EditDiveSite, + FilterDive, + Statistics, + MapMaximized, + ProfileMaximized, + ListMaximized, + InfoMaximized, + Count + }; + void loadFiles(const QStringList files); void importFiles(const QStringList importFiles); void setToolButtonsEnabled(bool enabled); @@ -155,6 +169,7 @@ slots: void startDiveSiteEdit(); private: + ApplicationState appState; Ui::MainWindow ui; FilterWidget filterWidget; std::unique_ptr<QSplitter> topSplitter; diff --git a/desktop-widgets/statswidget.cpp b/desktop-widgets/statswidget.cpp index b74a26863..465d5d496 100644 --- a/desktop-widgets/statswidget.cpp +++ b/desktop-widgets/statswidget.cpp @@ -157,7 +157,7 @@ void StatsWidget::updateRestrictionLabel() void StatsWidget::closeStats() { - MainWindow::instance()->setApplicationState(ApplicationState::Default); + MainWindow::instance()->setApplicationState(MainWindow::ApplicationState::Default); } void StatsWidget::chartTypeChanged(int idx) |