116 lines
3.7 KiB
C
116 lines
3.7 KiB
C
#include "general.h"
|
|
#include "icon.h"
|
|
#include "parsers.h"
|
|
|
|
extern struct xml_weather *zweatherdata;
|
|
extern int8 wind_direction[8];
|
|
extern void init_stik (void);
|
|
|
|
WINDOW *windialog = NULL;
|
|
int8 icon_temp[8] = "";
|
|
|
|
static void force_update( WINDOW *win, int obj, int mode, void *data)
|
|
{
|
|
OBJECT *weather_form = get_tree( WEATHER);
|
|
int time_minute;
|
|
|
|
graf_mouse( BUSYBEE, NULL);
|
|
|
|
if( EvntFind( NULL, WM_XTIMER))
|
|
EvntDelete( NULL, WM_XTIMER);
|
|
|
|
if( zweatherdata)
|
|
xml_weather_free( zweatherdata);
|
|
|
|
strcpy( location_code, ObjcString( weather_form, WEATHER_CODE, NULL));
|
|
|
|
zweatherdata = update_weatherdata( location_code);
|
|
|
|
time_minute = atoi( ( const char*)ObjcString( weather_form, WEATHER_UPDATE_TIME, NULL));
|
|
|
|
update_time = ( clock_t)( ( int32)time_minute * 12000L);
|
|
|
|
ObjcChange( OC_FORM, windialog, WEATHER_UPDATE, NORMAL, 0);
|
|
|
|
snd_rdw( windialog);
|
|
|
|
EvntAttach( NULL, WM_XTIMER, timer_function);
|
|
|
|
graf_mouse( ARROW, NULL);
|
|
}
|
|
|
|
static void weather_dialog_quit( WINDOW *win, int obj, int mode, void *data)
|
|
{
|
|
ObjcChange( OC_FORM, win, obj, NORMAL, TRUE);
|
|
ApplWrite( _AESapid, AP_TERM, 0, 0, 0, 0, 0);
|
|
}
|
|
|
|
static void CDECL continent_popup( WINDOW *win, int obj, int mode, void *data)
|
|
{
|
|
OBJECT *pop;
|
|
int16 x, y;
|
|
static int last_choice = -1;
|
|
int choice;
|
|
|
|
rsrc_gaddr( 0, CONTINENT, &pop);
|
|
objc_offset( FORM( win), obj, &x, &y);
|
|
|
|
choice = MenuPopUp ( pop, x, y, -1, -1, last_choice, P_WNDW + P_CHCK);
|
|
last_choice = choice;
|
|
ObjcChange( OC_FORM, win, obj, NORMAL, TRUE);
|
|
}
|
|
|
|
void weather_dialog( void)
|
|
{
|
|
OBJECT *weather_form = get_tree( WEATHER);
|
|
int frms[] = { WEATHER_PANEL1, WEATHER_PANEL2, WEATHER_PANEL3, WEATHER_PANEL4};
|
|
int buts[] = { WEATHER_MAIN, WEATHER_FORECAST, WEATHER_MAP, WEATHER_PREF};
|
|
int time_minute = ( int)( update_time / 12000L);
|
|
|
|
strcpy( ObjcString( weather_form, WEATHER_CONTINENT, NULL), "--");
|
|
strcpy( ObjcString( weather_form, WEATHER_STATE, NULL), "--");
|
|
strcpy( ObjcString( weather_form, WEATHER_CODE, NULL), location_code);
|
|
sprintf( ObjcString( weather_form, WEATHER_UPDATE_TIME, NULL), "%d", time_minute);
|
|
|
|
windialog = FormCreate( weather_form, NAME|MOVER, NULL, " zWeather ", NULL, TRUE, FALSE);
|
|
|
|
// RsrcUserDraw( OC_FORM, windialog, WEATHER_ROOT, draw_root_dial, NULL);
|
|
RsrcUserDraw( OC_FORM, windialog, WEATHER_ICON, draw_weather_icon, NULL);
|
|
RsrcUserDraw( OC_FORM, windialog, WEATHER_ICON1, draw_forecast1_icon, NULL);
|
|
RsrcUserDraw( OC_FORM, windialog, WEATHER_ICON2, draw_forecast2_icon, NULL);
|
|
RsrcUserDraw( OC_FORM, windialog, WEATHER_ICON3, draw_forecast3_icon, NULL);
|
|
RsrcUserDraw( OC_FORM, windialog, WEATHER_ICON4, draw_forecast4_icon, NULL);
|
|
RsrcUserDraw( OC_FORM, windialog, WEATHER_ICON5, draw_forecast5_icon, NULL);
|
|
RsrcUserDraw( OC_FORM, windialog, WEATHER_ICON6, draw_forecast6_icon, NULL);
|
|
RsrcUserDraw( OC_FORM, windialog, WEATHER_WICON, draw_boussole_icon, NULL);
|
|
|
|
FormThumb( windialog, frms, buts, 4);
|
|
|
|
if( main_icon == NULL)
|
|
main_icon = &icons[25];
|
|
|
|
if( forecast_icon[0] == NULL)
|
|
forecast_icon[0] = &icons[25];
|
|
|
|
if( forecast_icon[1] == NULL)
|
|
forecast_icon[1] = &icons[25];
|
|
|
|
if( forecast_icon[2] == NULL)
|
|
forecast_icon[2] = &icons[25];
|
|
|
|
if( forecast_icon[3] == NULL)
|
|
forecast_icon[3] = &icons[25];
|
|
|
|
if( forecast_icon[4] == NULL)
|
|
forecast_icon[4] = &icons[25];
|
|
|
|
ObjcAttachVar( OC_FORM, windialog, WEATHER_METRIC, &unit, WEATHER_METRIC);
|
|
ObjcAttachVar( OC_FORM, windialog, WEATHER_IMPERIAL, &unit, WEATHER_IMPERIAL);
|
|
ObjcAttachFormFunc( windialog, WEATHER_UPDATE, force_update, NULL);
|
|
ObjcAttachFormFunc( windialog, WEATHER_QUIT, weather_dialog_quit, NULL);
|
|
ObjcAttachFormFunc( windialog, WEATHER_CONTINENT, continent_popup, NULL);
|
|
|
|
vswr_mode( windialog->graf->handle, MD_TRANS);
|
|
vsl_color( windialog->graf->handle, RED);
|
|
}
|