From c526510248c4030fc6a22bef79a396c800cfa1c7 Mon Sep 17 00:00:00 2001 From: likehomedream Date: Mon, 27 Nov 2023 15:48:37 +0800 Subject: [PATCH] add modify WidgetStyle and its history --- src/fileProcess/bridge.cpp | 10 +++++- src/fileProcess/configfilemanager.cpp | 45 ++++++++++++++++++++++++++- src/fileProcess/configfilemanager.h | 1 + src/fileProcess/historyinfoload.cpp | 34 +++++++++++++++++++- src/fileProcess/historyinfoload.h | 2 ++ 5 files changed, 89 insertions(+), 3 deletions(-) diff --git a/src/fileProcess/bridge.cpp b/src/fileProcess/bridge.cpp index 995da45..f6c4c4a 100644 --- a/src/fileProcess/bridge.cpp +++ b/src/fileProcess/bridge.cpp @@ -61,7 +61,15 @@ void Bridge::accentColorChanged(QColor accentcolor) void Bridge::exteriorChanged(QColor accentcolor) { - + QString color = accentcolor.name(QColor::HexRgb); + QString widgetStyle; + if(color=="#1d1d1d"){ + widgetStyle = "dark"; + }else if(color=="#ffffff"){ + widgetStyle = "light"; + } + m_configfilemanager->modifyWidgetStyleConf(widgetStyle,QDir::homePath() + "/.cache/theme-build/" + +m_time + "/src/globalTheme/theme.conf"); } void Bridge::transparencyChanged(int transparency) diff --git a/src/fileProcess/configfilemanager.cpp b/src/fileProcess/configfilemanager.cpp index 402af78..9ce8f4a 100644 --- a/src/fileProcess/configfilemanager.cpp +++ b/src/fileProcess/configfilemanager.cpp @@ -176,7 +176,6 @@ bool ConfigFileManager::modifyAccentColorConf(QColor accentcolor,QString confFil */ bool ConfigFileManager::modifyQtAccentColorConf(QString accentcolor, QString confFilePath) { - // 将颜色转换为字符串 QString colorString = accentcolor; while (colorString.length() < 6) { @@ -257,6 +256,50 @@ bool ConfigFileManager::modifyWallPaperConf(QString wallpaperpath,QString confFi } } +/** + * @brief 修改部件样式配置 + * + * 根据给定的部件样式和配置文件路径,修改配置文件中的部件样式配置。 + * + * @param WidgetStyle 部件样式 + * @param confFilePath 配置文件路径 + * + * @return 修改成功返回 true,否则返回 false + */ +bool ConfigFileManager::modifyWidgetStyleConf(QString WidgetStyle, QString confFilePath) +{ + QString colorString = WidgetStyle; + + // 读取文件内容 + QFile file(confFilePath); + if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { + qDebug() << "无法打开文件:" << confFilePath; + return false; + } + + QTextStream in(&file); + QString content = in.readAll(); + file.close(); + + // 修改内容 + int startIndex = content.indexOf("defaultLightDarkMode=") + QString("defaultLightDarkMode=").size(); + int endIndex = content.indexOf("\n", startIndex); + content.remove(startIndex, endIndex - startIndex); + content.insert(startIndex, colorString); + + // 写入文件 + if (file.open(QIODevice::WriteOnly | QIODevice::Text)) { + QTextStream out(&file); + out << content; + file.close(); + emit updateInfo(); + return true; + } else { + qDebug() << "无法写入文件:" << confFilePath; + return false; + } +} + /** * @brief 修改透明度配置 * diff --git a/src/fileProcess/configfilemanager.h b/src/fileProcess/configfilemanager.h index 1602bdb..4ebed6f 100644 --- a/src/fileProcess/configfilemanager.h +++ b/src/fileProcess/configfilemanager.h @@ -26,6 +26,7 @@ public: bool modifyAccentColorConf(QColor accentcolor,QString confFilePath); bool modifyQtAccentColorConf(QString accentcolor,QString confFilePath); bool modifyWallPaperConf(QString wallpaperpath,QString confFilePath); + bool modifyWidgetStyleConf(QString WidgetStyle,QString confFilePath); bool modifyTransparencyConf(int transparency,QString confFilePath); bool modifywindowRadiusConf(int windowradius,QString confFilePath); bool copyFileContent(const QString& sourceFilePath, const QString& destinationFilePath); diff --git a/src/fileProcess/historyinfoload.cpp b/src/fileProcess/historyinfoload.cpp index d03a6d4..eb4d11a 100644 --- a/src/fileProcess/historyinfoload.cpp +++ b/src/fileProcess/historyinfoload.cpp @@ -23,6 +23,7 @@ HistoryInfoLoad::HistoryInfoLoad(const QString &date, QObject *parent) getRadius(); getTransparency(); getWindowRadius(); + getWidgetStyle(); } /** @@ -261,6 +262,36 @@ void HistoryInfoLoad::getTransparency() } } +void HistoryInfoLoad::getWidgetStyle() +{ + QString filePath = m_historyInfo.filepath + "/src/globalTheme/theme.conf"; + // 读取文件内容 + QFile file(filePath); + if (!file.open(QIODevice::ReadWrite | QIODevice::Text)) { + qDebug() << "无法打开文件:" << filePath; + return; + } + + QTextStream in(&file); + QString content = in.readAll(); + file.close(); + + int startIndex = content.indexOf("defaultLightDarkMode="); + if (startIndex != -1) { + int lineStartIndex = content.lastIndexOf('\n', startIndex) + 1; + int lineEndIndex = content.indexOf('\n', startIndex); + + if (lineEndIndex == -1) { + lineEndIndex = content.size(); + } + + QString lineContent = content.mid(lineStartIndex, lineEndIndex - lineStartIndex).trimmed(); + lineContent.remove("defaultLightDarkMode="); + + m_historyInfo.widgetstyle = lineContent; + } +} + /** * @brief 获取窗口半径 * @@ -311,7 +342,7 @@ void HistoryInfoLoad::getWindowRadius() */ HistoryInfo HistoryInfoLoad::getInfoData() { - qDebug()<