test_progressbar.c: Do not use global variable for progressbar structure. That will...
authorDaniel Juyung Seo <seojuyung2@gmail.com>
Tue, 10 Sep 2013 14:50:41 +0000 (23:50 +0900)
committerDaniel Juyung Seo <seojuyung2@gmail.com>
Wed, 11 Sep 2013 13:38:49 +0000 (22:38 +0900)
legacy/elementary/src/bin/test_progressbar.c

index 13ac94f..5de8100 100644 (file)
@@ -3,7 +3,7 @@
 #endif
 #include <Elementary.h>
 #ifndef ELM_LIB_QUICKLAUNCH
-typedef struct Progressbar
+typedef struct Progressbar_Data
 {
    Evas_Object *pb1;
    Evas_Object *pb2;
@@ -15,113 +15,128 @@ typedef struct Progressbar
    Ecore_Timer *timer;
    Evas_Object *btn_start;
    Evas_Object *btn_stop;
-} Progressbar;
-
-static Progressbar _test_progressbar;
+} Progressbar_Data;
 
 static Eina_Bool
-_my_progressbar_value_set (void *data EINA_UNUSED)
+_my_progressbar_value_set(void *data)
 {
    double progress;
+   Progressbar_Data *pd = data;
 
-   progress = elm_progressbar_value_get (_test_progressbar.pb1);
+   progress = elm_progressbar_value_get (pd->pb1);
    if (progress < 1.0) progress += 0.0123;
    else progress = 0.0;
-   elm_progressbar_value_set(_test_progressbar.pb1, progress);
-   elm_progressbar_value_set(_test_progressbar.pb4, progress);
-   elm_progressbar_value_set(_test_progressbar.pb3, progress);
-   elm_progressbar_value_set(_test_progressbar.pb6, progress);
+   elm_progressbar_value_set(pd->pb1, progress);
+   elm_progressbar_value_set(pd->pb4, progress);
+   elm_progressbar_value_set(pd->pb3, progress);
+   elm_progressbar_value_set(pd->pb6, progress);
 
    if (progress < 1.0) return ECORE_CALLBACK_RENEW;
 
-   _test_progressbar.timer = NULL;
+   pd->timer = NULL;
    return ECORE_CALLBACK_CANCEL;
 }
 
 static Eina_Bool
-_my_progressbar_value_set2(void *data EINA_UNUSED)
+_my_progressbar_value_set2(void *data)
 {
+   Progressbar_Data *pd = data;
+   if (!pd) return ECORE_CALLBACK_CANCEL;
+
    double progress;
 
-   progress = elm_progressbar_value_get (_test_progressbar.pb1);
+   progress = elm_progressbar_value_get (pd->pb1);
    if (progress < 1.0) progress += 0.0123;
    else progress = 0.0;
-   elm_progressbar_part_value_set(_test_progressbar.pb1, "elm.cur.progressbar", progress);
-   elm_progressbar_value_set(_test_progressbar.pb2, progress);
-   elm_progressbar_part_value_set(_test_progressbar.pb2, "elm.cur.progressbar1", progress-0.15);
-   elm_progressbar_part_value_set(_test_progressbar.pb3, "elm.cur.progressbar", progress);
-   elm_progressbar_part_value_set(_test_progressbar.pb3, "elm.cur.progressbar1", progress-0.15);
+   elm_progressbar_part_value_set(pd->pb1, "elm.cur.progressbar", progress);
+   elm_progressbar_value_set(pd->pb2, progress);
+   elm_progressbar_part_value_set(pd->pb2, "elm.cur.progressbar1", progress-0.15);
+   elm_progressbar_part_value_set(pd->pb3, "elm.cur.progressbar", progress);
+   elm_progressbar_part_value_set(pd->pb3, "elm.cur.progressbar1", progress-0.15);
 
    if (progress < 1.0) return ECORE_CALLBACK_RENEW;
 
-   _test_progressbar.timer = NULL;
+   pd->timer = NULL;
    return ECORE_CALLBACK_CANCEL;
 }
 
 static void
