File indexing completed on 2024-05-19 04:55:56
0001 /** 0002 * \file mainwindowconfig.cpp 0003 * Main window configuration. 0004 * 0005 * \b Project: Kid3 0006 * \author Urs Fleisch 0007 * \date 08 Apr 2013 0008 * 0009 * Copyright (C) 2013-2024 Urs Fleisch 0010 * 0011 * This file is part of Kid3. 0012 * 0013 * Kid3 is free software; you can redistribute it and/or modify 0014 * it under the terms of the GNU General Public License as published by 0015 * the Free Software Foundation; either version 2 of the License, or 0016 * (at your option) any later version. 0017 * 0018 * Kid3 is distributed in the hope that it will be useful, 0019 * but WITHOUT ANY WARRANTY; without even the implied warranty of 0020 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 0021 * GNU General Public License for more details. 0022 * 0023 * You should have received a copy of the GNU General Public License 0024 * along with this program. If not, see <http://www.gnu.org/licenses/>. 0025 */ 0026 0027 #include "mainwindowconfig.h" 0028 #include "isettings.h" 0029 #include "loadtranslation.h" 0030 0031 int MainWindowConfig::s_index = -1; 0032 0033 /** 0034 * Constructor. 0035 */ 0036 MainWindowConfig::MainWindowConfig() 0037 : StoredConfig(QLatin1String("MainWindow")), 0038 m_fontSize(-1), 0039 m_useFont(false), 0040 m_hideToolBar(false), 0041 m_hideStatusBar(false), 0042 m_dontUseNativeDialogs( 0043 #if defined Q_OS_WIN32 || defined Q_OS_MAC 0044 false 0045 #else 0046 true 0047 #endif 0048 ) 0049 { 0050 } 0051 0052 /** 0053 * Persist configuration. 0054 * 0055 * @param config configuration 0056 */ 0057 void MainWindowConfig::writeToConfig(ISettings* config) const 0058 { 0059 config->beginGroup(m_group); 0060 config->setValue(QLatin1String("HideToolBar"), QVariant(m_hideToolBar)); 0061 config->setValue(QLatin1String("HideStatusBar"), QVariant(m_hideStatusBar)); 0062 config->setValue(QLatin1String("Language"), QVariant(m_language)); 0063 config->setValue(QLatin1String("UseFont"), QVariant(m_useFont)); 0064 config->setValue(QLatin1String("FontFamily"), QVariant(m_fontFamily)); 0065 config->setValue(QLatin1String("FontSize"), QVariant(m_fontSize)); 0066 config->setValue(QLatin1String("Style"), QVariant(m_style)); 0067 config->setValue(QLatin1String("DontUseNativeDialogs"), QVariant(m_dontUseNativeDialogs)); 0068 config->setValue(QLatin1String("QtQuickStyle"), QVariant(m_qtQuickStyle)); 0069 config->endGroup(); 0070 config->beginGroup(m_group, true); 0071 config->setValue(QLatin1String("Geometry"), m_geometry); 0072 config->setValue(QLatin1String("WindowState"), m_windowState); 0073 config->endGroup(); 0074 } 0075 0076 /** 0077 * Read persisted configuration. 0078 * 0079 * @param config configuration 0080 */ 0081 void MainWindowConfig::readFromConfig(ISettings* config) 0082 { 0083 config->beginGroup(m_group); 0084 m_hideToolBar = config->value(QLatin1String("HideToolBar"), m_hideToolBar).toBool(); 0085 m_hideStatusBar = config->value(QLatin1String("HideStatusBar"), m_hideStatusBar).toBool(); 0086 m_language = config->value(QLatin1String("Language"), m_language).toString(); 0087 m_useFont = config->value(QLatin1String("UseFont"), m_useFont).toBool(); 0088 m_fontFamily = config->value(QLatin1String("FontFamily"), m_fontFamily).toString(); 0089 m_fontSize = config->value(QLatin1String("FontSize"), -1).toInt(); 0090 m_style = config->value(QLatin1String("Style"), m_style).toString(); 0091 m_dontUseNativeDialogs = config->value(QLatin1String("DontUseNativeDialogs"), 0092 m_dontUseNativeDialogs).toBool(); 0093 m_qtQuickStyle = config->value(QLatin1String("QtQuickStyle"), m_qtQuickStyle).toString(); 0094 config->endGroup(); 0095 config->beginGroup(m_group, true); 0096 m_geometry = config->value(QLatin1String("Geometry"), m_geometry).toByteArray(); 0097 m_windowState = config->value(QLatin1String("WindowState"), m_windowState).toByteArray(); 0098 config->endGroup(); 0099 } 0100 0101 void MainWindowConfig::setGeometry(const QByteArray& geometry) 0102 { 0103 if (m_geometry != geometry) { 0104 m_geometry = geometry; 0105 emit geometryChanged(m_geometry); 0106 } 0107 } 0108 0109 void MainWindowConfig::setWindowState(const QByteArray& windowState) 0110 { 0111 if (m_windowState != windowState) { 0112 m_windowState = windowState; 0113 emit windowStateChanged(m_windowState); 0114 } 0115 } 0116 0117 void MainWindowConfig::setLanguage(const QString& language) 0118 { 0119 if (m_language != language) { 0120 m_language = language; 0121 emit languageChanged(m_language); 0122 } 0123 } 0124 0125 void MainWindowConfig::setFontFamily(const QString& fontFamily) 0126 { 0127 if (m_fontFamily != fontFamily) { 0128 m_fontFamily = fontFamily; 0129 emit fontFamilyChanged(m_fontFamily); 0130 } 0131 } 0132 0133 void MainWindowConfig::setFontSize(int fontSize) 0134 { 0135 if (m_fontSize != fontSize) { 0136 m_fontSize = fontSize; 0137 emit fontSizeChanged(m_fontSize); 0138 } 0139 } 0140 0141 void MainWindowConfig::setStyle(const QString& style) 0142 { 0143 if (m_style != style) { 0144 m_style = style; 0145 emit styleChanged(m_style); 0146 } 0147 } 0148 0149 void MainWindowConfig::setUseFont(bool useFont) 0150 { 0151 if (m_useFont != useFont) { 0152 m_useFont = useFont; 0153 emit useFontChanged(m_useFont); 0154 } 0155 } 0156 0157 void MainWindowConfig::setHideToolBar(bool hideToolBar) 0158 { 0159 if (m_hideToolBar != hideToolBar) { 0160 m_hideToolBar = hideToolBar; 0161 emit hideToolBarChanged(m_hideToolBar); 0162 } 0163 } 0164 0165 void MainWindowConfig::setHideStatusBar(bool hideStatusBar) 0166 { 0167 if (m_hideStatusBar != hideStatusBar) { 0168 m_hideStatusBar = hideStatusBar; 0169 emit hideStatusBarChanged(m_hideStatusBar); 0170 } 0171 } 0172 0173 void MainWindowConfig::setDontUseNativeDialogs(bool dontUseNativeDialogs) 0174 { 0175 if (m_dontUseNativeDialogs != dontUseNativeDialogs) { 0176 m_dontUseNativeDialogs = dontUseNativeDialogs; 0177 emit dontUseNativeDialogsChanged(m_dontUseNativeDialogs); 0178 } 0179 } 0180 0181 void MainWindowConfig::setQtQuickStyle(const QString& qtQuickStyle) 0182 { 0183 if (m_qtQuickStyle != qtQuickStyle) { 0184 m_qtQuickStyle = qtQuickStyle; 0185 emit styleChanged(m_qtQuickStyle); 0186 } 0187 } 0188 0189 QStringList MainWindowConfig::getQtQuickStyleNames() 0190 { 0191 return { 0192 QLatin1String("Material/Light"), 0193 QLatin1String("Material/Dark"), 0194 QLatin1String("Material/System") 0195 }; 0196 } 0197 0198 QStringList MainWindowConfig::availableLanguages() 0199 { 0200 static QStringList languages; 0201 if (languages.isEmpty()) { 0202 // first time initialization 0203 languages = Utils::availableTranslations(); 0204 if (!languages.contains(QLatin1String("en"))) { 0205 languages.prepend(QLatin1String("en")); 0206 } 0207 } 0208 return languages; 0209 }