On 06/14/2012 12:15 AM, Michaël Bouchaud wrote:
Hum not really needed as is... We just need a format function here ... a progressbar is from 0.0 to 1.0.
Some more discussion in IRC led to the conclusion that this should be a handled in a signal callback I've attached the new patch where I also updated the progress bar example.
Regards, Daniel Willmann
2012/6/12 Daniel Willmann<d.willm...@samsung.com>Hello, updated version. I added the @since 1.1 mentioned by Stefan and mentioned the default value. Regards, Daniel These functions change the range of the value displayed on the progress bar with elm_progressbar_unit_format_set. At the moment the value displayed is in the range of 0 to 100. These functions allow you to change the upper range to something else. This is useful if the value represented by the progress bar is something else than percent, such as hours left.
From 8f7cc0343ed6b581f64f34e2ecc8fd0bf7c60aab Mon Sep 17 00:00:00 2001 From: Daniel Willmann <d.willm...@samsung.com> Date: Thu, 14 Jun 2012 13:47:37 +0100 Subject: [PATCH] elementary: Add "changed" signal to elm_progressbar This signal is emitted whenever the value of a progress bar changes. The callback function can then set the unit format to an arbitrary string. This is useful if the value represented by the progress bar is something else than percent, such as hours left. Signed-off-by: Daniel Willmann <d.willm...@samsung.com> --- trunk/elementary/ChangeLog | 4 ++ .../elementary/src/examples/progressbar_example.c | 52 +++++++++++++++----- trunk/elementary/src/lib/elm_progressbar.c | 12 ++++- trunk/elementary/src/lib/elm_progressbar.h | 4 ++ 4 files changed, 59 insertions(+), 13 deletions(-) diff --git a/trunk/elementary/ChangeLog b/trunk/elementary/ChangeLog index 2d16db7..7ae3196 100644 --- a/trunk/elementary/ChangeLog +++ b/trunk/elementary/ChangeLog @@ -188,3 +188,7 @@ * Toolbar : Add the reorder feature when the more panel is shown. After the item is long-pressed, it can be moved. + +2012-06-14 Daniel Willmann + * elm_progressbar: Add "changed" signal to be emitted when the value is changed. + Can be used for complex custom unit formats. diff --git a/trunk/elementary/src/examples/progressbar_example.c b/trunk/elementary/src/examples/progressbar_example.c index f7341a2..116efd2 100644 --- a/trunk/elementary/src/examples/progressbar_example.c +++ b/trunk/elementary/src/examples/progressbar_example.c @@ -17,9 +17,10 @@ typedef struct Progressbar_Example Evas_Object *pb2; /* pulsing */ Evas_Object *pb3; Evas_Object *pb4; - Evas_Object *pb5; /* pulsing */ - Evas_Object *pb6; - Evas_Object *pb7; /* pulsing */ + Evas_Object *pb5; + Evas_Object *pb6; /* pulsing */ + Evas_Object *pb7; + Evas_Object *pb8; /* pulsing */ Eina_Bool run; Ecore_Timer *timer; @@ -40,7 +41,8 @@ _progressbar_example_value_set(void *data) elm_progressbar_value_set(example_data.pb1, progress); elm_progressbar_value_set(example_data.pb3, progress); elm_progressbar_value_set(example_data.pb4, progress); - elm_progressbar_value_set(example_data.pb6, progress); + elm_progressbar_value_set(example_data.pb5, progress); + elm_progressbar_value_set(example_data.pb7, progress); if (progress < 1.0) return ECORE_CALLBACK_RENEW; @@ -54,8 +56,8 @@ _progressbar_example_start(void *data, void *event_info) { elm_progressbar_pulse(example_data.pb2, EINA_TRUE); - elm_progressbar_pulse(example_data.pb5, EINA_TRUE); - elm_progressbar_pulse(example_data.pb7, EINA_TRUE); + elm_progressbar_pulse(example_data.pb6, EINA_TRUE); + elm_progressbar_pulse(example_data.pb8, EINA_TRUE); if (!example_data.run) { @@ -72,8 +74,8 @@ _progressbar_example_stop(void *data, void *event_info) { elm_progressbar_pulse(example_data.pb2, EINA_FALSE); - elm_progressbar_pulse(example_data.pb5, EINA_FALSE); - elm_progressbar_pulse(example_data.pb7, EINA_FALSE); + elm_progressbar_pulse(example_data.pb6, EINA_FALSE); + elm_progressbar_pulse(example_data.pb8, EINA_FALSE); if (example_data.run) { @@ -83,6 +85,21 @@ _progressbar_example_stop(void *data, } static void +_on_changed(void *data, Evas_Object *obj, void *event_info) +{ + double progress; + int files; + char text[30]; + + /* Count down from 3 minutes */ + progress = elm_progressbar_value_get(obj); + files = (1-progress) * 12000; + snprintf(text, 29, "%i files remaining", files); + + elm_progressbar_unit_format_set(obj, text); +} + +static void _on_done(void *data, Evas_Object *obj, void *event_info) @@ -150,6 +167,17 @@ elm_main(int argc, evas_object_show(pb); example_data.pb3 = pb; + /* pb with callback function */ + pb = elm_progressbar_add(win); + elm_progressbar_unit_format_set(pb, NULL); + evas_object_size_hint_align_set(pb, EVAS_HINT_FILL, 0.5); + evas_object_size_hint_weight_set(pb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_box_pack_end(bx, pb); + evas_object_show(ic1); + evas_object_show(pb); + evas_object_smart_callback_add(pb, "changed", _on_changed, NULL); + example_data.pb4 = pb; + hbx = elm_box_add(win); elm_box_horizontal_set(hbx, EINA_TRUE); evas_object_size_hint_weight_set(hbx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); @@ -165,7 +193,7 @@ elm_main(int argc, elm_box_pack_end(hbx, pb); elm_object_text_set(pb, "percent"); evas_object_show(pb); - example_data.pb4 = pb; + example_data.pb5 = pb; /* vertical pb, with pulse and custom (small) span size */ pb = elm_progressbar_add(win); @@ -178,7 +206,7 @@ elm_main(int argc, elm_object_text_set(pb, "Infinite bounce"); elm_box_pack_end(hbx, pb); evas_object_show(pb); - example_data.pb5 = pb; + example_data.pb6 = pb; ic2 = elm_icon_add(win); elm_icon_file_set(ic2, buf, NULL); @@ -197,7 +225,7 @@ elm_main(int argc, elm_box_pack_end(hbx, pb); evas_object_show(ic2); evas_object_show(pb); - example_data.pb6 = pb; + example_data.pb7 = pb; /* "wheel" style progress bar */ pb = elm_progressbar_add(win); @@ -207,7 +235,7 @@ elm_main(int argc, evas_object_size_hint_weight_set(pb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); elm_box_pack_end(bx, pb); evas_object_show(pb); - example_data.pb7 = pb; + example_data.pb8 = pb; bt_bx = elm_box_add(win); elm_box_horizontal_set(bt_bx, EINA_TRUE); diff --git a/trunk/elementary/src/lib/elm_progressbar.c b/trunk/elementary/src/lib/elm_progressbar.c index 61f2b64..2daa65c 100644 --- a/trunk/elementary/src/lib/elm_progressbar.c +++ b/trunk/elementary/src/lib/elm_progressbar.c @@ -4,6 +4,8 @@ static const char PROGRESSBAR_SMART_NAME[] = "elm_progressbar"; +static const char SIG_CHANGED[] = "changed"; + #define MIN_RATIO_LVL 0.0 #define MAX_RATIO_LVL 1.0 @@ -51,11 +53,18 @@ struct _Elm_Progressbar_Smart_Data ((obj), PROGRESSBAR_SMART_NAME, __func__)) \ return +/* smart callbacks coming from elm progressbar objects (besides the + * ones coming from elm layout): */ +static const Evas_Smart_Cb_Description _smart_callbacks[] = { + {SIG_CHANGED, ""}, + {NULL, NULL} +}; + /* Inheriting from elm_layout. Besides, we need no more than what is * there */ EVAS_SMART_SUBCLASS_NEW (PROGRESSBAR_SMART_NAME, _elm_progressbar, Elm_Layout_Smart_Class, - Elm_Layout_Smart_Class, elm_layout_smart_class_get, NULL); + Elm_Layout_Smart_Class, elm_layout_smart_class_get, _smart_callbacks); static const Elm_Layout_Part_Alias_Description _content_aliases[] = { @@ -353,6 +362,7 @@ elm_progressbar_value_set(Evas_Object *obj, _val_set(obj); _units_set(obj); + evas_object_smart_callback_call(obj, SIG_CHANGED, NULL); } EAPI double diff --git a/trunk/elementary/src/lib/elm_progressbar.h b/trunk/elementary/src/lib/elm_progressbar.h index 989433d..58687ae 100644 --- a/trunk/elementary/src/lib/elm_progressbar.h +++ b/trunk/elementary/src/lib/elm_progressbar.h @@ -33,6 +33,10 @@ * This widget inherits from the @ref Layout one, so that all the * functions acting on it also work for progress bar objects. * + * This widget emits the following signals, besides the ones sent from + * @ref Layout: + * @li @c "changed" - when the value is changed + * * This widget has the following styles: * - @c "default" * - @c "wheel" (simple style, no text, no progression, only -- 1.7.9.5
------------------------------------------------------------------------------ Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel