diff --git a/src/application.cpp b/src/application.cpp index 46c56a952d4a835b33d424d8530b38d7ca4324aa..9b799944047202aec44fab1a5dce09828067be8f 100644 --- a/src/application.cpp +++ b/src/application.cpp @@ -16,6 +16,8 @@ #include #include +#include + DCORE_USE_NAMESPACE Application::Application(int &argc, char **argv) @@ -89,7 +91,7 @@ void Application::checkAppConfigLocation() void Application::setBuildDateTime(const QString &buildDateTime) { - QSettings config(QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation) + "/config.ini", QSettings::IniFormat); + QSettings config(PathUtil::config(), QSettings::IniFormat); if (config.value("build/version").toString() != QString(APP_VERSION)) { qDebug() << "Spark Store has been updated!"; diff --git a/src/backend/DataCollectorAndUploader.cpp b/src/backend/DataCollectorAndUploader.cpp index 354b57b458a82557bd357c754bd1ae69aaa1a8f4..379e63ea7750ab7ca0617e8df9ce1fcb8ea62bd8 100644 --- a/src/backend/DataCollectorAndUploader.cpp +++ b/src/backend/DataCollectorAndUploader.cpp @@ -8,6 +8,7 @@ #include #include #include +#include DataCollectorAndUploader::DataCollectorAndUploader(QObject *parent) : QObject(parent) { @@ -24,7 +25,7 @@ void DataCollectorAndUploader::collectData() QString release; QString architecture; - QSettings config(QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation) + "/config.ini", QSettings::IniFormat); + QSettings config(PathUtil::config(), QSettings::IniFormat); QString version = config.value("build/version").toString(); QString uuid = config.value("info/uuid").toString(); diff --git a/src/backend/sparkapi.cpp b/src/backend/sparkapi.cpp index 2947108cce366c332516b4f532bc9bbceb0c1d32..5e19fce331ce0d0ee53e406c34c7625a1afbdfa1 100644 --- a/src/backend/sparkapi.cpp +++ b/src/backend/sparkapi.cpp @@ -4,6 +4,8 @@ #include #include +#include + QString SparkAPI::serverUrl = ""; #ifdef __x86_64__ QString SparkAPI::serverUrlDir = "store"; @@ -16,7 +18,7 @@ QString SparkAPI::serverUrl = ""; SparkAPI::SparkAPI(QObject *parent) : QObject(parent) { - QSettings config(QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation) + "/config.ini", QSettings::IniFormat); + QSettings config(PathUtil::config(), QSettings::IniFormat); if (!config.value("server/choose").toString().isEmpty() && config.value("server/updated").toBool()) { SparkAPI::setServerUrl(config.value("server/choose").toString()); diff --git a/src/mainwindow-dtk.cpp b/src/mainwindow-dtk.cpp index 1341d9da41d8013028500d79b80e7e13be243d05..0579fe01b5dde817b31dd150e37664a39dfbff32 100755 --- a/src/mainwindow-dtk.cpp +++ b/src/mainwindow-dtk.cpp @@ -18,6 +18,8 @@ #include +#include + #define AppPageApplist 0 #define AppPageSearchlist 1 #define AppPageAppdetail 2 @@ -49,7 +51,7 @@ MainWindow::~MainWindow() downloadlistwidget->deleteLater(); - QSettings config(QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation) + "/config.ini", QSettings::IniFormat); + QSettings config(PathUtil::config(), QSettings::IniFormat); config.setValue("window/width", width()); config.setValue("window/height", height()); config.sync(); @@ -128,7 +130,7 @@ void MainWindow::closeEvent(QCloseEvent *event) void MainWindow::initUI() { - QSettings config(QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation) + "/config.ini", QSettings::IniFormat); + QSettings config(PathUtil::config(), QSettings::IniFormat); QSize size; size.rwidth() = config.value("window/width").toInt(); size.rheight() = config.value("window/height").toInt(); @@ -179,7 +181,7 @@ void MainWindow::initTitleBar() ly_titlebar->addWidget(title); ly_titlebar->addWidget(backButton); // Check wayland configs - QSettings config(QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation) + "/config.ini", QSettings::IniFormat); + QSettings config(PathUtil::config(), QSettings::IniFormat); if (!config.value("runtime/isDDE").toBool() && config.value("runtime/useWayland").toBool()) { // Wayland 搜索栏居中 @@ -515,7 +517,7 @@ void MainWindow::on_pushButton_14_clicked() * NOTE: No need to judget developmode status */ // Check UOS - // QSettings config(QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation) + "/config.ini", QSettings::IniFormat); + // QSettings config(PathUtil::config(), QSettings::IniFormat); // if (config.contains("UOS/EnableDeveloperMode") && !config.value("UOS/EnableDeveloperMode").toBool()) if (false) { diff --git a/src/pages/appintopage.cpp b/src/pages/appintopage.cpp index ccf330394f217c20a59b32bf033320a5d7e8f86c..3eee8d6d94671a4ab978775fe36b89e039c55dde 100644 --- a/src/pages/appintopage.cpp +++ b/src/pages/appintopage.cpp @@ -125,7 +125,7 @@ void AppIntoPage::openUrl(const QUrl &url) * NOTE: No need to judget developmode status */ // Check UOS - // QSettings config(QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation) + "/config.ini", QSettings::IniFormat); + // QSettings config(PathUtil::config(), QSettings::IniFormat); // if (config.contains("UOS/EnableDeveloperMode") && !config.value("UOS/EnableDeveloperMode").toBool()){ if (false) { qDebug() << "UOS Developer Mode has not been enabled!"; diff --git a/src/pages/settingspage.cpp b/src/pages/settingspage.cpp index 16cf2c9a2c651ccd6522bdc6653d6a7c13039da4..8583b24cb721954599679e513b9b0ac2310a82f2 100644 --- a/src/pages/settingspage.cpp +++ b/src/pages/settingspage.cpp @@ -7,6 +7,8 @@ #include #include +#include + #define TMP_PATH "/tmp/spark-store" #define DEFAULT_SERVER_URL "https://cdn.d.store.deepinos.org.cn/" @@ -89,7 +91,7 @@ void SettingsPage::initConfig() readServerList(); // 读取服务器URL并初始化菜单项的链接 - QSettings config(QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation) + "/config.ini", QSettings::IniFormat); + QSettings config(PathUtil::config(), QSettings::IniFormat); if (!config.value("server/choose").toString().isEmpty() && config.value("server/updated").toBool()) { qDebug() << config.value("server/choose").toString(); @@ -142,7 +144,7 @@ void SettingsPage::on_comboBox_server_currentIndexChanged(const QString &arg1) if(configCanSave) { // ui->label_setting1->show(); - QSettings config(QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation) + "/config.ini", QSettings::IniFormat); + QSettings config(PathUtil::config(), QSettings::IniFormat); config.setValue("server/choose", arg1); config.setValue("server/updated", updatedInfo); config.sync(); @@ -257,7 +259,7 @@ void SettingsPage::on_pushButton_clearWebCache_clicked() void SettingsPage::on_checkBox_clicked(bool checked) { needUncompatibleNotification = checked; - QSettings config(QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation) + "/config.ini", QSettings::IniFormat); + QSettings config(PathUtil::config(), QSettings::IniFormat); config.setValue("other/uncompatibleNotification", needUncompatibleNotification); config.sync(); } diff --git a/src/spark-store.pro b/src/spark-store.pro index 481c4dbb6e0414507503345d8ae75ac19c870b11..1665642389eb815de13520a2a4e5196169d4a189 100644 --- a/src/spark-store.pro +++ b/src/spark-store.pro @@ -44,6 +44,7 @@ SOURCES += \ pages/applistpage.cpp \ pages/settingspage.cpp \ utils/httprequest.cpp \ + utils/pathutil.cpp \ utils/utils.cpp \ utils/widgetanimation.cpp \ widgets/base/basewidgetopacity.cpp \ @@ -70,6 +71,7 @@ HEADERS += \ pages/applistpage.h \ pages/settingspage.h \ utils/httprequest.h \ + utils/pathutil.h \ utils/utils.h \ utils/widgetanimation.h \ widgets/base/basewidgetopacity.h \ diff --git a/src/utils/pathutil.cpp b/src/utils/pathutil.cpp new file mode 100644 index 0000000000000000000000000000000000000000..dc85a65a84e96843dac5861a030d26b323ca99ee --- /dev/null +++ b/src/utils/pathutil.cpp @@ -0,0 +1,22 @@ +#include "pathutil.h" + +#include +#include + +QString PathUtil::configDir() +{ + QString path = QStandardPaths::writableLocation(QStandardPaths::ConfigLocation); + return path + QDir::separator(); +} + +QString PathUtil::appConfigDir() +{ + QString path = QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation); + return path + QDir::separator(); +} + +QString PathUtil::config() +{ + QString path = appConfigDir() + "config.ini"; + return path; +} diff --git a/src/utils/pathutil.h b/src/utils/pathutil.h new file mode 100644 index 0000000000000000000000000000000000000000..784944a516f6fcb61330c29507f7149751f77669 --- /dev/null +++ b/src/utils/pathutil.h @@ -0,0 +1,19 @@ +#ifndef PATHUTIL_H +#define PATHUTIL_H + +#include + +class PathUtil +{ +public: + // 用户配置目录,通常是 ~/.config + static QString configDir(); + // 应用程序配置目录,通常是 ~/.config/OrganizationName/ApplicationName + static QString appConfigDir(); + + + // 应用程序配置文件路径 + static QString config(); +}; + +#endif // PATHUTIL_H diff --git a/src/utils/utils.cpp b/src/utils/utils.cpp index a3aa560bcfd45d997c50302c91881ca5261ed04f..7e6453ec676c38bf2ead1511685af5039ab6f10d 100644 --- a/src/utils/utils.cpp +++ b/src/utils/utils.cpp @@ -1,5 +1,6 @@ #include "utils.h" #include "application.h" +#include "pathutil.h" #include @@ -111,7 +112,7 @@ void Utils::initConfig() // WARNING: 请在 组织名称 和 应用程序名称 初始化完成后调用 bool useWayland = true; - QSettings config(QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation) + "/config.ini", QSettings::IniFormat); + QSettings config(PathUtil::config(), QSettings::IniFormat); if (config.contains("build/useWayland")) { useWayland = config.value("build/useWayland").toBool(); @@ -146,7 +147,7 @@ bool Utils::isUOS() // WARNING: 请在 组织名称 和 应用程序名称 初始化完成后调用 bool isUOS = false; - QSettings config(QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation) + "/config.ini", QSettings::IniFormat); + QSettings config(PathUtil::config(), QSettings::IniFormat); if (Dtk::Core::DSysInfo::productType() == Dtk::Core::DSysInfo::Uos) { isUOS = true; @@ -179,7 +180,7 @@ void Utils::setQPAPlatform() bool isDDE = Utils::isDDE(); // WARNING: 只能执行一次,后续执行时环境变量已经被覆盖,导致判断错误 bool isWayland = Utils::isWayland(); - QSettings config(QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation) + "/config.ini", QSettings::IniFormat); + QSettings config(PathUtil::config(), QSettings::IniFormat); bool useWayland = config.value("runtime/useWayland").toBool(); qDebug() << "System Wayland enabled:" << isWayland << "Spark Wayland enabled:" << useWayland; @@ -207,7 +208,7 @@ void Utils::setQPAPlatform() */ void Utils::checkUOSDeveloperMode() { - QSettings config(QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation) + "/config.ini", QSettings::IniFormat); + QSettings config(PathUtil::config(), QSettings::IniFormat); QFile file(UOSDeveloperModeFile); if (Utils::isUOS() && file.exists() && file.open(QFile::ReadOnly | QFile::Text)) diff --git a/src/widgets/base/basewidgetopacity.cpp b/src/widgets/base/basewidgetopacity.cpp index 712aade8301a5d1e01270275d7562516e19de423..7c67b586f72adceaf91e9020dd08ce65cc3079bc 100644 --- a/src/widgets/base/basewidgetopacity.cpp +++ b/src/widgets/base/basewidgetopacity.cpp @@ -7,6 +7,8 @@ #include #include +#include + BaseWidgetOpacity::BaseWidgetOpacity(QWidget *parent) : DBlurEffectWidget(parent) { } @@ -18,7 +20,7 @@ BaseWidgetOpacity::BaseWidgetOpacity(QWidget *parent) : DBlurEffectWidget(parent void BaseWidgetOpacity::showEvent(QShowEvent *event) { // FIXME: wayland 不支持直接设置窗口透明度,需要调用 wayland 相关库(考虑抄控制中心“窗口移动时启用透明特效”代码?) - QSettings config(QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation) + "/config.ini", QSettings::IniFormat); + QSettings config(PathUtil::config(), QSettings::IniFormat); bool isWayland = Utils::isWayland(); if (!isWayland) { @@ -39,7 +41,7 @@ void BaseWidgetOpacity::showEvent(QShowEvent *event) void BaseWidgetOpacity::closeEvent(QCloseEvent *event) { // FIXME: wayland 不支持直接设置窗口透明度,需要调用 wayland 相关库(考虑抄控制中心“窗口移动时启用透明特效”代码?) - QSettings config(QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation) + "/config.ini", QSettings::IniFormat); + QSettings config(PathUtil::config(), QSettings::IniFormat); bool isWayland = Utils::isWayland(); if (isWayland) {