Ticket #3327: mythweather2.patch

File mythweather2.patch, 25.5 KB (added by maverik044, 17 years ago)

replaced previous patches, sorry about that

  • 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, "<d>", "</d>");
     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;