From 98cf3333861a932d4a845dc13a269ce8de9f098c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9F=9A=E5=AD=90?= Date: Fri, 9 Dec 2022 21:27:01 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=9C=8D=E5=8A=A1=E5=99=A8ur?= =?UTF-8?q?l=E9=85=8D=E7=BD=AE=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/backend/sparkapi.cpp | 13 ++++-- src/backend/sparkapi.h | 5 ++ src/mainwindow-dtk.cpp | 3 +- src/pages/settingspage.cpp | 93 ++++++++++++++++++++++++++++++++++++++ src/pages/settingspage.h | 15 +++++- 5 files changed, 123 insertions(+), 6 deletions(-) diff --git a/src/backend/sparkapi.cpp b/src/backend/sparkapi.cpp index 93daf03..8a1bf09 100644 --- a/src/backend/sparkapi.cpp +++ b/src/backend/sparkapi.cpp @@ -1,9 +1,12 @@ #include "sparkapi.h" #include + +QString SparkAPI::serverUrl = ""; + SparkAPI::SparkAPI(QObject *parent) : QObject(parent) { - + SparkAPI::serverUrl = "https://cdn.d.store.deepinos.org.cn/"; } void SparkAPI::get(QUrl url) { @@ -41,9 +44,13 @@ void SparkAPI::getAppInfo(QUrl spk) } QString SparkAPI::getServerUrl() { - return "https://cdn.d.store.deepinos.org.cn/"; + return SparkAPI::serverUrl; } QString SparkAPI::getImgServerUrl() { - return "https://cdn.d.store.deepinos.org.cn/"; + return SparkAPI::serverUrl; +} +void SparkAPI::setServerUrl(QString url) +{ + SparkAPI::serverUrl = url; } diff --git a/src/backend/sparkapi.h b/src/backend/sparkapi.h index 4db40f8..f5cc963 100644 --- a/src/backend/sparkapi.h +++ b/src/backend/sparkapi.h @@ -12,11 +12,16 @@ class SparkAPI : public QObject public: static QString getServerUrl(); static QString getImgServerUrl(); + static void setServerUrl(QString url); void getSearchList(QString keyword); void get(QUrl url); void getAppList(QString type); void getAppInfo(QUrl spk); explicit SparkAPI(QObject *parent = nullptr); + +private: + static QString serverUrl; + signals: void finished(QJsonArray); void finishedObject(QJsonObject); diff --git a/src/mainwindow-dtk.cpp b/src/mainwindow-dtk.cpp index cbd51a1..1b8b687 100644 --- a/src/mainwindow-dtk.cpp +++ b/src/mainwindow-dtk.cpp @@ -10,7 +10,7 @@ MainWindow::MainWindow(QWidget *parent) , ui(new Ui::MainWindow) { ui->setupUi(this); - + initConfig(); moveToCenter(this); //让窗口居中显示 QPropertyAnimation *animation = new QPropertyAnimation(this, "windowOpacity", this); @@ -34,7 +34,6 @@ MainWindow::MainWindow(QWidget *parent) //ui->titlebar->setSwitchThemeMenuVisible(false); // 去除 dtk 标题栏主题切换菜单 setMaskAlpha(240); - initConfig(); updateUi(0); QAction *setting = new QAction(tr("Settings")); diff --git a/src/pages/settingspage.cpp b/src/pages/settingspage.cpp index b8b8e9a..243d1d8 100644 --- a/src/pages/settingspage.cpp +++ b/src/pages/settingspage.cpp @@ -6,6 +6,7 @@ SettingsPage::SettingsPage(QWidget *parent) : ui(new Ui::SettingsPage) { ui->setupUi(this); + initConfig(); } void SettingsPage::setTheme(bool dark) @@ -19,7 +20,99 @@ void SettingsPage::setTheme(bool dark) } } +void SettingsPage::readServerList() +{ + // 读取服务器列表并初始化 + QFile file(QDir::homePath().toUtf8() + "/.config/spark-store/server.list"); + + //判断文件是否存在 + if (!file.exists()) + { + ui->comboBox_server->addItem("https://d.store.deepinos.org.cn/"); + } + + if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) + { + qDebug()<<"无法读取server.list"; + } + + //创建QTextStream对象 + QTextStream textStream(&file); + + QString lineData = textStream.readLine();//读取文件的第一行 + ui->comboBox_server->addItem(lineData); + while(!lineData.isNull()) + { + lineData = textStream.readLine(); + ui->comboBox_server->addItem(lineData); + } + for(int i = 0; i < ui->comboBox_server->count(); i++) + { + if(ui->comboBox_server->itemText(i) == "开发者模式 Dev only") + { + ui->comboBox_server->model()->setData(ui->comboBox_server->model()->index(i, 0), QVariant(0), Qt::UserRole - 1); + } + if(ui->comboBox_server->itemText(i) == "镜像源 Download only") + { + for(int j = i; j < ui->comboBox_server->count(); j++) + { + ui->comboBox_server->model()->setData(ui->comboBox_server->model()->index(j, 0), QVariant(0), Qt::UserRole - 1); + } + break; + } + } + file.close(); +} + +void SettingsPage::initConfig() +{ + readServerList(); + + // 读取服务器URL并初始化菜单项的链接 + QSettings readConfig(QDir::homePath() + "/.config/spark-store/config.ini", QSettings::IniFormat); + if(!readConfig.value("server/choose").toString().isEmpty() && readConfig.value("server/updated").toString() == "TRUE") + { + ui->comboBox_server->setCurrentText(readConfig.value("server/choose").toString()); + SparkAPI::setServerUrl(readConfig.value("server/choose").toString()); + } + configCanSave = true; // 防止触发保存配置信号 +} + SettingsPage::~SettingsPage() { delete ui; } + +void SettingsPage::on_pushButton_updateServer_clicked() +{ + QtConcurrent::run([=]() + { + ui->pushButton_updateServer->setEnabled(false); + ui->comboBox_server->clear(); + + QFile::remove(QDir::homePath().toUtf8() + "/.config/spark-store/server.list"); + system("curl -o " + QDir::homePath().toUtf8() + "/.config/spark-store/server.list https://d.store.deepinos.org.cn/store/server-and-mirror.list"); + + ui->pushButton_updateServer->setEnabled(true); + ui->comboBox_server->setCurrentIndex(0); + + readServerList(); + }); +} + + +void SettingsPage::on_comboBox_server_currentIndexChanged(const QString &arg1) +{ + SparkAPI::setServerUrl(arg1); // 服务器信息更新 + + const QString updatedInfo = "TRUE"; + if(configCanSave) + { + // ui->label_setting1->show(); + QSettings *setConfig = new QSettings(QDir::homePath() + "/.config/spark-store/config.ini", QSettings::IniFormat); + setConfig->setValue("server/choose", arg1); + setConfig->setValue("server/updated", updatedInfo); + setConfig->deleteLater(); + } +} + diff --git a/src/pages/settingspage.h b/src/pages/settingspage.h index 3ab32b4..15bde5f 100644 --- a/src/pages/settingspage.h +++ b/src/pages/settingspage.h @@ -2,7 +2,12 @@ #define SETTINGSPAGE_H #include - +#include +#include +#include +#include +#include +#include "../backend/sparkapi.h" namespace Ui { class SettingsPage; } @@ -16,7 +21,15 @@ public: void setTheme(bool dark); ~SettingsPage(); +private slots: + void on_pushButton_updateServer_clicked(); + + void on_comboBox_server_currentIndexChanged(const QString &arg1); + private: + bool configCanSave; + void readServerList(); + void initConfig(); Ui::SettingsPage *ui; };