File indexing completed on 2025-03-09 03:59:04
0001 /* ============================================================ 0002 * 0003 * This file is a part of digiKam project 0004 * https://www.digikam.org 0005 * 0006 * Date : 2020-07-26 0007 * Description : System settings container. 0008 * 0009 * SPDX-FileCopyrightText: 2020-2023 by Maik Qualmann <metzpinguin at gmail dot com> 0010 * 0011 * SPDX-License-Identifier: GPL-2.0-or-later 0012 * 0013 * ============================================================ */ 0014 0015 #include "systemsettings.h" 0016 0017 // Qt includes 0018 0019 #include <QDir> 0020 #include <QSettings> 0021 #include <QStandardPaths> 0022 #include <QNetworkProxy> 0023 0024 // Local includes 0025 0026 #include "digikam_debug.h" 0027 #include "digikam_config.h" 0028 0029 namespace Digikam 0030 { 0031 0032 SystemSettings::SystemSettings(const QString& name) 0033 { 0034 if (!name.isEmpty()) 0035 { 0036 m_path = QStandardPaths::writableLocation(QStandardPaths::GenericConfigLocation) + 0037 QDir::separator() + name + QLatin1String("_systemrc"); 0038 } 0039 0040 readSettings(); 0041 } 0042 0043 SystemSettings::~SystemSettings() 0044 { 0045 } 0046 0047 void SystemSettings::readSettings() 0048 { 0049 if (m_path.isEmpty()) 0050 { 0051 return; 0052 } 0053 0054 QSettings settings(m_path, QSettings::IniFormat); 0055 0056 settings.beginGroup(QLatin1String("System")); 0057 0058 #if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) 0059 0060 #ifdef Q_OS_LINUX 0061 0062 useHighDpiScaling = settings.value(QLatin1String("useHighDpiScaling"), true).toBool(); 0063 useHighDpiPixmaps = settings.value(QLatin1String("useHighDpiPixmaps"), true).toBool(); 0064 0065 #else 0066 0067 useHighDpiScaling = settings.value(QLatin1String("useHighDpiScaling"), false).toBool(); 0068 useHighDpiPixmaps = settings.value(QLatin1String("useHighDpiPixmaps"), false).toBool(); 0069 0070 #endif 0071 0072 #endif 0073 0074 if (settings.contains(QLatin1String("disableFaceEngine"))) 0075 { 0076 bool oldSetting = settings.value(QLatin1String("disableFaceEngine"), false).toBool(); 0077 enableFaceEngine = !oldSetting; 0078 } 0079 else 0080 { 0081 enableFaceEngine = settings.value(QLatin1String("enableFaceEngine"), true).toBool(); 0082 } 0083 0084 enableAesthetic = settings.value(QLatin1String("enableAesthetic"), true).toBool(); 0085 enableAutoTags = settings.value(QLatin1String("enableAutoTags"), true).toBool(); 0086 softwareOpenGL = settings.value(QLatin1String("softwareOpenGL"), false).toBool(); 0087 enableLogging = settings.value(QLatin1String("enableLogging"), false).toBool(); 0088 disableOpenCL = settings.value(QLatin1String("disableOpenCL"), true).toBool(); 0089 0090 // Proxy Settings 0091 0092 proxyUrl = settings.value(QLatin1String("proxyUrl"), QString()).toString(); 0093 proxyPort = settings.value(QLatin1String("proxyPort"), 8080).toInt(); 0094 proxyUser = settings.value(QLatin1String("proxyUser"), QString()).toString(); 0095 proxyPass = settings.value(QLatin1String("proxyPass"), QString()).toString(); 0096 proxyType = settings.value(QLatin1String("proxyType"), HttpProxy).toInt(); 0097 proxyAuth = settings.value(QLatin1String("proxyAuth"), false).toBool(); 0098 settings.endGroup(); 0099 0100 QNetworkProxy proxy; 0101 0102 // Make sure that no proxy is used for an empty string or the default value: 0103 0104 if (proxyUrl.isEmpty() || (proxyUrl == QLatin1String("http://"))) 0105 { 0106 proxy.setType(QNetworkProxy::NoProxy); 0107 } 0108 else 0109 { 0110 if (proxyType == Socks5Proxy) 0111 { 0112 proxy.setType(QNetworkProxy::Socks5Proxy); 0113 } 0114 else if (proxyType == HttpProxy) 0115 { 0116 proxy.setType(QNetworkProxy::HttpProxy); 0117 } 0118 else 0119 { 0120 qCDebug(DIGIKAM_GENERAL_LOG) << "Unknown proxy type! Using Http Proxy instead."; 0121 proxy.setType(QNetworkProxy::HttpProxy); 0122 } 0123 } 0124 0125 proxy.setHostName(proxyUrl); 0126 proxy.setPort(proxyPort); 0127 0128 if (proxyAuth) 0129 { 0130 proxy.setUser(proxyUser); 0131 proxy.setPassword(proxyPass); 0132 } 0133 0134 QNetworkProxy::setApplicationProxy(proxy); 0135 } 0136 0137 void SystemSettings::saveSettings() 0138 { 0139 if (m_path.isEmpty()) 0140 { 0141 return; 0142 } 0143 0144 QSettings settings(m_path, QSettings::IniFormat); 0145 0146 settings.beginGroup(QLatin1String("System")); 0147 0148 #if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) 0149 0150 settings.setValue(QLatin1String("useHighDpiScaling"), useHighDpiScaling); 0151 settings.setValue(QLatin1String("useHighDpiPixmaps"), useHighDpiPixmaps); 0152 0153 #endif 0154 0155 settings.setValue(QLatin1String("enableFaceEngine"), enableFaceEngine); 0156 settings.setValue(QLatin1String("enableAesthetic"), enableAesthetic); 0157 settings.setValue(QLatin1String("enableAutoTags"), enableAutoTags); 0158 settings.setValue(QLatin1String("softwareOpenGL"), softwareOpenGL); 0159 settings.setValue(QLatin1String("enableLogging"), enableLogging); 0160 settings.setValue(QLatin1String("disableOpenCL"), disableOpenCL); 0161 0162 if (settings.contains(QLatin1String("disableFaceEngine"))) 0163 { 0164 settings.remove(QLatin1String("disableFaceEngine")); 0165 } 0166 0167 settings.setValue(QLatin1String("proxyUrl"), proxyUrl); 0168 settings.setValue(QLatin1String("proxyPort"), proxyPort); 0169 settings.setValue(QLatin1String("proxyType"), proxyType); 0170 0171 if (proxyAuth) 0172 { 0173 settings.setValue(QLatin1String("proxyAuth"), true); 0174 settings.setValue(QLatin1String("proxyUser"), proxyUser); 0175 settings.setValue(QLatin1String("proxyPass"), proxyPass); 0176 } 0177 else 0178 { 0179 settings.setValue(QLatin1String("proxyAuth"), false); 0180 } 0181 0182 settings.endGroup(); 0183 } 0184 0185 } // namespace Digikam