Ticket #3327: mythweather.diff

File mythweather.diff, 25.7 KB (added by maverik044, 19 years ago)

patch to use xoap.weather.com instead.

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