File indexing completed on 2024-05-12 05:04:30

0001 /*
0002     SPDX-FileCopyrightText: 2019 Ralf Habacker ralf.habacker @freenet.de
0003 
0004     This file is part of libalkimia.
0005 
0006     SPDX-License-Identifier: GPL-2.0-or-later
0007 */
0008 
0009 #include "applicationsettings.h"
0010 
0011 #include <QDockWidget>
0012 #include <QMainWindow>
0013 #include <QSettings>
0014 
0015 ApplicationSettings::ApplicationSettings(QMainWindow *parent, bool loadSettings)
0016   : m_parent(parent)
0017 {
0018     if (loadSettings)
0019         readPositionSettings();
0020 }
0021 
0022 void ApplicationSettings::writePositionSettings()
0023 {
0024     QSettings settings;
0025 
0026     settings.beginGroup("mainwindow");
0027 
0028     settings.setValue("geometry", m_parent->saveGeometry());
0029     settings.setValue("savestate", m_parent->saveState());
0030     settings.setValue("maximized", m_parent->isMaximized());
0031     if (!m_parent->isMaximized()) {
0032         settings.setValue("pos", m_parent->pos());
0033         settings.setValue("size", m_parent->size());
0034     }
0035     settings.endGroup();
0036 
0037     QList<QDockWidget*> dockWidgets = m_parent->findChildren<QDockWidget*>();
0038     for (QDockWidget *widget : dockWidgets)
0039     {
0040         settings.beginGroup(widget->objectName());
0041         settings.setValue("geometry", widget->saveGeometry());
0042         settings.setValue("maximized", widget->isMaximized());
0043         if (!widget->isMaximized()) {
0044             settings.setValue("pos", widget->pos());
0045             settings.setValue("size", widget->size());
0046         }
0047         settings.endGroup();
0048     }
0049 }
0050 
0051 void ApplicationSettings::readPositionSettings()
0052 {
0053     QSettings settings;
0054 
0055     settings.beginGroup("mainwindow");
0056 
0057     m_parent->restoreGeometry(settings.value("geometry", m_parent->saveGeometry()).toByteArray());
0058     m_parent->restoreState(settings.value("savestate", m_parent->saveState()).toByteArray());
0059     m_parent->move(settings.value("pos", m_parent->pos()).toPoint());
0060     m_parent->resize(settings.value("size", m_parent->size()).toSize());
0061     if (settings.value("maximized", m_parent->isMaximized()).toBool())
0062         m_parent->showMaximized();
0063 
0064     settings.endGroup();
0065 
0066     QList<QDockWidget*> dockWidgets = m_parent->findChildren<QDockWidget*>();
0067     for (QDockWidget *widget : dockWidgets)
0068     {
0069         settings.beginGroup(widget->objectName());
0070         widget->restoreGeometry(settings.value("geometry", widget->saveGeometry()).toByteArray());
0071         widget->move(settings.value("pos", widget->pos()).toPoint());
0072         widget->resize(settings.value("size", widget->size()).toSize());
0073         if (settings.value("maximized", widget->isMaximized()).toBool())
0074             widget->showMaximized();
0075         settings.endGroup();
0076     }
0077 }