Ticket #3327: mythweather.patch

File mythweather.patch, 26.1 KB (added by maverik044, 17 years ago)

Forgot to strip out some stuff on binary comparison

Line 
1diff -rup ../mythplugins-orig/mythweather/mythweather/Makefile ./mythweather/mythweather/Makefile
2--- ../mythplugins-orig/mythweather/mythweather/Makefile        2007-04-14 01:32:02.000000000 -0400
3+++ ./mythweather/mythweather/Makefile  2007-04-21 00:54:14.000000000 -0400
4@@ -187,6 +187,56 @@ install_installimages: all
5        -$(INSTALL_FILE) "images/sunny.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
6        -$(INSTALL_FILE) "images/thunshowers.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
7        -$(INSTALL_FILE) "images/unknown.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
8+       -$(INSTALL_FILE) "images/0.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
9+       -$(INSTALL_FILE) "images/1.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
10+       -$(INSTALL_FILE) "images/2.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
11+       -$(INSTALL_FILE) "images/3.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
12+       -$(INSTALL_FILE) "images/4.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
13+       -$(INSTALL_FILE) "images/5.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
14+       -$(INSTALL_FILE) "images/6.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
15+       -$(INSTALL_FILE) "images/7.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
16+       -$(INSTALL_FILE) "images/8.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
17+       -$(INSTALL_FILE) "images/9.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
18+       -$(INSTALL_FILE) "images/10.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
19+       -$(INSTALL_FILE) "images/11.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
20+       -$(INSTALL_FILE) "images/12.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
21+       -$(INSTALL_FILE) "images/13.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
22+       -$(INSTALL_FILE) "images/14.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
23+       -$(INSTALL_FILE) "images/15.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
24+       -$(INSTALL_FILE) "images/16.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
25+       -$(INSTALL_FILE) "images/17.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
26+       -$(INSTALL_FILE) "images/18.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
27+       -$(INSTALL_FILE) "images/19.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
28+       -$(INSTALL_FILE) "images/20.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
29+       -$(INSTALL_FILE) "images/21.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
30+       -$(INSTALL_FILE) "images/22.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
31+       -$(INSTALL_FILE) "images/23.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
32+       -$(INSTALL_FILE) "images/24.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
33+       -$(INSTALL_FILE) "images/25.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
34+       -$(INSTALL_FILE) "images/26.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
35+       -$(INSTALL_FILE) "images/27.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
36+       -$(INSTALL_FILE) "images/28.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
37+       -$(INSTALL_FILE) "images/29.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
38+       -$(INSTALL_FILE) "images/30.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
39+       -$(INSTALL_FILE) "images/31.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
40+       -$(INSTALL_FILE) "images/32.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
41+       -$(INSTALL_FILE) "images/33.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
42+       -$(INSTALL_FILE) "images/34.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
43+       -$(INSTALL_FILE) "images/35.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
44+       -$(INSTALL_FILE) "images/36.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
45+       -$(INSTALL_FILE) "images/37.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
46+       -$(INSTALL_FILE) "images/38.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
47+       -$(INSTALL_FILE) "images/39.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
48+       -$(INSTALL_FILE) "images/40.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
49+       -$(INSTALL_FILE) "images/41.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
50+       -$(INSTALL_FILE) "images/42.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
51+       -$(INSTALL_FILE) "images/43.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
52+       -$(INSTALL_FILE) "images/44.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
53+       -$(INSTALL_FILE) "images/45.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
54+       -$(INSTALL_FILE) "images/46.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
55+       -$(INSTALL_FILE) "images/na.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
56+       -$(INSTALL_FILE) "images/weather_logo.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
57+
58 
59 
60 uninstall_installimages:
61@@ -210,6 +260,55 @@ uninstall_installimages:
62        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/sunny.png"
63        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/thunshowers.png"
64        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/unknown.png"
65+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/0.png"
66+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/1.png"
67+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/2.png"
68+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/3.png"
69+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/4.png"
70+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/5.png"
71+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/6.png"
72+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/7.png"
73+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/8.png"
74+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/9.png"
75+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/10.png"
76+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/11.png"
77+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/12.png"
78+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/13.png"
79+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/14.png"
80+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/15.png"
81+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/16.png"
82+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/17.png"
83+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/18.png"
84+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/19.png"
85+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/20.png"
86+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/21.png"
87+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/22.png"
88+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/23.png"
89+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/24.png"
90+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/25.png"
91+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/26.png"
92+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/27.png"
93+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/28.png"
94+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/29.png"
95+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/30.png"
96+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/31.png"
97+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/32.png"
98+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/33.png"
99+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/34.png"
100+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/35.png"
101+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/36.png"
102+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/37.png"
103+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/38.png"
104+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/39.png"
105+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/40.png"
106+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/41.png"
107+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/42.png"
108+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/43.png"
109+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/44.png"
110+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/45.png"
111+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/46.png"
112+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/na.png"
113+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/weather_logo.png"
114        -$(DEL_DIR) "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
115 
116diff -rup ../mythplugins-orig/mythweather/mythweather/weather.cpp ./mythweather/mythweather/weather.cpp
117--- ../mythplugins-orig/mythweather/mythweather/weather.cpp     2007-03-26 23:20:23.000000000 -0400
118+++ ./mythweather/mythweather/weather.cpp       2007-04-21 00:46:40.000000000 -0400
119@@ -1549,13 +1549,13 @@ void Weather::cursorRight()
120 
121         if (tp == 6)
122              tp = 1;
123-
124+/*
125         if (tp == 3 && pastTime == true)
126                 tp = 4;
127 
128         if (tp == 4 && pastTime == false)
129                 tp = 5;
130-
131+*/
132         showLayout(tp);
133    }
134    else if (deepSetup == false)
135@@ -1659,13 +1659,13 @@ void Weather::cursorLeft()
136         
137         if (tp == 0)
138              tp = 5;
139-
140+/*
141         if (tp == 3 && pastTime == true)
142                 tp = 2;
143 
144         if (tp == 4 && pastTime == false)
145                 tp = 3;
146-
147+*/
148         showLayout(tp);
149    }
150    else if (deepSetup == true)
151@@ -1736,12 +1736,12 @@ void Weather::nextpage_timeout()
152    tp++;
153    if (tp > 5)
154         tp = 1;
155-
156+/*
157    if (tp == 3 && pastTime == true)
158         tp = 4;
159    if (tp == 4 && pastTime == false)
160         tp = 5;
161-
162+*/
163    showLayout(tp);
164 
165 }
166@@ -1783,12 +1783,12 @@ void Weather::update_timeout()
167 
168     if (result == true)
169     {
170-
171+/*
172     if (pastTime == true && currentPage == 3 && inSetup == false)
173         nextpage_timeout();
174     if (pastTime == false && currentPage == 4 && inSetup == false)
175         nextpage_timeout();
176-
177+*/
178     if (firstRun == true && inSetup == false)
179         nextpage_Timer->start((int)(1000 * nextpageInterval));
180 
181@@ -1891,7 +1891,11 @@ void Weather::update_timeout()
182 
183     QString todayDesc;
184 
185-    todayDesc = tr("Today a high of ") + highTemp[0] + tr(" and a low of ");
186+    if (highTemp[0] != "N/A")
187+        todayDesc = tr("Today expect a high of ") + highTemp[0] + tr(" and a low of ");
188+    else
189+        todayDesc = tr("Today expect a low of ");
190+
191     todayDesc += lowTemp[0] + tr(". Currently there is a humidity of ");
192     todayDesc += curHumid + tr("% and the winds are");
193 
194@@ -1905,7 +1909,7 @@ void Weather::update_timeout()
195                 todayDesc += tr(" coming in at ") + curWind + tr(" Km/h from the ") + tr(winddir) + ".";
196     }
197   
198-    if (visibility.toFloat() == 999.00)
199+    if (visibility == "Unlimited")
200         todayDesc += tr(" Visibility will be unlimited for today.");
201     else
202     {
203@@ -1926,27 +1930,37 @@ void Weather::update_timeout()
204     QString tomDesc;
205 
206     QString tomDate;
207-    if (date[0].upper() == "SUN")
208+/*
209+    if (date[1].upper() == "SUN")
210         tomDate = tr("Sunday");
211-    else if (date[0].upper() == "MON")
212+    else if (date[1].upper() == "MON")
213         tomDate = tr("Monday");
214-    else if (date[0].upper() == "TUE")
215+    else if (date[1].upper() == "TUE")
216         tomDate = tr("Tuesday");
217-    else if (date[0].upper() == "WED")
218+    else if (date[1].upper() == "WED")
219         tomDate = tr("Wednesday");
220-    else if (date[0].upper() == "THU")
221+    else if (date[1].upper() == "THU")
222         tomDate = tr("Thursday");
223-    else if (date[0].upper() == "FRI")
224+    else if (date[1].upper() == "FRI")
225         tomDate = tr("Friday");
226-    else if (date[0].upper() == "SAT")
227+    else if (date[1].upper() == "SAT")
228         tomDate = tr("Saturday");
229     else
230         tomDate = tr("Date Error");
231+*/
232 
233-    tomDesc = tr("Tomorrow expect a high of ") + highTemp[0] + tr(" and a low of ");
234-    tomDesc += lowTemp[0] + tr(".");
235+    tomDate = tr(" ") + date[1];
236+    tomDesc = tr("Expect high of ") + highTemp[1] + tr(", low of ");
237+    tomDesc += lowTemp[1] + tr(" and humidity ") + humid[1];
238+//    tomDesc += tr("%. The prob of precip is ") + precip[1];
239+    tomDesc += tr("%. Winds ") + wind[1];
240+    if (convertData == false)
241+      tomDesc += tr(" mph ") + tr(wdir[1]) + ".";
242+    else
243+      tomDesc += tr(" Km/h ") + tr(wdir[1]) + ".";
244 
245-    QString tomCond = tr("Expected conditions: ") + weatherType[0];
246+    QString tomCond = tr("Expected conditions: ") + weatherType[1];
247+    tomCond += tr(" pp ") + precip[1] + tr("%");
248 
249     container = theme->GetSet("weatherpages");
250     if (container)
251@@ -1959,7 +1973,7 @@ void Weather::update_timeout()
252         itype = (UIImageType *)container->GetType("todaypic");
253         if (itype)
254         {
255-            itype->SetImage(weatherIcon[0]);
256+            itype->SetImage(weatherIcon[1]);
257             itype->LoadImage();
258         }
259 
260@@ -1998,12 +2012,15 @@ void Weather::update_timeout()
261         SetText(container, "low1", lowTemp[1]);
262         SetText(container, "low2", lowTemp[2]);
263         SetText(container, "low3", lowTemp[3]);
264+        SetText(container, "precip1", precip[1]);
265+        SetText(container, "precip2", precip[2]);
266+        SetText(container, "precip3", precip[3]);
267     }
268 
269     container = theme->GetSet("weatherpages");
270     if (container)
271     {
272-         SetText(container, "updatetime", tr("Weather data from: ") + updated);
273+         SetText(container, "updatetime", tr("Weather data last updated: ") + updated);
274     }
275 
276     if (firstRun == true)
277@@ -2127,15 +2144,29 @@ bool Weather::UpdateData()
278 
279     if (haveData == true)
280     {
281+        getCurrentConditions();
282+
283+       getForecast();
284+   
285+        return true;
286+    }
287+   
288+    return false;
289+}
290 
291-        //updated = GetString("this.swLastUp");
292-        updated = QDateTime::currentDateTime().toString(gContext->GetSetting("dateformat") +
293-                  " " + gContext->GetSetting("timeformat"));
294-        city = GetString("this.swCity");
295-        state = GetString("this.swSubDiv");
296-        country = GetString("this.swCountry");
297-        curTemp = GetString("this.swTemp");
298-        if (curTemp.length() == 0)
299+void Weather::getCurrentConditions()
300+{
301+       QString cc, wind, bar, uv;
302+
303+      //  updated = QDateTime::currentDateTime().toString(gContext->GetSetting("dateformat") +  " " + gContext->GetSetting("timeformat"));
304+        city = GetString(httpData, "<dnam>", "</dnam>");
305+  //      state = GetString("this.swSubDiv");
306+  //      country = GetString("this.swCountry");
307+        updated = GetString(httpData, "<lsup>", "</lsup>");
308+        cc = GetString(httpData, "<cc>", "</cc>");
309+        curTemp = GetString(cc, "<tmp>", "</tmp>");
310+
311+        if ( (curTemp.length() == 0) || (curTemp == "N/A") )
312         {
313             curTemp = "-na-";
314             updated = updated + tr(" (Not All Information Available)");
315@@ -2152,20 +2183,25 @@ bool Weather::UpdateData()
316             }
317         }
318     
319-        curIcon = GetString("this.swCIcon");
320-        curWind = GetString("this.swWindS");
321+        curIcon = "weather/" + GetString(cc, "<icon>", "</icon>") + ".png";
322+               
323+       wind = GetString(cc, "<wind>", "</wind>");
324+       bar  = GetString(cc, "<bar>", "</bar>");
325+       uv   = GetString(cc, "<uv>", "</uv>");
326+
327+        curWind = GetString(wind, "<s>", "</s>");
328         if (convertData == true)
329         {
330-            char tempHold[32];
331-            double tTemp = curWind.toDouble();
332-            double nTemp = (double)(tTemp*1.6);
333-            sprintf (tempHold, "%d", (int)nTemp);
334-            curWind = tempHold;
335+            char windHold[32];
336+            double tWind = curWind.toDouble();
337+            double nWind = (double)(tWind*1.6);
338+            sprintf (windHold, "%d", (int)nWind);
339+            curWind = windHold;
340         }
341     
342-        winddir = GetString("this.swWindD");
343+        winddir = GetString(wind, "<t>", "</t>");
344     
345-        barometer = GetString("this.swBaro");
346+        barometer = GetString(bar, "<r>", "</r>");
347         if (convertData == true)
348         {
349             char tempHold[32];
350@@ -2175,8 +2211,8 @@ bool Weather::UpdateData()
351             barometer = tempHold;
352         }
353         
354-        curHumid = GetString("this.swHumid");
355-        curFeel = GetString("this.swReal");
356+        curHumid = GetString(cc, "<hmid>", "</hmid>");
357+        curFeel = GetString(cc, "<flik>", "</flik>");
358         if (convertData == true)
359         {
360             char tempHold[32];
361@@ -2186,9 +2222,9 @@ bool Weather::UpdateData()
362             curFeel = tempHold;
363         }
364         
365-        uvIndex = GetString("this.swUV");
366-        visibility = GetString("this.swVis");
367-        if (convertData == true && visibility.toDouble() != 999.0)
368+        uvIndex = GetString(uv, "<i>", "</i>");
369+        visibility = GetString(cc, "<vis>", "</vis>");
370+        if (convertData == true && visibility.toDouble() != 999.0 && visibility != "Unlimited")
371         {
372             char tempHold[32];
373             double tTemp = visibility.toDouble();
374@@ -2197,89 +2233,65 @@ bool Weather::UpdateData()
375             visibility = tempHold;
376         }
377         
378-        description = GetString("this.swConText");
379+        description = GetString(cc, "<t>", "</t>");
380         if (description.length() == 0)
381-            description = curIcon;
382+            description = "N/A";
383+}
384+
385+void Weather::getForecast()
386+{
387+       QString forecast, d, day, start_tag, wd;
388+        char str[24];
389         
390-        QString forecastData;
391-        forecastData = GetString("this.swFore");
392-   
393-        QStringList holdings = QStringList::split("|", forecastData);
394-   
395-        int years, mons, days;
396-   
397-        int dayNum = (holdings[0]).toInt();
398-        QDate curDay(QDate::currentDate());
399-        int curDayNum = curDay.dayOfWeek();
400-        if (curDayNum == 7)
401-            curDayNum = 1;
402-        else
403-            curDayNum++;
404-   
405-        if (curDayNum != dayNum)
406-            pastTime = true;
407-        else
408-            pastTime = false;
409-   
410-        for (int i = 5; i < 9; i++)
411-        {
412-            QStringList dates = QStringList::split("/", holdings[i]);
413-            years = dates[2].toInt();
414-            mons = dates[0].toInt();
415-            days = dates[1].toInt();
416-            QDate doDate(years, mons, days);
417-            switch (doDate.dayOfWeek())
418-            {
419-                case 1: date[i - 5] = QString("MON"); break;
420-                case 2: date[i - 5] = QString("TUE"); break;
421-                case 3: date[i - 5] = QString("WED"); break;
422-                case 4: date[i - 5] = QString("THU"); break;
423-                case 5: date[i - 5] = QString("FRI"); break;
424-                case 6: date[i - 5] = QString("SAT"); break;
425-                case 7: date[i - 5] = QString("SUN"); break;
426-            }
427-        }
428-   
429-        for (int i = 9; i < 13; i++)
430-            weatherIcon[i - 9] = holdings[i];
431-   
432-        for (int i = 20; i < 24; i++)
433+       pastTime = true;
434+
435+        for (int i = 0; i < 5; i++)
436         {
437-            if (convertData == true)
438+            sprintf(str, "<day d=\"%i\"", i);
439+            start_tag = QString(str);
440+            forecast = GetString(httpData, start_tag, "</day>");
441+           highTemp[i] = GetString(forecast, "<hi>", "</hi>");
442+           lowTemp[i]  = GetString(forecast, "<low>", "</low>");
443+
444+           d = GetString(forecast, "<part p=\"d\">", "</part>");
445+            wd = GetString(d, "<wind>", "</wind>");
446+
447+           precip[i] = GetString(d, "<ppcp>", "</ppcp>");
448+           humid[i] = GetString(d, "<hmid>", "</hmid>");
449+            wind[i]  = GetString(wd, "<d>", "</d>");
450+            wdir[i]  = GetString(wd, "<t>", "</t>");
451+           weatherIcon[i] = "weather/" + GetString(d, "<icon>", "</icon>") + ".png";
452+
453+           weatherType[i] = GetString(d, "<t>", "</t>");
454+           date[i] = GetString(forecast, "t=\"", "\" dt=");
455+
456+            if ( (convertData == true) && (highTemp[i] != "N/A") )
457             {
458                 char tempHold[32];
459-                double tTemp = holdings[i].toDouble();
460+                double tTemp = highTemp[i].toDouble();
461                 double nTemp = (double)(5.0/9.0)*(tTemp - 32.0);
462                 sprintf (tempHold, "%d", (int)nTemp);
463-                holdings[i] = tempHold;
464+                highTemp[i] = tempHold;
465             }
466-            highTemp[i - 20] = holdings[i];
467-        }
468-   
469-        for (int i = 40; i < 44; i++)
470-        {
471-            if (convertData == true)
472+           
473+            if ( (convertData == true) && (lowTemp[i] != "N/A") )
474             {
475                 char tempHold[32];
476-                double tTemp = holdings[i].toDouble();
477+                double tTemp = lowTemp[i].toDouble();
478                 double nTemp = (double)(5.0/9.0)*(tTemp - 32.0);
479                 sprintf (tempHold, "%d", (int)nTemp);
480-                holdings[i] = tempHold;
481+                lowTemp[i] = tempHold;
482+            }
483+           if (convertData == true)
484+            {
485+               char windHold[32];
486+               double tWind = wind[i].toDouble();
487+               double nWind = (double)(tWind*1.6);
488+               sprintf (windHold, "%d", (int)nWind);
489+               wind[i] = windHold;
490             }
491-            lowTemp[i - 40] = holdings[i];
492+             
493         }
494-   
495-        for (int i = 15; i < 19; i++)
496-            weatherType[i - 15] = holdings[i];
497-   
498-        setWeatherTypeIcon(weatherType);
499-        setWeatherIcon(description);
500-   
501-        return true;
502-
503-    }
504-   
505-    return false;
506 }
507 
508 void Weather::setWeatherTypeIcon(QString wt[5])
509@@ -2334,44 +2346,41 @@ void Weather::setWeatherIcon(QString txt
510     curIcon = "weather/unknown.png";
511 }
512 
513-QString Weather::GetString(QString tag)
514+
515+QString Weather::GetString(QString data, QString tag_begin, QString tag_end)
516 {
517-    QString data;
518+    QString str;
519     int start = 0;
520+    int end = 0;
521     int len = 0;
522     
523-    start = httpData.find(tag, 0);
524-    len = httpData.find("\"", start + tag.length() + 4) - start - tag.length() - 4;
525+    start = data.find(tag_begin, 0) + tag_begin.length();
526+    end   = data.find(tag_end, start);
527+    len   = end - start;
528     
529-    data = httpData.mid(start + tag.length() + 4, len);
530+    str = data.mid(start, len);
531 
532-    return data;
533+    return str;
534 }
535 
536-int Weather::GetInt(QString tag)
537+int Weather::GetInt(QString data, QString tag_start, QString tag_end)
538 {
539-    QString data;
540-    int start = 0;
541-    int len = 0;
542-   
543-    start = httpData.find(tag, 0);
544-    len = httpData.find("\"", start + tag.length() + 4) - start - tag.length() - 4;
545-    data = httpData.mid(start + tag.length() + 4, len);
546-    int ret = data.toInt();
547+    QString str;
548+
549+    str = GetString(data, tag_start, tag_end);
550+
551+    int ret = str.toInt();
552 
553     return ret;
554 }
555 
556-float Weather::GetFloat(QString tag)
557+float Weather::GetFloat(QString data, QString tag_start, QString tag_end)
558 {
559-    QString data;
560-    int start = 0;
561-    int len = 0;
562+    QString str;
563 
564-    start = httpData.find(tag, 0);
565-    len = httpData.find("\"", start + tag.length() + 4) - start - tag.length() - 4;
566-    data = httpData.mid(start + tag.length() + 4, len);
567-    float ret = data.toFloat();
568+    str = GetString(data, tag_start, tag_end);
569+
570+    float ret = str.toFloat();
571 
572     return ret;
573 }
574@@ -2379,7 +2388,14 @@ float Weather::GetFloat(QString tag)
575 bool Weather::GetWeatherData()
576 {
577 
578-    QString weatherDataURL = "http://www.msnbc.com/m/chnk/d/weather_d_src.asp?acid=" + locale;
579+    QString weatherDataURL = "http://xoap.weather.com/weather/local/" + locale + "?cc=*&unit=f&dayf=5";
580+
581+//
582+// Technically we should include the partner id and key
583+// if this stops working, change to the following:
584+// http://xoap.weather.com/weather/local/".$this->acid."?cc=*&unit=F&dayf=5&prod=xoap&par=1036905921&key=f68c2657a4fd3e2e"
585+// may need to get a new one from http://www.weather.com/services/xmloap.html
586+//
587 
588     VERBOSE(VB_NETWORK, QString("Grabbing weather from: %1").arg(weatherDataURL));
589 
590@@ -2390,8 +2406,8 @@ bool Weather::GetWeatherData()
591 
592     httpData = HttpComms::getHttp(weatherDataURL, weatherTimeoutInt, 3, 3);
593 
594-    if (httpData.find("this.swAcid = \"\";") != -1 ||
595-        httpData.find("<html>") != -1 ||
596+    if (httpData.find("<loc id=") == -1 ||
597+        httpData.find("<?xml") == -1 ||
598         httpData.find("Microsoft VBScript runtime") != -1 ||
599         httpData.find("Internal Server Error") != -1  ||
600         httpData.find("Bad Request", 0) != -1)
601diff -rup ../mythplugins-orig/mythweather/mythweather/weather.h ./mythweather/mythweather/weather.h
602--- ../mythplugins-orig/mythweather/mythweather/weather.h       2007-03-26 23:20:23.000000000 -0400
603+++ ./mythweather/mythweather/weather.h 2007-04-21 00:01:45.000000000 -0400
604@@ -135,6 +135,8 @@ class Weather : public MythDialog
605     void updateLetters();
606     void loadAccidBreaks();
607     bool GetWeatherData();
608+    void getCurrentConditions();
609+    void getForecast();
610     bool GetAnimatedRadarMap();
611     bool GetStaticRadarMap();
612     bool gotDataHook;
613@@ -145,9 +147,9 @@ class Weather : public MythDialog
614     void showCityName();
615     void setSetting(QString, QString, bool);
616 
617-    QString GetString(QString);
618-    int GetInt(QString);
619-    float GetFloat(QString);
620+    QString GetString(QString, QString, QString);
621+    int GetInt(QString, QString, QString);
622+    float GetFloat(QString, QString, QString);
623 
624     void loadWeatherTypes();
625     weatherTypes *wData;
626@@ -179,6 +181,9 @@ class Weather : public MythDialog
627     QString highTemp[5];
628     QString lowTemp[5];
629     QString precip[5];
630+    QString humid[5];
631+    QString wind[5];
632+    QString wdir[5];
633 
634     QString httpData;
635     QString oldhttpData;