-my_progressbar_test_start(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
+my_progressbar_test_start(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
 {
+   Progressbar_Data *pd = data;
+   if (!pd) return;
+
    fprintf(stderr, "s1\n");
-   elm_progressbar_pulse(_test_progressbar.pb2, EINA_TRUE);
+   elm_progressbar_pulse(pd->pb2, EINA_TRUE);
    fprintf(stderr, "s2\n");
-   elm_progressbar_pulse(_test_progressbar.pb5, EINA_TRUE);
-   fprintf(stderr, "s3 %p\n", _test_progressbar.pb7);
-   elm_progressbar_pulse(_test_progressbar.pb7, EINA_TRUE);
+   elm_progressbar_pulse(pd->pb5, EINA_TRUE);
+   fprintf(stderr, "s3 %p\n", pd->pb7);
+   elm_progressbar_pulse(pd->pb7, EINA_TRUE);
    fprintf(stderr, "s4\n");
 
-   elm_object_disabled_set(_test_progressbar.btn_start, EINA_TRUE);
-   elm_object_disabled_set(_test_progressbar.btn_stop, EINA_FALSE);
+   elm_object_disabled_set(pd->btn_start, EINA_TRUE);
+   elm_object_disabled_set(pd->btn_stop, EINA_FALSE);
 
-   if (!_test_progressbar.timer)
-     _test_progressbar.timer = ecore_timer_add(0.1,
-                                               _my_progressbar_value_set, NULL);
+   if (!pd->timer)
+     pd->timer = ecore_timer_add(0.1, _my_progressbar_value_set, pd);
 }
 
 static void
-my_progressbar_test_start2(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
+my_progressbar_test_start2(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
 {
+   Progressbar_Data *pd = data;
+   if (!pd) return;
+
    fprintf(stderr, "s1\n");
 
-   elm_object_disabled_set(_test_progressbar.btn_start, EINA_TRUE);
-   elm_object_disabled_set(_test_progressbar.btn_stop, EINA_FALSE);
+   elm_object_disabled_set(pd->btn_start, EINA_TRUE);
+   elm_object_disabled_set(pd->btn_stop, EINA_FALSE);
 
-   if (!_test_progressbar.timer)
-     _test_progressbar.timer = ecore_timer_add(0.1,
-                                               _my_progressbar_value_set2, NULL);
+   if (!pd->timer)
+     pd->timer = ecore_timer_add(0.1, _my_progressbar_value_set2, pd);
 }
 
 static void
-my_progressbar_test_stop(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
+my_progressbar_test_stop(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
 {
-   elm_progressbar_pulse(_test_progressbar.pb1, EINA_FALSE);
-   elm_progressbar_pulse(_test_progressbar.pb2, EINA_FALSE);
-   elm_progressbar_pulse(_test_progressbar.pb3, EINA_FALSE);
-   elm_object_disabled_set(_test_progressbar.btn_start, EINA_FALSE);
-   elm_object_disabled_set(_test_progressbar.btn_stop, EINA_TRUE);
+   Progressbar_Data *pd = data;
+   if (!pd) return;
+
+   elm_progressbar_pulse(pd->pb1, EINA_FALSE);
+   elm_progressbar_pulse(pd->pb2, EINA_FALSE);
+   elm_progressbar_pulse(pd->pb3, EINA_FALSE);
+   elm_object_disabled_set(pd->btn_start, EINA_FALSE);
+   elm_object_disabled_set(pd->btn_stop, EINA_TRUE);
 
-   if (_test_progressbar.timer)
+   if (pd->timer)
      {
-        ecore_timer_del(_test_progressbar.timer);
-        _test_progressbar.timer = NULL;
+        ecore_timer_del(pd->timer);
+        pd->timer = NULL;
      }
 }
 
 static void
-my_progressbar_test_stop2(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
+my_progressbar_test_stop2(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
 {
-   elm_object_disabled_set(_test_progressbar.btn_start, EINA_FALSE);
-   elm_object_disabled_set(_test_progressbar.btn_stop, EINA_TRUE);
+   Progressbar_Data *pd = data;
+   if (!pd) return;
 
-   if (_test_progressbar.timer)
+   elm_object_disabled_set(pd->btn_start, EINA_FALSE);
+   elm_object_disabled_set(pd->btn_stop, EINA_TRUE);
+
+   if (pd->timer)
      {
-        ecore_timer_del(_test_progressbar.timer);
-        _test_progressbar.timer = NULL;
+        ecore_timer_del(pd->timer);
+        pd->timer = NULL;
      }
 }
 
 static void
-my_progressbar_destroy(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
+_progressbar_destroy_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
 {
+   Progressbar_Data *pd = data;
+
+   if (pd) free(pd);
    my_progressbar_test_stop(NULL, NULL, NULL);
    evas_object_del(obj);
 }
@@ -143,10 +158,13 @@ test_progressbar(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *eve
 {
    Evas_Object *win, *pb, *bx, *hbx, *bt, *bt_bx, *ic1, *ic2;
    char buf[PATH_MAX];
+   Progressbar_Data *pd;
+
+   pd = (Progressbar_Data *)calloc(1, sizeof(Progressbar_Data));
 
    win = elm_win_util_standard_add("progressbar", "Progressbar");
    evas_object_smart_callback_add(win, "delete,request",
-                                  my_progressbar_destroy, NULL);
+                                  _progressbar_destroy_cb, pd);
 
    bx = elm_box_add(win);
    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
@@ -162,7 +180,7 @@ test_progressbar(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *eve
    elm_progressbar_unit_format_function_set(pb, my_progressbar_format_cb,
                                             (void (*)(char *)) free);
    evas_object_show(pb);
-   _test_progressbar.pb1 = pb;
+   pd->pb1 = pb;
 
    pb = elm_progressbar_add(win);
    evas_object_size_hint_align_set(pb, EVAS_HINT_FILL, 0.5);
@@ -171,7 +189,7 @@ test_progressbar(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *eve
    elm_progressbar_pulse_set(pb, EINA_TRUE);
    elm_box_pack_end(bx, pb);
    evas_object_show(pb);
-   _test_progressbar.pb2 = pb;
+   pd->pb2 = pb;
 
    ic1 = elm_icon_add(win);
    snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
@@ -183,13 +201,13 @@ test_progressbar(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *eve
    elm_object_part_content_set(pb, "icon", ic1);
    elm_progressbar_inverted_set(pb, 1);
    elm_progressbar_unit_format_set(pb, "%1.1f units");
-   elm_progressbar_span_size_set(pb, 200);
+   elm_progressbar_span_size_set(pb, elm_config_scale_get() * 200);
    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);
-   _test_progressbar.pb3 = pb;
+   pd->pb3 = pb;
 
    hbx = elm_box_add(win);
    elm_box_horizontal_set(hbx, EINA_TRUE);
@@ -203,22 +221,22 @@ test_progressbar(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *eve
    evas_object_size_hint_align_set(pb, EVAS_HINT_FILL, EVAS_HINT_FILL);
    evas_object_size_hint_weight_set(pb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
    elm_box_pack_end(hbx, pb);
-   elm_progressbar_span_size_set(pb, 60);
+   elm_progressbar_span_size_set(pb, elm_config_scale_get() * 60);
    elm_object_text_set(pb, "percent");
    evas_object_show(pb);
-   _test_progressbar.pb4 = pb;
+   pd->pb4 = pb;
 
    pb = elm_progressbar_add(win);
    elm_progressbar_horizontal_set(pb, EINA_FALSE);
    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_progressbar_span_size_set(pb, 80);
+   elm_progressbar_span_size_set(pb, elm_config_scale_get() * 80);
    elm_progressbar_pulse_set(pb, EINA_TRUE);
    elm_progressbar_unit_format_set(pb, NULL);
    elm_object_text_set(pb, "Infinite bounce");
    elm_box_pack_end(hbx, pb);
    evas_object_show(pb);
-   _test_progressbar.pb5 = pb;
+   pd->pb5 = pb;
 
    ic2 = elm_icon_add(win);
    elm_image_file_set(ic2, buf, NULL);
@@ -230,13 +248,13 @@ test_progressbar(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *eve
    elm_object_part_content_set(pb, "icon", ic2);
    elm_progressbar_inverted_set(pb, EINA_TRUE);
    elm_progressbar_unit_format_set(pb, "%1.2f%%");
-   elm_progressbar_span_size_set(pb, 200);
+   elm_progressbar_span_size_set(pb, elm_config_scale_get() * 200);
    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(hbx, pb);
    evas_object_show(ic2);
    evas_object_show(pb);
-   _test_progressbar.pb6 = pb;
+   pd->pb6 = pb;
 
    pb = elm_progressbar_add(win);
    elm_object_style_set(pb, "wheel");
@@ -246,7 +264,7 @@ test_progressbar(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *eve
    evas_object_size_hint_weight_set(pb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
    elm_box_pack_end(bx, pb);
    evas_object_show(pb);
-   _test_progressbar.pb7 = pb;
+   pd->pb7 = pb;
 
    bt_bx = elm_box_add(win);
    elm_box_horizontal_set(bt_bx, EINA_TRUE);
@@ -256,18 +274,18 @@ test_progressbar(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *eve
 
    bt = elm_button_add(win);
    elm_object_text_set(bt, "Start");
-   evas_object_smart_callback_add(bt, "clicked", my_progressbar_test_start, NULL);
+   evas_object_smart_callback_add(bt, "clicked", my_progressbar_test_start, pd);
    elm_box_pack_end(bt_bx, bt);
    evas_object_show(bt);
-   _test_progressbar.btn_start = bt;
+   pd->btn_start = bt;
 
    bt = elm_button_add(win);
    elm_object_text_set(bt, "Stop");
    elm_object_disabled_set(bt, EINA_TRUE);
-   evas_object_smart_callback_add(bt, "clicked", my_progressbar_test_stop, NULL);
+   evas_object_smart_callback_add(bt, "clicked", my_progressbar_test_stop, pd);
    elm_box_pack_end(bt_bx, bt);
    evas_object_show(bt);
-   _test_progressbar.btn_stop = bt;
+   pd->btn_stop = bt;
 
    evas_object_show(win);
 }
@@ -276,10 +294,14 @@ void
 test_progressbar2(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
 {
    Evas_Object *win, *pb, *bx, *bt, *bt_bx;
+   Progressbar_Data *pd;
+
+   pd = (Progressbar_Data *)calloc(1, sizeof(Progressbar_Data));
 
    win = elm_win_util_standard_add("progressbar", "Progressbar2");
    evas_object_smart_callback_add(win, "delete,request",
-                                  my_progressbar_destroy, NULL);
+                                  _progressbar_destroy_cb, pd);
+   evas_object_show(win);
 
    bx = elm_box_add(win);
    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
@@ -288,32 +310,32 @@ test_progressbar2(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *even
 
    pb = elm_progressbar_add(win);
    elm_object_text_set(pb, "Style: default");
-   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_progressbar_span_size_set(pb, 200);
+   evas_object_size_hint_align_set(pb, EVAS_HINT_FILL, 0.5);
+   elm_progressbar_span_size_set(pb, elm_config_scale_get() * 200);
    elm_box_pack_end(bx, pb);
    evas_object_show(pb);
-   _test_progressbar.pb1 = pb;
+   pd->pb1 = pb;
 
    pb = elm_progressbar_add(win);
    elm_object_style_set(pb, "recording");
    elm_object_text_set(pb, "Style: Recording");
-   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_progressbar_span_size_set(pb, 200);
+   evas_object_size_hint_align_set(pb, EVAS_HINT_FILL, 0.5);
+   elm_progressbar_span_size_set(pb, elm_config_scale_get() * 200);
    elm_box_pack_end(bx, pb);
    evas_object_show(pb);
-   _test_progressbar.pb2 = pb;
+   pd->pb2 = pb;
 
    pb = elm_progressbar_add(win);
    elm_object_style_set(pb, "recording");
    elm_object_text_set(pb, "Style: Recording 2");
-   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_progressbar_span_size_set(pb, 200);
+   evas_object_size_hint_align_set(pb, EVAS_HINT_FILL, 0.5);
+   elm_progressbar_span_size_set(pb, elm_config_scale_get() * 200);
    elm_box_pack_end(bx, pb);
    evas_object_show(pb);
-   _test_progressbar.pb3 = pb;
+   pd->pb3 = pb;
 
    bt_bx = elm_box_add(win);
    elm_box_horizontal_set(bt_bx, EINA_TRUE);
@@ -323,19 +345,17 @@ test_progressbar2(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *even
 
    bt = elm_button_add(win);
    elm_object_text_set(bt, "Start");
-   evas_object_smart_callback_add(bt, "clicked", my_progressbar_test_start2, NULL);
+   evas_object_smart_callback_add(bt, "clicked", my_progressbar_test_start2, pd);
    elm_box_pack_end(bt_bx, bt);
    evas_object_show(bt);
-   _test_progressbar.btn_start = bt;
+   pd->btn_start = bt;
 
    bt = elm_button_add(win);
    elm_object_text_set(bt, "Stop");
    elm_object_disabled_set(bt, EINA_TRUE);
-   evas_object_smart_callback_add(bt, "clicked", my_progressbar_test_stop2, NULL);
+   evas_object_smart_callback_add(bt, "clicked", my_progressbar_test_stop2, pd);
    elm_box_pack_end(bt_bx, bt);
    evas_object_show(bt);
-   _test_progressbar.btn_stop = bt;
-
-   evas_object_show(win);
+   pd->btn_stop = bt;
 }
 #endif