Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qdesigner_settings.cpp
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
3
4#include "qdesigner.h"
8
9#include <QtDesigner/abstractsettings.h>
10
11#include <abstractformeditor.h>
12#include <qdesigner_utils_p.h>
13#include <previewmanager_p.h>
14
15#include <QtCore/qvariant.h>
16#include <QtCore/qdir.h>
17
18#include <QtWidgets/qstyle.h>
19#include <QtWidgets/qlistview.h>
20
21#include <QtCore/qdebug.h>
22
23enum { debugSettings = 0 };
24
25QT_BEGIN_NAMESPACE
26
27using namespace Qt::StringLiterals;
28
29static constexpr auto newFormShowKey = "newFormDialog/ShowOnStartup"_L1;
30
31// Change the version whenever the arrangement changes significantly.
32static constexpr auto mainWindowStateKey = "MainWindowState45"_L1;
33static constexpr auto toolBarsStateKey = "ToolBarsState45"_L1;
34
35static constexpr auto backupOrgListKey = "backup/fileListOrg"_L1;
36static constexpr auto backupBakListKey = "backup/fileListBak"_L1;
37static constexpr auto recentFilesListKey = "recentFilesList"_L1;
38
39QDesignerSettings::QDesignerSettings(QDesignerFormEditorInterface *core) :
41{
42}
43
44void QDesignerSettings::setValue(const QString &key, const QVariant &value)
45{
46 settings()->setValue(key, value);
47}
48
49QVariant QDesignerSettings::value(const QString &key, const QVariant &defaultValue) const
50{
51 return settings()->value(key, defaultValue);
52}
53
54static inline QChar modeChar(UIMode mode)
55{
56 return QLatin1Char(static_cast<char>(mode) + '0');
57}
58
60{
61 Q_ASSERT(w && !w->objectName().isEmpty());
62 QDesignerSettingsInterface *s = settings();
63 const bool visible = w->isVisible();
64 if (debugSettings)
65 qDebug() << Q_FUNC_INFO << w << "visible=" << visible;
66 s->beginGroup(w->objectName());
67 s->setValue(u"visible"_s, visible);
68 s->setValue(u"geometry"_s, w->saveGeometry());
69 s->endGroup();
70}
71
72void QDesignerSettings::restoreGeometry(QWidget *w, QRect fallBack) const
73{
74 Q_ASSERT(w && !w->objectName().isEmpty());
75 const QString key = w->objectName();
76 const QByteArray ba(settings()->value(key + "/geometry"_L1).toByteArray());
77 const bool visible = settings()->value(key + "/visible"_L1, true).toBool();
78
79 if (debugSettings)
80 qDebug() << Q_FUNC_INFO << w << fallBack << "visible=" << visible;
81 if (ba.isEmpty()) {
82 /// Apply default geometry, check for null and maximal size
83 if (fallBack.isNull())
84 fallBack = QRect(QPoint(0, 0), w->sizeHint());
85 if (fallBack.size() == QSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX)) {
86 w->setWindowState(w->windowState() | Qt::WindowMaximized);
87 } else {
88 w->move(fallBack.topLeft());
89 w->resize(fallBack.size());
90 }
91 } else {
92 w->restoreGeometry(ba);
93 }
94
95 if (visible)
96 w->show();
97}
98
100{
101 return settings()->value(recentFilesListKey).toStringList();
102}
103
104void QDesignerSettings::setRecentFilesList(const QStringList &sl)
105{
106 settings()->setValue(recentFilesListKey, sl);
107}
108
110{
111 settings()->setValue(newFormShowKey, showIt);
112}
113
115{
116 return settings()->value(newFormShowKey, true).toBool();
117}
118
120{
121 return settings()->value(mainWindowStateKey + modeChar(mode)).toByteArray();
122}
123
124void QDesignerSettings::setMainWindowState(UIMode mode, const QByteArray &mainWindowState)
125{
126 settings()->setValue(mainWindowStateKey + modeChar(mode), mainWindowState);
127}
128
130{
131 QString key = toolBarsStateKey;
132 key += modeChar(mode);
133 return settings()->value(key).toByteArray();
134}
135
136void QDesignerSettings::setToolBarsState(UIMode mode, const QByteArray &toolBarsState)
137{
138 QString key = toolBarsStateKey;
139 key += modeChar(mode);
140 settings()->setValue(key, toolBarsState);
141}
142
144{
145 QDesignerSettingsInterface *s = settings();
146 s->remove(backupOrgListKey);
147 s->remove(backupBakListKey);
148}
149
150void QDesignerSettings::setBackup(const QMap<QString, QString> &map)
151{
152 const QStringList org = map.keys();
153 const QStringList bak = map.values();
154
155 QDesignerSettingsInterface *s = settings();
156 s->setValue(backupOrgListKey, org);
157 s->setValue(backupBakListKey, bak);
158}
159
161{
162 const QStringList org = settings()->value(backupOrgListKey, QStringList()).toStringList();
163 const QStringList bak = settings()->value(backupBakListKey, QStringList()).toStringList();
164
165 QMap<QString, QString> map;
166 const qsizetype orgCount = org.size();
167 for (qsizetype i = 0; i < orgCount; ++i)
168 map.insert(org.at(i), bak.at(i));
169
170 return map;
171}
172
174{
175 QDesignerSettingsInterface *s = settings();
176 s->beginGroup(u"UI"_s);
177 s->setValue(u"currentMode"_s, mode);
178 s->endGroup();
179}
180
182{
183 constexpr UIMode defaultMode = DockedMode;
184 UIMode uiMode = static_cast<UIMode>(value(u"UI/currentMode"_s, defaultMode).toInt());
185 return uiMode;
186}
187
189{
190 QDesignerSettingsInterface *s = settings();
191 s->beginGroup(u"UI"_s);
192 s->setValue(u"font"_s, fontSettings.m_font);
193 s->setValue(u"useFont"_s, fontSettings.m_useFont);
194 s->setValue(u"writingSystem"_s, fontSettings.m_writingSystem);
195 s->endGroup();
196}
197
199{
200 ToolWindowFontSettings fontSettings;
201 fontSettings.m_writingSystem =
202 static_cast<QFontDatabase::WritingSystem>(value(u"UI/writingSystem"_s,
203 QFontDatabase::Any).toInt());
204 fontSettings.m_font = qvariant_cast<QFont>(value(u"UI/font"_s));
205 fontSettings.m_useFont =
206 settings()->value(u"UI/useFont"_s, QVariant(false)).toBool();
207 return fontSettings;
208}
209
210QT_END_NAMESPACE
QStringList recentFilesList() const
void setToolWindowFont(const ToolWindowFontSettings &fontSettings)
void setShowNewFormOnStartup(bool showIt)
void setUiMode(UIMode mode)
void setBackup(const QMap< QString, QString > &map)
void restoreGeometry(QWidget *w, QRect fallBack=QRect()) const
QByteArray mainWindowState(UIMode mode) const
QDesignerSettings(QDesignerFormEditorInterface *core)
QMap< QString, QString > backup() const
QByteArray toolBarsState(UIMode mode) const
void setRecentFilesList(const QStringList &list)
ToolWindowFontSettings toolWindowFont() const
void saveGeometryFor(const QWidget *w)
bool showNewFormOnStartup() const
friend class QWidget
Definition qpainter.h:421
UIMode
@ DockedMode
static constexpr auto newFormShowKey
static constexpr auto mainWindowStateKey
static constexpr auto toolBarsStateKey
static constexpr auto backupOrgListKey
static QChar modeChar(UIMode mode)
static constexpr auto backupBakListKey
static constexpr auto recentFilesListKey