File indexing completed on 2024-05-12 05:29:38
0001 /* 0002 * SPDX-FileCopyrightText: 2007-2009 Shawn Starr <shawn.starr@rogers.com> 0003 * SPDX-FileCopyrightText: 2008 Marco Martin <notmart@gmail.com> 0004 * SPDX-FileCopyrightText: 2012 Luís Gabriel Lima <lampih@gmail.com> 0005 * SPDX-FileCopyrightText: 2017-2018 Friedrich W. H. Kossebau <kossebau@kde.org> 0006 * SPDX-FileCopyrightText: 2022 Ismael Asensio <isma.af@gmail.com> 0007 * 0008 * SPDX-License-Identifier: GPL-2.0-or-later 0009 */ 0010 0011 #include "weatherapplet.h" 0012 0013 #include <Plasma5Support/DataContainer> 0014 #include <Plasma5Support/DataEngine> 0015 0016 // KF 0017 #include <KConfigGroup> 0018 #include <KLocalizedString> 0019 #include <KUnitConversion/Unit> 0020 0021 using namespace KUnitConversion; 0022 0023 WeatherApplet::WeatherApplet(QObject *parent, const KPluginMetaData &data, const QVariantList &args) 0024 : Plasma::Applet(parent, data, args) 0025 { 0026 Plasma5Support::DataEngine *dataengine = dataEngine(QStringLiteral("weather")); 0027 const QVariantList plugins = dataengine->containerForSource(QLatin1String("ions"))->data().values(); 0028 for (const QVariant &plugin : plugins) { 0029 const QStringList pluginInfo = plugin.toString().split(QLatin1Char('|')); 0030 if (pluginInfo.count() > 1) { 0031 m_providers[pluginInfo[1]] = pluginInfo[0]; 0032 } 0033 } 0034 Q_EMIT providersChanged(); 0035 0036 setDefaultUnits(); 0037 } 0038 0039 WeatherApplet::~WeatherApplet() 0040 { 0041 } 0042 0043 // Plasma XML configuration is loaded at runtime, so it's not possible to set locale aware defaults. 0044 // We set them here if the corresponding key is not already in the configuration 0045 void WeatherApplet::setDefaultUnits() 0046 { 0047 KConfigGroup cfg = config().group(QStringLiteral("Units")); 0048 const bool isMetric = (QLocale().measurementSystem() == QLocale::MetricSystem); 0049 0050 auto setLocaleAwareDefault = [&cfg, isMetric](const QString &key, KUnitConversion::UnitId metricDefault, KUnitConversion::UnitId imperialDefault) { 0051 if (!cfg.hasKey(key)) { 0052 cfg.writeEntry(key, static_cast<int>(isMetric ? metricDefault : imperialDefault)); 0053 } 0054 }; 0055 0056 setLocaleAwareDefault(QStringLiteral("temperatureUnit"), KUnitConversion::Celsius, KUnitConversion::Fahrenheit); 0057 setLocaleAwareDefault(QStringLiteral("speedUnit"), KUnitConversion::MeterPerSecond, KUnitConversion::MilePerHour); 0058 setLocaleAwareDefault(QStringLiteral("pressureUnit"), KUnitConversion::Hectopascal, KUnitConversion::InchesOfMercury); 0059 setLocaleAwareDefault(QStringLiteral("visibilityUnit"), KUnitConversion::Kilometer, KUnitConversion::Mile); 0060 } 0061 0062 K_PLUGIN_CLASS(WeatherApplet) 0063 0064 #include "weatherapplet.moc"