From: Hyoyoung Chang <hyoyoung@gmail.com>
[framework/uifw/elementary.git] / src / examples / genlist_example_04.c
index 5985220..553bfa2 100644 (file)
@@ -10,8 +10,8 @@
 
 #define N_ITEMS 300
 
-static Elm_Genlist_Item_Class _itc;
-static Elm_Genlist_Item_Class _itc_group;
+static Elm_Genlist_Item_Class *_itc = NULL;
+static Elm_Genlist_Item_Class *_itc_group = NULL;
 static int nitems = 0;
 
 static char *
@@ -25,10 +25,10 @@ _item_label_get(void *data, Evas_Object *obj __UNUSED__, const char *part)
      snprintf(buf, sizeof(buf), "Item # %i", i);
    else
      {
-       int n;
-       snprintf(buf, sizeof(buf), "realized at %s", ctime(&t));
-       n = strlen(buf);
-       buf[n - 1] = '\0';
+        int n;
+        snprintf(buf, sizeof(buf), "realized at %s", ctime(&t));
+        n = strlen(buf);
+        buf[n - 1] = '\0';
      }
 
    return strdup(buf);
@@ -50,7 +50,7 @@ static void
 _item_sel_cb(void *data, Evas_Object *obj, void *event_info)
 {
    printf("sel item data [%p] on genlist obj [%p], item pointer [%p]\n",
-         data, obj, event_info);
+          data, obj, event_info);
 }
 
 static char *
