You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
214 lines
6.2 KiB
214 lines
6.2 KiB
/* |
|
SPDX-FileCopyrightText: 2007-2009 Shawn Starr <shawn.starr@rogers.com> |
|
|
|
SPDX-License-Identifier: LGPL-2.0-or-later |
|
*/ |
|
|
|
#include "ion.h" |
|
|
|
#include "iondebug.h" |
|
|
|
#include <KLocalizedString> |
|
|
|
class Q_DECL_HIDDEN IonInterface::Private |
|
{ |
|
public: |
|
Private(IonInterface *i) |
|
: ion(i) |
|
, initialized(false) |
|
{ |
|
} |
|
|
|
IonInterface *ion; |
|
bool initialized; |
|
}; |
|
|
|
IonInterface::IonInterface(QObject *parent, const QVariantList &args) |
|
: Plasma::DataEngine(parent, args) |
|
, d(new Private(this)) |
|
{ |
|
} |
|
|
|
IonInterface::~IonInterface() |
|
{ |
|
delete d; |
|
} |
|
|
|
/** |
|
* If the ion is not initialized just set the initial data source up even if it's empty, we'll retry once the initialization is done |
|
*/ |
|
bool IonInterface::sourceRequestEvent(const QString &source) |
|
{ |
|
qCDebug(IONENGINE) << "sourceRequested(): " << source; |
|
|
|
// init anyway the data as it's going to be used |
|
// sooner or later (doesn't depend upon initialization |
|
// this will avoid problems if updateIonSource() fails for any reason |
|
// but later it's able to retrieve the data |
|
setData(source, Plasma::DataEngine::Data()); |
|
|
|
// if initialized, then we can try to grab the data |
|
if (d->initialized) { |
|
return updateIonSource(source); |
|
} |
|
|
|
return true; |
|
} |
|
|
|
/** |
|
* Update the ion's datasource. Triggered when a Plasma::DataEngine::connectSource() timeout occurs. |
|
*/ |
|
bool IonInterface::updateSourceEvent(const QString &source) |
|
{ |
|
qCDebug(IONENGINE) << "updateSource(" << source << ")"; |
|
if (d->initialized) { |
|
qCDebug(IONENGINE) << "Calling updateIonSource(" << source << ")"; |
|
return updateIonSource(source); |
|
} |
|
|
|
return false; |
|
} |
|
|
|
/** |
|
* Set the ion to make sure it is ready to get real data. |
|
*/ |
|
void IonInterface::setInitialized(bool initialized) |
|
{ |
|
d->initialized = initialized; |
|
|
|
if (d->initialized) { |
|
updateAllSources(); |
|
} |
|
} |
|
|
|
/** |
|
* Return wind direction svg element to display in applet when given a wind direction. |
|
*/ |
|
QString IonInterface::getWindDirectionIcon(const QMap<QString, WindDirections> &windDirList, const QString &windDirection) const |
|
{ |
|
switch (windDirList[windDirection.toLower()]) { |
|
case N: |
|
return QStringLiteral("N"); |
|
case NNE: |
|
return QStringLiteral("NNE"); |
|
case NE: |
|
return QStringLiteral("NE"); |
|
case ENE: |
|
return QStringLiteral("ENE"); |
|
case E: |
|
return QStringLiteral("E"); |
|
case SSE: |
|
return QStringLiteral("SSE"); |
|
case SE: |
|
return QStringLiteral("SE"); |
|
case ESE: |
|
return QStringLiteral("ESE"); |
|
case S: |
|
return QStringLiteral("S"); |
|
case NNW: |
|
return QStringLiteral("NNW"); |
|
case NW: |
|
return QStringLiteral("NW"); |
|
case WNW: |
|
return QStringLiteral("WNW"); |
|
case W: |
|
return QStringLiteral("W"); |
|
case SSW: |
|
return QStringLiteral("SSW"); |
|
case SW: |
|
return QStringLiteral("SW"); |
|
case WSW: |
|
return QStringLiteral("WSW"); |
|
case VR: |
|
return QStringLiteral("VR"); // For now, we'll make a variable wind icon later on |
|
} |
|
|
|
// No icon available, use 'X' |
|
return QString(); |
|
} |
|
|
|
/** |
|
* Return weather icon to display in an applet when given a condition. |
|
*/ |
|
QString IonInterface::getWeatherIcon(ConditionIcons condition) const |
|
{ |
|
switch (condition) { |
|
case ClearDay: |
|
return QStringLiteral("weather-clear"); |
|
case ClearWindyDay: |
|
return QStringLiteral("weather-clear-wind"); |
|
case FewCloudsDay: |
|
return QStringLiteral("weather-few-clouds"); |
|
case FewCloudsWindyDay: |
|
return QStringLiteral("weather-few-clouds-wind"); |
|
case PartlyCloudyDay: |
|
return QStringLiteral("weather-clouds"); |
|
case PartlyCloudyWindyDay: |
|
return QStringLiteral("weather-clouds-wind"); |
|
case Overcast: |
|
return QStringLiteral("weather-overcast"); |
|
case OvercastWindy: |
|
return QStringLiteral("weather-overcast-wind"); |
|
case Rain: |
|
return QStringLiteral("weather-showers"); |
|
case LightRain: |
|
return QStringLiteral("weather-showers-scattered"); |
|
case Showers: |
|
return QStringLiteral("weather-showers-scattered"); |
|
case ChanceShowersDay: |
|
return QStringLiteral("weather-showers-scattered-day"); |
|
case ChanceShowersNight: |
|
return QStringLiteral("weather-showers-scattered-night"); |
|
case ChanceSnowDay: |
|
return QStringLiteral("weather-snow-scattered-day"); |
|
case ChanceSnowNight: |
|
return QStringLiteral("weather-snow-scattered-night"); |
|
case Thunderstorm: |
|
return QStringLiteral("weather-storm"); |
|
case Hail: |
|
return QStringLiteral("weather-hail"); |
|
case Snow: |
|
return QStringLiteral("weather-snow"); |
|
case LightSnow: |
|
return QStringLiteral("weather-snow-scattered"); |
|
case Flurries: |
|
return QStringLiteral("weather-snow-scattered"); |
|
case RainSnow: |
|
return QStringLiteral("weather-snow-rain"); |
|
case FewCloudsNight: |
|
return QStringLiteral("weather-few-clouds-night"); |
|
case FewCloudsWindyNight: |
|
return QStringLiteral("weather-few-clouds-wind-night"); |
|
case PartlyCloudyNight: |
|
return QStringLiteral("weather-clouds-night"); |
|
case PartlyCloudyWindyNight: |
|
return QStringLiteral("weather-clouds-wind-night"); |
|
case ClearNight: |
|
return QStringLiteral("weather-clear-night"); |
|
case ClearWindyNight: |
|
return QStringLiteral("weather-clear-wind-night"); |
|
case Mist: |
|
return QStringLiteral("weather-fog"); |
|
case Haze: |
|
return QStringLiteral("weather-fog"); |
|
case FreezingRain: |
|
return QStringLiteral("weather-freezing-rain"); |
|
case FreezingDrizzle: |
|
return QStringLiteral("weather-freezing-rain"); |
|
case ChanceThunderstormDay: |
|
return QStringLiteral("weather-storm-day"); |
|
case ChanceThunderstormNight: |
|
return QStringLiteral("weather-storm-night"); |
|
case NotAvailable: |
|
return QStringLiteral("weather-none-available"); |
|
} |
|
return QStringLiteral("weather-none-available"); |
|
} |
|
|
|
/** |
|
* Return weather icon to display in an applet when given a condition. |
|
*/ |
|
QString IonInterface::getWeatherIcon(const QMap<QString, ConditionIcons> &conditionList, const QString &condition) const |
|
{ |
|
return getWeatherIcon(conditionList[condition.toLower()]); |
|
}
|
|
|