File indexing completed on 2025-04-27 04:40:51
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 }