629 lines
22 KiB
C++
629 lines
22 KiB
C++
/*==============================================================================
|
|
** Copyright (C) 2024-2027 WingSummer
|
|
**
|
|
** This program is free software: you can redistribute it and/or modify it under
|
|
** the terms of the GNU Affero General Public License as published by the Free
|
|
** Software Foundation, version 3.
|
|
**
|
|
** This program is distributed in the hope that it will be useful, but WITHOUT
|
|
** ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
|
** FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
|
** details.
|
|
**
|
|
** You should have received a copy of the GNU Affero General Public License
|
|
** along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
** =============================================================================
|
|
*/
|
|
|
|
#include "settingmanager.h"
|
|
|
|
#include "class/logger.h"
|
|
#include "class/skinmanager.h"
|
|
#include "settings/settings.h"
|
|
|
|
#include "utilities.h"
|
|
|
|
#include <QApplication>
|
|
#include <QFileInfo>
|
|
#include <QMetaEnum>
|
|
|
|
Q_GLOBAL_STATIC_WITH_ARGS(QString, DOCK_LAYOUT, ("dock.layout"))
|
|
Q_GLOBAL_STATIC_WITH_ARGS(QString, SCRIPT_DOCK_LAYOUT, ("script.layout"))
|
|
Q_GLOBAL_STATIC_WITH_ARGS(QString, APP_LASTUSED_PATH, ("app.lastusedpath"))
|
|
Q_GLOBAL_STATIC_WITH_ARGS(QString, SKIN_THEME, ("skin.theme"))
|
|
Q_GLOBAL_STATIC_WITH_ARGS(QString, APP_FONTFAMILY, ("app.fontfamily"))
|
|
Q_GLOBAL_STATIC_WITH_ARGS(QString, APP_FONTSIZE, ("app.fontsize"))
|
|
Q_GLOBAL_STATIC_WITH_ARGS(QString, APP_WINDOWSIZE, ("app.windowsize"))
|
|
Q_GLOBAL_STATIC_WITH_ARGS(QString, APP_LANGUAGE, ("app.lang"))
|
|
|
|
Q_GLOBAL_STATIC_WITH_ARGS(QString, PLUGIN_ENABLE, ("plugin.enableplugin"))
|
|
Q_GLOBAL_STATIC_WITH_ARGS(QString, PLUGIN_ENABLE_ROOT,
|
|
("plugin.rootenableplugin"))
|
|
Q_GLOBAL_STATIC_WITH_ARGS(QString, PLUGIN_ENABLEDPLUGINS_EXT, ("plugin.ext"))
|
|
Q_GLOBAL_STATIC_WITH_ARGS(QString, PLUGIN_ENABLEDPLUGINS_DEV, ("plugin.dev"))
|
|
|
|
Q_GLOBAL_STATIC_WITH_ARGS(QString, EDITOR_FONTSIZE, ("editor.fontsize"))
|
|
Q_GLOBAL_STATIC_WITH_ARGS(QString, EDITOR_SHOW_ADDR, ("editor.showaddr"))
|
|
Q_GLOBAL_STATIC_WITH_ARGS(QString, EDITOR_SHOW_COL, ("editor.showcol"))
|
|
Q_GLOBAL_STATIC_WITH_ARGS(QString, EDITOR_SHOW_TEXT, ("editor.showtext"))
|
|
|
|
Q_GLOBAL_STATIC_WITH_ARGS(QString, EDITOR_FIND_MAXCOUNT,
|
|
("editor.findmaxcount"))
|
|
Q_GLOBAL_STATIC_WITH_ARGS(QString, EDITOR_COPY_LIMIT, ("editor.copylimit"))
|
|
Q_GLOBAL_STATIC_WITH_ARGS(QString, EDITOR_DECSTRLIMIT, ("editor.decstrlimit"))
|
|
Q_GLOBAL_STATIC_WITH_ARGS(QString, EDITOR_RECENTFILES, ("editor.recentfiles"))
|
|
Q_GLOBAL_STATIC_WITH_ARGS(QString, SCRIPT_RECENTFILES, ("script.recentfiles"))
|
|
|
|
Q_GLOBAL_STATIC_WITH_ARGS(QString, SCRIPT_ALLOW_USRSCRIPT_INROOT,
|
|
("script.allowUsrScriptRoot"))
|
|
Q_GLOBAL_STATIC_WITH_ARGS(QString, SCRIPT_ENABLE, ("script.enable"))
|
|
Q_GLOBAL_STATIC_WITH_ARGS(QString, SCRIPT_TIMEOUT, ("script.timeout"))
|
|
Q_GLOBAL_STATIC_WITH_ARGS(QString, SCRIPT_USRHIDECATS, ("script.usrHideCats"))
|
|
Q_GLOBAL_STATIC_WITH_ARGS(QString, SCRIPT_SYSHIDECATS, ("script.sysHideCats"))
|
|
Q_GLOBAL_STATIC_WITH_ARGS(QString, OTHER_USESYS_FILEDIALOG,
|
|
("sys.nativeDialog"))
|
|
Q_GLOBAL_STATIC_WITH_ARGS(QString, OTHER_USE_NATIVE_TITLEBAR,
|
|
("sys.nativeTitleBar"))
|
|
Q_GLOBAL_STATIC_WITH_ARGS(QString, OTHER_DONT_USE_SPLASH, ("sys.dontUseSplash"))
|
|
Q_GLOBAL_STATIC_WITH_ARGS(QString, OTHER_LOG_LEVEL, ("sys.loglevel"))
|
|
Q_GLOBAL_STATIC_WITH_ARGS(QString, OTHER_LOG_COUNT, ("sys.logCount"))
|
|
Q_GLOBAL_STATIC_WITH_ARGS(QString, OTHER_CHECK_UPDATE, ("sys.checkUpdate"))
|
|
|
|
SettingManager::SettingManager() {
|
|
_defaultFont = qApp->font();
|
|
qRegisterMetaType<RecentFileManager::RecentInfo>();
|
|
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
|
|
qRegisterMetaTypeStreamOperators<RecentFileManager::RecentInfo>();
|
|
#endif
|
|
load();
|
|
}
|
|
|
|
QString SettingManager::lastUsedPath() const { return m_lastUsedPath; }
|
|
|
|
void SettingManager::setLastUsedPath(const QString &newLastUsedPath) {
|
|
if (m_lastUsedPath != newLastUsedPath) {
|
|
HANDLE_CONFIG;
|
|
WRITE_CONFIG(APP_LASTUSED_PATH, newLastUsedPath);
|
|
m_lastUsedPath = newLastUsedPath;
|
|
}
|
|
}
|
|
|
|
void SettingManager::load() {
|
|
auto defaultFontSize = _defaultFont.pointSize();
|
|
Q_ASSERT(defaultFontSize > 0);
|
|
HANDLE_CONFIG;
|
|
|
|
READ_CONFIG_INT(m_themeID, SKIN_THEME, 0);
|
|
m_themeID = qBound(0, m_themeID,
|
|
QMetaEnum::fromType<SkinManager::Theme>().keyCount());
|
|
m_defaultLang = READ_CONFIG(APP_LANGUAGE, QString()).toString();
|
|
|
|
m_dockLayout = READ_CONFIG(DOCK_LAYOUT, QByteArray()).toByteArray();
|
|
m_scriptDockLayout =
|
|
READ_CONFIG(SCRIPT_DOCK_LAYOUT, QByteArray()).toByteArray();
|
|
READ_CONFIG_STRING(m_appFontFamily, APP_FONTFAMILY, _defaultFont.family());
|
|
|
|
// check font
|
|
QFont fm(m_appFontFamily);
|
|
if (!QFontInfo(fm).exactMatch()) {
|
|
m_appFontFamily = _defaultFont.family();
|
|
}
|
|
READ_CONFIG_INT_POSITIVE(m_appfontSize, APP_FONTSIZE, defaultFontSize);
|
|
this->setDefaultWinState(READ_CONFIG(APP_WINDOWSIZE, Qt::WindowMaximized)
|
|
.value<Qt::WindowState>());
|
|
|
|
READ_CONFIG_BOOL(m_enablePlugin, PLUGIN_ENABLE, true);
|
|
READ_CONFIG_BOOL(m_enablePlgInRoot, PLUGIN_ENABLE_ROOT, false);
|
|
|
|
{
|
|
auto data = READ_CONFIG(PLUGIN_ENABLEDPLUGINS_EXT, {});
|
|
if (data.isValid()) {
|
|
auto rawRules = data.toByteArray();
|
|
m_enabledExtPlugins = readPluginRule(rawRules);
|
|
}
|
|
|
|
data = READ_CONFIG(PLUGIN_ENABLEDPLUGINS_DEV, {});
|
|
if (data.isValid()) {
|
|
auto rawRules = data.toByteArray();
|
|
m_enabledDevPlugins = readPluginRule(rawRules);
|
|
}
|
|
}
|
|
|
|
READ_CONFIG_INT_POSITIVE(m_editorfontSize, EDITOR_FONTSIZE,
|
|
defaultFontSize);
|
|
m_editorfontSize = qBound(5, m_editorfontSize, 25);
|
|
READ_CONFIG_BOOL(m_editorShowHeader, EDITOR_SHOW_ADDR, true);
|
|
READ_CONFIG_BOOL(m_editorShowcol, EDITOR_SHOW_COL, true);
|
|
READ_CONFIG_BOOL(m_editorShowtext, EDITOR_SHOW_TEXT, true);
|
|
|
|
READ_CONFIG_BOOL(m_dontUseSplash, OTHER_DONT_USE_SPLASH, false);
|
|
READ_CONFIG_BOOL(m_useNativeFileDialog, OTHER_USESYS_FILEDIALOG, true);
|
|
#ifdef WINGHEX_USE_FRAMELESS
|
|
READ_CONFIG_BOOL(m_useNativeTitleBar, OTHER_USE_NATIVE_TITLEBAR, false);
|
|
#else
|
|
m_useNativeTitleBar = true;
|
|
#endif
|
|
READ_CONFIG_INT_POSITIVE(m_logLevel, OTHER_LOG_LEVEL,
|
|
Logger::defaultLevel());
|
|
READ_CONFIG_BOOL(m_checkUpdate, OTHER_CHECK_UPDATE, false);
|
|
m_logLevel =
|
|
qBound(int(Logger::LEVEL_BEGIN), m_logLevel, int(Logger::LEVEL_LAST));
|
|
|
|
READ_CONFIG_INT_POSITIVE(m_logCount, OTHER_LOG_COUNT, 20);
|
|
m_logCount = qBound(qsizetype(20), m_logCount, qsizetype(100));
|
|
|
|
READ_CONFIG_QSIZETYPE(m_copylimit, EDITOR_COPY_LIMIT, 100);
|
|
m_copylimit = qBound(qsizetype(100), m_copylimit, qsizetype(1024));
|
|
READ_CONFIG_QSIZETYPE(m_decodeStrlimit, EDITOR_DECSTRLIMIT, 100);
|
|
m_decodeStrlimit =
|
|
qBound(qsizetype(100), m_decodeStrlimit, qsizetype(1024));
|
|
m_recentHexFiles = getDataFromVarList(
|
|
READ_CONFIG(EDITOR_RECENTFILES, QVariantList()).toList());
|
|
m_recentScriptFiles = getDataFromVarList(
|
|
READ_CONFIG(SCRIPT_RECENTFILES, QVariantList()).toList());
|
|
|
|
READ_CONFIG_BOOL(m_scriptEnabled, SCRIPT_ENABLE, true);
|
|
READ_CONFIG_BOOL(m_allowUsrScriptInRoot, SCRIPT_ALLOW_USRSCRIPT_INROOT,
|
|
false);
|
|
READ_CONFIG_INT(m_scriptTimeout, SCRIPT_TIMEOUT, 10);
|
|
m_scriptTimeout = qBound(0, m_scriptTimeout, 312480);
|
|
m_usrHideCats =
|
|
READ_CONFIG(SCRIPT_USRHIDECATS, QStringList()).toStringList();
|
|
m_sysHideCats =
|
|
READ_CONFIG(SCRIPT_SYSHIDECATS, QStringList()).toStringList();
|
|
|
|
m_lastUsedPath = READ_CONFIG(APP_LASTUSED_PATH, QString()).toString();
|
|
if (!m_lastUsedPath.isEmpty()) {
|
|
QFileInfo info(m_lastUsedPath);
|
|
if (info.exists() && info.isDir()) {
|
|
} else {
|
|
m_lastUsedPath.clear();
|
|
}
|
|
}
|
|
|
|
Q_EMIT sigEditorfontSizeChanged(m_editorfontSize);
|
|
Q_EMIT sigCopylimitChanged(m_copylimit);
|
|
Q_EMIT sigDecodeStrlimitChanged(m_decodeStrlimit);
|
|
}
|
|
|
|
QList<RecentFileManager::RecentInfo>
|
|
SettingManager::getDataFromVarList(const QVariantList &varlist) const {
|
|
QList<RecentFileManager::RecentInfo> infos;
|
|
for (auto &var : varlist) {
|
|
if (var.canConvert<RecentFileManager::RecentInfo>()) {
|
|
infos.append(var.value<RecentFileManager::RecentInfo>());
|
|
}
|
|
}
|
|
return infos;
|
|
}
|
|
|
|
QVariantList SettingManager::getVarList(
|
|
const QList<RecentFileManager::RecentInfo> &infos) const {
|
|
QVariantList varlist;
|
|
for (auto &info : infos) {
|
|
varlist.append(QVariant::fromValue(info));
|
|
}
|
|
return varlist;
|
|
}
|
|
|
|
QStringList SettingManager::enabledDevPlugins() const {
|
|
return m_enabledDevPlugins;
|
|
}
|
|
|
|
void SettingManager::setEnabledDevPlugins(
|
|
const QStringList &newEnabledDevPlugins) {
|
|
if (m_enabledDevPlugins != newEnabledDevPlugins) {
|
|
HANDLE_CONFIG;
|
|
WRITE_CONFIG(PLUGIN_ENABLEDPLUGINS_DEV,
|
|
savePluginRule(newEnabledDevPlugins));
|
|
m_enabledDevPlugins = newEnabledDevPlugins;
|
|
}
|
|
}
|
|
|
|
QStringList SettingManager::enabledExtPlugins() const {
|
|
return m_enabledExtPlugins;
|
|
}
|
|
|
|
void SettingManager::setEnabledExtPlugins(
|
|
const QStringList &newEnabledPlugins) {
|
|
if (m_enabledExtPlugins != newEnabledPlugins) {
|
|
HANDLE_CONFIG;
|
|
WRITE_CONFIG(PLUGIN_ENABLEDPLUGINS_EXT,
|
|
savePluginRule(newEnabledPlugins));
|
|
m_enabledExtPlugins = newEnabledPlugins;
|
|
}
|
|
}
|
|
|
|
int SettingManager::scriptTimeout() const { return m_scriptTimeout; }
|
|
|
|
void SettingManager::setScriptTimeout(int newScriptTimeout) {
|
|
newScriptTimeout = qBound(0, newScriptTimeout, 312480);
|
|
if (m_scriptTimeout != newScriptTimeout) {
|
|
HANDLE_CONFIG;
|
|
WRITE_CONFIG(SCRIPT_TIMEOUT, newScriptTimeout);
|
|
m_scriptTimeout = newScriptTimeout;
|
|
}
|
|
}
|
|
|
|
qsizetype SettingManager::logCount() const { return m_logCount; }
|
|
|
|
void SettingManager::setLogCount(qsizetype newLogCount) {
|
|
if (m_logCount != newLogCount) {
|
|
HANDLE_CONFIG;
|
|
WRITE_CONFIG(OTHER_LOG_COUNT, newLogCount);
|
|
m_logCount = newLogCount;
|
|
}
|
|
}
|
|
|
|
void SettingManager::checkWriteableAndWarn() {
|
|
HANDLE_CONFIG;
|
|
if (!CONFIG.isWritable()) {
|
|
Logger::warning(QStringLiteral("<i><u>") + tr("ConfigUnableSave") +
|
|
QStringLiteral("</u></i>"));
|
|
}
|
|
}
|
|
|
|
QStringList SettingManager::readPluginRule(const QByteArray &data) {
|
|
if (!data.isEmpty()) {
|
|
auto up = qUncompress(data);
|
|
if (!up.isEmpty()) {
|
|
auto rules = QString::fromUtf8(up);
|
|
auto rlist = rules.split('|', Qt::SkipEmptyParts);
|
|
rlist.removeIf([](const QString &str) {
|
|
return !Utilities::isValidIdentifier(str);
|
|
});
|
|
return rlist;
|
|
}
|
|
}
|
|
return {};
|
|
}
|
|
|
|
QByteArray SettingManager::savePluginRule(const QStringList &rules) {
|
|
auto plgs = rules.join('|');
|
|
auto data = qCompress(plgs.toUtf8());
|
|
return data;
|
|
}
|
|
|
|
bool SettingManager::checkUpdate() const { return m_checkUpdate; }
|
|
|
|
void SettingManager::setCheckUpdate(bool newCheckUpdate) {
|
|
if (m_checkUpdate != newCheckUpdate) {
|
|
HANDLE_CONFIG;
|
|
WRITE_CONFIG(OTHER_CHECK_UPDATE, newCheckUpdate);
|
|
m_checkUpdate = newCheckUpdate;
|
|
}
|
|
}
|
|
|
|
bool SettingManager::dontUseSplash() const { return m_dontUseSplash; }
|
|
|
|
void SettingManager::setDontUseSplash(bool newDontUseSplash) {
|
|
if (m_dontUseSplash != newDontUseSplash) {
|
|
HANDLE_CONFIG;
|
|
WRITE_CONFIG(OTHER_DONT_USE_SPLASH, newDontUseSplash);
|
|
m_dontUseSplash = newDontUseSplash;
|
|
}
|
|
}
|
|
|
|
bool SettingManager::scriptEnabled() const { return m_scriptEnabled; }
|
|
|
|
void SettingManager::setScriptEnabled(bool newScriptEnabled) {
|
|
if (m_scriptEnabled != newScriptEnabled) {
|
|
HANDLE_CONFIG;
|
|
WRITE_CONFIG(SCRIPT_ENABLE, newScriptEnabled);
|
|
m_scriptEnabled = newScriptEnabled;
|
|
}
|
|
}
|
|
|
|
bool SettingManager::allowUsrScriptInRoot() const {
|
|
return m_allowUsrScriptInRoot;
|
|
}
|
|
|
|
void SettingManager::setAllowUsrScriptInRoot(bool newAllowUsrScriptInRoot) {
|
|
if (m_allowUsrScriptInRoot != newAllowUsrScriptInRoot) {
|
|
HANDLE_CONFIG;
|
|
WRITE_CONFIG(SCRIPT_ALLOW_USRSCRIPT_INROOT, newAllowUsrScriptInRoot);
|
|
m_allowUsrScriptInRoot = newAllowUsrScriptInRoot;
|
|
}
|
|
}
|
|
|
|
void SettingManager::setUsrHideCats(const QStringList &newUsrHideCats) {
|
|
if (m_usrHideCats != newUsrHideCats) {
|
|
HANDLE_CONFIG;
|
|
WRITE_CONFIG(SCRIPT_USRHIDECATS, newUsrHideCats);
|
|
m_usrHideCats = newUsrHideCats;
|
|
}
|
|
}
|
|
|
|
void SettingManager::setSysHideCats(const QStringList &newSysHideCats) {
|
|
if (m_sysHideCats != newSysHideCats) {
|
|
HANDLE_CONFIG;
|
|
WRITE_CONFIG(SCRIPT_SYSHIDECATS, newSysHideCats);
|
|
m_sysHideCats = newSysHideCats;
|
|
}
|
|
}
|
|
|
|
int SettingManager::logLevel() const { return m_logLevel; }
|
|
|
|
void SettingManager::setLogLevel(int newLogLevel) {
|
|
if (m_logLevel != newLogLevel) {
|
|
HANDLE_CONFIG;
|
|
WRITE_CONFIG(OTHER_LOG_LEVEL, newLogLevel);
|
|
m_logLevel = newLogLevel;
|
|
}
|
|
}
|
|
|
|
bool SettingManager::useNativeTitleBar() const { return m_useNativeTitleBar; }
|
|
|
|
void SettingManager::setUseNativeTitleBar(bool newUseNativeTitleBar) {
|
|
if (m_useNativeTitleBar != newUseNativeTitleBar) {
|
|
HANDLE_CONFIG;
|
|
WRITE_CONFIG(OTHER_USE_NATIVE_TITLEBAR, newUseNativeTitleBar);
|
|
m_useNativeTitleBar = newUseNativeTitleBar;
|
|
}
|
|
}
|
|
|
|
bool SettingManager::useNativeFileDialog() const {
|
|
return m_useNativeFileDialog;
|
|
}
|
|
|
|
void SettingManager::setUseNativeFileDialog(bool newUseNativeFileDialog) {
|
|
if (m_useNativeFileDialog != newUseNativeFileDialog) {
|
|
HANDLE_CONFIG;
|
|
WRITE_CONFIG(OTHER_USESYS_FILEDIALOG, newUseNativeFileDialog);
|
|
m_useNativeFileDialog = newUseNativeFileDialog;
|
|
}
|
|
}
|
|
|
|
QByteArray SettingManager::scriptDockLayout() const {
|
|
return m_scriptDockLayout;
|
|
}
|
|
|
|
void SettingManager::setScriptDockLayout(
|
|
const QByteArray &newScriptDockLayout) {
|
|
if (m_scriptDockLayout != newScriptDockLayout) {
|
|
HANDLE_CONFIG;
|
|
WRITE_CONFIG(SCRIPT_DOCK_LAYOUT, newScriptDockLayout);
|
|
m_scriptDockLayout = newScriptDockLayout;
|
|
}
|
|
}
|
|
|
|
QStringList SettingManager::sysHideCats() const { return m_sysHideCats; }
|
|
|
|
QStringList SettingManager::usrHideCats() const { return m_usrHideCats; }
|
|
|
|
QList<RecentFileManager::RecentInfo> SettingManager::recentScriptFiles() const {
|
|
return m_recentScriptFiles;
|
|
}
|
|
|
|
void SettingManager::setRecentScriptFiles(
|
|
const QList<RecentFileManager::RecentInfo> &newRecentScriptFiles) {
|
|
if (m_recentScriptFiles != newRecentScriptFiles) {
|
|
HANDLE_CONFIG;
|
|
WRITE_CONFIG(SCRIPT_RECENTFILES, getVarList(newRecentScriptFiles));
|
|
m_recentScriptFiles = newRecentScriptFiles;
|
|
}
|
|
}
|
|
|
|
QString SettingManager::appFontFamily() const { return m_appFontFamily; }
|
|
|
|
void SettingManager::setAppFontFamily(const QString &newAppFontFamily) {
|
|
if (m_appFontFamily != newAppFontFamily) {
|
|
HANDLE_CONFIG;
|
|
WRITE_CONFIG(APP_FONTFAMILY, newAppFontFamily);
|
|
m_appFontFamily = newAppFontFamily;
|
|
}
|
|
}
|
|
|
|
bool SettingManager::editorShowHeader() const { return m_editorShowHeader; }
|
|
|
|
void SettingManager::setEditorShowHeader(bool newEditorShowAddr) {
|
|
if (m_editorShowHeader != newEditorShowAddr) {
|
|
HANDLE_CONFIG;
|
|
WRITE_CONFIG(EDITOR_SHOW_ADDR, newEditorShowAddr);
|
|
m_editorShowHeader = newEditorShowAddr;
|
|
}
|
|
}
|
|
|
|
bool SettingManager::enablePlugin() const { return m_enablePlugin; }
|
|
|
|
void SettingManager::setEnablePlugin(bool newEnablePlugin) {
|
|
if (m_enablePlugin != newEnablePlugin) {
|
|
HANDLE_CONFIG;
|
|
WRITE_CONFIG(PLUGIN_ENABLE, newEnablePlugin);
|
|
m_enablePlugin = newEnablePlugin;
|
|
}
|
|
}
|
|
|
|
QList<RecentFileManager::RecentInfo> SettingManager::recentHexFiles() const {
|
|
return m_recentHexFiles;
|
|
}
|
|
|
|
void SettingManager::setRecentFiles(
|
|
const QList<RecentFileManager::RecentInfo> &newRecentFiles) {
|
|
if (m_recentHexFiles != newRecentFiles) {
|
|
HANDLE_CONFIG;
|
|
WRITE_CONFIG(EDITOR_RECENTFILES, getVarList(newRecentFiles));
|
|
m_recentHexFiles = newRecentFiles;
|
|
}
|
|
}
|
|
|
|
Qt::WindowState SettingManager::defaultWinState() const {
|
|
return m_defaultWinState;
|
|
}
|
|
|
|
void SettingManager::setDefaultWinState(Qt::WindowState newDefaultWinState) {
|
|
switch (newDefaultWinState) {
|
|
case Qt::WindowNoState:
|
|
case Qt::WindowMaximized:
|
|
case Qt::WindowFullScreen:
|
|
break;
|
|
default:
|
|
newDefaultWinState = Qt::WindowMaximized;
|
|
break;
|
|
}
|
|
if (m_defaultWinState != newDefaultWinState) {
|
|
HANDLE_CONFIG;
|
|
WRITE_CONFIG(APP_WINDOWSIZE, newDefaultWinState);
|
|
m_defaultWinState = newDefaultWinState;
|
|
}
|
|
}
|
|
|
|
void SettingManager::reset(SETTINGS cat) {
|
|
__reset(cat);
|
|
load();
|
|
}
|
|
|
|
void SettingManager::__reset(SETTINGS cat) {
|
|
HANDLE_CONFIG;
|
|
if (cat.testFlag(SETTING::APP)) {
|
|
WRITE_CONFIG(SKIN_THEME, 0);
|
|
WRITE_CONFIG(APP_LANGUAGE, QString());
|
|
WRITE_CONFIG(APP_FONTFAMILY, _defaultFont.family());
|
|
WRITE_CONFIG(APP_FONTSIZE, _defaultFont.pointSize());
|
|
WRITE_CONFIG(APP_WINDOWSIZE, Qt::WindowMaximized);
|
|
}
|
|
if (cat.testFlag(SETTING::PLUGIN)) {
|
|
WRITE_CONFIG(PLUGIN_ENABLE, true);
|
|
WRITE_CONFIG(PLUGIN_ENABLE_ROOT, false);
|
|
}
|
|
if (cat.testFlag(SETTING::EDITOR)) {
|
|
WRITE_CONFIG(EDITOR_FONTSIZE, _defaultFont.pointSize());
|
|
WRITE_CONFIG(EDITOR_SHOW_ADDR, true);
|
|
WRITE_CONFIG(EDITOR_SHOW_COL, true);
|
|
WRITE_CONFIG(EDITOR_SHOW_TEXT, true);
|
|
WRITE_CONFIG(EDITOR_FIND_MAXCOUNT, 100);
|
|
WRITE_CONFIG(EDITOR_COPY_LIMIT, 100);
|
|
WRITE_CONFIG(EDITOR_DECSTRLIMIT, 10);
|
|
}
|
|
if (cat.testFlag(SETTING::SCRIPT)) {
|
|
WRITE_CONFIG(SCRIPT_ENABLE, true);
|
|
WRITE_CONFIG(SCRIPT_TIMEOUT, 10);
|
|
WRITE_CONFIG(SCRIPT_ALLOW_USRSCRIPT_INROOT, false);
|
|
WRITE_CONFIG(SCRIPT_USRHIDECATS, QStringList());
|
|
WRITE_CONFIG(SCRIPT_SYSHIDECATS, QStringList());
|
|
}
|
|
if (cat.testFlag(SETTING::OTHER)) {
|
|
WRITE_CONFIG(OTHER_USESYS_FILEDIALOG, true);
|
|
#ifdef WINGHEX_USE_FRAMELESS
|
|
WRITE_CONFIG(OTHER_USE_NATIVE_TITLEBAR, false);
|
|
#endif
|
|
WRITE_CONFIG(OTHER_DONT_USE_SPLASH, false);
|
|
WRITE_CONFIG(OTHER_CHECK_UPDATE, false);
|
|
WRITE_CONFIG(OTHER_LOG_LEVEL, Logger::defaultLevel());
|
|
WRITE_CONFIG(OTHER_LOG_COUNT, 20);
|
|
}
|
|
}
|
|
|
|
qsizetype SettingManager::decodeStrlimit() const { return m_decodeStrlimit; }
|
|
|
|
void SettingManager::setDecodeStrlimit(qsizetype newDecodeStrlimit) {
|
|
newDecodeStrlimit =
|
|
qBound(qsizetype(100), newDecodeStrlimit, qsizetype(1024));
|
|
if (m_decodeStrlimit != newDecodeStrlimit) {
|
|
HANDLE_CONFIG;
|
|
WRITE_CONFIG(EDITOR_DECSTRLIMIT, newDecodeStrlimit);
|
|
m_decodeStrlimit = newDecodeStrlimit;
|
|
Q_EMIT sigDecodeStrlimitChanged(m_decodeStrlimit);
|
|
}
|
|
}
|
|
|
|
qsizetype SettingManager::copylimit() const { return m_copylimit; }
|
|
|
|
void SettingManager::setCopylimit(qsizetype newCopylimit) {
|
|
newCopylimit = qBound(qsizetype(100), newCopylimit, qsizetype(1024));
|
|
if (m_copylimit != newCopylimit) {
|
|
HANDLE_CONFIG;
|
|
WRITE_CONFIG(EDITOR_COPY_LIMIT, newCopylimit);
|
|
m_copylimit = newCopylimit;
|
|
Q_EMIT sigDecodeStrlimitChanged(m_copylimit);
|
|
}
|
|
}
|
|
|
|
bool SettingManager::editorShowtext() const { return m_editorShowtext; }
|
|
|
|
void SettingManager::setEditorShowtext(bool newEditorShowtext) {
|
|
if (m_editorShowtext != newEditorShowtext) {
|
|
HANDLE_CONFIG;
|
|
WRITE_CONFIG(EDITOR_SHOW_TEXT, newEditorShowtext);
|
|
m_editorShowtext = newEditorShowtext;
|
|
}
|
|
}
|
|
|
|
bool SettingManager::editorShowcol() const { return m_editorShowcol; }
|
|
|
|
void SettingManager::setEditorShowcol(bool newEditorShowcol) {
|
|
if (m_editorShowcol != newEditorShowcol) {
|
|
HANDLE_CONFIG;
|
|
WRITE_CONFIG(EDITOR_SHOW_COL, newEditorShowcol);
|
|
m_editorShowcol = newEditorShowcol;
|
|
}
|
|
}
|
|
|
|
int SettingManager::editorfontSize() const { return m_editorfontSize; }
|
|
|
|
void SettingManager::setEditorfontSize(int newEditorfontSize) {
|
|
if (m_editorfontSize != newEditorfontSize) {
|
|
HANDLE_CONFIG;
|
|
WRITE_CONFIG(EDITOR_FONTSIZE, newEditorfontSize);
|
|
m_editorfontSize = newEditorfontSize;
|
|
Q_EMIT sigEditorfontSizeChanged(newEditorfontSize);
|
|
}
|
|
}
|
|
|
|
int SettingManager::appfontSize() const { return m_appfontSize; }
|
|
|
|
void SettingManager::setAppfontSize(int newAppfontSize) {
|
|
if (m_appfontSize != newAppfontSize) {
|
|
HANDLE_CONFIG;
|
|
WRITE_CONFIG(APP_FONTSIZE, newAppfontSize);
|
|
m_appfontSize = newAppfontSize;
|
|
}
|
|
}
|
|
|
|
bool SettingManager::enablePlgInRoot() const { return m_enablePlgInRoot; }
|
|
|
|
void SettingManager::setEnablePlgInRoot(bool newEnablePlgInRoot) {
|
|
if (m_enablePlgInRoot != newEnablePlgInRoot) {
|
|
HANDLE_CONFIG;
|
|
WRITE_CONFIG(PLUGIN_ENABLE_ROOT, newEnablePlgInRoot);
|
|
m_enablePlgInRoot = newEnablePlgInRoot;
|
|
}
|
|
}
|
|
|
|
QString SettingManager::defaultLang() const { return m_defaultLang; }
|
|
|
|
void SettingManager::setDefaultLang(const QString &newDefaultLang) {
|
|
if (m_defaultLang != newDefaultLang) {
|
|
HANDLE_CONFIG;
|
|
WRITE_CONFIG(APP_LANGUAGE, newDefaultLang);
|
|
m_defaultLang = newDefaultLang;
|
|
}
|
|
}
|
|
|
|
SettingManager &SettingManager::instance() {
|
|
static SettingManager ins;
|
|
return ins;
|
|
}
|
|
|
|
SettingManager::~SettingManager() {}
|
|
|
|
QByteArray SettingManager::dockLayout() const { return m_dockLayout; }
|
|
|
|
void SettingManager::setDockLayout(const QByteArray &newDockLayout) {
|
|
if (m_dockLayout != newDockLayout) {
|
|
HANDLE_CONFIG;
|
|
WRITE_CONFIG(DOCK_LAYOUT, newDockLayout);
|
|
m_dockLayout = newDockLayout;
|
|
}
|
|
}
|
|
|
|
int SettingManager::themeID() const { return m_themeID; }
|
|
|
|
void SettingManager::setThemeID(int newThemeID) {
|
|
if (m_themeID != newThemeID) {
|
|
HANDLE_CONFIG;
|
|
WRITE_CONFIG(SKIN_THEME, newThemeID);
|
|
m_themeID = newThemeID;
|
|
}
|
|
}
|