Ticket #3327: mythweather3.patch

File mythweather3.patch, 25.5 KB (added by maverik044, 5 years ago)

Fixes wind speed in forecast

  • mythweather/mythweather/Makefile

    diff -rup ../mythplugins-orig/mythweather/mythweather/Makefile ./mythweather/mythweather/Makefile
    old new install_installimages: all  
    187187        -$(INSTALL_FILE) "images/sunny.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/" 
    188188        -$(INSTALL_FILE) "images/thunshowers.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/" 
    189189        -$(INSTALL_FILE) "images/unknown.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/" 
     190        -$(INSTALL_FILE) "images/0.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/" 
     191        -$(INSTALL_FILE) "images/1.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/" 
     192        -$(INSTALL_FILE) "images/2.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/" 
     193        -$(INSTALL_FILE) "images/3.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/" 
     194        -$(INSTALL_FILE) "images/4.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/" 
     195        -$(INSTALL_FILE) "images/5.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/" 
     196        -$(INSTALL_FILE) "images/6.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/" 
     197        -$(INSTALL_FILE) "images/7.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/" 
     198        -$(INSTALL_FILE) "images/8.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/" 
     199        -$(INSTALL_FILE) "images/9.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/" 
     200        -$(INSTALL_FILE) "images/10.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/" 
     201        -$(INSTALL_FILE) "images/11.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/" 
     202        -$(INSTALL_FILE) "images/12.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/" 
     203        -$(INSTALL_FILE) "images/13.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/" 
     204        -$(INSTALL_FILE) "images/14.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/" 
     205        -$(INSTALL_FILE) "images/15.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/" 
     206        -$(INSTALL_FILE) "images/16.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/" 
     207        -$(INSTALL_FILE) "images/17.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/" 
     208        -$(INSTALL_FILE) "images/18.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/" 
     209        -$(INSTALL_FILE) "images/19.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/" 
     210        -$(INSTALL_FILE) "images/20.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/" 
     211        -$(INSTALL_FILE) "images/21.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/" 
     212        -$(INSTALL_FILE) "images/22.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/" 
     213        -$(INSTALL_FILE) "images/23.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/" 
     214        -$(INSTALL_FILE) "images/24.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/" 
     215        -$(INSTALL_FILE) "images/25.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/" 
     216        -$(INSTALL_FILE) "images/26.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/" 
     217        -$(INSTALL_FILE) "images/27.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/" 
     218        -$(INSTALL_FILE) "images/28.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/" 
     219        -$(INSTALL_FILE) "images/29.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/" 
     220        -$(INSTALL_FILE) "images/30.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/" 
     221        -$(INSTALL_FILE) "images/31.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/" 
     222        -$(INSTALL_FILE) "images/32.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/" 
     223        -$(INSTALL_FILE) "images/33.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/" 
     224        -$(INSTALL_FILE) "images/34.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/" 
     225        -$(INSTALL_FILE) "images/35.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/" 
     226        -$(INSTALL_FILE) "images/36.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/" 
     227        -$(INSTALL_FILE) "images/37.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/" 
     228        -$(INSTALL_FILE) "images/38.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/" 
     229        -$(INSTALL_FILE) "images/39.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/" 
     230        -$(INSTALL_FILE) "images/40.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/" 
     231        -$(INSTALL_FILE) "images/41.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/" 
     232        -$(INSTALL_FILE) "images/42.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/" 
     233        -$(INSTALL_FILE) "images/43.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/" 
     234        -$(INSTALL_FILE) "images/44.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/" 
     235        -$(INSTALL_FILE) "images/45.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/" 
     236        -$(INSTALL_FILE) "images/46.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/" 
     237        -$(INSTALL_FILE) "images/na.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/" 
     238        -$(INSTALL_FILE) "images/weather_logo.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/" 
     239 
    190240 
    191241 
    192242uninstall_installimages:  
    uninstall_installimages:  
    210260        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/sunny.png" 
    211261        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/thunshowers.png" 
    212262        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/unknown.png" 
     263        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/0.png" 
     264        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/1.png" 
     265        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/2.png" 
     266        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/3.png" 
     267        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/4.png" 
     268        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/5.png" 
     269        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/6.png" 
     270        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/7.png" 
     271        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/8.png" 
     272        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/9.png" 
     273        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/10.png" 
     274        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/11.png" 
     275        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/12.png" 
     276        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/13.png" 
     277        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/14.png" 
     278        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/15.png" 
     279        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/16.png" 
     280        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/17.png" 
     281        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/18.png" 
     282        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/19.png" 
     283        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/20.png" 
     284        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/21.png" 
     285        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/22.png" 
     286        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/23.png" 
     287        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/24.png" 
     288        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/25.png" 
     289        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/26.png" 
     290        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/27.png" 
     291        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/28.png" 
     292        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/29.png" 
     293        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/30.png" 
     294        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/31.png" 
     295        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/32.png" 
     296        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/33.png" 
     297        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/34.png" 
     298        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/35.png" 
     299        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/36.png" 
     300        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/37.png" 
     301        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/38.png" 
     302        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/39.png" 
     303        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/40.png" 
     304        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/41.png" 
     305        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/42.png" 
     306        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/43.png" 
     307        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/44.png" 
     308        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/45.png" 
     309        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/46.png" 
     310        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/na.png" 
     311        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/weather_logo.png" 
    213312        -$(DEL_DIR) "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/" 
    214313 
    215314 
  • mythweather/mythweather/weather.cpp

    diff -rup ../mythplugins-orig/mythweather/mythweather/weather.cpp ./mythweather/mythweather/weather.cpp
    old new void Weather::cursorRight() 
    15491549 
    15501550        if (tp == 6) 
    15511551             tp = 1; 
    1552  
     1552/* 
    15531553        if (tp == 3 && pastTime == true) 
    15541554                tp = 4; 
    15551555 
    15561556        if (tp == 4 && pastTime == false) 
    15571557                tp = 5; 
    1558  
     1558*/ 
    15591559        showLayout(tp); 
    15601560   } 
    15611561   else if (deepSetup == false) 
    void Weather::cursorLeft() 
    16591659         
    16601660        if (tp == 0) 
    16611661             tp = 5; 
    1662  
     1662/* 
    16631663        if (tp == 3 && pastTime == true) 
    16641664                tp = 2; 
    16651665 
    16661666        if (tp == 4 && pastTime == false) 
    16671667                tp = 3; 
    1668  
     1668*/ 
    16691669        showLayout(tp); 
    16701670   } 
    16711671   else if (deepSetup == true) 
    void Weather::nextpage_timeout() 
    17361736   tp++; 
    17371737   if (tp > 5)  
    17381738        tp = 1; 
    1739  
     1739/* 
    17401740   if (tp == 3 && pastTime == true) 
    17411741        tp = 4; 
    17421742   if (tp == 4 && pastTime == false) 
    17431743        tp = 5; 
    1744  
     1744*/ 
    17451745   showLayout(tp); 
    17461746 
    17471747} 
    void Weather::update_timeout() 
    17831783 
    17841784    if (result == true) 
    17851785    { 
    1786  
     1786/* 
    17871787    if (pastTime == true && currentPage == 3 && inSetup == false) 
    17881788        nextpage_timeout(); 
    17891789    if (pastTime == false && currentPage == 4 && inSetup == false) 
    17901790        nextpage_timeout(); 
    1791  
     1791*/ 
    17921792    if (firstRun == true && inSetup == false) 
    17931793        nextpage_Timer->start((int)(1000 * nextpageInterval)); 
    17941794 
    void Weather::update_timeout() 
    18911891 
    18921892    QString todayDesc; 
    18931893 
    1894     todayDesc = tr("Today a high of ") + highTemp[0] + tr(" and a low of "); 
     1894    if (highTemp[0] != "N/A") 
     1895        todayDesc = tr("Today expect a high of ") + highTemp[0] + tr(" and a low of "); 
     1896    else 
     1897        todayDesc = tr("Today expect a low of "); 
     1898 
    18951899    todayDesc += lowTemp[0] + tr(". Currently there is a humidity of "); 
    18961900    todayDesc += curHumid + tr("% and the winds are"); 
    18971901 
    void Weather::update_timeout() 
    19051909                todayDesc += tr(" coming in at ") + curWind + tr(" Km/h from the ") + tr(winddir) + "."; 
    19061910    } 
    19071911   
    1908     if (visibility.toFloat() == 999.00) 
     1912    if (visibility == "Unlimited") 
    19091913        todayDesc += tr(" Visibility will be unlimited for today."); 
    19101914    else 
    19111915    { 
    void Weather::update_timeout() 
    19261930    QString tomDesc; 
    19271931  
    19281932    QString tomDate; 
    1929     if (date[0].upper() == "SUN") 
     1933/* 
     1934    if (date[1].upper() == "SUN") 
    19301935        tomDate = tr("Sunday"); 
    1931     else if (date[0].upper() == "MON") 
     1936    else if (date[1].upper() == "MON") 
    19321937        tomDate = tr("Monday"); 
    1933     else if (date[0].upper() == "TUE") 
     1938    else if (date[1].upper() == "TUE") 
    19341939        tomDate = tr("Tuesday"); 
    1935     else if (date[0].upper() == "WED") 
     1940    else if (date[1].upper() == "WED") 
    19361941        tomDate = tr("Wednesday"); 
    1937     else if (date[0].upper() == "THU") 
     1942    else if (date[1].upper() == "THU") 
    19381943        tomDate = tr("Thursday"); 
    1939     else if (date[0].upper() == "FRI") 
     1944    else if (date[1].upper() == "FRI") 
    19401945        tomDate = tr("Friday"); 
    1941     else if (date[0].upper() == "SAT") 
     1946    else if (date[1].upper() == "SAT") 
    19421947        tomDate = tr("Saturday"); 
    19431948    else 
    19441949        tomDate = tr("Date Error"); 
     1950*/ 
    19451951 
    1946     tomDesc = tr("Tomorrow expect a high of ") + highTemp[0] + tr(" and a low of "); 
    1947     tomDesc += lowTemp[0] + tr("."); 
     1952    tomDate = tr(" ") + date[1]; 
     1953    tomDesc = tr("Expect high of ") + highTemp[1] + tr(", low of "); 
     1954    tomDesc += lowTemp[1] + tr(" and humidity ") + humid[1]; 
     1955//    tomDesc += tr("%. The prob of precip is ") + precip[1]; 
     1956    tomDesc += tr("%. Winds ") + wind[1]; 
     1957    if (convertData == false) 
     1958      tomDesc += tr(" mph ") + tr(wdir[1]) + "."; 
     1959    else  
     1960      tomDesc += tr(" Km/h ") + tr(wdir[1]) + "."; 
    19481961 
    1949     QString tomCond = tr("Expected conditions: ") + weatherType[0]; 
     1962    QString tomCond = tr("Expected conditions: ") + weatherType[1]; 
     1963    tomCond += tr(" pp ") + precip[1] + tr("%"); 
    19501964  
    19511965    container = theme->GetSet("weatherpages"); 
    19521966    if (container) 
    void Weather::update_timeout() 
    19591973        itype = (UIImageType *)container->GetType("todaypic"); 
    19601974        if (itype) 
    19611975        { 
    1962             itype->SetImage(weatherIcon[0]); 
     1976            itype->SetImage(weatherIcon[1]); 
    19631977            itype->LoadImage(); 
    19641978        } 
    19651979  
    void Weather::update_timeout() 
    19982012        SetText(container, "low1", lowTemp[1]); 
    19992013        SetText(container, "low2", lowTemp[2]); 
    20002014        SetText(container, "low3", lowTemp[3]); 
     2015        SetText(container, "precip1", precip[1]); 
     2016        SetText(container, "precip2", precip[2]); 
     2017        SetText(container, "precip3", precip[3]); 
    20012018    } 
    20022019 
    20032020    container = theme->GetSet("weatherpages"); 
    20042021    if (container) 
    20052022    { 
    2006          SetText(container, "updatetime", tr("Weather data from: ") + updated); 
     2023         SetText(container, "updatetime", tr("Weather data last updated: ") + updated); 
    20072024    } 
    20082025 
    20092026    if (firstRun == true) 
    bool Weather::UpdateData() 
    21272144 
    21282145    if (haveData == true) 
    21292146    { 
     2147        getCurrentConditions(); 
     2148 
     2149        getForecast(); 
     2150     
     2151        return true; 
     2152    } 
     2153     
     2154    return false; 
     2155} 
    21302156 
    2131         //updated = GetString("this.swLastUp"); 
    2132         updated = QDateTime::currentDateTime().toString(gContext->GetSetting("dateformat") + 
    2133                   " " + gContext->GetSetting("timeformat")); 
    2134         city = GetString("this.swCity"); 
    2135         state = GetString("this.swSubDiv"); 
    2136         country = GetString("this.swCountry"); 
    2137         curTemp = GetString("this.swTemp"); 
    2138         if (curTemp.length() == 0) 
     2157void Weather::getCurrentConditions() 
     2158{ 
     2159        QString cc, wind, bar, uv; 
     2160 
     2161      //  updated = QDateTime::currentDateTime().toString(gContext->GetSetting("dateformat") +  " " + gContext->GetSetting("timeformat")); 
     2162        city = GetString(httpData, "<dnam>", "</dnam>"); 
     2163  //      state = GetString("this.swSubDiv"); 
     2164  //      country = GetString("this.swCountry"); 
     2165        updated = GetString(httpData, "<lsup>", "</lsup>"); 
     2166        cc = GetString(httpData, "<cc>", "</cc>"); 
     2167        curTemp = GetString(cc, "<tmp>", "</tmp>"); 
     2168 
     2169        if ( (curTemp.length() == 0) || (curTemp == "N/A") ) 
    21392170        { 
    21402171            curTemp = "-na-"; 
    21412172            updated = updated + tr(" (Not All Information Available)"); 
    bool Weather::UpdateData() 
    21522183            } 
    21532184        } 
    21542185     
    2155         curIcon = GetString("this.swCIcon"); 
    2156         curWind = GetString("this.swWindS"); 
     2186        curIcon = "weather/" + GetString(cc, "<icon>", "</icon>") + ".png"; 
     2187                 
     2188        wind = GetString(cc, "<wind>", "</wind>"); 
     2189        bar  = GetString(cc, "<bar>", "</bar>"); 
     2190        uv   = GetString(cc, "<uv>", "</uv>"); 
     2191 
     2192        curWind = GetString(wind, "<s>", "</s>"); 
    21572193        if (convertData == true) 
    21582194        { 
    2159             char tempHold[32]; 
    2160             double tTemp = curWind.toDouble(); 
    2161             double nTemp = (double)(tTemp*1.6); 
    2162             sprintf (tempHold, "%d", (int)nTemp); 
    2163             curWind = tempHold; 
     2195            char windHold[32]; 
     2196            double tWind = curWind.toDouble(); 
     2197            double nWind = (double)(tWind*1.6); 
     2198            sprintf (windHold, "%d", (int)nWind); 
     2199            curWind = windHold; 
    21642200        } 
    21652201     
    2166         winddir = GetString("this.swWindD"); 
     2202        winddir = GetString(wind, "<t>", "</t>"); 
    21672203     
    2168         barometer = GetString("this.swBaro"); 
     2204        barometer = GetString(bar, "<r>", "</r>"); 
    21692205        if (convertData == true) 
    21702206        { 
    21712207            char tempHold[32]; 
    bool Weather::UpdateData() 
    21752211            barometer = tempHold; 
    21762212        } 
    21772213         
    2178         curHumid = GetString("this.swHumid"); 
    2179         curFeel = GetString("this.swReal"); 
     2214        curHumid = GetString(cc, "<hmid>", "</hmid>"); 
     2215        curFeel = GetString(cc, "<flik>", "</flik>"); 
    21802216        if (convertData == true) 
    21812217        { 
    21822218            char tempHold[32]; 
    bool Weather::UpdateData() 
    21862222            curFeel = tempHold; 
    21872223        } 
    21882224         
    2189         uvIndex = GetString("this.swUV"); 
    2190         visibility = GetString("this.swVis"); 
    2191         if (convertData == true && visibility.toDouble() != 999.0) 
     2225        uvIndex = GetString(uv, "<i>", "</i>"); 
     2226        visibility = GetString(cc, "<vis>", "</vis>"); 
     2227        if (convertData == true && visibility.toDouble() != 999.0 && visibility != "Unlimited") 
    21922228        { 
    21932229            char tempHold[32]; 
    21942230            double tTemp = visibility.toDouble(); 
    bool Weather::UpdateData() 
    21972233            visibility = tempHold; 
    21982234        } 
    21992235         
    2200         description = GetString("this.swConText"); 
     2236        description = GetString(cc, "<t>", "</t>"); 
    22012237        if (description.length() == 0) 
    2202             description = curIcon; 
     2238            description = "N/A"; 
     2239} 
     2240 
     2241void Weather::getForecast() 
     2242{ 
     2243        QString forecast, d, day, start_tag, wd; 
     2244        char str[24]; 
    22032245         
    2204         QString forecastData; 
    2205         forecastData = GetString("this.swFore"); 
    2206      
    2207         QStringList holdings = QStringList::split("|", forecastData); 
    2208      
    2209         int years, mons, days; 
    2210      
    2211         int dayNum = (holdings[0]).toInt(); 
    2212         QDate curDay(QDate::currentDate()); 
    2213         int curDayNum = curDay.dayOfWeek(); 
    2214         if (curDayNum == 7) 
    2215             curDayNum = 1; 
    2216         else 
    2217             curDayNum++; 
    2218      
    2219         if (curDayNum != dayNum) 
    2220             pastTime = true; 
    2221         else 
    2222             pastTime = false; 
    2223      
    2224         for (int i = 5; i < 9; i++) 
    2225         { 
    2226             QStringList dates = QStringList::split("/", holdings[i]); 
    2227             years = dates[2].toInt(); 
    2228             mons = dates[0].toInt(); 
    2229             days = dates[1].toInt(); 
    2230             QDate doDate(years, mons, days); 
    2231             switch (doDate.dayOfWeek()) 
    2232             { 
    2233                 case 1: date[i - 5] = QString("MON"); break; 
    2234                 case 2: date[i - 5] = QString("TUE"); break; 
    2235                 case 3: date[i - 5] = QString("WED"); break; 
    2236                 case 4: date[i - 5] = QString("THU"); break; 
    2237                 case 5: date[i - 5] = QString("FRI"); break; 
    2238                 case 6: date[i - 5] = QString("SAT"); break; 
    2239                 case 7: date[i - 5] = QString("SUN"); break; 
    2240             } 
    2241         } 
    2242      
    2243         for (int i = 9; i < 13; i++) 
    2244             weatherIcon[i - 9] = holdings[i]; 
    2245      
    2246         for (int i = 20; i < 24; i++) 
     2246        pastTime = true; 
     2247 
     2248        for (int i = 0; i < 5; i++) 
    22472249        { 
    2248             if (convertData == true) 
     2250            sprintf(str, "<day d=\"%i\"", i); 
     2251            start_tag = QString(str); 
     2252            forecast = GetString(httpData, start_tag, "</day>"); 
     2253            highTemp[i] = GetString(forecast, "<hi>", "</hi>"); 
     2254            lowTemp[i]  = GetString(forecast, "<low>", "</low>"); 
     2255 
     2256            d = GetString(forecast, "<part p=\"d\">", "</part>"); 
     2257            wd = GetString(d, "<wind>", "</wind>"); 
     2258 
     2259            precip[i] = GetString(d, "<ppcp>", "</ppcp>"); 
     2260            humid[i] = GetString(d, "<hmid>", "</hmid>"); 
     2261            wind[i]  = GetString(wd, "<s>", "</s>"); 
     2262            wdir[i]  = GetString(wd, "<t>", "</t>"); 
     2263            weatherIcon[i] = "weather/" + GetString(d, "<icon>", "</icon>") + ".png"; 
     2264 
     2265            weatherType[i] = GetString(d, "<t>", "</t>");  
     2266            date[i] = GetString(forecast, "t=\"", "\" dt="); 
     2267  
     2268            if ( (convertData == true) && (highTemp[i] != "N/A") ) 
    22492269            { 
    22502270                char tempHold[32]; 
    2251                 double tTemp = holdings[i].toDouble(); 
     2271                double tTemp = highTemp[i].toDouble(); 
    22522272                double nTemp = (double)(5.0/9.0)*(tTemp - 32.0); 
    22532273                sprintf (tempHold, "%d", (int)nTemp); 
    2254                 holdings[i] = tempHold; 
     2274                highTemp[i] = tempHold; 
    22552275            } 
    2256             highTemp[i - 20] = holdings[i]; 
    2257         } 
    2258      
    2259         for (int i = 40; i < 44; i++) 
    2260         { 
    2261             if (convertData == true) 
     2276             
     2277            if ( (convertData == true) && (lowTemp[i] != "N/A") ) 
    22622278            { 
    22632279                char tempHold[32]; 
    2264                 double tTemp = holdings[i].toDouble(); 
     2280                double tTemp = lowTemp[i].toDouble(); 
    22652281                double nTemp = (double)(5.0/9.0)*(tTemp - 32.0); 
    22662282                sprintf (tempHold, "%d", (int)nTemp); 
    2267                 holdings[i] = tempHold; 
     2283                lowTemp[i] = tempHold; 
     2284            } 
     2285           if (convertData == true) 
     2286            { 
     2287               char windHold[32]; 
     2288               double tWind = wind[i].toDouble(); 
     2289               double nWind = (double)(tWind*1.6); 
     2290               sprintf (windHold, "%d", (int)nWind); 
     2291               wind[i] = windHold; 
    22682292            } 
    2269             lowTemp[i - 40] = holdings[i]; 
     2293              
    22702294        } 
    2271      
    2272         for (int i = 15; i < 19; i++) 
    2273             weatherType[i - 15] = holdings[i]; 
    2274      
    2275         setWeatherTypeIcon(weatherType); 
    2276         setWeatherIcon(description); 
    2277      
    2278         return true; 
    2279  
    2280     } 
    2281      
    2282     return false; 
    22832295} 
    22842296 
    22852297void Weather::setWeatherTypeIcon(QString wt[5]) 
    void Weather::setWeatherIcon(QString txt 
    23342346    curIcon = "weather/unknown.png"; 
    23352347} 
    23362348 
    2337 QString Weather::GetString(QString tag) 
     2349 
     2350QString Weather::GetString(QString data, QString tag_begin, QString tag_end) 
    23382351{ 
    2339     QString data; 
     2352    QString str; 
    23402353    int start = 0; 
     2354    int end = 0; 
    23412355    int len = 0; 
    23422356     
    2343     start = httpData.find(tag, 0); 
    2344     len = httpData.find("\"", start + tag.length() + 4) - start - tag.length() - 4; 
     2357    start = data.find(tag_begin, 0) + tag_begin.length(); 
     2358    end   = data.find(tag_end, start); 
     2359    len   = end - start; 
    23452360     
    2346     data = httpData.mid(start + tag.length() + 4, len); 
     2361    str = data.mid(start, len); 
    23472362 
    2348     return data; 
     2363    return str; 
    23492364} 
    23502365 
    2351 int Weather::GetInt(QString tag) 
     2366int Weather::GetInt(QString data, QString tag_start, QString tag_end) 
    23522367{ 
    2353     QString data; 
    2354     int start = 0; 
    2355     int len = 0; 
    2356      
    2357     start = httpData.find(tag, 0); 
    2358     len = httpData.find("\"", start + tag.length() + 4) - start - tag.length() - 4; 
    2359     data = httpData.mid(start + tag.length() + 4, len); 
    2360     int ret = data.toInt(); 
     2368    QString str; 
     2369 
     2370    str = GetString(data, tag_start, tag_end); 
     2371 
     2372    int ret = str.toInt(); 
    23612373 
    23622374    return ret; 
    23632375} 
    23642376 
    2365 float Weather::GetFloat(QString tag) 
     2377float Weather::GetFloat(QString data, QString tag_start, QString tag_end) 
    23662378{ 
    2367     QString data; 
    2368     int start = 0; 
    2369     int len = 0; 
     2379    QString str; 
    23702380 
    2371     start = httpData.find(tag, 0); 
    2372     len = httpData.find("\"", start + tag.length() + 4) - start - tag.length() - 4; 
    2373     data = httpData.mid(start + tag.length() + 4, len); 
    2374     float ret = data.toFloat(); 
     2381    str = GetString(data, tag_start, tag_end); 
     2382 
     2383    float ret = str.toFloat(); 
    23752384 
    23762385    return ret; 
    23772386} 
    float Weather::GetFloat(QString tag) 
    23792388bool Weather::GetWeatherData() 
    23802389{ 
    23812390 
    2382     QString weatherDataURL = "http://www.msnbc.com/m/chnk/d/weather_d_src.asp?acid=" + locale; 
     2391    QString weatherDataURL = "http://xoap.weather.com/weather/local/" + locale + "?cc=*&unit=f&dayf=5"; 
     2392 
     2393// 
     2394// Technically we should include the partner id and key 
     2395// if this stops working, change to the following: 
     2396// http://xoap.weather.com/weather/local/".$this->acid."?cc=*&unit=F&dayf=5&prod=xoap&par=1036905921&key=f68c2657a4fd3e2e" 
     2397// may need to get a new one from http://www.weather.com/services/xmloap.html 
     2398// 
    23832399 
    23842400    VERBOSE(VB_NETWORK, QString("Grabbing weather from: %1").arg(weatherDataURL)); 
    23852401 
    bool Weather::GetWeatherData() 
    23902406 
    23912407    httpData = HttpComms::getHttp(weatherDataURL, weatherTimeoutInt, 3, 3); 
    23922408 
    2393     if (httpData.find("this.swAcid = \"\";") != -1 || 
    2394         httpData.find("<html>") != -1 || 
     2409    if (httpData.find("<loc id=") == -1 || 
     2410        httpData.find("<?xml") == -1 || 
    23952411        httpData.find("Microsoft VBScript runtime") != -1 || 
    23962412        httpData.find("Internal Server Error") != -1  || 
    23972413        httpData.find("Bad Request", 0) != -1) 
  • mythweather/mythweather/weather.h

    diff -rup ../mythplugins-orig/mythweather/mythweather/weather.h ./mythweather/mythweather/weather.h
    old new class Weather : public MythDialog 
    135135    void updateLetters(); 
    136136    void loadAccidBreaks(); 
    137137    bool GetWeatherData(); 
     138    void getCurrentConditions(); 
     139    void getForecast(); 
    138140    bool GetAnimatedRadarMap(); 
    139141    bool GetStaticRadarMap(); 
    140142    bool gotDataHook; 
    class Weather : public MythDialog 
    145147    void showCityName(); 
    146148    void setSetting(QString, QString, bool); 
    147149 
    148     QString GetString(QString); 
    149     int GetInt(QString); 
    150     float GetFloat(QString); 
     150    QString GetString(QString, QString, QString); 
     151    int GetInt(QString, QString, QString); 
     152    float GetFloat(QString, QString, QString); 
    151153 
    152154    void loadWeatherTypes(); 
    153155    weatherTypes *wData; 
    class Weather : public MythDialog 
    179181    QString highTemp[5]; 
    180182    QString lowTemp[5]; 
    181183    QString precip[5]; 
     184    QString humid[5]; 
     185    QString wind[5]; 
     186    QString wdir[5]; 
    182187 
    183188    QString httpData; 
    184189    QString oldhttpData;