Am Tue, 04 Apr 2006 20:53:58 +0200 schrieb Massimo Maiurana <[EMAIL PROTECTED]>:
> Stephan Wezel, il 04/04/2006 17:14, scrisse: > > > + ob = e_widget_label_add(evas, D_("")); > > I've not even tried it so I could be wrong, but I think an empty > string can cause troubles in catalogue compilation with msgfmt. > Could be and i have it removed in this patch.
? tclock-timeformat-config-dialog.diff Index: e_mod_config.c =================================================================== RCS file: /var/cvs/e/e_modules/tclock/e_mod_config.c,v retrieving revision 1.12 diff -u -r1.12 e_mod_config.c --- e_mod_config.c 1 Apr 2006 19:35:59 -0000 1.12 +++ e_mod_config.c 5 Apr 2006 06:09:14 -0000 @@ -4,7 +4,9 @@ struct _E_Config_Dialog_Data { - int resolution; + unsigned int resolution; + char *format; + int userformat; }; /* Protos */ @@ -14,6 +16,7 @@ E_Config_Dialog_Data *cfdata); static int _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata); +static void onCheckChange(void *data, Evas_Object *obj); void _config_tclock_module(E_Container *con, TClock_Face * f) @@ -35,6 +38,9 @@ _fill_data(TClock_Face * f, E_Config_Dialog_Data *cfdata) { cfdata->resolution = f->conf->resolution; + if(f->conf->format) + cfdata->format = strdup(f->conf->format); + cfdata->userformat = f->conf->userformat; } static void * @@ -59,7 +65,7 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata) { - Evas_Object *o, *of, *ob; + Evas_Object *o, *of, *ob, *entry, *checked; E_Radio_Group *rg; o = e_widget_list_add(evas, 0, 0); @@ -70,6 +76,23 @@ ob = e_widget_radio_add(evas, D_("1 Second"), RESOLUTION_SECOND, rg); e_widget_framelist_object_append(of, ob); e_widget_list_object_append(o, of, 1, 1, 0.5); + + of = e_widget_frametable_add(evas, D_("Timeformat"), 1); + checked = e_widget_check_add(evas,D_("User format String"),&(cfdata->userformat)); + if(cfdata->userformat) + e_widget_check_checked_set(checked,1); + e_widget_frametable_object_append(of, checked,0,0,1,1,1,0,1,0); + ob = e_widget_label_add(evas, D_("For the format syntax please read the docu from strftime")); + e_widget_frametable_object_append(of, ob,0,2,1,1,1,0,1,0); + entry = e_widget_entry_add(evas,&(cfdata->format)); + e_widget_disabled_set(entry,!cfdata->userformat); + e_widget_min_size_set(entry,150,1); + e_widget_frametable_object_append(of, entry,0,1,1,1,1,0,1,0); + e_widget_list_object_append(o, of, 1, 1, 0.5); + e_widget_on_change_hook_set(checked,onCheckChange,entry); + + + return o; } @@ -80,8 +103,32 @@ f = cfd->data; e_border_button_bindings_ungrab_all(); + if(cfdata->resolution != f->conf->resolution) { + if (cfdata->resolution == RESOLUTION_MINUTE) + f->tclock->conf->poll_time = 60.0; + else + f->tclock->conf->poll_time = 1.0; + ecore_timer_interval_set(f->tclock->tclock_check_timer, + f->tclock->conf->poll_time); + } f->conf->resolution = cfdata->resolution; + f->conf->userformat = cfdata->userformat; + + /* update the format string with the format string given by the user + when the userformat is true and the string(typed by the user) isn't empty */ + if(strlen(cfdata->format)>0 && cfdata->userformat) { + if(f->conf->format) + evas_stringshare_del(f->conf->format); + f->conf->format = (char*)evas_stringshare_add(cfdata->format); + } + e_config_save_queue(); e_border_button_bindings_grab_all(); return 1; } + +static void onCheckChange(void *data, Evas_Object *obj) +{ + int checked = e_widget_check_checked_get(obj); + e_widget_disabled_set(data,!checked); +} Index: e_mod_main.c =================================================================== RCS file: /var/cvs/e/e_modules/tclock/e_mod_main.c,v retrieving revision 1.13 diff -u -r1.13 e_mod_main.c --- e_mod_main.c 1 Apr 2006 19:35:59 -0000 1.13 +++ e_mod_main.c 5 Apr 2006 06:09:15 -0000 @@ -143,6 +143,7 @@ E_CONFIG_VAL(D, T, enabled, UCHAR); E_CONFIG_VAL(D, T, resolution, UINT); E_CONFIG_VAL(D, T, format, STR); + E_CONFIG_VAL(D, T, userformat, UINT); conf_edd = E_CONFIG_DD_NEW("TClock_Config", Config); #undef T @@ -188,6 +189,14 @@ /* set instance config values */ face->conf->enabled = 1; face->conf->resolution = RESOLUTION_MINUTE; + face->conf->userformat = 0; + + const char *format; + format = + edje_object_part_state_get(face->tclock_object, "tclock_format", + NULL); + face->conf->format = (char*)evas_stringshare_add(format); + tclock->conf->faces = evas_list_append(tclock->conf->faces, face->conf); } @@ -207,11 +216,13 @@ } else { - E_CONFIG_LIMIT(tclock->conf->poll_time, 1.0, 60.0); + E_CONFIG_LIMIT(tclock->conf->poll_time, 60.0, 60.0); tclock->tclock_check_timer = ecore_timer_add(tclock->conf->poll_time, _tclock_cb_check, tclock); TCLOCK_DEBUG("RES_MIN"); + /* to avoid the long display of "Starting the clock..." */ + _tclock_cb_check(tclock); } /* Menu */ @@ -229,6 +240,7 @@ } } } + return tclock; } @@ -341,6 +353,8 @@ evas_object_del(face->event_object); e_object_del(E_OBJECT(face->menu)); + if(face->conf->format) + evas_stringshare_del(face->conf->format); free(face->conf); free(face); _tclock_count--; @@ -365,15 +379,18 @@ TClock_Face *face; face = l->data; + + const char *format; + /* Load the default format string from the module.edj-file + when the user defineable format string shouldn't be used + otherwise use the user defined format string*/ + if(!face->conf->userformat) { + format = edje_object_part_state_get(face->tclock_object, "tclock_format", + NULL); + } else + format = face->conf->format; - const char *format; - - format = - edje_object_part_state_get(face->tclock_object, "tclock_format", - NULL); - face->conf->format = format; - - strftime(buf, TIME_BUF, face->conf->format, local_time); + strftime(buf, TIME_BUF, format, local_time); TCLOCK_DEBUG(face->conf->format); edje_object_part_text_set(face->tclock_object, "tclock_text", buf); Index: e_mod_main.h =================================================================== RCS file: /var/cvs/e/e_modules/tclock/e_mod_main.h,v retrieving revision 1.6 diff -u -r1.6 e_mod_main.h --- e_mod_main.h 1 Apr 2006 19:35:59 -0000 1.6 +++ e_mod_main.h 5 Apr 2006 06:09:15 -0000 @@ -21,7 +21,8 @@ typedef struct _Config_Face { unsigned char enabled; unsigned int resolution; - const char *format; + char *format; + unsigned int userformat; } Config_Face; typedef struct _TClock {