File indexing completed on 2024-04-28 16:44:29

0001 /*
0002  * SPDX-FileCopyrightText: 2020 Mikhail Zolotukhin <zomial@protonmail.com>
0003  *
0004  * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0005  */
0006 
0007 #include <QDir>
0008 #include <QRegularExpression>
0009 #include <QString>
0010 #include <QVariant>
0011 
0012 #include "config_editor/gsettings.h"
0013 #include "config_editor/gtk2.h"
0014 #include "config_editor/settings_ini.h"
0015 #include "config_editor/xsettings.h"
0016 
0017 QString gtk2Theme();
0018 void upgradeGtk2Theme();
0019 void upgradeGtk3Theme();
0020 
0021 int main()
0022 {
0023     upgradeGtk2Theme();
0024     upgradeGtk3Theme();
0025     return 0;
0026 }
0027 
0028 void upgradeGtk2Theme()
0029 {
0030     QString currentGtk2Theme = gtk2Theme();
0031     if (currentGtk2Theme.isEmpty() //
0032         || currentGtk2Theme == QStringLiteral("oxygen-gtk") //
0033         || currentGtk2Theme == QStringLiteral("BreezyGTK") //
0034         || currentGtk2Theme == QStringLiteral("Orion")) {
0035         Gtk2ConfigEditor::setValue(QStringLiteral("gtk-theme-name"), QStringLiteral("Breeze"));
0036     }
0037 }
0038 
0039 void upgradeGtk3Theme()
0040 {
0041     QString currentGtk3Theme = SettingsIniEditor::value(QStringLiteral("gtk-theme-name"), 3);
0042     if (currentGtk3Theme.isEmpty() //
0043         || currentGtk3Theme == QStringLiteral("oxygen-gtk") //
0044         || currentGtk3Theme == QStringLiteral("BreezyGTK") //
0045         || currentGtk3Theme == QStringLiteral("Orion")) {
0046         GSettingsEditor::setValue("gtk-theme", QStringLiteral("Breeze"));
0047         SettingsIniEditor::setValue(QStringLiteral("gtk-theme-name"), QStringLiteral("Breeze"), 3);
0048         XSettingsEditor::setValue(QStringLiteral("Net/ThemeName"), QStringLiteral("Breeze"));
0049     }
0050 }
0051 
0052 QString gtk2Theme()
0053 {
0054     QString gtkrcPath = QDir::homePath() + QStringLiteral("/.gtkrc-2.0");
0055     QFile gtkrc(gtkrcPath);
0056     if (gtkrc.open(QIODevice::ReadWrite | QIODevice::Text)) {
0057         const QRegularExpression regExp(QStringLiteral("gtk-theme-name=[^\n]*($|\n)"));
0058         while (!gtkrc.atEnd()) {
0059             QString line = gtkrc.readLine();
0060             if (line.contains(regExp)) {
0061                 return line.split('"')[1];
0062             }
0063         }
0064     }
0065 
0066     return QString();
0067 }