View: Added the Eina_Compare_Cb for sorting apps 32/43832/1
authorHyojung Jo <hj903.jo@samsung.com>
Tue, 14 Jul 2015 10:35:21 +0000 (19:35 +0900)
committerHyojung Jo <hj903.jo@samsung.com>
Tue, 14 Jul 2015 10:35:21 +0000 (19:35 +0900)
Change-Id: I1164a14dd4f598ac56cc67a0bca4ae055abbc24d
Signed-off-by: Hyojung Jo <hj903.jo@samsung.com>
src/view/view_base.c

index 644484e..027d98e 100644 (file)
@@ -158,12 +158,44 @@ static void _destroy_sort_ctxpopup(struct _priv *priv)
        priv->sort_popup = NULL;
 }
 
+static int _sort_by_a_to_z(const void *first_data, const void *second_data)
+{
+       struct app_data *adata1, *adata2;
+
+       adata1 = (struct app_data *)first_data;
+       adata2 = (struct app_data *)second_data;
+
+       if (!adata1 || !get_app_name(adata1))
+               return 1;
+
+       if (!adata2 || !get_app_name(adata2))
+               return -1;
+
+       return strcmp(get_app_name(adata1), get_app_name(adata2));
+}
+
+static int _sort_by_z_to_a(const void *first_data, const void *second_data)
+{
+       struct app_data *adata1, *adata2;
+
+       adata1 = (struct app_data *)first_data;
+       adata2 = (struct app_data *)second_data;
+
+       if (!adata1 || !get_app_name(adata1))
+               return -1;
+
+       if (!adata2 || !get_app_name(adata2))
+               return 1;
+
+       return strcmp(get_app_name(adata2), get_app_name(adata1));
+}
+
 static void _option_key_down_cb(int id, void *data, Evas *e, Evas_Object *obj,
                Evas_Event_Key_Down *ev)
 {
        struct _priv *priv;
 
-       if (!data || !ev) {
+       if (!data || !obj || !ev) {
                _ERR("Invalid argument.");
                return;
        }
@@ -178,11 +210,15 @@ static void _option_key_down_cb(int id, void *data, Evas *e, Evas_Object *obj,
                        break;
 
                case SORT_A_TO_Z:
-                       /* It should be implemented later. */
+                       priv->app_list = eina_list_sort(priv->app_list, 0,
+                                       _sort_by_a_to_z);
+                       priv->sort_type = SORT_A_TO_Z;
                        break;
 
                case SORT_Z_TO_A:
-                       /* It should be implemented later. */
+                       priv->app_list = eina_list_sort(priv->app_list, 0,
+                                       _sort_by_z_to_a);
+                       priv->sort_type = SORT_Z_TO_A;
                        break;
 
                default:
@@ -190,6 +226,8 @@ static void _option_key_down_cb(int id, void *data, Evas *e, Evas_Object *obj,
                }
 
                _destroy_sort_ctxpopup(priv);
+               elm_object_text_set(priv->sort_btn, elm_object_text_get(obj));
+               gridmgr_append_list(priv->gmgr, STR_MYAPPS, priv->app_list);
        }
 }