Fix for gadcon update. Not added new gadcon functions.

SVN revision: 31732
This commit is contained in:
Sebastian Dransfeld 2007-09-16 01:46:52 +00:00
parent 135c0dd042
commit d008eb0369
3 changed files with 39 additions and 71 deletions

View File

@ -144,6 +144,6 @@ _basic_apply_data(E_Config_Dialog * cfd, E_Config_Dialog_Data * cfdata)
ci->show_text = cfdata->show_text; ci->show_text = cfdata->show_text;
e_config_save_queue(); e_config_save_queue();
_forecasts_config_updated(ci->id); _forecasts_config_updated(ci);
return 1; return 1;
} }

View File

@ -87,6 +87,7 @@ struct _Instance
int bufsize, cursize; int bufsize, cursize;
E_Gadcon_Popup *popup; E_Gadcon_Popup *popup;
Config_Item *ci;
}; };
struct _Forecasts struct _Forecasts
@ -139,12 +140,11 @@ _gc_init(E_Gadcon * gc, const char *name, const char *id, const char *style)
E_Gadcon_Client *gcc; E_Gadcon_Client *gcc;
Forecasts *w; Forecasts *w;
Instance *inst; Instance *inst;
Config_Item *ci;
inst = E_NEW(Instance, 1); inst = E_NEW(Instance, 1);
ci = _forecasts_config_item_get(id); inst->ci = _forecasts_config_item_get(id);
inst->area = evas_stringshare_add(ci->code); inst->area = evas_stringshare_add(inst->ci->code);
w = _forecasts_new(gc->evas); w = _forecasts_new(gc->evas);
w->inst = inst; w->inst = inst;
@ -162,7 +162,7 @@ _gc_init(E_Gadcon * gc, const char *name, const char *id, const char *style)
evas_object_event_callback_add(inst->forecasts_obj, EVAS_CALLBACK_MOUSE_OUT, evas_object_event_callback_add(inst->forecasts_obj, EVAS_CALLBACK_MOUSE_OUT,
_cb_mouse_out, inst); _cb_mouse_out, inst);
if (!ci->show_text) if (!inst->ci->show_text)
edje_object_signal_emit(inst->forecasts_obj, "e,state,description,hide", "e"); edje_object_signal_emit(inst->forecasts_obj, "e,state,description,hide", "e");
else else
edje_object_signal_emit(inst->forecasts_obj, "e,state,description,show", "e"); edje_object_signal_emit(inst->forecasts_obj, "e,state,description,show", "e");
@ -187,7 +187,7 @@ _gc_init(E_Gadcon * gc, const char *name, const char *id, const char *style)
_forecasts_cb_check(inst); _forecasts_cb_check(inst);
inst->check_timer = inst->check_timer =
ecore_timer_add((double) ci->poll_time, _forecasts_cb_check, inst); ecore_timer_add(inst->ci->poll_time, _forecasts_cb_check, inst);
return gcc; return gcc;
} }
@ -306,11 +306,9 @@ static void
_forecasts_menu_cb_configure(void *data, E_Menu * m, E_Menu_Item * mi) _forecasts_menu_cb_configure(void *data, E_Menu * m, E_Menu_Item * mi)
{ {
Instance *inst; Instance *inst;
Config_Item *ci;
inst = data; inst = data;
ci = _forecasts_config_item_get(inst->gcc->id); _config_forecasts_module(inst->ci);
_config_forecasts_module(ci);
} }
static Config_Item * static Config_Item *
@ -436,21 +434,6 @@ e_modapi_shutdown(E_Module * m)
EAPI int EAPI int
e_modapi_save(E_Module * m) e_modapi_save(E_Module * m)
{ {
Evas_List *l;
for (l = forecasts_config->instances; l; l = l->next)
{
Instance *inst;
Config_Item *ci;
inst = l->data;
ci = _forecasts_config_item_get(inst->gcc->id);
if (ci->id)
evas_stringshare_del(ci->id);
ci->id = evas_stringshare_add(inst->gcc->id);
}
e_config_domain_save("module.forecasts", conf_edd, forecasts_config); e_config_domain_save("module.forecasts", conf_edd, forecasts_config);
return 1; return 1;
} }
@ -532,10 +515,8 @@ static int
_forecasts_cb_check(void *data) _forecasts_cb_check(void *data)
{ {
Instance *inst; Instance *inst;
Config_Item *ci;
inst = data; inst = data;
ci = _forecasts_config_item_get(inst->gcc->id);
if (inst->server) if (inst->server)
{ {
@ -548,7 +529,7 @@ _forecasts_cb_check(void *data)
proxy.host, proxy.port, inst); proxy.host, proxy.port, inst);
else else
inst->server = inst->server =
ecore_con_server_connect(ECORE_CON_REMOTE_SYSTEM, ci->host, 80, inst); ecore_con_server_connect(ECORE_CON_REMOTE_SYSTEM, inst->ci->host, 80, inst);
return 1; return 1;
} }
@ -557,7 +538,6 @@ static int
_forecasts_server_add(void *data, int type, void *event) _forecasts_server_add(void *data, int type, void *event)
{ {
Instance *inst; Instance *inst;
Config_Item *ci;
Ecore_Con_Event_Server_Add *ev; Ecore_Con_Event_Server_Add *ev;
char buf[1024]; char buf[1024];
char forecast[1024]; char forecast[1024];
@ -567,19 +547,18 @@ _forecasts_server_add(void *data, int type, void *event)
if (!inst) if (!inst)
return 1; return 1;
ci = _forecasts_config_item_get(inst->gcc->id);
ev = event; ev = event;
if ((!inst->server) || (inst->server != ev->server)) if ((!inst->server) || (inst->server != ev->server))
return 1; return 1;
if (ci->degrees == DEGREES_F) if (inst->ci->degrees == DEGREES_F)
degrees = 'f'; degrees = 'f';
else else
degrees = 'c'; degrees = 'c';
snprintf(forecast, sizeof(forecast), "/forecastrss?p=%s&u=%c", ci->code, degrees); snprintf(forecast, sizeof(forecast), "/forecastrss?p=%s&u=%c", inst->ci->code, degrees);
snprintf(buf, sizeof(buf), "GET http://%s%s HTTP/1.1\r\nHost: %s\r\n\r\n", snprintf(buf, sizeof(buf), "GET http://%s%s HTTP/1.1\r\nHost: %s\r\n\r\n",
ci->host, forecast, ci->host); inst->ci->host, forecast, inst->ci->host);
DEBUG("Server: %s", buf); DEBUG("Server: %s", buf);
ecore_con_server_send(inst->server, buf, strlen(buf)); ecore_con_server_send(inst->server, buf, strlen(buf));
return 0; return 0;
@ -790,11 +769,9 @@ error:
void void
_forecasts_converter(Instance *inst) _forecasts_converter(Instance *inst)
{ {
Config_Item *ci;
int i, dir = -1; int i, dir = -1;
ci = _forecasts_config_item_get(inst->gcc->id); if ((inst->units.temp == 'F') && (inst->ci->degrees == DEGREES_C))
if ((inst->units.temp == 'F') && (ci->degrees == DEGREES_C))
{ {
dir = DEGREES_C; dir = DEGREES_C;
inst->units.temp = 'C'; inst->units.temp = 'C';
@ -802,7 +779,7 @@ _forecasts_converter(Instance *inst)
snprintf(inst->units.pressure, 3, "mb"); snprintf(inst->units.pressure, 3, "mb");
snprintf(inst->units.speed, 4, "kph"); snprintf(inst->units.speed, 4, "kph");
} }
else if ((inst->units.temp == 'C') && (ci->degrees == DEGREES_F)) else if ((inst->units.temp == 'C') && (inst->ci->degrees == DEGREES_F))
{ {
dir = DEGREES_F; dir = DEGREES_F;
inst->units.temp = 'F'; inst->units.temp = 'F';
@ -885,54 +862,46 @@ _forecasts_display_set(Instance * inst, int ok)
} }
void void
_forecasts_config_updated(const char *id) _forecasts_config_updated(Config_Item *ci)
{ {
Evas_List *l; Evas_List *l;
Config_Item *ci;
char buf[4096]; char buf[4096];
if (!forecasts_config) if (!forecasts_config)
return; return;
ci = _forecasts_config_item_get(id);
for (l = forecasts_config->instances; l; l = l->next) for (l = forecasts_config->instances; l; l = l->next)
{ {
Instance *inst; Instance *inst;
inst = l->data; inst = l->data;
if (!inst->gcc->id) if (inst->ci != ci) continue;
continue; int area_changed = 0;
if (!strcmp(inst->gcc->id, ci->id))
{
int area_changed = 0;
if (inst->area && strcmp(inst->area, ci->code)) if (inst->area && strcmp(inst->area, inst->ci->code))
area_changed = 1; area_changed = 1;
if (inst->area) evas_stringshare_del(inst->area); if (inst->area) evas_stringshare_del(inst->area);
inst->area = evas_stringshare_add(ci->code); inst->area = evas_stringshare_add(inst->ci->code);
_forecasts_converter(inst); _forecasts_converter(inst);
_forecasts_popup_content_create(inst); _forecasts_popup_content_create(inst);
snprintf(buf, sizeof(buf), "%d°%c", inst->condition.temp, inst->units.temp); snprintf(buf, sizeof(buf), "%d°%c", inst->condition.temp, inst->units.temp);
edje_object_part_text_set(inst->forecasts->forecasts_obj, "e.text.temp", buf); edje_object_part_text_set(inst->forecasts->forecasts_obj, "e.text.temp", buf);
if (!ci->show_text) if (!inst->ci->show_text)
edje_object_signal_emit(inst->forecasts_obj, "e,state,description,hide", "e"); edje_object_signal_emit(inst->forecasts_obj, "e,state,description,hide", "e");
else else
edje_object_signal_emit(inst->forecasts_obj, "e,state,description,show", "e"); edje_object_signal_emit(inst->forecasts_obj, "e,state,description,show", "e");
if (area_changed)
_forecasts_cb_check(inst);
if (!inst->check_timer)
inst->check_timer =
ecore_timer_add((double) ci->poll_time, _forecasts_cb_check,
inst);
else
ecore_timer_interval_set(inst->check_timer,
(double) ci->poll_time);
break; if (area_changed)
} _forecasts_cb_check(inst);
if (!inst->check_timer)
inst->check_timer =
ecore_timer_add(inst->ci->poll_time, _forecasts_cb_check,
inst);
else
ecore_timer_interval_set(inst->check_timer,
inst->ci->poll_time);
} }
} }
@ -1093,8 +1062,7 @@ static void
_cb_mouse_in(void *data, Evas *e, Evas_Object *obj, void *event_info) _cb_mouse_in(void *data, Evas *e, Evas_Object *obj, void *event_info)
{ {
Instance *inst; Instance *inst;
int ww, wh;
if (!(inst = data)) return; if (!(inst = data)) return;
e_gadcon_popup_show(inst->popup); e_gadcon_popup_show(inst->popup);
} }

View File

@ -37,7 +37,7 @@ EAPI int e_modapi_save(E_Module *m);
EAPI int e_modapi_about(E_Module *m); EAPI int e_modapi_about(E_Module *m);
void _config_forecasts_module(Config_Item *ci); void _config_forecasts_module(Config_Item *ci);
void _forecasts_config_updated(const char *id); void _forecasts_config_updated(Config_Item *ci);
extern Config *forecasts_config; extern Config *forecasts_config;