7 #include <QApplication>
8 #include <QDesktopWidget>
13 SettingsManager* SettingsManager:: inst =
nullptr;
23 SettingsManager::SettingsManager(
QObject* parent)
38 if (mDefaultSettingsFile->
contains(tag))
41 if (mUserSettingsFile->
contains(tag))
58 if (item->value() != item->defaultValue())
59 mUserSettingsFile->
setValue(item->tag(), item->value());
61 mUserSettingsFile->
remove(item->tag());
63 mUserSettingsFile->
sync();
68 return mDefaultSettingsFile->
value(tag);
73 return mUserSettingsFile->
value(tag);
84 return mUserSettingsFile->
value(
"MainWindow/size", rect.
size()).
toSize();
89 mUserSettingsFile->
setValue(
"MainWindow/position", pos);
90 mUserSettingsFile->
setValue(
"MainWindow/size", size);
91 mUserSettingsFile->
sync();
99 for (
int val : splitter->
sizes())
107 if (!mUserSettingsFile->
contains(token))
return;
118 if (mUserSettingsFile->
contains(token.
arg(
"detachedPosition")))
135 if (mUserSettingsFile->
contains(token.
arg(
"size")))
137 if (mUserSettingsFile->
contains(token.
arg(
"detachedPosition")))
147 QString token = cw->name() +
"/%1";
148 mUserSettingsFile->
setValue(token.
arg(
"anchor"), ContentLayout::positionToString(anchorPos));
149 mUserSettingsFile->
setValue(token.
arg(
"index"), index++);
150 mUserSettingsFile->
setValue(token.
arg(
"visible"), cw->isVisible());
152 if (cw->detachedFrame())
153 mUserSettingsFile->
setValue(token.
arg(
"detachedPosition"), cw->detachedFrame()->pos());
155 mUserSettingsFile->
remove(token.
arg(
"detachedPosition"));
157 mUserSettingsFile->
sync();
177 mUserSettingsFile->
sync();
Wraps the ContentWidget class.
Abstract class for Widgets within HAL's ContentArea.
ContentFrame * detachedFrame() const
The interface for the logical part of a setting.
virtual QString tag() const
virtual void restoreFromSettings(const QVariant &val)
virtual void setDefaultValue(const QVariant &dv)=0
Manages and persists the settings on the lowest level.
void saveLoggerSettings(const LoggerSettings &settings)
void widgetDetach(ContentWidget *cw) const
void registerSetting(SettingsItem *item)
void restoreSplitterState(const QString &tag, QSplitter *splitter) const
QVariant defaultValue(const QString &tag) const
void mainWindowSaveGeometry(const QPoint &pos, const QSize &size)
QVariant settingsValue(const QString &tag) const
void saveSplitterState(const QString &tag, const QSplitter *splitter)
void widgetsSaveGeometry(ContentLayout::Position anchorPos, QList< const ContentWidget * > &widgets)
void persistUserSettings()
LoggerSettings loggerSettings() const
QList< SettingsItem * > mSettingsList
void handleItemDestroyed(QObject *obj)
static SettingsManager * instance()
ContentWidgetPlacement widgetPlacement(ContentWidget *cw) const
QSize mainWindowSize() const
QPoint mainWindowPosition() const
Position positionFromString(const QString &s)
std::filesystem::path get_config_directory()
std::filesystem::path get_user_config_directory()
QDesktopWidget * desktop()
void append(const T &value)
QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
void destroyed(QObject *obj)
bool contains(const QString &key) const const
void remove(const QString &key)
void setValue(const QString &key, const QVariant &value)
QVariant value(const QString &key, const QVariant &defaultValue) const const
void setSizes(const QList< int > &list)
QList< int > sizes() const const
QStringList split(const QString &sep, QString::SplitBehavior behavior, Qt::CaseSensitivity cs) const const
QString arg(qlonglong a, int fieldWidth, int base, QChar fillChar) const const
QString fromStdString(const std::string &str)
QString number(int n, int base)
QString join(const QString &separator) const const
bool toBool() const const
int toInt(bool *ok) const const
QPoint toPoint() const const
QSize toSize() const const
QString toString() const const
ContentLayout::Position anchorPos