void WeatherPlugin::element_end(const char *el) { if (!strcmp(el, "obst")){ setLocation(m_data.c_str()); m_data = ""; return; } if (!strcmp(el, "lsup")){ setUpdated(m_data.c_str()); m_data = ""; return; } if (!strcmp(el, "sunr") && m_bCC){ setSun_raise(m_data.c_str()); m_data = ""; return; } if (!strcmp(el, "suns") && m_bCC){ setSun_set(m_data.c_str()); m_data = ""; return; } if (!strcmp(el, "vis") && m_bCC){ setVisibility(m_data.c_str()); m_data = ""; return; } if (!strcmp(el, "tmp") && m_bCC){ setTemperature(atol(m_data.c_str())); m_data = ""; return; } if (!strcmp(el, "flik") && m_bCC){ setFeelsLike(atol(m_data.c_str())); m_data = ""; return; } if (!strcmp(el, "devp") && m_bCC){ setDewPoint(atol(m_data.c_str())); m_data = ""; return; } if (!strcmp(el, "hmid") && m_bCC){ setHumidity(atol(m_data.c_str())); m_data = ""; return; } if (!strcmp(el, "low") && m_day){ setMinT(m_day, m_data.c_str()); m_data = ""; return; } if (!strcmp(el, "hi") && m_day){ setMaxT(m_day, m_data.c_str()); m_data = ""; return; } if (!strcmp(el, "t")){ if (!m_bBar && !m_bWind && !m_bUv){ if (m_bCC){ setConditions(m_data.c_str()); }else{ setDayConditions(m_day, m_data.c_str()); } } if (m_bWind && m_bCC) setWind(m_data.c_str()); m_data = ""; return; } if (!strcmp(el, "icon")){ if (m_bCC){ setIcon(atol(m_data.c_str())); }else{ setDayIcon(m_day, m_data.c_str()); } m_data = ""; return; } if (!strcmp(el, "ut")){ setUT(m_data.c_str()); m_data = ""; return; } if (!strcmp(el, "up")){ setUP(m_data.c_str()); m_data = ""; return; } if (!strcmp(el, "us")){ setUS(m_data.c_str()); m_data = ""; return; } if (!strcmp(el, "gust") && m_bCC){ setWindGust(atol(m_data.c_str())); m_data = ""; return; } if (!strcmp(el, "bar")){ m_bBar = false; return; } if (!strcmp(el, "cc")){ m_bCC = false; return; } if (!strcmp(el, "r") && m_bBar && m_bCC){ unsigned long v = 0; for (const char *p = m_data.c_str(); *p; p++){ if (*p == '.') break; if (*p == ',') continue; v = (v * 10) + (*p - '0'); } setPressure(v); return; } if (!strcmp(el, "d") && m_bBar && m_bCC){ setPressureD(m_data.c_str()); m_data = ""; return; } if (!strcmp(el, "wind")){ m_bWind = false; return; } if (!strcmp(el, "s") && m_bWind && m_bCC){ setWind_speed(atol(m_data.c_str())); return; } if (!strcmp(el, "uv")){ m_bUv = false; return; } }
void WeatherPlugin::element_end(const char *el) { if (!strcmp(el, "day")){ if ((*getMinT(m_day) == 0) || (*getMaxT(m_day) == 0)) m_day--; return; } if (!strcmp(el, "obst")){ setLocation(m_data.c_str()); m_data = ""; return; } if (!strcmp(el, "lsup")){ setUpdated(m_data.c_str()); m_data = ""; return; } if (!strcmp(el, "sunr") && (m_day == 0)){ setSun_raise(m_data.c_str()); m_data = ""; return; } if (!strcmp(el, "suns") && (m_day == 0)){ setSun_set(m_data.c_str()); m_data = ""; return; } if (!strcmp(el, "vis") && m_bCC){ setVisibility(m_data.c_str()); m_data = ""; return; } if (!strcmp(el, "tmp") && m_bCC){ setTemperature(atol(m_data.c_str())); m_data = ""; return; } if (!strcmp(el, "flik") && m_bCC){ setFeelsLike(atol(m_data.c_str())); m_data = ""; return; } if (!strcmp(el, "dewp") && m_bCC){ setDewPoint(atol(m_data.c_str())); m_data = ""; return; } if (!strcmp(el, "ppcp") && (m_day == 1) ) { if (((m_bDayPart == 'd') && m_bDayForecastIsValid) || ((m_bDayPart == 'n') && ! m_bDayForecastIsValid )){ setPrecipitation(atol(m_data.c_str())); m_data = ""; return; } } if (!strcmp(el, "hmid") && m_bCC){ setHumidity(atol(m_data.c_str())); m_data = ""; return; } if (!strcmp(el, "low") && m_day){ if (m_data == "N/A") m_data = ""; setMinT(m_day, m_data.c_str()); m_data = ""; return; } if (!strcmp(el, "hi") && m_day){ if (m_data == "N/A") m_data = "-255"; setMaxT(m_day, m_data.c_str()); m_data = ""; return; } if (!strcmp(el, "t")){ if (!m_bBar && !m_bWind && !m_bUv && !m_bMoon){ if (m_bCC){ setConditions(m_data.c_str()); }else{ setDayConditions(m_day, m_data.c_str()); if ((m_data == "N/A") && (m_bDayPart == 'd')) m_bDayForecastIsValid = false; } } if (m_bWind && m_bCC) setWind(m_data.c_str()); if (m_bUv && m_bCC) setUV_Description(m_data.c_str()); if (m_bMoon && m_bCC) setMoonPhase(m_data.c_str()); m_data = ""; return; } if (!strcmp(el, "i")) { if (m_bUv && m_bCC) setUV_Intensity(strtol(m_data.c_str(),NULL,10)); m_data = ""; return; } if (!strcmp(el, "icon")){ if (m_bMoon && m_bCC) { setMoonIcon(atol(m_data.c_str())); } else if (m_bCC){ setIcon(atoul(m_data.c_str())); }else{ setDayIcon(m_day, m_data.c_str()); } m_data = ""; return; } if (!strcmp(el, "ut")){ setUT(m_data.c_str()); m_data = ""; return; } if (!strcmp(el, "up")){ setUP(m_data.c_str()); m_data = ""; return; } if (!strcmp(el, "us")){ setUS(m_data.c_str()); m_data = ""; return; } if (!strcmp(el, "ud")){ setUD(m_data.c_str()); m_data = ""; return; } if (!strcmp(el, "gust") && m_bCC){ setWindGust(atol(m_data.c_str())); m_data = ""; return; } if (!strcmp(el, "bar")){ m_bBar = false; return; } if (!strcmp(el, "cc")){ m_bCC = false; return; } if (!strcmp(el, "r") && m_bBar && m_bCC){ unsigned long v = 0; for (const char *p = m_data.c_str(); *p; p++){ if (*p == '.') break; if (*p == ',') continue; v = (v * 10) + (*p - '0'); } setPressure(v); return; } if (!strcmp(el, "d") && m_bBar && m_bCC){ setPressureD(m_data.c_str()); m_data = ""; return; } if (!strcmp(el, "wind")){ m_bWind = false; return; } if (!strcmp(el, "s") && m_bWind && m_bCC){ setWind_speed(atol(m_data.c_str())); return; } if (!strcmp(el, "uv")){ m_bUv = false; return; } if (!strcmp(el, "moon")){ m_bMoon = false; return; } }