@@ -81,7 +81,7 @@ _append_cb(void *data, Evas_Object *o __UNUSED__, void *event_info __UNUSED__)
 {
    Evas_Object *list = data;
 
-   elm_genlist_item_append(list, &_itc,
+   elm_genlist_item_append(list, _itc,
                            (void *)(long)nitems++, NULL,
                            ELM_GENLIST_ITEM_NONE,
                            _item_sel_cb, NULL);
@@ -93,7 +93,7 @@ _prepend_cb(void *data, Evas_Object *o __UNUSED__, void *event_info __UNUSED__)
 {
    Evas_Object *list = data;
 
-   elm_genlist_item_prepend(list, &_itc,
+   elm_genlist_item_prepend(list, _itc,
                             (void *)(long)nitems++, NULL,
                             ELM_GENLIST_ITEM_NONE,
                             _item_sel_cb, NULL);
@@ -108,7 +108,7 @@ _insert_before_cb(void *data, Evas_Object *o __UNUSED__, void *event_info __UNUS
 
    if (!glit) return;
 
-   elm_genlist_item_insert_before(list, &_itc,
+   elm_genlist_item_insert_before(list, _itc,
                                   (void *)(long)nitems++, NULL,
                                   glit, ELM_GENLIST_ITEM_NONE,
                                   _item_sel_cb, NULL);
@@ -123,7 +123,7 @@ _insert_after_cb(void *data, Evas_Object *o __UNUSED__, void *event_info __UNUSE
 
    if (!glit) return;
 
-   elm_genlist_item_insert_after(list, &_itc,
+   elm_genlist_item_insert_after(list, _itc,
                                  (void *)(long)nitems++, NULL,
                                  glit, ELM_GENLIST_ITEM_NONE,
                                  _item_sel_cb, NULL);
@@ -136,11 +136,11 @@ _next_cb(void *data, Evas_Object *o __UNUSED__, void *event_info __UNUSED__)
    Evas_Object *list = data;
    Elm_Object_Item *glit = elm_genlist_selected_item_get(list);
 
-   if (glit) glit = elm_genlist_item_next_get(it);
+   if (glit) glit = elm_genlist_item_next_get(glit);
    if (!glit) glit = elm_genlist_first_item_get(list);
 
    elm_genlist_item_selected_set(glit, EINA_TRUE);
-   elm_genlist_item_show(glit);
+   elm_genlist_item_show(glit, ELM_GENLIST_ITEM_SCROLLTO_IN);
 }
 
 static void
@@ -153,7 +153,7 @@ _prev_cb(void *data, Evas_Object *o __UNUSED__, void *event_info __UNUSED__)
    if (!glit) glit = elm_genlist_last_item_get(list);
 
    elm_genlist_item_selected_set(glit, EINA_TRUE);
-   elm_genlist_item_show(glit);
+   elm_genlist_item_show(glit, ELM_GENLIST_ITEM_SCROLLTO_IN);
 }
 
 static void
@@ -162,7 +162,7 @@ _bring_in_cb(void *data, Evas_Object *o __UNUSED__, void *event_info __UNUSED__)
    Elm_Object_Item *glit = data;
    if (!glit) return;
 
-   elm_genlist_item_bring_in(glit);
+   elm_genlist_item_bring_in(glit, ELM_GENLIST_ITEM_SCROLLTO_IN);
 }
 
 static void
@@ -171,7 +171,7 @@ _show_cb(void *data, Evas_Object *o __UNUSED__, void *event_info __UNUSED__)
    Elm_Object_Item *glit = data;
    if (!glit) return;
 
-   elm_genlist_item_show(glit);
+   elm_genlist_item_show(glit, ELM_GENLIST_ITEM_SCROLLTO_IN);
 }
 
 static void
@@ -180,7 +180,7 @@ _middle_in_cb(void *data, Evas_Object *o __UNUSED__, void *event_info __UNUSED__
    Elm_Object_Item *glit = data;
    if (!glit) return;
 
-   elm_genlist_item_middle_bring_in(glit);
+   elm_genlist_item_bring_in(glit, ELM_GENLIST_ITEM_SCROLLTO_MIDDLE);
 }
 
 static void
@@ -189,7 +189,7 @@ _middle_show_cb(void *data, Evas_Object *o __UNUSED__, void *event_info __UNUSED
    Elm_Object_Item *glit = data;
    if (!glit) return;
 
-   elm_genlist_item_middle_show(glit);
+   elm_genlist_item_show(glit, ELM_GENLIST_ITEM_SCROLLTO_MIDDLE);
 }
 
 static void
@@ -198,7 +198,7 @@ _top_in_cb(void *data, Evas_Object *o __UNUSED__, void *event_info __UNUSED__)
    Elm_Object_Item *glit = data;
    if (!glit) return;
 
-   elm_genlist_item_top_bring_in(glit);
+   elm_genlist_item_bring_in(glit, ELM_GENLIST_ITEM_SCROLLTO_TOP);
 }
 
 static void
@@ -207,7 +207,7 @@ _top_show_cb(void *data, Evas_Object *o __UNUSED__, void *event_info __UNUSED__)
    Elm_Object_Item *glit = data;
    if (!glit) return;
 
-   elm_genlist_item_top_show(glit);
+   elm_genlist_item_show(glit, ELM_GENLIST_ITEM_SCROLLTO_TOP);
 }
 
 static void
@@ -263,18 +263,26 @@ elm_main(int argc __UNUSED__, char **argv __UNUSED__)
    elm_win_resize_object_add(win, box);
    evas_object_show(box);
 
-   _itc.item_style = "double_label";
-   _itc.func.text_get = _item_label_get;
-   _itc.func.content_get = _item_content_get;
-   _itc.func.state_get = NULL;
-   _itc.func.del = NULL;
-
-   _itc_group.item_style = "group_index";
-   _itc_group.func.text_get = _group_label_get;
-   _itc_group.func.content_get = _group_content_get;
-   _itc_group.func.state_get = NULL;
-   _itc_group.func.del = NULL;
+   if (!_itc)
+     {
+        _itc = elm_genlist_item_class_new();
+        _itc->item_style = "default";
+        _itc->func.text_get = _item_label_get;
+        _itc->func.content_get = _item_content_get;
+        _itc->func.state_get = NULL;
+        _itc->func.del = NULL;
+     }
 
+   if (!_itc_group)
+     {
+        _itc_group = elm_genlist_item_class_new();
+        _itc_group->item_style = "default";
+        _itc_group->func.text_get = _item_label_get;
+        _itc_group->func.content_get = _item_content_get;
+        _itc_group->func.state_get = NULL;
+        _itc_group->func.del = NULL;
+     }
+   
    list = elm_genlist_add(win);
 
    evas_object_size_hint_weight_set(list, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
@@ -284,7 +292,7 @@ elm_main(int argc __UNUSED__, char **argv __UNUSED__)
 
    fbox = elm_box_add(win);
    elm_box_layout_set(fbox, evas_object_box_layout_flow_horizontal,
-                     NULL, NULL);
+                      NULL, NULL);
    evas_object_size_hint_weight_set(fbox, EVAS_HINT_EXPAND, 0);
    evas_object_size_hint_align_set(fbox, EVAS_HINT_FILL, EVAS_HINT_FILL);
    elm_box_pack_end(box, fbox);
@@ -308,45 +316,45 @@ elm_main(int argc __UNUSED__, char **argv __UNUSED__)
      {
         Elm_Object_Item *gli, *glg;
 
-       if (i % 7 == 0)
-         {
-            glg = gli = elm_genlist_item_append(list, &_itc_group,
-                                                (void *)(long)nitems++, NULL,
-                                                ELM_GENLIST_ITEM_GROUP,
-                                                _item_sel_cb, NULL);
-            elm_genlist_item_display_only_set(glg, EINA_TRUE);
-         }
-       else
-         {
-            gli = elm_genlist_item_append(list, &_itc,
-                                          (void *)(long)nitems++, glg,
-                                          ELM_GENLIST_ITEM_NONE,
-                                          _item_sel_cb, NULL);
-         }
-
-       switch (i)
-         {
-          case 3:
-             elm_genlist_item_disabled_set(gli, EINA_TRUE);
-             break;
-          case 50:
-             evas_object_smart_callback_add(
-                bt_bring_in, "clicked", _bring_in_cb, gli);
-             evas_object_smart_callback_add(
-                bt_show, "clicked", _show_cb, gli);
-             break;
-          case 200:
-             evas_object_smart_callback_add(
-                bt_middle_in, "clicked", _middle_in_cb, gli);
-             evas_object_smart_callback_add(
-                bt_middle_show, "clicked", _middle_show_cb, gli);
-             break;
-          case 250:
-             evas_object_smart_callback_add(
-                bt_top_in, "clicked", _top_in_cb, gli);
-             evas_object_smart_callback_add(
-                bt_top_show, "clicked", _top_show_cb, gli);
-         }
+        if (i % 7 == 0)
+          {
+             glg = gli = elm_genlist_item_append(list, _itc_group,
+                                                 (void *)(long)nitems++, NULL,
+                                                 ELM_GENLIST_ITEM_GROUP,
+                                                 _item_sel_cb, NULL);
+             elm_genlist_item_select_mode_set(git, ELM_OBJECT_DISPLAY_ONLY_SELECT);
+          }
+        else
+          {
+             gli = elm_genlist_item_append(list, _itc,
+                                           (void *)(long)nitems++, glg,
+                                           ELM_GENLIST_ITEM_NONE,
+                                           _item_sel_cb, NULL);
+          }
+
+        switch (i)
+          {
+           case 3:
+              elm_object_item_disabled_set(gli, EINA_TRUE);
+              break;
+           case 50:
+              evas_object_smart_callback_add(
+                 bt_bring_in, "clicked", _bring_in_cb, gli);
+              evas_object_smart_callback_add(
+                 bt_show, "clicked", _show_cb, gli);
+              break;
+           case 200:
+              evas_object_smart_callback_add(
+                 bt_middle_in, "clicked", _middle_in_cb, gli);
+              evas_object_smart_callback_add(
+                 bt_middle_show, "clicked", _middle_show_cb, gli);
+              break;
+           case 250:
+              evas_object_smart_callback_add(
+                 bt_top_in, "clicked", _top_in_cb, gli);
+              evas_object_smart_callback_add(
+                 bt_top_show, "clicked", _top_show_cb, gli);
+          }
      }
 
    evas_object_size_hint_min_set(bg, 160, 160);