{ Weather Protocol plugin for Miranda IM Copyright (C) 2005-2009 Boris Krasnovskiy All Rights Reserved Copyright (C) 2002-2005 Calvin Che This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . } {$IFNDEF M_WEATHER} {$DEFINE M_WEATHER} // {6B612A34-DCF2-4e32-85CF-B6FD006B745E} const MIID_WEATHER:TGUID = '{6B612A34-DCF2-4E32-85CF-B6FD006B745E}'; //============ CONSTANTS ============ const // name WEATHERPROTONAME = 'Weather'; WEATHERPROTOTEXT = 'Weather'; DEFCURRENTWEATHER = 'WeatherCondition'; WEATHERCONDITION = 'Current'; // weather conditions SUNNY = ID_STATUS_ONLINE; NA = ID_STATUS_OFFLINE; PCLOUDY = ID_STATUS_AWAY; CLOUDY = ID_STATUS_NA; RAIN = ID_STATUS_OCCUPIED; RSHOWER = ID_STATUS_DND; SNOW = ID_STATUS_FREECHAT; LIGHT = ID_STATUS_INVISIBLE; THUNDER = ID_STATUS_INVISIBLE; SSHOWER = ID_STATUS_ONTHEPHONE; FOG = ID_STATUS_OUTTOLUNCH; UNAVAIL = ID_STATUS_IDLE; //============ WEATHER CONDITION STRUCT ============ // weather conditions (added in v0.1.2.0) type PWEATHERINFO = ^TWEATHERINFO; TWEATHERINFO = record hContact:TMCONTACT; id :array [0..127] of WideChar; city :array [0..127] of WideChar; update :array [0.. 63] of WideChar; cond :array [0..127] of WideChar; temp :array [0.. 15] of WideChar; low :array [0.. 15] of WideChar; high :array [0.. 15] of WideChar; feel :array [0.. 15] of WideChar; wind :array [0.. 15] of WideChar; winddir :array [0.. 63] of WideChar; dewpoint:array [0.. 15] of WideChar; pressure:array [0.. 15] of WideChar; humid :array [0.. 15] of WideChar; vis :array [0.. 15] of WideChar; sunrise :array [0.. 31] of WideChar; sunset :array [0.. 31] of WideChar; // are the other ones that important!? status:word; end; const // =============== WEATHER SERVICES ================ // Enable or disable weather protocol. // WPARAM = FALSE to toggle, TRUE to use the LPARAM // LPARAM = TRUE to enable, FALSE to disable MS_WEATHER_ENABLED:PAnsiChar = 'Weather/EnableDisable'; // Update all weather info // WPARAM = LPARAM = NULL MS_WEATHER_UPDATEALL:PAnsiChar = 'Weather/UpdateAll'; // Update all weather info + erase the old ones // WPARAM = LPARAM = NULL MS_WEATHER_REFRESHALL:PAnsiChar = 'Weather/RefreshAll'; // Below are the service functions for weather contacts // The plugin does NOT verify that they are used in weather contact, // so bad call on these function may cause crashes. // Update a single station // WPARAM = (HANDLE)hContact // LPARAM = NULL MS_WEATHER_UPDATE:PAnsiChar = 'Weather/Update'; // Update a single station + delete old settings // WPARAM = (HANDLE)hContact // LPARAM = NULL MS_WEATHER_REFRESH:PAnsiChar = 'Weather/Refresh'; // View the brief info of a contact // WPARAM = (HANDLE)hContact // LPARAM = NULL MS_WEATHER_BRIEF:PAnsiChar = 'Weather/Brief'; // Use default browser to open the complete forecast on web // WPARAM = (HANDLE)hContact // LPARAM = NULL MS_WEATHER_COMPLETE:PAnsiChar = 'Weather/CompleteForecast'; // Use default browser to open the weather map defined for the contact // WPARAM = (HANDLE)hContact // LPARAM = NULL MS_WEATHER_MAP:PAnsiChar = 'Weather/Map'; // Open the external log of the weather contact // WPARAM = (HANDLE)hContact // LPARAM = NULL MS_WEATHER_LOG:PAnsiChar = 'Weather/Log'; // Edit weather contact setting // WPARAM = (HANDLE)hContact // LPARAM = NULL MS_WEATHER_EDIT:PAnsiChar = 'Weather/Edit'; // parse the string to turn it to weather display // WPARAM = (WEATHERINFO*)hContact // LPARAM = (char*)display_str MS_WEATHER_GETDISPLAY:PAnsiChar = 'Weather/GetDisplay'; // =============== WEATHER EVENTS ================ { HANDLE hContact = (HANDLE)wParam; bool Condition_Changed = (bool)lParam; hContact is the handle of updated contact If the weather condition is differ from the last update (either temperature/condition, or the last update time, depend what the user choose in the options), then Condition_Changed is true; otherwise is false. } ME_WEATHER_UPDATED:PAnsiChar = 'Miranda/Weather/Updated'; { Shows a warning message for Weather PopUp. wParam = (char*) lpzMessage lParam = Type Type can either be SM_WARNING, SM_NOTIFY, or SM_WEATHERALERT This event is used to avoid the error popup to occurs within a thread, so the "Use multiply thread" fuction don't have to be enabled for weather popups to work. } SM_WEATHERALERT = 16; ME_WEATHER_ERROR:PAnsiChar = 'Miranda/Weather/Error'; {$ENDIF}