Enlightenment CVS committal
Author : englebass
Project : e17
Module : apps/e
Dir : e17/apps/e/src/modules/temperature
Modified Files:
e_mod_config.c e_mod_main.c e_mod_main.h
Log Message:
Temperature config per face. Seems to work, if not complain to me.
===================================================================
RCS file: /cvs/e/e17/apps/e/src/modules/temperature/e_mod_config.c,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -3 -r1.26 -r1.27
--- e_mod_config.c 15 Dec 2006 08:32:31 -0000 1.26
+++ e_mod_config.c 17 Dec 2006 22:01:45 -0000 1.27
@@ -30,6 +30,8 @@
int sensor;
Ecore_List *sensors;
+
+ Config_Face *inst;
};
/* Protos */
@@ -41,7 +43,7 @@
static int _advanced_apply_data(E_Config_Dialog *cfd,
E_Config_Dialog_Data *cfdata);
void
-_config_temperature_module(void)
+config_temperature_module(Config_Face *inst)
{
E_Config_Dialog *cfd;
E_Config_Dialog_View *v;
@@ -56,12 +58,12 @@
v->advanced.apply_cfdata = _advanced_apply_data;
v->advanced.create_widgets = _advanced_create_widgets;
- snprintf(buf, sizeof(buf), "%s/module.edj",
e_module_dir_get(temperature_config->module));
+ snprintf(buf, sizeof(buf), "%s/module.edj", e_module_dir_get(inst->module));
cfd = e_config_dialog_new(e_container_current_get(e_manager_current_get()),
_("Temperature Configuration"),
"E", "_e_mod_temperature_config_dialog",
- buf, 0, v, NULL);
- temperature_config->config_dialog = cfd;
+ buf, 0, v, inst);
+ inst->config_dialog = cfd;
}
static void
@@ -71,13 +73,13 @@
Ecore_List *therms;
char *name;
- cfdata->units = temperature_config->units;
- if (temperature_config->units == CELCIUS)
+ cfdata->units = cfdata->inst->units;
+ if (cfdata->inst->units == CELCIUS)
cfdata->unit_method = 0;
else
cfdata->unit_method = 1;
- p = temperature_config->poll_time;
+ p = cfdata->inst->poll_time;
cfdata->poll_time = p;
if ((p >= 0) && (p <= 5))
cfdata->poll_method = 1; //Fast
@@ -88,7 +90,7 @@
else if (p > 30)
cfdata->poll_method = 60; //Very Slow
- p = temperature_config->low;
+ p = cfdata->inst->low;
if (cfdata->units == FAHRENHEIT)
p = FAR_2_CEL(p - 1); // -1 so the conversion doesn't make mid go hi
cfdata->low_temp = p;
@@ -99,7 +101,7 @@
else if (p > TEMP_LOW_MID)
cfdata->low_method = TEMP_LOW_HIGH;
- p = temperature_config->high;
+ p = cfdata->inst->high;
if (cfdata->units == FAHRENHEIT)
p = FAR_2_CEL(p - 1);
cfdata->high_temp = p;
@@ -111,7 +113,7 @@
cfdata->high_method = TEMP_HIGH_HIGH;
cfdata->sensor = 0;
- switch (temperature_config->sensor_type)
+ switch (cfdata->inst->sensor_type)
{
case SENSOR_TYPE_NONE:
break;
@@ -128,7 +130,7 @@
ecore_list_goto_first(cfdata->sensors);
while ((name = ecore_list_next(cfdata->sensors)))
{
- if (!strcmp(temperature_config->sensor_name, name))
+ if (!strcmp(cfdata->inst->sensor_name, name))
break;
cfdata->sensor++;
}
@@ -142,7 +144,7 @@
while ((name = ecore_list_next(therms)))
{
ecore_list_append(cfdata->sensors, strdup(name));
- if (!strcmp(temperature_config->sensor_name, name))
+ if (!strcmp(cfdata->inst->sensor_name, name))
{
cfdata->sensor = n;
}
@@ -160,6 +162,7 @@
E_Config_Dialog_Data *cfdata;
cfdata = E_NEW(E_Config_Dialog_Data, 1);
+ cfdata->inst = cfd->data;
cfdata->sensors = ecore_list_new();
ecore_list_set_free_cb(cfdata->sensors, free);
_fill_data(cfdata);
@@ -169,7 +172,7 @@
static void
_free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
{
- temperature_config->config_dialog = NULL;
+ cfdata->inst->config_dialog = NULL;
if (cfdata->sensors) ecore_list_destroy(cfdata->sensors);
cfdata->sensors = NULL;
free(cfdata);
@@ -259,21 +262,21 @@
_basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
{
if (cfdata->unit_method == 0)
- temperature_config->units = CELCIUS;
+ cfdata->inst->units = CELCIUS;
else
- temperature_config->units = FAHRENHEIT;
- temperature_config->poll_time = (double)cfdata->poll_method;
- if (temperature_config->units == FAHRENHEIT)
+ cfdata->inst->units = FAHRENHEIT;
+ cfdata->inst->poll_time = (double)cfdata->poll_method;
+ if (cfdata->inst->units == FAHRENHEIT)
{
- temperature_config->low = CEL_2_FAR(cfdata->low_method);
- temperature_config->high = CEL_2_FAR(cfdata->high_method);
+ cfdata->inst->low = CEL_2_FAR(cfdata->low_method);
+ cfdata->inst->high = CEL_2_FAR(cfdata->high_method);
}
else
{
- temperature_config->low = cfdata->low_method;
- temperature_config->high = cfdata->high_method;
+ cfdata->inst->low = cfdata->low_method;
+ cfdata->inst->high = cfdata->high_method;
}
- _temperature_face_cb_config_updated();
+ temperature_face_update_config(cfdata->inst);
e_config_save_queue();
return 1;
}
@@ -317,8 +320,8 @@
e_widget_framelist_object_append(of, ob);
e_widget_list_object_append(o, of, 1, 1, 0.5);
-// cfdata->low_temp = temperature_config->low;
-// cfdata->high_temp = temperature_config->high;
+// cfdata->low_temp = cfdata->inst->low;
+// cfdata->high_temp = cfdata->inst->high;
if (cfdata->units == FAHRENHEIT)
{
@@ -362,7 +365,7 @@
static int
_advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
{
- if (cfdata->unit_method != temperature_config->units)
+ if (cfdata->unit_method != cfdata->inst->units)
{
if (cfdata->unit_method == 0)
{
@@ -376,21 +379,18 @@
}
}
if (cfdata->unit_method == 0)
- temperature_config->units = CELCIUS;
+ cfdata->inst->units = CELCIUS;
else
- temperature_config->units = FAHRENHEIT;
- temperature_config->poll_time = cfdata->poll_time;
- temperature_config->low = cfdata->low_temp;
- temperature_config->high = cfdata->high_temp;
- if (temperature_config->sensor_name)
- evas_stringshare_del(temperature_config->sensor_name);
- temperature_config->sensor_name =
+ cfdata->inst->units = FAHRENHEIT;
+ cfdata->inst->poll_time = cfdata->poll_time;
+ cfdata->inst->low = cfdata->low_temp;
+ cfdata->inst->high = cfdata->high_temp;
+ if (cfdata->inst->sensor_name)
+ evas_stringshare_del(cfdata->inst->sensor_name);
+ cfdata->inst->sensor_name =
evas_stringshare_add(ecore_list_goto_index(cfdata->sensors,
cfdata->sensor));
- if (temperature_config->sensor_path)
- evas_stringshare_del(temperature_config->sensor_path);
- temperature_config->sensor_path = NULL;
- _temperature_face_cb_config_updated();
+ temperature_face_update_config(cfdata->inst);
e_config_save_queue();
return 1;
}
===================================================================
RCS file: /cvs/e/e17/apps/e/src/modules/temperature/e_mod_main.c,v
retrieving revision 1.74
retrieving revision 1.75
diff -u -3 -r1.74 -r1.75
--- e_mod_main.c 16 Dec 2006 08:30:29 -0000 1.74
+++ e_mod_main.c 17 Dec 2006 22:01:45 -0000 1.75
@@ -34,34 +34,45 @@
/**/
/* actual module specifics */
-typedef struct _Instance Instance;
-
-struct _Instance
-{
- E_Gadcon_Client *gcc;
- Evas_Object *o_temp;
-};
-
-static void _button_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, void
*event_info);
-static void _menu_cb_post(void *data, E_Menu *m);
-static void _temperature_sensor_init(void);
+static void _temperature_face_cb_mouse_down(void *data, Evas *e, Evas_Object
*obj, void *event_info);
+static void _temperature_face_cb_post_menu(void *data, E_Menu *m);
+static void _temperature_sensor_init(Config_Face *inst);
static int _temperature_cb_check(void *data);
-static void _temperature_face_level_set(Instance *inst, double level);
+static void _temperature_face_level_set(Config_Face *inst, double level);
static void _temperature_face_cb_menu_configure(void *data, E_Menu *m,
E_Menu_Item *mi);
+static Evas_Bool _temperature_face_shutdown(Evas_Hash *hash, const char *key,
void *hdata, void *fdata);
+
static E_Config_DD *conf_edd = NULL;
+static E_Config_DD *conf_face_edd = NULL;
-Config *temperature_config = NULL;
+static Config *temperature_config = NULL;
static E_Gadcon_Client *
_gc_init(E_Gadcon *gc, const char *name, const char *id, const char *style)
{
Evas_Object *o;
E_Gadcon_Client *gcc;
- Instance *inst;
-
- inst = E_NEW(Instance, 1);
-
+ Config_Face *inst;
+
+ inst = evas_hash_find(temperature_config->faces, id);
+ if (!inst)
+ {
+ inst = E_NEW(Config_Face, 1);
+ temperature_config->faces = evas_hash_add(temperature_config->faces,
id, inst);
+ inst->poll_time = 10.0;
+ inst->low = 30;
+ inst->high = 80;
+ inst->sensor_type = SENSOR_TYPE_NONE;
+ inst->sensor_name = NULL;
+ inst->sensor_path = NULL;
+ inst->units = CELCIUS;
+ }
+ E_CONFIG_LIMIT(inst->poll_time, 0.5, 1000.0);
+ E_CONFIG_LIMIT(inst->low, 0, 100);
+ E_CONFIG_LIMIT(inst->high, 0, 220);
+ E_CONFIG_LIMIT(inst->units, CELCIUS, FAHRENHEIT);
+
o = edje_object_add(gc->evas);
e_theme_edje_object_set(o, "base/theme/modules/temperature",
"e/modules/temperature/main");
@@ -71,30 +82,39 @@
inst->gcc = gcc;
inst->o_temp = o;
+ inst->module = temperature_config->module;
+ inst->have_temp = -1;
+ inst->temperature_check_timer =
+ ecore_timer_add(inst->poll_time, _temperature_cb_check, inst);
+
evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN,
- _button_cb_mouse_down, inst);
- temperature_config->instances =
evas_list_append(temperature_config->instances, inst);
- temperature_config->have_temp = -1;
- _temperature_cb_check(NULL);
+ _temperature_face_cb_mouse_down, inst);
+ _temperature_sensor_init(inst);
+ _temperature_cb_check(inst);
return gcc;
}
static void
_gc_shutdown(E_Gadcon_Client *gcc)
{
- Instance *inst;
+ Config_Face *inst;
inst = gcc->data;
- temperature_config->instances =
evas_list_remove(temperature_config->instances, inst);
- evas_object_del(inst->o_temp);
- free(inst);
+ if (inst->temperature_check_timer)
ecore_timer_del(inst->temperature_check_timer);
+ inst->temperature_check_timer = NULL;
+ if (inst->o_temp) evas_object_del(inst->o_temp);
+ inst->o_temp = NULL;
+ if (inst->config_dialog) e_object_del(E_OBJECT(inst->config_dialog));
+ inst->config_dialog = NULL;
+ if (inst->menu) e_object_del(E_OBJECT(inst->menu));
+ inst->menu = NULL;
}
static void
_gc_orient(E_Gadcon_Client *gcc)
{
- Instance *inst;
+ Config_Face *inst;
inst = gcc->data;
e_gadcon_client_aspect_set(gcc, 16, 16);
@@ -125,27 +145,27 @@
/***************************************************************************/
/**/
static void
-_button_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_info)
+_temperature_face_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, void
*event_info)
{
- Instance *inst;
+ Config_Face *inst;
Evas_Event_Mouse_Down *ev;
inst = data;
ev = event_info;
- if ((ev->button == 3) && (!temperature_config->menu))
+ if ((ev->button == 3) && (!inst->menu))
{
E_Menu *mn;
E_Menu_Item *mi;
int cx, cy, cw, ch;
mn = e_menu_new();
- e_menu_post_deactivate_callback_set(mn, _menu_cb_post, inst);
- temperature_config->menu = mn;
+ e_menu_post_deactivate_callback_set(mn, _temperature_face_cb_post_menu,
inst);
+ inst->menu = mn;
mi = e_menu_item_new(mn);
e_menu_item_label_set(mi, _("Configuration"));
e_util_menu_item_edje_icon_set(mi, "enlightenment/configuration");
- e_menu_item_callback_set(mi, _temperature_face_cb_menu_configure, NULL);
+ e_menu_item_callback_set(mi, _temperature_face_cb_menu_configure, inst);
e_gadcon_client_util_menu_items_append(inst->gcc, mn, 0);
@@ -157,21 +177,23 @@
E_MENU_POP_DIRECTION_DOWN, ev->timestamp);
e_util_evas_fake_mouse_up_later(inst->gcc->gadcon->evas,
ev->button);
-// evas_event_feed_mouse_up(inst->gcc->gadcon->evas, ev->button,
-// EVAS_BUTTON_NONE, ev->timestamp, NULL);
}
}
static void
-_menu_cb_post(void *data, E_Menu *m)
+_temperature_face_cb_post_menu(void *data, E_Menu *m)
{
- if (!temperature_config->menu) return;
- e_object_del(E_OBJECT(temperature_config->menu));
- temperature_config->menu = NULL;
+ Config_Face *inst;
+
+ inst = data;
+
+ if (!inst->menu) return;
+ e_object_del(E_OBJECT(inst->menu));
+ inst->menu = NULL;
}
static void
-_temperature_sensor_init(void)
+_temperature_sensor_init(Config_Face *inst)
{
Ecore_List *therms;
char path[PATH_MAX];
@@ -179,43 +201,40 @@
int len;
#endif
- if ((!temperature_config->sensor_type) ||
(!temperature_config->sensor_name))
+ if ((!inst->sensor_type) || (!inst->sensor_name))
{
- if (temperature_config->sensor_name)
evas_stringshare_del(temperature_config->sensor_name);
- if (temperature_config->sensor_path)
evas_stringshare_del(temperature_config->sensor_path);
- temperature_config->sensor_path = NULL;
+ if (inst->sensor_name) evas_stringshare_del(inst->sensor_name);
+ if (inst->sensor_path) evas_stringshare_del(inst->sensor_path);
+ inst->sensor_path = NULL;
#ifdef __FreeBSD__
/* TODO: FreeBSD can also have more temperature sensors! */
- temperature_config->sensor_type = SENSOR_TYPE_FREEBSD;
- temperature_config->sensor_name = evas_stringshare_add("tz0");
+ inst->sensor_type = SENSOR_TYPE_FREEBSD;
+ inst->sensor_name = evas_stringshare_add("tz0");
#else
-# ifdef HAVE_OMNIBOOK
- /* TODO: This does not have to be a define */
- temperature_config->sensor_type = SENSOR_TYPE_OMNIBOOK;
- temperature_config->sensor_name = evas_stringshare_add("dummy");
-# else
therms = ecore_file_ls("/proc/acpi/thermal_zone");
if ((therms) && (!ecore_list_is_empty(therms)))
{
char *name;
name = ecore_list_next(therms);
- temperature_config->sensor_type = SENSOR_TYPE_LINUX_ACPI;
- temperature_config->sensor_name = evas_stringshare_add(name);
+ inst->sensor_type = SENSOR_TYPE_LINUX_ACPI;
+ inst->sensor_name = evas_stringshare_add(name);
ecore_list_destroy(therms);
}
else
{
- FILE *f;
-
if (therms) ecore_list_destroy(therms);
- f = fopen("/sys/devices/temperatures/cpu_temperature", "rb");
- if (f)
+ if (ecore_file_exists("/proc/omnibook/temperature"))
{
- temperature_config->sensor_type = SENSOR_TYPE_LINUX_MACMINI;
- temperature_config->sensor_name =
evas_stringshare_add("dummy");
+ inst->sensor_type = SENSOR_TYPE_OMNIBOOK;
+ inst->sensor_name = evas_stringshare_add("dummy");
+ }
+ else if
(ecore_file_exists("/sys/devices/temperatures/cpu_temperature"))
+ {
+ inst->sensor_type = SENSOR_TYPE_LINUX_MACMINI;
+ inst->sensor_name = evas_stringshare_add("dummy");
}
else
{
@@ -237,43 +256,42 @@
name, sensors[i]);
if (ecore_file_exists(path))
{
- temperature_config->sensor_type =
SENSOR_TYPE_LINUX_I2C;
- temperature_config->sensor_name =
evas_stringshare_add(sensors[i]);
+ inst->sensor_type = SENSOR_TYPE_LINUX_I2C;
+ inst->sensor_name =
evas_stringshare_add(sensors[i]);
break;
}
}
- if (temperature_config->sensor_type) break;
+ if (inst->sensor_type) break;
}
ecore_list_destroy(therms);
}
}
}
-# endif
#endif
}
- if ((temperature_config->sensor_type) &&
- (temperature_config->sensor_name) &&
- (!temperature_config->sensor_path))
+ if ((inst->sensor_type) &&
+ (inst->sensor_name) &&
+ (!inst->sensor_path))
{
- switch (temperature_config->sensor_type)
+ switch (inst->sensor_type)
{
case SENSOR_TYPE_NONE:
break;
case SENSOR_TYPE_FREEBSD:
#ifdef __FreeBSD__
snprintf(path, sizeof(path), "hw.acpi.thermal.%s.temperature",
- temperature_config->sensor_name);
- temperature_config->sensor_path = evas_stringshare_add(path);
+ inst->sensor_name);
+ inst->sensor_path = evas_stringshare_add(path);
len = 5;
- sysctlnametomib(temperature_config->sensor_path,
temperature_config->mib, &len);
+ sysctlnametomib(inst->sensor_path, inst->mib, &len);
#endif
break;
case SENSOR_TYPE_OMNIBOOK:
- temperature_config->sensor_path =
evas_stringshare_add("/proc/omnibook/temperature");
+ inst->sensor_path =
evas_stringshare_add("/proc/omnibook/temperature");
break;
case SENSOR_TYPE_LINUX_MACMINI:
- temperature_config->sensor_path =
evas_stringshare_add("/sys/devices/temperatures/cpu_temperature");
+ inst->sensor_path =
evas_stringshare_add("/sys/devices/temperatures/cpu_temperature");
break;
case SENSOR_TYPE_LINUX_I2C:
therms = ecore_file_ls("/sys/bus/i2c/devices");
@@ -284,10 +302,10 @@
while ((name = ecore_list_next(therms)))
{
sprintf(path, "/sys/bus/i2c/devices/%s/%s_input",
- name, temperature_config->sensor_name);
+ name, inst->sensor_name);
if (ecore_file_exists(path))
{
- temperature_config->sensor_path =
evas_stringshare_add(path);
+ inst->sensor_path = evas_stringshare_add(path);
break;
}
}
@@ -296,8 +314,8 @@
break;
case SENSOR_TYPE_LINUX_ACPI:
snprintf(path, sizeof(path),
"/proc/acpi/thermal_zone/%s/temperature",
- temperature_config->sensor_name);
- temperature_config->sensor_path = evas_stringshare_add(path);
+ inst->sensor_name);
+ inst->sensor_path = evas_stringshare_add(path);
break;
}
}
@@ -308,21 +326,20 @@
{
FILE *f;
int ret = 0;
- Instance *inst;
- Evas_List *l;
+ Config_Face *inst;
int temp = 0;
char buf[4096];
#ifdef __FreeBSD__
int len;
#endif
- _temperature_sensor_init();
+ inst = data;
/* TODO: Make standard parser. Seems to be two types of temperature string:
* - Somename: <temp> C
* - <temp>
*/
- switch (temperature_config->sensor_type)
+ switch (inst->sensor_type)
{
case SENSOR_TYPE_NONE:
/* TODO: Slow down timer? */
@@ -330,7 +347,7 @@
case SENSOR_TYPE_FREEBSD:
#ifdef __FreeBSD__
len = sizeof(temp);
- if (sysctl(temperature_config->mib, 5, &temp, &len, NULL, 0) != -1)
+ if (sysctl(inst->mib, 5, &temp, &len, NULL, 0) != -1)
{
temp = (temp - 2732) / 10;
ret = 1;
@@ -340,7 +357,7 @@
#endif
break;
case SENSOR_TYPE_OMNIBOOK:
- f = fopen(temperature_config->sensor_path, "r");
+ f = fopen(inst->sensor_path, "r");
if (f)
{
char dummy[4096];
@@ -356,7 +373,7 @@
goto error;
break;
case SENSOR_TYPE_LINUX_MACMINI:
- f = fopen(temperature_config->sensor_path, "rb");
+ f = fopen(inst->sensor_path, "rb");
if (f)
{
fgets(buf, sizeof(buf), f); buf[sizeof(buf) - 1] = 0;
@@ -370,7 +387,7 @@
goto error;
break;
case SENSOR_TYPE_LINUX_I2C:
- f = fopen(temperature_config->sensor_path, "r");
+ f = fopen(inst->sensor_path, "r");
if (f)
{
fgets(buf, sizeof(buf), f);
@@ -389,7 +406,7 @@
goto error;
break;
case SENSOR_TYPE_LINUX_ACPI:
- f = fopen(temperature_config->sensor_path, "r");
+ f = fopen(inst->sensor_path, "r");
if (f)
{
char *p, *q;
@@ -413,53 +430,41 @@
break;
}
- if (temperature_config->units == FAHRENHEIT)
+ if (inst->units == FAHRENHEIT)
temp = (temp * 9.0 / 5.0) + 32;
if (ret)
{
char *utf8;
- if (temperature_config->have_temp != 1)
+ if (inst->have_temp != 1)
{
/* enable therm object */
- for (l = temperature_config->instances; l; l = l->next)
- {
- inst = l->data;
- edje_object_signal_emit(inst->o_temp, "e,state,known", "");
- }
- temperature_config->have_temp = 1;
+ edje_object_signal_emit(inst->o_temp, "e,state,known", "");
+ inst->have_temp = 1;
}
- if (temperature_config->units == FAHRENHEIT)
+ if (inst->units == FAHRENHEIT)
snprintf(buf, sizeof(buf), "%i°F", temp);
else
snprintf(buf, sizeof(buf), "%i°C", temp);
utf8 = ecore_txt_convert("iso-8859-1", "utf-8", buf);
- for (l = temperature_config->instances; l; l = l->next)
- {
- inst = l->data;
- _temperature_face_level_set(inst,
- (double)(temp -
temperature_config->low) /
- (double)(temperature_config->high -
temperature_config->low));
- edje_object_part_text_set(inst->o_temp, "e.text.reading", utf8);
- }
+ _temperature_face_level_set(inst,
+ (double)(temp - inst->low) /
+ (double)(inst->high - inst->low));
+ edje_object_part_text_set(inst->o_temp, "e.text.reading", utf8);
free(utf8);
}
else
{
- if (temperature_config->have_temp != 0)
+ if (inst->have_temp != 0)
{
/* disable therm object */
- for (l = temperature_config->instances; l; l = l->next)
- {
- inst = l->data;
- edje_object_signal_emit(inst->o_temp, "e,state,unknown", "");
- edje_object_part_text_set(inst->o_temp, "e.text.reading", "NO
TEMP");
- _temperature_face_level_set(inst, 0.5);
- }
- temperature_config->have_temp = 0;
+ edje_object_signal_emit(inst->o_temp, "e,state,unknown", "");
+ edje_object_part_text_set(inst->o_temp, "e.text.reading", "NO
TEMP");
+ _temperature_face_level_set(inst, 0.5);
+ inst->have_temp = 0;
}
}
return 1;
@@ -468,16 +473,16 @@
/* TODO: Error count? Might be a temporary problem */
/* TODO: Error dialog */
/* TODO: This should be further up, so that it will affect the gadcon */
- temperature_config->sensor_type = SENSOR_TYPE_NONE;
- if (temperature_config->sensor_name)
evas_stringshare_del(temperature_config->sensor_name);
- temperature_config->sensor_name = NULL;
- if (temperature_config->sensor_path)
evas_stringshare_del(temperature_config->sensor_path);
- temperature_config->sensor_path = NULL;
+ inst->sensor_type = SENSOR_TYPE_NONE;
+ if (inst->sensor_name) evas_stringshare_del(inst->sensor_name);
+ inst->sensor_name = NULL;
+ if (inst->sensor_path) evas_stringshare_del(inst->sensor_path);
+ inst->sensor_path = NULL;
return 1;
}
static void
-_temperature_face_level_set(Instance *inst, double level)
+_temperature_face_level_set(Config_Face *inst, double level)
{
Edje_Message_Float msg;
@@ -490,17 +495,38 @@
static void
_temperature_face_cb_menu_configure(void *data, E_Menu *m, E_Menu_Item *mi)
{
- if (!temperature_config) return;
- if (temperature_config->config_dialog) return;
- _config_temperature_module();
+ Config_Face *inst;
+
+ inst = data;
+ if (inst->config_dialog) return;
+ config_temperature_module(inst);
+}
+
+static Evas_Bool
+_temperature_face_shutdown(Evas_Hash *hash, const char *key, void *hdata, void
*fdata)
+{
+ Config_Face *inst;
+
+ inst = hdata;
+
+ if (inst->sensor_name) evas_stringshare_del(inst->sensor_name);
+ if (inst->sensor_path) evas_stringshare_del(inst->sensor_path);
+ free(inst);
+ return 1;
}
void
-_temperature_face_cb_config_updated(void)
+temperature_face_update_config(Config_Face *inst)
{
- ecore_timer_del(temperature_config->temperature_check_timer);
- temperature_config->temperature_check_timer =
- ecore_timer_add(temperature_config->poll_time, _temperature_cb_check,
NULL);
+ if (inst->sensor_path)
+ evas_stringshare_del(inst->sensor_path);
+ inst->sensor_path = NULL;
+
+ _temperature_sensor_init(inst);
+
+ if (inst->temperature_check_timer)
ecore_timer_del(inst->temperature_check_timer);
+ inst->temperature_check_timer =
+ ecore_timer_add(inst->poll_time, _temperature_cb_check, inst);
}
/***************************************************************************/
@@ -515,11 +541,11 @@
EAPI void *
e_modapi_init(E_Module *m)
{
- conf_edd = E_CONFIG_DD_NEW("Temperature_Config", Config);
+ conf_face_edd = E_CONFIG_DD_NEW("Temperature_Config_Face", Config_Face);
#undef T
#undef D
-#define T Config
-#define D conf_edd
+#define T Config_Face
+#define D conf_face_edd
E_CONFIG_VAL(D, T, poll_time, DOUBLE);
E_CONFIG_VAL(D, T, low, INT);
E_CONFIG_VAL(D, T, high, INT);
@@ -527,28 +553,18 @@
E_CONFIG_VAL(D, T, sensor_name, STR);
E_CONFIG_VAL(D, T, units, INT);
+ conf_edd = E_CONFIG_DD_NEW("Temperature_Config", Config);
+#undef T
+#undef D
+#define T Config
+#define D conf_edd
+ E_CONFIG_HASH(D, T, faces, conf_face_edd);
+
temperature_config = e_config_domain_load("module.temperature", conf_edd);
if (!temperature_config)
{
temperature_config = E_NEW(Config, 1);
- temperature_config->poll_time = 10.0;
- temperature_config->low = 30;
- temperature_config->high = 80;
- temperature_config->sensor_type = SENSOR_TYPE_NONE;
- temperature_config->sensor_name = NULL;
- temperature_config->sensor_path = NULL;
- temperature_config->units = CELCIUS;
}
- E_CONFIG_LIMIT(temperature_config->poll_time, 0.5, 1000.0);
- E_CONFIG_LIMIT(temperature_config->low, 0, 100);
- E_CONFIG_LIMIT(temperature_config->high, 0, 220);
- E_CONFIG_LIMIT(temperature_config->units, CELCIUS, FAHRENHEIT);
-
- temperature_config->have_temp = -1;
- temperature_config->temperature_check_timer =
- ecore_timer_add(temperature_config->poll_time, _temperature_cb_check,
- NULL);
-
temperature_config->module = m;
e_gadcon_provider_register(&_gadcon_class);
@@ -560,22 +576,11 @@
{
e_gadcon_provider_unregister(&_gadcon_class);
- if (temperature_config->config_dialog)
- e_object_del(E_OBJECT(temperature_config->config_dialog));
- if (temperature_config->menu)
- {
- e_menu_post_deactivate_callback_set(temperature_config->menu , NULL,
NULL);
- e_object_del(E_OBJECT(temperature_config->menu));
- temperature_config->menu = NULL;
- }
- if (temperature_config->temperature_check_timer)
- ecore_timer_del(temperature_config->temperature_check_timer);
- if (temperature_config->sensor_name)
- evas_stringshare_del(temperature_config->sensor_name);
- if (temperature_config->sensor_path)
- evas_stringshare_del(temperature_config->sensor_path);
+ evas_hash_foreach(temperature_config->faces, _temperature_face_shutdown,
NULL);
+ evas_hash_free(temperature_config->faces);
free(temperature_config);
temperature_config = NULL;
+ E_CONFIG_DD_FREE(conf_face_edd);
E_CONFIG_DD_FREE(conf_edd);
return 1;
}
@@ -597,13 +602,5 @@
return 1;
}
-EAPI int
-e_modapi_config(E_Module *m)
-{
- if (!temperature_config) return 0;
- if (temperature_config->config_dialog) return 0;
- _config_temperature_module();
- return 1;
-}
/**/
/***************************************************************************/
===================================================================
RCS file: /cvs/e/e17/apps/e/src/modules/temperature/e_mod_main.h,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -3 -r1.25 -r1.26
--- e_mod_main.h 15 Dec 2006 08:32:31 -0000 1.25
+++ e_mod_main.h 17 Dec 2006 22:01:45 -0000 1.26
@@ -5,6 +5,7 @@
#define E_MOD_MAIN_H
typedef struct _Config Config;
+typedef struct _Config_Face Config_Face;
typedef enum _Unit
{
@@ -22,7 +23,7 @@
SENSOR_TYPE_LINUX_ACPI
} Sensor_Type;
-struct _Config
+struct _Config_Face
{
/* saved * loaded config values */
double poll_time;
@@ -31,10 +32,13 @@
const char *sensor_name;
const char *sensor_path;
Unit units;
- /* just config state */
+ /* config state */
+ E_Gadcon_Client *gcc;
+ Evas_Object *o_temp;
+
E_Module *module;
+
E_Config_Dialog *config_dialog;
- Evas_List *instances;
E_Menu *menu;
Ecore_Timer *temperature_check_timer;
unsigned char have_temp;
@@ -43,17 +47,23 @@
#endif
};
+struct _Config
+{
+ /* saved * loaded config values */
+ Evas_Hash *faces;
+ /* config state */
+ E_Module *module;
+};
+
EAPI extern E_Module_Api e_modapi;
EAPI void *e_modapi_init (E_Module *m);
EAPI int e_modapi_shutdown (E_Module *m);
EAPI int e_modapi_save (E_Module *m);
EAPI int e_modapi_about (E_Module *m);
-EAPI int e_modapi_config (E_Module *m);
-void _config_temperature_module(void);
-void _temperature_face_cb_config_updated(void);
-extern Config *temperature_config;
+void config_temperature_module(Config_Face *inst);
+void temperature_face_update_config(Config_Face *inst);
#endif
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs