summaryrefslogtreecommitdiff
path: root/weatherosd.c
diff options
context:
space:
mode:
Diffstat (limited to 'weatherosd.c')
-rw-r--r--weatherosd.c525
1 files changed, 351 insertions, 174 deletions
diff --git a/weatherosd.c b/weatherosd.c
index e5e99b9..f30e300 100644
--- a/weatherosd.c
+++ b/weatherosd.c
@@ -4,16 +4,14 @@
extern cWeatherforecastConfig weatherConfig;
-cWeatherOsd::cWeatherOsd(cForecastIO *forecastIO) : cSkindesignerOsdMenu("Weather Forecast") {
+cWeatherOsd::cWeatherOsd(cForecastIO *forecastIO, skindesignerapi::cPluginStructure *plugStruct) : cSkindesignerOsdMenu(plugStruct, "Weather Forecast") {
isDetailedView = false;
lastRootMenuElement = 0;
- SetPluginName("weatherforecast");
this->forecastIO = forecastIO;
SetRootMenu();
}
cWeatherOsd::~cWeatherOsd(void) {
-
}
eOSState cWeatherOsd::ProcessKey(eKeys key) {
@@ -64,128 +62,149 @@ eOSState cWeatherOsd::ProcessKey(eKeys key) {
void cWeatherOsd::SetRootMenu(void) {
isDetailedView = false;
- SetPluginMenu(meRoot, skindesignerapi::mtList);
+ SetPluginMenu((int)eMenus::root, skindesignerapi::mtList);
Clear();
SetTitle(tr("Weather Forecast"));
forecastIO->LockForecasts();
- skindesignerapi::cSkindesignerOsdItem *currentWeather = new skindesignerapi::cSkindesignerOsdItem();
+ skindesignerapi::cTokenContainer *tkRoot = GetTokenContainer((int)eMenus::root);
+ skindesignerapi::cSkindesignerOsdItem *currentWeather = new skindesignerapi::cSkindesignerOsdItem(tkRoot);
+
string itemLabelCurrent = tr("Current Weather");
currentWeather->SetText(itemLabelCurrent.c_str());
- currentWeather->AddStringToken("menuitemtext", itemLabelCurrent.c_str());
- currentWeather->AddIntToken("iscurrent", 1);
- currentWeather->AddIntToken("ishourly", 0);
- currentWeather->AddIntToken("isdaily", 0);
- currentWeather->AddStringToken("city", weatherConfig.city);
- currentWeather->AddStringToken("latitude", FloatToString(weatherConfig.lat));
- currentWeather->AddStringToken("longitude", FloatToString(weatherConfig.lon));
+ currentWeather->AddStringToken((int)eRootMenuST::menuitemtext, itemLabelCurrent.c_str());
+ currentWeather->AddIntToken((int)eRootMenuIT::iscurrent, 1);
+ currentWeather->AddIntToken((int)eRootMenuIT::ishourly, 0);
+ currentWeather->AddIntToken((int)eRootMenuIT::isdaily, 0);
+ currentWeather->AddStringToken((int)eRootMenuST::city, weatherConfig.city.c_str());
+ currentWeather->AddStringToken((int)eRootMenuST::latitude, FloatToString(weatherConfig.lat).c_str());
+ currentWeather->AddStringToken((int)eRootMenuST::longitude, FloatToString(weatherConfig.lon).c_str());
cForecast *currentForecast = forecastIO->GetCurrentForecast();
if (currentForecast) {
- currentWeather->AddStringToken("timestamp", currentForecast->GetDateTimeString());
- currentWeather->AddStringToken("temperature", currentForecast->GetTemperatureString());
- currentWeather->AddStringToken("apparenttemperature", currentForecast->GetApparentTemperatureString());
- currentWeather->AddStringToken("summary", currentForecast->GetSummary());
- currentWeather->AddStringToken("icon", currentForecast->GetIcon());
- currentWeather->AddStringToken("precipitationintensity", currentForecast->GetPrecipIntensityString());
- currentWeather->AddIntToken("precipitationprobability", currentForecast->GetPrecipProbabilityPercent());
- currentWeather->AddStringToken("precipitationtype", currentForecast->GetPercipType());
- currentWeather->AddIntToken("humidity", currentForecast->GetHumidityPercent());
- currentWeather->AddStringToken("windspeed", currentForecast->GetWindSpeedString());
- currentWeather->AddIntToken("windbearing", currentForecast->GetWindBearing());
- currentWeather->AddStringToken("windbearingstring", currentForecast->GetWindBearingString());
- currentWeather->AddStringToken("visibility", currentForecast->GetVisibilityString());
- currentWeather->AddIntToken("cloudcover", currentForecast->GetCloudCoverPercent());
- currentWeather->AddStringToken("pressure", currentForecast->GetPressureString());
- currentWeather->AddStringToken("ozone", currentForecast->GetOzoneString());
+ currentWeather->AddStringToken((int)eRootMenuST::timestamp, currentForecast->GetDateTimeString().c_str());
+ currentWeather->AddStringToken((int)eRootMenuST::temperature, currentForecast->GetTemperatureString().c_str());
+ currentWeather->AddStringToken((int)eRootMenuST::apparenttemperature, currentForecast->GetApparentTemperatureString().c_str());
+ currentWeather->AddStringToken((int)eRootMenuST::summary, currentForecast->GetSummary().c_str());
+ currentWeather->AddStringToken((int)eRootMenuST::icon, currentForecast->GetIcon().c_str());
+ currentWeather->AddStringToken((int)eRootMenuST::precipitationintensity, currentForecast->GetPrecipIntensityString().c_str());
+ currentWeather->AddIntToken((int)eRootMenuIT::precipitationprobability, currentForecast->GetPrecipProbabilityPercent());
+ currentWeather->AddStringToken((int)eRootMenuST::precipitationtype, currentForecast->GetPercipType().c_str());
+ currentWeather->AddIntToken((int)eRootMenuIT::humidity, currentForecast->GetHumidityPercent());
+ currentWeather->AddStringToken((int)eRootMenuST::windspeed, currentForecast->GetWindSpeedString().c_str());
+ currentWeather->AddIntToken((int)eRootMenuIT::windbearing, currentForecast->GetWindBearing());
+ currentWeather->AddStringToken((int)eRootMenuST::windbearingstring, currentForecast->GetWindBearingString().c_str());
+ currentWeather->AddStringToken((int)eRootMenuST::visibility, currentForecast->GetVisibilityString().c_str());
+ currentWeather->AddIntToken((int)eRootMenuIT::cloudcover, currentForecast->GetCloudCoverPercent());
+ currentWeather->AddStringToken((int)eRootMenuST::pressure, currentForecast->GetPressureString().c_str());
+ currentWeather->AddStringToken((int)eRootMenuST::ozone, currentForecast->GetOzoneString().c_str());
}
+ vector<int> loopInfo;
+ loopInfo.push_back(0);
+ loopInfo.push_back(0);
+ currentWeather->SetLoop(loopInfo);
Add(currentWeather, (lastRootMenuElement == 0)?true:false);
- skindesignerapi::cSkindesignerOsdItem *nextHours = new skindesignerapi::cSkindesignerOsdItem();
+ skindesignerapi::cSkindesignerOsdItem *nextHours = new skindesignerapi::cSkindesignerOsdItem(tkRoot);
string itemLabelNextHours = tr("Next 48 Hours");
nextHours->SetText(itemLabelNextHours.c_str());
- nextHours->AddStringToken("menuitemtext", itemLabelNextHours.c_str());
- nextHours->AddIntToken("iscurrent", 0);
- nextHours->AddIntToken("ishourly", 1);
- nextHours->AddIntToken("isdaily", 0);
- nextHours->AddStringToken("city", weatherConfig.city);
- nextHours->AddStringToken("latitude", FloatToString(weatherConfig.lat));
- nextHours->AddStringToken("longitude", FloatToString(weatherConfig.lon));
+ nextHours->AddStringToken((int)eRootMenuST::menuitemtext, itemLabelNextHours.c_str());
+ nextHours->AddIntToken((int)eRootMenuIT::iscurrent, 0);
+ nextHours->AddIntToken((int)eRootMenuIT::ishourly, 1);
+ nextHours->AddIntToken((int)eRootMenuIT::isdaily, 0);
+ nextHours->AddStringToken((int)eRootMenuST::city, weatherConfig.city.c_str());
+ nextHours->AddStringToken((int)eRootMenuST::latitude, FloatToString(weatherConfig.lat).c_str());
+ nextHours->AddStringToken((int)eRootMenuST::longitude, FloatToString(weatherConfig.lon).c_str());
cForecasts *hourlyForecast = forecastIO->GetHourlyForecast();
if (hourlyForecast) {
- nextHours->AddStringToken("summary", hourlyForecast->GetSummary());
- nextHours->AddStringToken("icon", hourlyForecast->GetIcon());
+ nextHours->AddStringToken((int)eRootMenuST::summary, hourlyForecast->GetSummary().c_str());
+ nextHours->AddStringToken((int)eRootMenuST::icon, hourlyForecast->GetIcon().c_str());
+ int hourlyIndex = nextHours->GetLoopIndex("hourly");
+ int numHourly = hourlyForecast->NumHourly();
+
+ vector<int> loopInfo;
+ loopInfo.push_back(numHourly);
+ loopInfo.push_back(0);
+ nextHours->SetLoop(loopInfo);
cForecast *fc = hourlyForecast->GetFirstHourly();
- int num = 1;
+ int i = 0;
while (fc) {
- map<string, string> tokens;
- tokens.insert(pair<string,string>("hourly[num]", IntToString(num++)));
- tokens.insert(pair<string,string>("hourly[timestamp]", fc->GetTimeString()));
- tokens.insert(pair<string,string>("hourly[temperature]", fc->GetTemperatureString()));
- tokens.insert(pair<string,string>("hourly[apparenttemperature]", fc->GetApparentTemperatureString()));
- tokens.insert(pair<string,string>("hourly[summary]", fc->GetSummary()));
- tokens.insert(pair<string,string>("hourly[icon]", fc->GetIcon()));
- tokens.insert(pair<string,string>("hourly[precipitationintensity]", fc->GetPrecipIntensityString()));
- tokens.insert(pair<string,string>("hourly[precipitationprobability]", IntToString(fc->GetPrecipProbabilityPercent())));
- tokens.insert(pair<string,string>("hourly[precipitationtype]", fc->GetPercipType()));
- tokens.insert(pair<string,string>("hourly[humidity]", IntToString(fc->GetHumidityPercent())));
- tokens.insert(pair<string,string>("hourly[windspeed]", fc->GetWindSpeedString()));
- tokens.insert(pair<string,string>("hourly[windbearing]", IntToString(fc->GetWindBearing())));
- tokens.insert(pair<string,string>("hourly[windbearingstring]", fc->GetWindBearingString()));
- tokens.insert(pair<string,string>("hourly[visibility]", fc->GetVisibilityString()));
- tokens.insert(pair<string,string>("hourly[cloudcover]", IntToString(fc->GetCloudCoverPercent())));
- tokens.insert(pair<string,string>("hourly[pressure]", fc->GetPressureString()));
- tokens.insert(pair<string,string>("hourly[ozone]", fc->GetOzoneString()));
- nextHours->AddLoopToken("hourly", tokens);
+ nextHours->AddLoopToken(hourlyIndex, i, (int)eForecastHourlyLT::num, IntToString(i+1).c_str());
+ nextHours->AddLoopToken(hourlyIndex, i, (int)eForecastHourlyLT::timestamp, fc->GetTimeString().c_str());
+ nextHours->AddLoopToken(hourlyIndex, i, (int)eForecastHourlyLT::temperature, fc->GetTemperatureString().c_str());
+ nextHours->AddLoopToken(hourlyIndex, i, (int)eForecastHourlyLT::apparenttemperature, fc->GetApparentTemperatureString().c_str());
+ nextHours->AddLoopToken(hourlyIndex, i, (int)eForecastHourlyLT::summary, fc->GetSummary().c_str());
+ nextHours->AddLoopToken(hourlyIndex, i, (int)eForecastHourlyLT::icon, fc->GetIcon().c_str());
+ nextHours->AddLoopToken(hourlyIndex, i, (int)eForecastHourlyLT::precipitationintensity, fc->GetPrecipIntensityString().c_str());
+ nextHours->AddLoopToken(hourlyIndex, i, (int)eForecastHourlyLT::precipitationprobability, IntToString(fc->GetPrecipProbabilityPercent()).c_str());
+ nextHours->AddLoopToken(hourlyIndex, i, (int)eForecastHourlyLT::precipitationtype, fc->GetPercipType().c_str());
+ nextHours->AddLoopToken(hourlyIndex, i, (int)eForecastHourlyLT::humidity, IntToString(fc->GetHumidityPercent()).c_str());
+ nextHours->AddLoopToken(hourlyIndex, i, (int)eForecastHourlyLT::windspeed, fc->GetWindSpeedString().c_str());
+ nextHours->AddLoopToken(hourlyIndex, i, (int)eForecastHourlyLT::windbearing, IntToString(fc->GetWindBearing()).c_str());
+ nextHours->AddLoopToken(hourlyIndex, i, (int)eForecastHourlyLT::windbearingstring, fc->GetWindBearingString().c_str());
+ nextHours->AddLoopToken(hourlyIndex, i, (int)eForecastHourlyLT::visibility, fc->GetWindBearingString().c_str());
+ nextHours->AddLoopToken(hourlyIndex, i, (int)eForecastHourlyLT::cloudcover, IntToString(fc->GetCloudCoverPercent()).c_str());
+ nextHours->AddLoopToken(hourlyIndex, i, (int)eForecastHourlyLT::pressure, fc->GetPressureString().c_str());
+ nextHours->AddLoopToken(hourlyIndex, i, (int)eForecastHourlyLT::ozone, fc->GetOzoneString().c_str());
fc = hourlyForecast->GetNext();
+ i++;
}
}
Add(nextHours, (lastRootMenuElement == 1)?true:false);
- skindesignerapi::cSkindesignerOsdItem *nextDays = new skindesignerapi::cSkindesignerOsdItem();
+ skindesignerapi::cSkindesignerOsdItem *nextDays = new skindesignerapi::cSkindesignerOsdItem(tkRoot);
string itemLabelNextDays = tr("Next 7 Days");
nextDays->SetText(itemLabelNextDays.c_str());
- nextDays->AddStringToken("menuitemtext", itemLabelNextDays.c_str());
- nextDays->AddIntToken("iscurrent", 0);
- nextDays->AddIntToken("ishourly", 0);
- nextDays->AddIntToken("isdaily", 1);
- nextDays->AddStringToken("city", weatherConfig.city);
- nextDays->AddStringToken("latitude", FloatToString(weatherConfig.lat));
- nextDays->AddStringToken("longitude", FloatToString(weatherConfig.lon));
+ nextDays->AddStringToken((int)eRootMenuST::menuitemtext, itemLabelNextDays.c_str());
+ nextDays->AddIntToken((int)eRootMenuIT::iscurrent, 0);
+ nextDays->AddIntToken((int)eRootMenuIT::ishourly, 0);
+ nextDays->AddIntToken((int)eRootMenuIT::isdaily, 1);
+ nextDays->AddStringToken((int)eRootMenuST::city, weatherConfig.city.c_str());
+ nextDays->AddStringToken((int)eRootMenuST::latitude, FloatToString(weatherConfig.lat).c_str());
+ nextDays->AddStringToken((int)eRootMenuST::longitude, FloatToString(weatherConfig.lon).c_str());
cForecasts *dailyForecast = forecastIO->GetDailyForecast();
if (dailyForecast) {
- nextDays->AddStringToken("summary", dailyForecast->GetSummary());
- nextDays->AddStringToken("icon", dailyForecast->GetIcon());
+ nextDays->AddStringToken((int)eRootMenuST::summary, dailyForecast->GetSummary().c_str());
+ nextDays->AddStringToken((int)eRootMenuST::icon, dailyForecast->GetIcon().c_str());
+
+ int dailyIndex = nextDays->GetLoopIndex("daily");
+ int numHourly = 0;
+ int numDaily = dailyForecast->NumDaily();
+
+ vector<int> loopInfo;
+ loopInfo.push_back(numHourly);
+ loopInfo.push_back(numDaily);
+ nextDays->SetLoop(loopInfo);
cForecast *fc = dailyForecast->GetFirstDaily();
+ int i=0;
while (fc) {
- map<string, string> tokens;
- tokens.insert(pair<string,string>("daily[day]", fc->GetDateString()));
- tokens.insert(pair<string,string>("daily[dayname]", fc->GetDayName()));
- tokens.insert(pair<string,string>("daily[temperaturemin]", fc->GetTemperatureMinString()));
- tokens.insert(pair<string,string>("daily[temperaturemintime]", fc->GetTemperatureMinTimeString()));
- tokens.insert(pair<string,string>("daily[temperaturemax]", fc->GetTemperatureMaxString()));
- tokens.insert(pair<string,string>("daily[temperaturemaxtime]", fc->GetTemperatureMaxTimeString()));
- tokens.insert(pair<string,string>("daily[summary]", fc->GetSummary()));
- tokens.insert(pair<string,string>("daily[icon]", fc->GetIcon()));
- tokens.insert(pair<string,string>("daily[precipitationintensity]", fc->GetPrecipIntensityString()));
- tokens.insert(pair<string,string>("daily[precipitationprobability]", IntToString(fc->GetPrecipProbabilityPercent())));
- tokens.insert(pair<string,string>("daily[precipitationtype]", fc->GetPercipType()));
- tokens.insert(pair<string,string>("daily[humidity]", IntToString(fc->GetHumidityPercent())));
- tokens.insert(pair<string,string>("daily[windspeed]", fc->GetWindSpeedString()));
- tokens.insert(pair<string,string>("daily[windbearing]", IntToString(fc->GetWindBearing())));
- tokens.insert(pair<string,string>("daily[windbearingstring]", fc->GetWindBearingString()));
- tokens.insert(pair<string,string>("daily[visibility]", fc->GetVisibilityString()));
- tokens.insert(pair<string,string>("daily[cloudcover]", IntToString(fc->GetCloudCoverPercent())));
- tokens.insert(pair<string,string>("daily[pressure]", fc->GetPressureString()));
- tokens.insert(pair<string,string>("daily[ozone]", fc->GetOzoneString()));
- nextDays->AddLoopToken("daily", tokens);
+ nextDays->AddLoopToken(dailyIndex, i, (int)eForecastDailyLT::day, fc->GetDateString().c_str());
+ nextDays->AddLoopToken(dailyIndex, i, (int)eForecastDailyLT::dayname, fc->GetDayName().c_str());
+ nextDays->AddLoopToken(dailyIndex, i, (int)eForecastDailyLT::temperaturemin, fc->GetTemperatureMinString().c_str());
+ nextDays->AddLoopToken(dailyIndex, i, (int)eForecastDailyLT::temperaturemintime, fc->GetTemperatureMinTimeString().c_str());
+ nextDays->AddLoopToken(dailyIndex, i, (int)eForecastDailyLT::temperaturemax, fc->GetTemperatureMaxString().c_str());
+ nextDays->AddLoopToken(dailyIndex, i, (int)eForecastDailyLT::temperaturemaxtime, fc->GetTemperatureMaxTimeString().c_str());
+ nextDays->AddLoopToken(dailyIndex, i, (int)eForecastDailyLT::summary, fc->GetSummary().c_str());
+ nextDays->AddLoopToken(dailyIndex, i, (int)eForecastDailyLT::icon, fc->GetIcon().c_str());
+ nextDays->AddLoopToken(dailyIndex, i, (int)eForecastDailyLT::precipitationintensity, fc->GetPrecipIntensityString().c_str());
+ nextDays->AddLoopToken(dailyIndex, i, (int)eForecastDailyLT::precipitationprobability, IntToString(fc->GetPrecipProbabilityPercent()).c_str());
+ nextDays->AddLoopToken(dailyIndex, i, (int)eForecastDailyLT::precipitationtype, fc->GetPercipType().c_str());
+ nextDays->AddLoopToken(dailyIndex, i, (int)eForecastDailyLT::humidity, IntToString(fc->GetHumidityPercent()).c_str());
+ nextDays->AddLoopToken(dailyIndex, i, (int)eForecastDailyLT::windspeed, fc->GetWindSpeedString().c_str());
+ nextDays->AddLoopToken(dailyIndex, i, (int)eForecastDailyLT::windbearing, IntToString(fc->GetWindBearing()).c_str());
+ nextDays->AddLoopToken(dailyIndex, i, (int)eForecastDailyLT::windbearingstring, fc->GetWindBearingString().c_str());
+ nextDays->AddLoopToken(dailyIndex, i, (int)eForecastDailyLT::visibility, fc->GetVisibilityString().c_str());
+ nextDays->AddLoopToken(dailyIndex, i, (int)eForecastDailyLT::cloudcover, IntToString(fc->GetCloudCoverPercent()).c_str());
+ nextDays->AddLoopToken(dailyIndex, i, (int)eForecastDailyLT::pressure, fc->GetPressureString().c_str());
+ nextDays->AddLoopToken(dailyIndex, i, (int)eForecastDailyLT::ozone, fc->GetOzoneString().c_str());
fc = dailyForecast->GetNext();
+ i++;
}
}
@@ -198,11 +217,14 @@ void cWeatherOsd::SetRootMenu(void) {
void cWeatherOsd::SetDetailViewCurrent(void) {
isDetailedView = true;
- SetPluginMenu(meDetailCurrent, skindesignerapi::mtText);
- ClearTokens();
+ SetPluginMenu((int)eMenus::detailCurrent, skindesignerapi::mtText);
Clear();
SetTitle(tr("Current Weather"));
+ skindesignerapi::cTokenContainer *tkCurrent = GetTokenContainer((int)eMenus::detailCurrent);
+ SetTokenContainer(tkCurrent);
+ ClearTokens();
+
cForecast *current = NULL;
cForecasts *daily = NULL;
cForecast *today = NULL;
@@ -243,42 +265,45 @@ void cWeatherOsd::SetDetailViewCurrent(void) {
plainText << tr("Ozone") << ": " << current->GetOzoneString() << " DU" << "\n";
SetText(plainText.str().c_str());
-
- AddStringToken("menuheader", tr("Current Weather"));
- AddStringToken("city", weatherConfig.city);
- AddStringToken("latitude", FloatToString(weatherConfig.lat));
- AddStringToken("longitude", FloatToString(weatherConfig.lon));
- AddStringToken("timestamp", current->GetDateTimeString());
- AddStringToken("temperature", current->GetTemperatureString());
- AddStringToken("apparenttemperature", current->GetApparentTemperatureString());
- AddStringToken("mintemperature", today->GetTemperatureMinString());
- AddStringToken("maxtemperature", today->GetTemperatureMaxString());
- AddStringToken("summary", current->GetSummary());
- AddStringToken("icon", current->GetIcon());
- AddStringToken("precipitationintensity", current->GetPrecipIntensityString());
- AddIntToken("precipitationprobability", current->GetPrecipProbabilityPercent());
- AddStringToken("precipitationtype", current->GetPercipType());
- AddIntToken("humidity", current->GetHumidityPercent());
- AddStringToken("windspeed", current->GetWindSpeedString());
- AddIntToken("windbearing", current->GetWindBearing());
- AddStringToken("windbearingstring", current->GetWindBearingString());
- AddStringToken("visibility", current->GetVisibilityString());
- AddIntToken("cloudcover", current->GetCloudCoverPercent());
- AddStringToken("pressure", current->GetPressureString());
- AddStringToken("ozone", current->GetOzoneString());
+ AddStringToken((int)eDetailCurrentST::menuheader, tr("Current Weather"));
+ AddStringToken((int)eDetailCurrentST::city, weatherConfig.city.c_str());
+ AddStringToken((int)eDetailCurrentST::latitude, FloatToString(weatherConfig.lat).c_str());
+ AddStringToken((int)eDetailCurrentST::longitude, FloatToString(weatherConfig.lon).c_str());
+ AddStringToken((int)eDetailCurrentST::timestamp, current->GetDateTimeString().c_str());
+ AddStringToken((int)eDetailCurrentST::temperature, current->GetTemperatureString().c_str());
+ AddStringToken((int)eDetailCurrentST::apparenttemperature, current->GetApparentTemperatureString().c_str());
+ AddStringToken((int)eDetailCurrentST::mintemperature, today->GetTemperatureMinString().c_str());
+ AddStringToken((int)eDetailCurrentST::maxtemperature, today->GetTemperatureMaxString().c_str());
+ AddStringToken((int)eDetailCurrentST::summary, current->GetSummary().c_str());
+ AddStringToken((int)eDetailCurrentST::icon, current->GetIcon().c_str());
+ AddStringToken((int)eDetailCurrentST::precipitationintensity, current->GetPrecipIntensityString().c_str());
+ AddIntToken((int)eDetailCurrentIT::precipitationprobability, current->GetPrecipProbabilityPercent());
+ AddStringToken((int)eDetailCurrentST::precipitationtype, current->GetPercipType().c_str());
+ AddIntToken((int)eDetailCurrentIT::humidity, current->GetHumidityPercent());
+ AddStringToken((int)eDetailCurrentST::windspeed, current->GetWindSpeedString().c_str());
+ AddIntToken((int)eDetailCurrentIT::windbearing, current->GetWindBearing());
+ AddStringToken((int)eDetailCurrentST::windbearingstring, current->GetWindBearingString().c_str());
+ AddStringToken((int)eDetailCurrentST::visibility, current->GetVisibilityString().c_str());
+ AddIntToken((int)eDetailCurrentIT::cloudcover, current->GetCloudCoverPercent());
+ AddStringToken((int)eDetailCurrentST::pressure, current->GetPressureString().c_str());
+ AddStringToken((int)eDetailCurrentST::ozone, current->GetOzoneString().c_str());
forecastIO->UnlockForecasts();
Display();
+
}
void cWeatherOsd::SetDetailViewHourly(void) {
isDetailedView = true;
- SetPluginMenu(meDetailHourly, skindesignerapi::mtText);
+ SetPluginMenu((int)eMenus::detailHourly, skindesignerapi::mtText);
Clear();
- ClearTokens();
SetTitle(tr("Weather in the next 48 Hours"));
+ skindesignerapi::cTokenContainer *tkHourly = GetTokenContainer((int)eMenus::detailHourly);
+ SetTokenContainer(tkHourly);
+ ClearTokens();
+
forecastIO->LockForecasts();
cForecasts *hourly = forecastIO->GetHourlyForecast();
if (!hourly) {
@@ -287,36 +312,40 @@ void cWeatherOsd::SetDetailViewHourly(void) {
}
stringstream plainText;
- cForecast *fc = hourly->GetFirstHourly();
- AddStringToken("menuheader", tr("Weather in the next 48 Hours"));
- AddStringToken("summary", hourly->GetSummary());
- AddStringToken("icon", hourly->GetIcon());
- AddStringToken("city", weatherConfig.city);
- AddStringToken("latitude", FloatToString(weatherConfig.lat));
- AddStringToken("longitude", FloatToString(weatherConfig.lon));
+ AddStringToken((int)eDetailHourlyST::menuheader, tr("Weather in the next 48 Hours"));
+ AddStringToken((int)eDetailHourlyST::summary, hourly->GetSummary().c_str());
+ AddStringToken((int)eDetailHourlyST::icon, hourly->GetIcon().c_str());
+ AddStringToken((int)eDetailHourlyST::city, weatherConfig.city.c_str());
+ AddStringToken((int)eDetailHourlyST::latitude, FloatToString(weatherConfig.lat).c_str());
+ AddStringToken((int)eDetailHourlyST::longitude, FloatToString(weatherConfig.lon).c_str());
+
+ int hourlyIndex = GetLoopIndex("hourly");
+ int numHourly = hourly->NumHourly();
+ vector<int> loopInfo;
+ loopInfo.push_back(numHourly);
+ SetLoop(loopInfo);
- int num = 1;
+ cForecast *fc = hourly->GetFirstHourly();
+ int i = 0;
while (fc) {
- map<string, string> tokens;
- tokens.insert(pair<string,string>("hourly[num]", IntToString(num++)));
- tokens.insert(pair<string,string>("hourly[timestamp]", fc->GetTimeString()));
- tokens.insert(pair<string,string>("hourly[temperature]", fc->GetTemperatureString()));
- tokens.insert(pair<string,string>("hourly[apparenttemperature]", fc->GetApparentTemperatureString()));
- tokens.insert(pair<string,string>("hourly[summary]", fc->GetSummary()));
- tokens.insert(pair<string,string>("hourly[icon]", fc->GetIcon()));
- tokens.insert(pair<string,string>("hourly[precipitationintensity]", fc->GetPrecipIntensityString()));
- tokens.insert(pair<string,string>("hourly[precipitationprobability]", IntToString(fc->GetPrecipProbabilityPercent())));
- tokens.insert(pair<string,string>("hourly[precipitationtype]", fc->GetPercipType()));
- tokens.insert(pair<string,string>("hourly[humidity]", IntToString(fc->GetHumidityPercent())));
- tokens.insert(pair<string,string>("hourly[windspeed]", fc->GetWindSpeedString()));
- tokens.insert(pair<string,string>("hourly[windbearing]", IntToString(fc->GetWindBearing())));
- tokens.insert(pair<string,string>("hourly[windbearingstring]", fc->GetWindBearingString()));
- tokens.insert(pair<string,string>("hourly[visibility]", fc->GetVisibilityString()));
- tokens.insert(pair<string,string>("hourly[cloudcover]", IntToString(fc->GetCloudCoverPercent())));
- tokens.insert(pair<string,string>("hourly[pressure]", fc->GetPressureString()));
- tokens.insert(pair<string,string>("hourly[ozone]", fc->GetOzoneString()));
- AddLoopToken("hourly", tokens);
+ AddLoopToken(hourlyIndex, i, (int)eForecastHourlyLT::num, IntToString(i+1).c_str());
+ AddLoopToken(hourlyIndex, i, (int)eForecastHourlyLT::timestamp, fc->GetTimeString().c_str());
+ AddLoopToken(hourlyIndex, i, (int)eForecastHourlyLT::temperature, fc->GetTemperatureString().c_str());
+ AddLoopToken(hourlyIndex, i, (int)eForecastHourlyLT::apparenttemperature, fc->GetApparentTemperatureString().c_str());
+ AddLoopToken(hourlyIndex, i, (int)eForecastHourlyLT::summary, fc->GetSummary().c_str());
+ AddLoopToken(hourlyIndex, i, (int)eForecastHourlyLT::icon, fc->GetIcon().c_str());
+ AddLoopToken(hourlyIndex, i, (int)eForecastHourlyLT::precipitationintensity, fc->GetPrecipIntensityString().c_str());
+ AddLoopToken(hourlyIndex, i, (int)eForecastHourlyLT::precipitationprobability, IntToString(fc->GetPrecipProbabilityPercent()).c_str());
+ AddLoopToken(hourlyIndex, i, (int)eForecastHourlyLT::precipitationtype, fc->GetPercipType().c_str());
+ AddLoopToken(hourlyIndex, i, (int)eForecastHourlyLT::humidity, IntToString(fc->GetHumidityPercent()).c_str());
+ AddLoopToken(hourlyIndex, i, (int)eForecastHourlyLT::windspeed, fc->GetWindSpeedString().c_str());
+ AddLoopToken(hourlyIndex, i, (int)eForecastHourlyLT::windbearing, IntToString(fc->GetWindBearing()).c_str());
+ AddLoopToken(hourlyIndex, i, (int)eForecastHourlyLT::windbearingstring, fc->GetWindBearingString().c_str());
+ AddLoopToken(hourlyIndex, i, (int)eForecastHourlyLT::visibility, fc->GetWindBearingString().c_str());
+ AddLoopToken(hourlyIndex, i, (int)eForecastHourlyLT::cloudcover, IntToString(fc->GetCloudCoverPercent()).c_str());
+ AddLoopToken(hourlyIndex, i, (int)eForecastHourlyLT::pressure, fc->GetPressureString().c_str());
+ AddLoopToken(hourlyIndex, i, (int)eForecastHourlyLT::ozone, fc->GetOzoneString().c_str());
plainText << fc->GetDateTimeString() << ": " << fc->GetSummary() << "\n";
plainText << tr("Temperature") << ": " << fc->GetTemperatureString() << "°C, " << tr("felt") << " " << fc->GetApparentTemperatureString() << "°C""\n";
@@ -326,6 +355,7 @@ void cWeatherOsd::SetDetailViewHourly(void) {
plainText << "\n";
fc = hourly->GetNext();
+ i++;
}
forecastIO->UnlockForecasts();
@@ -335,11 +365,14 @@ void cWeatherOsd::SetDetailViewHourly(void) {
void cWeatherOsd::SetDetailViewDaily(void) {
isDetailedView = true;
- SetPluginMenu(meDetailDaily, skindesignerapi::mtText);
+ SetPluginMenu((int)eMenus::detailDaily, skindesignerapi::mtText);
Clear();
- ClearTokens();
SetTitle(tr("Weather the next 7 days"));
+ skindesignerapi::cTokenContainer *tkDaily = GetTokenContainer((int)eMenus::detailDaily);
+ SetTokenContainer(tkDaily);
+ ClearTokens();
+
forecastIO->LockForecasts();
cForecasts *daily = forecastIO->GetDailyForecast();
if (!daily) {
@@ -348,38 +381,43 @@ void cWeatherOsd::SetDetailViewDaily(void) {
}
stringstream plainText;
- cForecast *fc = daily->GetFirstDaily();
- AddStringToken("menuheader", tr("Weather the next 7 days"));
- AddStringToken("summary", daily->GetSummary());
- AddStringToken("icon", daily->GetIcon());
- AddStringToken("city", weatherConfig.city);
- AddStringToken("latitude", FloatToString(weatherConfig.lat));
- AddStringToken("longitude", FloatToString(weatherConfig.lon));
+ AddStringToken((int)eDetailDailyST::menuheader, tr("Weather the next 7 days"));
+ AddStringToken((int)eDetailDailyST::summary, daily->GetSummary().c_str());
+ AddStringToken((int)eDetailDailyST::icon, daily->GetIcon().c_str());
+ AddStringToken((int)eDetailDailyST::city, weatherConfig.city.c_str());
+ AddStringToken((int)eDetailDailyST::latitude, FloatToString(weatherConfig.lat).c_str());
+ AddStringToken((int)eDetailDailyST::longitude, FloatToString(weatherConfig.lon).c_str());
+
+ int dailyIndex = GetLoopIndex("daily");
+ int numDaily = daily->NumDaily();
+ vector<int> loopInfo;
+ loopInfo.push_back(numDaily);
+ SetLoop(loopInfo);
+ cForecast *fc = daily->GetFirstDaily();
+ int i=0;
while (fc) {
- map<string, string> tokens;
- tokens.insert(pair<string,string>("daily[day]", fc->GetDateString()));
- tokens.insert(pair<string,string>("daily[dayname]", fc->GetDayName()));
- tokens.insert(pair<string,string>("daily[temperaturemin]", fc->GetTemperatureMinString()));
- tokens.insert(pair<string,string>("daily[temperaturemintime]", fc->GetTemperatureMinTimeString()));
- tokens.insert(pair<string,string>("daily[temperaturemax]", fc->GetTemperatureMaxString()));
- tokens.insert(pair<string,string>("daily[temperaturemaxtime]", fc->GetTemperatureMaxTimeString()));
- tokens.insert(pair<string,string>("daily[summary]", fc->GetSummary()));
- tokens.insert(pair<string,string>("daily[icon]", fc->GetIcon()));
- tokens.insert(pair<string,string>("daily[precipitationintensity]", fc->GetPrecipIntensityString()));
- tokens.insert(pair<string,string>("daily[precipitationprobability]", IntToString(fc->GetPrecipProbabilityPercent())));
- tokens.insert(pair<string,string>("daily[precipitationtype]", fc->GetPercipType()));
- tokens.insert(pair<string,string>("daily[humidity]", IntToString(fc->GetHumidityPercent())));
- tokens.insert(pair<string,string>("daily[windspeed]", fc->GetWindSpeedString()));
- tokens.insert(pair<string,string>("daily[windbearing]", IntToString(fc->GetWindBearing())));
- tokens.insert(pair<string,string>("daily[windbearingstring]", fc->GetWindBearingString()));
- tokens.insert(pair<string,string>("daily[visibility]", fc->GetVisibilityString()));
- tokens.insert(pair<string,string>("daily[cloudcover]", IntToString(fc->GetCloudCoverPercent())));
- tokens.insert(pair<string,string>("daily[pressure]", fc->GetPressureString()));
- tokens.insert(pair<string,string>("daily[ozone]", fc->GetOzoneString()));
- AddLoopToken("daily", tokens);
-
+ AddLoopToken(dailyIndex, i, (int)eForecastDailyLT::day, fc->GetDateString().c_str());
+ AddLoopToken(dailyIndex, i, (int)eForecastDailyLT::dayname, fc->GetDayName().c_str());
+ AddLoopToken(dailyIndex, i, (int)eForecastDailyLT::temperaturemin, fc->GetTemperatureMinString().c_str());
+ AddLoopToken(dailyIndex, i, (int)eForecastDailyLT::temperaturemintime, fc->GetTemperatureMinTimeString().c_str());
+ AddLoopToken(dailyIndex, i, (int)eForecastDailyLT::temperaturemax, fc->GetTemperatureMaxString().c_str());
+ AddLoopToken(dailyIndex, i, (int)eForecastDailyLT::temperaturemaxtime, fc->GetTemperatureMaxTimeString().c_str());
+ AddLoopToken(dailyIndex, i, (int)eForecastDailyLT::summary, fc->GetSummary().c_str());
+ AddLoopToken(dailyIndex, i, (int)eForecastDailyLT::icon, fc->GetIcon().c_str());
+ AddLoopToken(dailyIndex, i, (int)eForecastDailyLT::precipitationintensity, fc->GetPrecipIntensityString().c_str());
+ AddLoopToken(dailyIndex, i, (int)eForecastDailyLT::precipitationprobability, IntToString(fc->GetPrecipProbabilityPercent()).c_str());
+ AddLoopToken(dailyIndex, i, (int)eForecastDailyLT::precipitationtype, fc->GetPercipType().c_str());
+ AddLoopToken(dailyIndex, i, (int)eForecastDailyLT::humidity, IntToString(fc->GetHumidityPercent()).c_str());
+ AddLoopToken(dailyIndex, i, (int)eForecastDailyLT::windspeed, fc->GetWindSpeedString().c_str());
+ AddLoopToken(dailyIndex, i, (int)eForecastDailyLT::windbearing, IntToString(fc->GetWindBearing()).c_str());
+ AddLoopToken(dailyIndex, i, (int)eForecastDailyLT::windbearingstring, fc->GetWindBearingString().c_str());
+ AddLoopToken(dailyIndex, i, (int)eForecastDailyLT::visibility, fc->GetVisibilityString().c_str());
+ AddLoopToken(dailyIndex, i, (int)eForecastDailyLT::cloudcover, IntToString(fc->GetCloudCoverPercent()).c_str());
+ AddLoopToken(dailyIndex, i, (int)eForecastDailyLT::pressure, fc->GetPressureString().c_str());
+ AddLoopToken(dailyIndex, i, (int)eForecastDailyLT::ozone, fc->GetOzoneString().c_str());
+
plainText << fc->GetDayName() << " " << fc->GetDateString() << ": " << fc->GetSummary() << "\n";
plainText << tr("Minimum Temperature") << ": " << fc->GetTemperatureMinString() << "°C " << tr("at") << " " << fc->GetTemperatureMinTimeString() << " ,";
plainText << tr("Maximum Temperature") << ": " << fc->GetTemperatureMaxString() << "°C " << tr("at") << " " << fc->GetTemperatureMaxTimeString() << "\n";
@@ -391,9 +429,148 @@ void cWeatherOsd::SetDetailViewDaily(void) {
plainText << "\n";
fc = daily->GetNext();
+ i++;
}
forecastIO->UnlockForecasts();
SetText(plainText.str().c_str());
Display();
}
+
+void cWeatherOsd::DefineTokens(eMenus menu, skindesignerapi::cTokenContainer *tk) {
+ if (menu == eMenus::root) {
+ tk->DefineIntToken("{current}", (int)eRootMenuIT::current);
+ tk->DefineIntToken("{iscurrent}", (int)eRootMenuIT::iscurrent);
+ tk->DefineIntToken("{ishourly}", (int)eRootMenuIT::ishourly);
+ tk->DefineIntToken("{isdaily}", (int)eRootMenuIT::isdaily);
+ tk->DefineIntToken("{precipitationprobability}", (int)eRootMenuIT::precipitationprobability);
+ tk->DefineIntToken("{humidity}", (int)eRootMenuIT::humidity);
+ tk->DefineIntToken("{windbearing}", (int)eRootMenuIT::windbearing);
+ tk->DefineIntToken("{cloudcover}", (int)eRootMenuIT::cloudcover);
+ tk->DefineStringToken("{menuitemtext}", (int)eRootMenuST::menuitemtext);
+ tk->DefineStringToken("{city}", (int)eRootMenuST::city);
+ tk->DefineStringToken("{latitude}", (int)eRootMenuST::latitude);
+ tk->DefineStringToken("{longitude}", (int)eRootMenuST::longitude);
+ tk->DefineStringToken("{timestamp}", (int)eRootMenuST::timestamp);
+ tk->DefineStringToken("{temperature}", (int)eRootMenuST::temperature);
+ tk->DefineStringToken("{apparenttemperature}", (int)eRootMenuST::apparenttemperature);
+ tk->DefineStringToken("{summary}", (int)eRootMenuST::summary);
+ tk->DefineStringToken("{icon}", (int)eRootMenuST::icon);
+ tk->DefineStringToken("{precipitationintensity}", (int)eRootMenuST::precipitationintensity);
+ tk->DefineStringToken("{precipitationtype}", (int)eRootMenuST::precipitationtype);
+ tk->DefineStringToken("{windspeed}", (int)eRootMenuST::windspeed);
+ tk->DefineStringToken("{windbearingstring}", (int)eRootMenuST::windbearingstring);
+ tk->DefineStringToken("{visibility}", (int)eRootMenuST::visibility);
+ tk->DefineStringToken("{pressure}", (int)eRootMenuST::pressure);
+ tk->DefineStringToken("{ozone}", (int)eRootMenuST::ozone);
+ tk->DefineLoopToken("{hourly[num]}", (int)eForecastHourlyLT::num);
+ tk->DefineLoopToken("{hourly[timestamp]}", (int)eForecastHourlyLT::timestamp);
+ tk->DefineLoopToken("{hourly[temperature]}", (int)eForecastHourlyLT::temperature);
+ tk->DefineLoopToken("{hourly[apparenttemperature]}", (int)eForecastHourlyLT::apparenttemperature);
+ tk->DefineLoopToken("{hourly[summary]}", (int)eForecastHourlyLT::summary);
+ tk->DefineLoopToken("{hourly[icon]}", (int)eForecastHourlyLT::icon);
+ tk->DefineLoopToken("{hourly[precipitationintensity]}", (int)eForecastHourlyLT::precipitationintensity);
+ tk->DefineLoopToken("{hourly[precipitationprobability]}", (int)eForecastHourlyLT::precipitationprobability);
+ tk->DefineLoopToken("{hourly[precipitationtype]}", (int)eForecastHourlyLT::precipitationtype);
+ tk->DefineLoopToken("{hourly[humidity]}", (int)eForecastHourlyLT::humidity);
+ tk->DefineLoopToken("{hourly[windspeed]}", (int)eForecastHourlyLT::windspeed);
+ tk->DefineLoopToken("{hourly[windbearing]}", (int)eForecastHourlyLT::windbearing);
+ tk->DefineLoopToken("{hourly[windbearingstring]}", (int)eForecastHourlyLT::windbearingstring);
+ tk->DefineLoopToken("{hourly[visibility]}", (int)eForecastHourlyLT::visibility);
+ tk->DefineLoopToken("{hourly[cloudcover]}", (int)eForecastHourlyLT::cloudcover);
+ tk->DefineLoopToken("{hourly[pressure]}", (int)eForecastHourlyLT::pressure);
+ tk->DefineLoopToken("{hourly[ozone]}", (int)eForecastHourlyLT::ozone);
+ tk->DefineLoopToken("{daily[day]}", (int)eForecastDailyLT::day);
+ tk->DefineLoopToken("{daily[dayname]}", (int)eForecastDailyLT::dayname);
+ tk->DefineLoopToken("{daily[temperaturemin]}", (int)eForecastDailyLT::temperaturemin);
+ tk->DefineLoopToken("{daily[temperaturemintime]}", (int)eForecastDailyLT::temperaturemintime);
+ tk->DefineLoopToken("{daily[temperaturemax]}", (int)eForecastDailyLT::temperaturemax);
+ tk->DefineLoopToken("{daily[temperaturemaxtime]}", (int)eForecastDailyLT::temperaturemaxtime);
+ tk->DefineLoopToken("{daily[summary]}", (int)eForecastDailyLT::summary);
+ tk->DefineLoopToken("{daily[icon]}", (int)eForecastDailyLT::icon);
+ tk->DefineLoopToken("{daily[precipitationintensity]}", (int)eForecastDailyLT::precipitationintensity);
+ tk->DefineLoopToken("{daily[precipitationprobability]}", (int)eForecastDailyLT::precipitationprobability);
+ tk->DefineLoopToken("{daily[precipitationtype]}", (int)eForecastDailyLT::precipitationtype);
+ tk->DefineLoopToken("{daily[humidity]}", (int)eForecastDailyLT::humidity);
+ tk->DefineLoopToken("{daily[windspeed]}", (int)eForecastDailyLT::windspeed);
+ tk->DefineLoopToken("{daily[windbearing]}", (int)eForecastDailyLT::windbearing);
+ tk->DefineLoopToken("{daily[windbearingstring]}", (int)eForecastDailyLT::windbearingstring);
+ tk->DefineLoopToken("{daily[visibility]}", (int)eForecastDailyLT::visibility);
+ tk->DefineLoopToken("{daily[cloudcover]}", (int)eForecastDailyLT::cloudcover);
+ tk->DefineLoopToken("{daily[pressure]}", (int)eForecastDailyLT::pressure);
+ tk->DefineLoopToken("{daily[ozone]}", (int)eForecastDailyLT::ozone);
+ } else if (menu == eMenus::detailCurrent) {
+ tk->DefineIntToken("{precipitationprobability}", (int)eDetailCurrentIT::precipitationprobability);
+ tk->DefineIntToken("{humidity}", (int)eDetailCurrentIT::humidity);
+ tk->DefineIntToken("{windbearing}", (int)eDetailCurrentIT::windbearing);
+ tk->DefineIntToken("{cloudcover}", (int)eDetailCurrentIT::cloudcover);
+ tk->DefineStringToken("{menuheader}", (int)eDetailCurrentST::menuheader);
+ tk->DefineStringToken("{city}", (int)eDetailCurrentST::city);
+ tk->DefineStringToken("{latitude}", (int)eDetailCurrentST::latitude);
+ tk->DefineStringToken("{longitude}", (int)eDetailCurrentST::longitude);
+ tk->DefineStringToken("{timestamp}", (int)eDetailCurrentST::timestamp);
+ tk->DefineStringToken("{temperature}", (int)eDetailCurrentST::temperature);
+ tk->DefineStringToken("{apparenttemperature}", (int)eDetailCurrentST::apparenttemperature);
+ tk->DefineStringToken("{mintemperature}", (int)eDetailCurrentST::mintemperature);
+ tk->DefineStringToken("{maxtemperature}", (int)eDetailCurrentST::maxtemperature);
+ tk->DefineStringToken("{summary}", (int)eDetailCurrentST::summary);
+ tk->DefineStringToken("{icon}", (int)eDetailCurrentST::icon);
+ tk->DefineStringToken("{precipitationintensity}", (int)eDetailCurrentST::precipitationintensity);
+ tk->DefineStringToken("{precipitationtype}", (int)eDetailCurrentST::precipitationtype);
+ tk->DefineStringToken("{windspeed}", (int)eDetailCurrentST::windspeed);
+ tk->DefineStringToken("{windbearingstring}", (int)eDetailCurrentST::windbearingstring);
+ tk->DefineStringToken("{visibility}", (int)eDetailCurrentST::visibility);
+ tk->DefineStringToken("{pressure}", (int)eDetailCurrentST::pressure);
+ tk->DefineStringToken("{ozone}", (int)eDetailCurrentST::ozone);
+ } else if (menu == eMenus::detailHourly) {
+ tk->DefineStringToken("{menuheader}", (int)eDetailHourlyST::menuheader);
+ tk->DefineStringToken("{summary}", (int)eDetailHourlyST::summary);
+ tk->DefineStringToken("{icon}", (int)eDetailHourlyST::icon);
+ tk->DefineStringToken("{city}", (int)eDetailHourlyST::city);
+ tk->DefineStringToken("{latitude}", (int)eDetailHourlyST::latitude);
+ tk->DefineStringToken("{longitude}", (int)eDetailHourlyST::longitude);
+ tk->DefineLoopToken("{hourly[num]}", (int)eForecastHourlyLT::num);
+ tk->DefineLoopToken("{hourly[timestamp]}", (int)eForecastHourlyLT::timestamp);
+ tk->DefineLoopToken("{hourly[temperature]}", (int)eForecastHourlyLT::temperature);
+ tk->DefineLoopToken("{hourly[apparenttemperature]}", (int)eForecastHourlyLT::apparenttemperature);
+ tk->DefineLoopToken("{hourly[summary]}", (int)eForecastHourlyLT::summary);
+ tk->DefineLoopToken("{hourly[icon]}", (int)eForecastHourlyLT::icon);
+ tk->DefineLoopToken("{hourly[precipitationintensity]}", (int)eForecastHourlyLT::precipitationintensity);
+ tk->DefineLoopToken("{hourly[precipitationprobability]}", (int)eForecastHourlyLT::precipitationprobability);
+ tk->DefineLoopToken("{hourly[precipitationtype]}", (int)eForecastHourlyLT::precipitationtype);
+ tk->DefineLoopToken("{hourly[humidity]}", (int)eForecastHourlyLT::humidity);
+ tk->DefineLoopToken("{hourly[windspeed]}", (int)eForecastHourlyLT::windspeed);
+ tk->DefineLoopToken("{hourly[windbearing]}", (int)eForecastHourlyLT::windbearing);
+ tk->DefineLoopToken("{hourly[windbearingstring]}", (int)eForecastHourlyLT::windbearingstring);
+ tk->DefineLoopToken("{hourly[visibility]}", (int)eForecastHourlyLT::visibility);
+ tk->DefineLoopToken("{hourly[cloudcover]}", (int)eForecastHourlyLT::cloudcover);
+ tk->DefineLoopToken("{hourly[pressure]}", (int)eForecastHourlyLT::pressure);
+ tk->DefineLoopToken("{hourly[ozone]}", (int)eForecastHourlyLT::ozone);
+ } else if (menu == eMenus::detailDaily) {
+ tk->DefineStringToken("{menuheader}", (int)eDetailDailyST::menuheader);
+ tk->DefineStringToken("{summary}", (int)eDetailDailyST::summary);
+ tk->DefineStringToken("{icon}", (int)eDetailDailyST::icon);
+ tk->DefineStringToken("{city}", (int)eDetailDailyST::city);
+ tk->DefineStringToken("{latitude}", (int)eDetailDailyST::latitude);
+ tk->DefineStringToken("{longitude}", (int)eDetailDailyST::longitude);
+ tk->DefineLoopToken("{daily[day]}", (int)eForecastDailyLT::day);
+ tk->DefineLoopToken("{daily[dayname]}", (int)eForecastDailyLT::dayname);
+ tk->DefineLoopToken("{daily[temperaturemin]}", (int)eForecastDailyLT::temperaturemin);
+ tk->DefineLoopToken("{daily[temperaturemintime]}", (int)eForecastDailyLT::temperaturemintime);
+ tk->DefineLoopToken("{daily[temperaturemax]}", (int)eForecastDailyLT::temperaturemax);
+ tk->DefineLoopToken("{daily[temperaturemaxtime]}", (int)eForecastDailyLT::temperaturemaxtime);
+ tk->DefineLoopToken("{daily[summary]}", (int)eForecastDailyLT::summary);
+ tk->DefineLoopToken("{daily[icon]}", (int)eForecastDailyLT::icon);
+ tk->DefineLoopToken("{daily[precipitationintensity]}", (int)eForecastDailyLT::precipitationintensity);
+ tk->DefineLoopToken("{daily[precipitationprobability]}", (int)eForecastDailyLT::precipitationprobability);
+ tk->DefineLoopToken("{daily[precipitationtype]}", (int)eForecastDailyLT::precipitationtype);
+ tk->DefineLoopToken("{daily[humidity]}", (int)eForecastDailyLT::humidity);
+ tk->DefineLoopToken("{daily[windspeed]}", (int)eForecastDailyLT::windspeed);
+ tk->DefineLoopToken("{daily[windbearing]}", (int)eForecastDailyLT::windbearing);
+ tk->DefineLoopToken("{daily[windbearingstring]}", (int)eForecastDailyLT::windbearingstring);
+ tk->DefineLoopToken("{daily[visibility]}", (int)eForecastDailyLT::visibility);
+ tk->DefineLoopToken("{daily[cloudcover]}", (int)eForecastDailyLT::cloudcover);
+ tk->DefineLoopToken("{daily[pressure]}", (int)eForecastDailyLT::pressure);
+ tk->DefineLoopToken("{daily[ozone]}", (int)eForecastDailyLT::ozone);
+ }
+}