Warning, file /plasma/plasma-workspace/kcms/region_language/regionandlangsettings.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 /*
0002     regionandlangsettings.cpp
0003     SPDX-FileCopyrightText: 2022 Han Young <hanyoung@protonmail.com>
0004 
0005     SPDX-License-Identifier: GPL-2.0-or-later
0006 */
0007 
0008 #include "regionandlangsettings.h"
0009 
0010 #include "kcm_regionandlang_debug.h"
0011 
0012 using KCM_RegionAndLang::SettingType;
0013 
0014 bool RegionAndLangSettings::isDefaultSetting(SettingType setting) const
0015 {
0016     switch (setting) {
0017     case SettingType::Lang:
0018         return lang() == defaultLangValue();
0019     case SettingType::Language:
0020         return language() == defaultLanguageValue();
0021     case SettingType::Numeric:
0022         return numeric() == defaultNumericValue();
0023     case SettingType::Time:
0024         return time() == defaultTimeValue();
0025     case SettingType::Currency:
0026         return monetary() == defaultMonetaryValue();
0027     case SettingType::Measurement:
0028         return measurement() == defaultMeasurementValue();
0029     case SettingType::PaperSize:
0030         return paperSize() == defaultPaperSizeValue();
0031     case SettingType::Address:
0032         return address() == defaultAddressValue();
0033     case SettingType::NameStyle:
0034         return nameStyle() == defaultNameStyleValue();
0035     case SettingType::PhoneNumbers:
0036         return phoneNumbers() == defaultPhoneNumbersValue();
0037     }
0038 
0039     return false;
0040 }
0041 
0042 QString RegionAndLangSettings::langWithFallback() const
0043 {
0044     QString lang = RegionAndLangSettings::lang();
0045     if (!(isDefaultSetting(SettingType::Lang) && lang.isEmpty())) {
0046         if (QString envLang = qEnvironmentVariable("LANG"); !envLang.isEmpty()) {
0047             envLang.replace(QStringLiteral("utf8"), QStringLiteral("UTF-8"));
0048             return envLang;
0049         }
0050         return QLocale::system().name();
0051     }
0052     return lang;
0053 }
0054 
0055 QString RegionAndLangSettings::LC_LocaleWithLang(SettingType setting) const
0056 {
0057     if (isDefaultSetting(setting)) {
0058         return langWithFallback();
0059     }
0060 
0061     switch (setting) {
0062     case SettingType::Numeric:
0063         return numeric();
0064     case SettingType::Time:
0065         return time();
0066     case SettingType::Currency:
0067         return monetary();
0068     case SettingType::Measurement:
0069         return measurement();
0070     case SettingType::PaperSize:
0071         return paperSize();
0072     case SettingType::Address:
0073         return address();
0074     case SettingType::NameStyle:
0075         return nameStyle();
0076     case SettingType::PhoneNumbers:
0077         return phoneNumbers();
0078     case SettingType::Lang:
0079     case SettingType::Language:
0080         Q_UNREACHABLE();
0081     }
0082 
0083     return langWithFallback();
0084 }