Ticket #3327: mythweather.patch

File mythweather.patch, 26.1 KB (added by maverik044, 19 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;