File indexing completed on 2025-04-27 03:58:40
0001 /* ============================================================ 0002 * 0003 * This file is a part of digiKam project 0004 * https://www.digikam.org 0005 * 0006 * Date : 2023-08-16 0007 * Description : central place for Spell-check and localize settings 0008 * 0009 * SPDX-FileCopyrightText: 2021-2024 by Gilles Caulier <caulier dot gilles at gmail dot com> 0010 * 0011 * SPDX-License-Identifier: GPL-2.0-or-later 0012 * 0013 * ============================================================ */ 0014 0015 #include "localizesettings.h" 0016 0017 // Qt includes 0018 0019 #include <QMutex> 0020 0021 // KDE includes 0022 0023 #include <kconfiggroup.h> 0024 #include <ksharedconfig.h> 0025 0026 // Local includes 0027 0028 #include "digikam_debug.h" 0029 0030 namespace Digikam 0031 { 0032 0033 class Q_DECL_HIDDEN LocalizeSettings::Private 0034 { 0035 public: 0036 0037 explicit Private () 0038 : mutex (), 0039 configGroup(QLatin1String("Spell Check Settings")) 0040 { 0041 } 0042 0043 LocalizeContainer settings; 0044 QMutex mutex; 0045 0046 const QString configGroup; 0047 0048 public: 0049 0050 LocalizeContainer readFromConfig() const; 0051 void writeToConfig() const; 0052 void setSettings(const LocalizeContainer& s, LocalizeSettings::ConfigPart config); 0053 }; 0054 0055 LocalizeContainer LocalizeSettings::Private::readFromConfig() const 0056 { 0057 LocalizeContainer s; 0058 KSharedConfig::Ptr config = KSharedConfig::openConfig(); 0059 KConfigGroup group = config->group(configGroup); 0060 s.readFromConfig(group); 0061 0062 return s; 0063 } 0064 0065 void LocalizeSettings::Private::writeToConfig() const 0066 { 0067 KSharedConfig::Ptr config = KSharedConfig::openConfig(); 0068 KConfigGroup group = config->group(configGroup); 0069 settings.writeToConfig(group); 0070 } 0071 0072 void LocalizeSettings::Private::setSettings(const LocalizeContainer& s, LocalizeSettings::ConfigPart config) 0073 { 0074 QMutexLocker lock(&mutex); 0075 0076 switch (config) 0077 { 0078 case LocalizeConfig: 0079 { 0080 settings.translatorEngine = s.translatorEngine; 0081 settings.translatorLang = s.translatorLang; 0082 settings.alternativeLang = s.alternativeLang; 0083 break; 0084 } 0085 0086 case SpellCheckConfig: 0087 { 0088 settings.enableSpellCheck = s.enableSpellCheck; 0089 settings.ignoredWords = s.ignoredWords; 0090 break; 0091 } 0092 0093 default: // AllConfig 0094 { 0095 settings = s; 0096 break; 0097 } 0098 } 0099 } 0100 0101 // ----------------------------------------------------------------------------------------------- 0102 0103 class Q_DECL_HIDDEN LocalizeSettingsCreator 0104 { 0105 public: 0106 0107 LocalizeSettings object; 0108 }; 0109 0110 Q_GLOBAL_STATIC(LocalizeSettingsCreator, localizeSettingsCreator) 0111 0112 // ----------------------------------------------------------------------------------------------- 0113 0114 LocalizeSettings* LocalizeSettings::instance() 0115 { 0116 return &localizeSettingsCreator->object; 0117 } 0118 0119 LocalizeSettings::LocalizeSettings() 0120 : d(new Private) 0121 { 0122 readFromConfig(); 0123 qRegisterMetaType<LocalizeContainer>("LocalizeContainer"); 0124 } 0125 0126 LocalizeSettings::~LocalizeSettings() 0127 { 0128 delete d; 0129 } 0130 0131 void LocalizeSettings::openLocalizeSetup() 0132 { 0133 Q_EMIT signalOpenLocalizeSetup(); 0134 } 0135 0136 LocalizeContainer LocalizeSettings::settings() const 0137 { 0138 QMutexLocker lock(&d->mutex); 0139 LocalizeContainer s(d->settings); 0140 0141 return s; 0142 } 0143 0144 void LocalizeSettings::setSettings(const LocalizeContainer& settings, ConfigPart config) 0145 { 0146 d->setSettings(settings, config); 0147 0148 Q_EMIT signalSettingsChanged(); 0149 0150 d->writeToConfig(); 0151 } 0152 0153 void LocalizeSettings::readFromConfig() 0154 { 0155 d->settings = d->readFromConfig(); 0156 0157 Q_EMIT signalSettingsChanged(); 0158 } 0159 0160 } // namespace Digikam 0161 0162 #include "moc_localizesettings.cpp"