From ec5b169133fe0e08159f2030e79344fe075f3872 Mon Sep 17 00:00:00 2001 From: "allu.k" Date: Thu, 27 Feb 2020 11:17:45 +0530 Subject: [PATCH] Modifications Based on UI Guidelines Change-Id: I70a95b5253e297ababc39b7e89ae8bd269b17e13 --- inc/apps_data.h | 8 +- inc/conf.h | 6 +- inc/edc_conf.h | 4 +- res/edje/apps_view.edc | 4 +- res/edje/apps_view_bg.edc | 4 +- res/edje/home_btn.edc | 12 +-- res/images/page_indicator_current.png | Bin 997 -> 427 bytes res/images/page_indicator_unit.png | Bin 160 -> 427 bytes src/apps_data.c | 168 +++++++++++++++++++++++++++------- src/apps_view.c | 112 +++++++++++++++++++---- 10 files changed, 251 insertions(+), 67 deletions(-) mode change 100755 => 100644 res/images/page_indicator_current.png mode change 100755 => 100644 res/images/page_indicator_unit.png diff --git a/inc/apps_data.h b/inc/apps_data.h index 233d460..36391ae 100644 --- a/inc/apps_data.h +++ b/inc/apps_data.h @@ -59,7 +59,7 @@ enum { }; void apps_data_init(void *data, Ecore_Thread *th); -void apps_data_sort(void); +void apps_data_get_position(void); Eina_List *apps_data_get_list(void); void apps_data_get_folder_item_list(Eina_List **list, app_data_t *folder); void apps_data_install(app_data_t *item); @@ -74,5 +74,9 @@ app_data_t *apps_data_find_item_by_index(int index); int apps_data_get_folder_item_count(app_data_t *folder); void apps_data_update_item_label(void); storage_t apps_data_get_storage_type(const char *package); - +app_data_t *apps_data_add_folder_with_items(app_data_t *item1,app_data_t *item2); +void apps_data_update_list(app_data_t *item,app_data_t *folder); +void apps_data_db_update(); +app_data_t *__apps_data_find_item_sort(int db_id); +void apps_data_shift_app(app_data_t *item,app_data_t *before_item); #endif /* __APPS_DATA_H__ */ diff --git a/inc/conf.h b/inc/conf.h index fffaef8..86d018a 100755 --- a/inc/conf.h +++ b/inc/conf.h @@ -83,8 +83,8 @@ extern int __conf_get_cluster_all_page_w(); #define APPS_VIEW_ICON_CONTENT_WIDTH 144 #define APPS_VIEW_ICON_CONTENT_HEIGHT 152 -#define APPS_VIEW_ICON_CONTENT_HORIZONTAL_DISTANCE 240 -#define APPS_VIEW_ICON_CONTENT_VERTICAL_DISTANCE 192 +#define APPS_VIEW_ICON_CONTENT_HORIZONTAL_DISTANCE 199 +#define APPS_VIEW_ICON_CONTENT_VERTICAL_DISTANCE 225 #define APPS_VIEW_ICON_TEXT_SIZE_NORMAL 20 #define APPS_VIEW_ICON_TEXT_SIZE_EDIT 19 @@ -145,7 +145,7 @@ extern int __conf_get_cluster_all_page_w(); #define ALLPAGE_MOVE_GAP 0.15 #define MENU_W 720 -#define APPS_FOLDER_MAX_ITEM 8 +#define APPS_FOLDER_MAX_ITEM 6 #define APPS_FOLDER_MAX_TITLE 30 #define LONG_PRESS_TIME 0.75 diff --git a/inc/edc_conf.h b/inc/edc_conf.h index 2bb4b48..732728b 100755 --- a/inc/edc_conf.h +++ b/inc/edc_conf.h @@ -119,7 +119,7 @@ #define SIGNAL_APPS_VIEW_SHOW "apps_bg_show" #define SIGNAL_APPS_VIEW_ANIM "apps_bg_anim" #define APPS_VIEW_COL 3 -#define APPS_VIEW_ROW 5 +#define APPS_VIEW_ROW 6 #define APPS_VIEW_COL_COMMON APPS_VIEW_ROW #define APPS_VIEW_ROW_COMMON APPS_VIEW_COL @@ -155,7 +155,7 @@ #define GROUP_APPS_FOLDER_POPUP_LY "apps_folder_popup_ly" #define APPS_FOLDER_BG "apps_folder_bg" -#define APPS_FOLDER_COL 4 +#define APPS_FOLDER_COL 3 #define APPS_FOLDER_ROW 2 #define APPS_FOLDER_TITLE "apps_folder_title" #define APPS_FOLDER_SEPARATOR "apps_folder_separator" diff --git a/res/edje/apps_view.edc b/res/edje/apps_view.edc index 9d1ede3..a03782e 100755 --- a/res/edje/apps_view.edc +++ b/res/edje/apps_view.edc @@ -47,8 +47,8 @@ collections { description { state: "edit_done" 0.0; inherit: "default" 0.0; - rel1 {relative :88/1280 96/720; to: SIZE_SETTER;} - rel2 {relative :1192/1280 625/720; to: SIZE_SETTER;} + rel1 {relative :88/1280 80/720; to: SIZE_SETTER;} + rel2 {relative :1192/1280 645/720; to: SIZE_SETTER;} color: 0 0 0 APPS_VIEW_BG_OPACITY; visible: 1; } diff --git a/res/edje/apps_view_bg.edc b/res/edje/apps_view_bg.edc index 7fa7858..26ccb84 100755 --- a/res/edje/apps_view_bg.edc +++ b/res/edje/apps_view_bg.edc @@ -58,8 +58,8 @@ collections { state: "edit" 0.0; inherit: "default" 0.0; visible: 1; - rel1{relative: 88/1280 96/720; to: SIZE_SETTER;} - rel2{relative: 1192/1280 625/720; to: SIZE_SETTER;} + rel1{relative: 88/1280 80/720; to: SIZE_SETTER;} + rel2{relative: 1192/1280 645/720; to: SIZE_SETTER;} } description { state: "hide" 0.0; diff --git a/res/edje/home_btn.edc b/res/edje/home_btn.edc index 0b5a58c..46d33b3 100755 --- a/res/edje/home_btn.edc +++ b/res/edje/home_btn.edc @@ -33,7 +33,7 @@ collections { rel1{relative: 0.018 0.922;} rel2{relative: 0.082 0.988;} color: 0 0 0 102; - visible: 1; + visible: 0; image { normal: "home_button_bg.png"; } @@ -63,7 +63,7 @@ collections { rel1{relative: 0.317 0.312; to:MENU_BUTTON;} rel2{relative: 0.682 0.687; to:MENU_BUTTON;} color: 255 255 255 255; - visible: 1; + visible: 0; image { normal: "home_button_menu.png"; } @@ -86,7 +86,7 @@ collections { rel1{relative: 0.917 0.922;} rel2{relative: 0.981 0.988;} color: 0 0 0 102; - visible: 1; + visible: 0; image { normal: "home_button_bg.png"; } @@ -116,7 +116,7 @@ collections { rel1{relative: 0.341 0.229; to:HOME_BUTTON;} rel2{relative: 0.646 0.75; to:HOME_BUTTON;} color: 255 255 255 0; - visible: 1; + visible: 0; image { normal: "home_button_home.png"; } @@ -139,7 +139,7 @@ collections { rel1{relative: 0.341 0.229; to:HOME_BUTTON;} rel2{relative: 0.646 0.75; to:HOME_BUTTON;} color: 255 255 255 255; - visible: 1; + visible: 0; image { normal: "home_button_apps.png"; } @@ -254,7 +254,7 @@ collections { target: "menu_btn_icon"; target: HOME_BUTTON; target: "home_btn_home_icon"; - transition: DECELERATE 0.3; + transition: DECELERATE 2; } program { name: "btn_show_apps"; diff --git a/res/images/page_indicator_current.png b/res/images/page_indicator_current.png old mode 100755 new mode 100644 index d82d6ae553a6e2335ea41e007e4909f9ef37aa47..3ad7d3d5d7f7c983c476d292800c66642392f276 GIT binary patch literal 427 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbMf>Hwb**Z=?j1DQbb_wU~j_OD;R zfFf`J6oi0RuU;i2BtY12-@XMho;`a8R0a|G_U#*l0VJP1c>-ZWWWRs^4%ExX#|Pvt zUcC6-yLYc&zXmD*ax*eAwr$(?;>C;2n>Rmy{(SZ7)uN)JKye^=`SK-%VPj(hWB}DK z?)bS0$g(I2@&h`b?bnCI?|Mv0Ea%guZwp*JCUfMj_P3nt-%p*sQ7lRdxusazIdd;KfCTdx2(@d%8G=RK)e3a1}aiAi(0#t7zmjVdhN7|Mihs z;eJn6#oReAmdX&e`<2Dl6HEsL+q+7$tjuPfQq?@}@mI#SYhI_@ljA6t>g~s)|aeLnSI9o!kYa#`dL-+nj2mBu?6(x+-a;1_?wR`%;_MKG(j~ zZU-ursbcIu03^f$6B7d-@B*p``&x^-t8|f&W#L@ z4|5zhQkmDPY#mR&p-b%l^7g_JTdvVkoi39mjf? z*36xCGi&j=TVOUuOu)s|0I|E_g(z0}wk~3J;ud+(hR}7DKTE2vFM%QnFvti~DN}+F zD2f2(jH19vkd|Otl-R4Jpo}sKN>78%!?S3C)kIaT+=<0@DsNNjBT2!)AQsK5ojX33n6I}%jhi2gT)FB>76paRHQI%(zo|WMGJy|d891}Y*F*bY= z3Q|&17pUw1hq`VL9nva3&-b6gVQt&TVikv^6_~7X&50zGkBR{{C<$tWY;;d?$tIM9 zHt|7mSphdz9M2+Ac(aYybyV>}YIr8DXe!SX1jn&ZNzNDY(}j{;f_Vr_azSPuIh~nN zV0NZZ*1BAcm@OB3w9B>5x#hmxWE5PVMb>cOY+_14krkL*g^t!VjL{I&7x^fWiHAET?gm%l%% zp1{4K(GL$mbMJWa@L{6?uD?H#4xa7*SpD+!&XaO#{Egi)HphNHKHjz6&o%I8@KAkj f^Dpktjd4Q~=S26ed>b4+NG@Kbw5Yu*tnU2<2cA3~ diff --git a/res/images/page_indicator_unit.png b/res/images/page_indicator_unit.png old mode 100755 new mode 100644 index c36cc8b0136694e97636b6bbc1bf459045ef3966..3ad7d3d5d7f7c983c476d292800c66642392f276 GIT binary patch literal 427 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbMf>Hwb**Z=?j1DQbb_wU~j_OD;R zfFf`J6oi0RuU;i2BtY12-@XMho;`a8R0a|G_U#*l0VJP1c>-ZWWWRs^4%ExX#|Pvt zUcC6-yLYc&zXmD*ax*eAwr$(?;>C;2n>Rmy{(SZ7)uN)JKye^=`SK-%VPj(hWB}DK z?)bS0$g(I2@&h`b?bnCI?|Mv0Ea%guZwp*JCUfMj_P3nt-%p*sQ7lRdxusazIdd;KfCTdx2(@d%8G=RK)e3a1}aiAi(0#t7zmjVdhN7|Mihs z;eJn6#oReAmdX&e`<2Dl6HEsL+q+7$tjuPfQq?@}@mI#SYhI_@N@u>cSSGSNu_h%35Cz zF*&=;nW5EZY0!ToKueL;`u!rWW9I*BVx2fuuW){05K~c$Q%}9n1+;>})78&qol`;+ E0JP>ZAOHXW diff --git a/src/apps_data.c b/src/apps_data.c index 03c447f..dbd4bef 100644 --- a/src/apps_data.c +++ b/src/apps_data.c @@ -30,6 +30,8 @@ static struct { .data_list = NULL }; +Eina_List *clone_data_list=NULL; + static void __apps_data_print(Eina_List *list); static int __apps_data_sort_cb(const void *a , const void *b); static void __apps_data_item_free(app_data_t *item); @@ -55,24 +57,25 @@ void apps_data_init(void *data, Ecore_Thread *th) if (!apps_db_create()) { apps_db_get_app_list(&db_list); } - EINA_LIST_FOREACH(pkg_list, pkg_find_list, pkg_item) { EINA_LIST_FOREACH(db_list, db_find_list, db_item) { if (!strcmp(pkg_item->app_id, db_item->app_id) && !strcmp(pkg_item->owner, db_item->owner)) { pkg_item->db_id = db_item->db_id; pkg_item->parent_db_id = db_item->parent_db_id; db_item->temp = true; + pkg_item->position=db_item->position; break; } } apps_data_s.data_list = eina_list_append(apps_data_s.data_list, pkg_item); + clone_data_list = eina_list_append(clone_data_list, pkg_item); } - EINA_LIST_FOREACH(db_list, db_find_list, db_item) { if (!db_item->temp) { if (db_item->storage_type == EXTERNAL) { db_item->enable = false; apps_data_s.data_list = eina_list_append(apps_data_s.data_list, db_item); + clone_data_list = eina_list_append(clone_data_list, db_item); } else { apps_db_delete_by_app_id(db_item->app_id); apps_view_delete_icon(db_item); @@ -86,13 +89,17 @@ void apps_data_init(void *data, Ecore_Thread *th) EINA_LIST_FOREACH(db_list, db_find_list, db_item) { if (db_item->is_folder || db_item->type >= APPS_DATA_TYPE_APP_SHORTCUT) { apps_data_s.data_list = eina_list_append(apps_data_s.data_list, db_item); + clone_data_list = eina_list_append(clone_data_list, db_item); } } + + if (apps_data_s.data_list) { + apps_data_s.data_list = eina_list_sort(apps_data_s.data_list, eina_list_count(apps_data_s.data_list), __apps_data_sort_cb); + } + eina_list_free(clone_data_list); eina_list_free(db_list); eina_list_free(pkg_list); - - apps_data_sort(); - + apps_data_get_position(); EINA_LIST_FOREACH(apps_data_s.data_list, pkg_find_list, pkg_item) { if (pkg_item->db_id == INIT_VALUE) apps_db_insert(pkg_item); @@ -114,23 +121,19 @@ void apps_data_init(void *data, Ecore_Thread *th) __E("Failed to add external storage changed cb: 0x%X\n", ret); } -void apps_data_sort(void) +void apps_data_get_position(void) { int index = 0; - int parent_id = APPS_ROOT; app_data_t *item = NULL; Eina_List *find_list; - - if (apps_data_s.data_list) { - apps_data_s.data_list = eina_list_sort(apps_data_s.data_list, eina_list_count(apps_data_s.data_list), __apps_data_sort_cb); - } + int folder_index=0; + __apps_data_print(apps_data_s.data_list); EINA_LIST_FOREACH(apps_data_s.data_list, find_list, item) { - if (item->parent_db_id == parent_id) { + if (item->parent_db_id == APPS_ROOT) { item->position = index++; + folder_index=0; } else { - parent_id = item->parent_db_id; - index = 0; - item->position = index++; + item->position = folder_index++; } } } @@ -140,12 +143,49 @@ static int __apps_data_sort_cb(const void *a , const void *b) int i; app_data_t *item1 = (app_data_t *)a; app_data_t *item2 = (app_data_t *)b; - if (item1->parent_db_id < item2->parent_db_id) + if (item1->parent_db_id == item2->parent_db_id && item1->positionposition) return -1; - else if (item1->parent_db_id > item2->parent_db_id) + else if (item1->parent_db_id == item2->parent_db_id && item1->position>=item2->position) return 1; - - if (item1->label_str == NULL && item2->label_str == NULL) + else if (item1->parent_db_id != item2->parent_db_id ){ + // for app inside folder + if(item1->parent_db_id==APPS_ROOT && item2->parent_db_id==item1->db_id) + return -1; + if(item2->parent_db_id==APPS_ROOT && item1->parent_db_id==item2->db_id) + return 1; + // if one is a folder other is inside a different folder + if(item1->parent_db_id==APPS_ROOT&&item2->parent_db_id!=APPS_ROOT){ + app_data_t * parent=__apps_data_find_item_sort(item2->parent_db_id); + if(item1->positionposition) + return -1; + else + return 1; + } + else if(item2->parent_db_id==APPS_ROOT&&item1->parent_db_id!=APPS_ROOT){ + app_data_t * parent=__apps_data_find_item_sort(item1->parent_db_id); + if(item2->positionposition) + return 1; + else + return -1; + } + // if both are inside different folders + else{ + app_data_t * parent1=__apps_data_find_item_sort(item1->parent_db_id); + app_data_t * parent2=__apps_data_find_item_sort(item2->parent_db_id); + if(parent1==NULL || parent2==NULL){ + if(parent1==NULL) + __E("PARENT 1 is NULL"); + else + __E("PARENT 2 is NULL"); + return 1; + } + if(parent1->positionposition) + return -1; + else + return 1; + } + } + else if (item1->label_str == NULL && item2->label_str == NULL) return 1; else if (item1->label_str == NULL) return -1; @@ -182,10 +222,11 @@ void apps_data_get_folder_item_list(Eina_List **list, app_data_t *folder) void apps_data_install(app_data_t *item) { apps_data_s.data_list = eina_list_append(apps_data_s.data_list, item); + apps_data_get_position(); apps_db_insert(item); - apps_data_sort(); apps_view_icon_add(item); apps_view_reorder(); + apps_data_db_update(); } void apps_data_uninstall(const char *package) @@ -218,11 +259,49 @@ void apps_data_move(const char *package, storage_t storage_type) } } +// deletes the item from folder and appends at the back +void apps_data_update_list(app_data_t *item,app_data_t *folder){ + apps_data_s.data_list=eina_list_remove(apps_data_s.data_list,item); + if(folder) + apps_data_s.data_list=eina_list_append_relative(apps_data_s.data_list, item,folder); + else + apps_data_s.data_list=eina_list_append(apps_data_s.data_list, item); +} + +void apps_data_shift_app(app_data_t *item,app_data_t *before_item){ + if(before_item!=NULL){ + apps_data_s.data_list=eina_list_remove(apps_data_s.data_list,item); + apps_data_s.data_list=eina_list_prepend_relative(apps_data_s.data_list, item,before_item); + } +} + + +app_data_t *apps_data_add_folder_with_items(app_data_t *item1,app_data_t *item2){ + app_data_t *new_item = (app_data_t *)malloc(sizeof(app_data_t)); + memset(new_item, 0, sizeof(app_data_t)); + new_item->db_id = INIT_VALUE; + new_item->parent_db_id = APPS_ROOT; + new_item->owner = strdup(TEMP_OWNER); + new_item->position = INIT_VALUE; + new_item->label_str = strdup(""); + new_item->type = APPS_DATA_TYPE_APP; + new_item->is_checked = false; + new_item->is_folder = true; + new_item->is_removable = true; + new_item->is_system = false; + apps_data_s.data_list = eina_list_prepend_relative(apps_data_s.data_list, new_item,item1); + apps_data_s.data_list=eina_list_remove(apps_data_s.data_list,item2); + apps_data_s.data_list=eina_list_append_relative(apps_data_s.data_list, item2,item1); + apps_data_get_position(); + apps_view_icon_add(new_item); + apps_view_reorder(); + apps_db_insert(new_item); + return new_item; +} app_data_t *apps_data_add_folder(void) { app_data_t *new_item = (app_data_t *)malloc(sizeof(app_data_t)); memset(new_item, 0, sizeof(app_data_t)); - new_item->db_id = INIT_VALUE; new_item->parent_db_id = APPS_ROOT; new_item->owner = strdup(TEMP_OWNER); @@ -239,12 +318,20 @@ app_data_t *apps_data_add_folder(void) apps_db_insert(new_item); apps_view_icon_add(new_item); - apps_data_sort(); + apps_data_get_position(); apps_view_reorder(); - + apps_data_db_update(); return new_item; } +void apps_data_db_update(){ + app_data_t *item_itr = NULL; + Eina_List *find_list; + EINA_LIST_FOREACH(apps_data_s.data_list, find_list, item_itr){ + apps_db_update(item_itr); + } +} + void apps_data_delete_folder(app_data_t *folder_item) { app_data_t *item = NULL; @@ -252,23 +339,27 @@ void apps_data_delete_folder(app_data_t *folder_item) EINA_LIST_FOREACH(apps_data_s.data_list, find_list, item) { if (item->parent_db_id == folder_item->db_id) { item->parent_db_id = APPS_ROOT; + apps_data_s.data_list = eina_list_remove(apps_data_s.data_list,item); + apps_data_s.data_list = eina_list_append(apps_data_s.data_list,item); apps_db_update(item); apps_view_icon_add(item); } } apps_data_s.data_list = eina_list_remove(apps_data_s.data_list, folder_item); apps_db_delete(folder_item); - apps_data_sort(); + apps_data_get_position(); apps_view_reorder(); apps_view_delete_icon(folder_item); __apps_data_item_free(folder_item); + apps_data_db_update(); } void apps_data_update_folder(app_data_t *folder_item) { apps_db_update(folder_item); - apps_data_sort(); + apps_data_get_position(); apps_view_reorder(); + apps_data_db_update(); } static int __apps_data_shortcut_request_cb(const char *package_name, @@ -323,11 +414,11 @@ static int __apps_data_shortcut_request_cb(const char *package_name, apps_data_s.data_list = eina_list_append(apps_data_s.data_list, new_item); - apps_db_insert(new_item); + apps_view_icon_add(new_item); - apps_data_sort(); + apps_data_get_position(); apps_view_reorder(); - + apps_db_insert(new_item); return SHORTCUT_ERROR_NONE; } @@ -402,13 +493,15 @@ void __apps_data_set_external_storage_changed_cb(int storage_id, storage_dev_e d } } + void apps_data_delete_item(app_data_t *item) { apps_data_s.data_list = eina_list_remove(apps_data_s.data_list, item); apps_db_delete(item); - apps_data_sort(); + apps_data_get_position(); apps_view_reorder(); apps_view_folder_reroder(); + apps_data_db_update(); if (item->parent_db_id != APPS_ROOT) { app_data_t *parent = __apps_data_find_item(item->parent_db_id); if (parent) @@ -427,7 +520,7 @@ void apps_data_delete_list(Eina_List *list) apps_db_delete(item); } - apps_data_sort(); + apps_data_get_position(); apps_view_reorder(); apps_view_folder_reroder(); @@ -440,6 +533,7 @@ void apps_data_delete_list(Eina_List *list) apps_view_delete_icon(item); __apps_data_item_free(item); } + apps_data_db_update(); } app_data_t *apps_data_find_item_by_index(int index) @@ -464,6 +558,18 @@ app_data_t *__apps_data_find_item(int db_id) return NULL; } +app_data_t *__apps_data_find_item_sort(int db_id) +{ + app_data_t *item = NULL; + Eina_List *find_list; + EINA_LIST_FOREACH(clone_data_list, find_list, item) { + if (item->db_id == db_id) + return item; + } + return NULL; +} + + static void __apps_data_item_free(app_data_t *item) { if (item && item->label_str) @@ -514,8 +620,8 @@ void apps_data_update_item_label(void) EINA_LIST_FOREACH(apps_data_s.data_list, find_list, item) { if (!item->is_folder) { apps_package_manager_update_label(item->app_id, item); - apps_db_update(item); apps_view_update_label(item); + apps_db_update(item); } } } diff --git a/src/apps_view.c b/src/apps_view.c index 90c71e2..96b6801 100644 --- a/src/apps_view.c +++ b/src/apps_view.c @@ -59,10 +59,13 @@ static struct { app_data_t *dest_folder; app_data_t *opened_folder; app_data_t *candidate_folder; + app_data_t *new_item; int selected_item_count; Ecore_Animator *animator; Ecore_Timer *edit_mode_scroll_timer; bool is_srolling; + bool apps_reorder; + int position; } apps_view_s = { .win = NULL, .scroller = NULL, @@ -86,9 +89,12 @@ static struct { .dest_folder = NULL, .opened_folder = NULL, .candidate_folder = NULL, + .new_item=NULL, .animator = NULL, .edit_mode_scroll_timer = NULL, .is_srolling = false, + .apps_reorder=false, + .position=-1, }; static int apps_menu_list[2] = { @@ -174,6 +180,7 @@ static void __apps_view_get_access_folder(Eina_List **list); static void __apps_view_get_access_folder_entry(Eina_List **list); static void __apps_view_get_access_folder_icon(Eina_List **list); static void __apps_view_get_access_folder_icon_delete_button(Eina_List **list); +static void __apps_view_apps_position_change(int page_index, int x, int y); Evas_Object *apps_view_create(Evas_Object *win) { @@ -558,8 +565,8 @@ bool apps_view_icon_set(app_data_t *item) } w = APPS_VIEW_ICON_CONTENT_HORIZONTAL_DISTANCE; h = APPS_VIEW_ICON_CONTENT_VERTICAL_DISTANCE; - x = 88 + col * w; - y = 88 + row * h; + x = APPS_VIEW_W * 0.07 + col * w; + y = APPS_VIEW_PADDING_TOP + APPS_VIEW_H * 0.12 + row * h; if (eina_list_count(apps_view_s.page_list) < page_index+1) { page = __apps_view_add_page(); } else @@ -1240,7 +1247,6 @@ static void __apps_view_menu_edit_cb(void *data, Evas_Object *obj, void *event_i static void __apps_view_menu_create_folder_cb(void *data, Evas_Object *obj, void *event_info) { menu_hide(); - apps_view_s.dest_folder = apps_data_add_folder(); __apps_view_open_folder_popup(apps_view_s.dest_folder); } @@ -1427,13 +1433,14 @@ static void __apps_view_chooser_right_btn_clicked(void *data, Evas_Object *obj, EINA_LIST_FOREACH(apps_view_s.selected_items, find_list, item) { __D("%s-> move to folder {%d}", item->label_str, apps_view_s.dest_folder->db_id); item->parent_db_id = apps_view_s.dest_folder->db_id; + apps_data_update_list(item,apps_view_s.dest_folder); apps_db_update(item); if (item->app_layout) { evas_object_del(item->app_layout); item->app_layout = NULL; } } - apps_data_sort(); + apps_data_get_position(); apps_view_reorder(); Eina_List *list = apps_data_get_list(); @@ -1861,7 +1868,8 @@ static void __apps_view_edit_drag_icon(void *data) __apps_view_close_folder_popup(apps_view_s.opened_folder); apps_view_s.picked_item->parent_db_id = APPS_ROOT; apps_db_update(apps_view_s.picked_item); - apps_data_sort(); + apps_data_get_position(); + apps_data_update_list(apps_view_s.picked_item,NULL); apps_view_update_folder_icon(opened_folder); } } @@ -1881,18 +1889,25 @@ static void __apps_view_edit_drag_icon(void *data) } if (apps_view_s.picked_item->parent_db_id == APPS_ROOT) { + apps_view_s.apps_reorder=false; + apps_view_s.position=-1; + __apps_view_apps_position_change(apps_view_s.current_page, apps_mouse_info.move_x - apps_mouse_info.offset_x, + apps_mouse_info.move_y - apps_mouse_info.offset_y); int index = __apps_view_get_index(apps_view_s.current_page, apps_mouse_info.move_x - apps_mouse_info.offset_x, apps_mouse_info.move_y - apps_mouse_info.offset_y); - if (apps_view_s.candidate_folder == NULL || - apps_view_s.candidate_folder->position != index) { + if ((apps_view_s.candidate_folder == NULL || + apps_view_s.candidate_folder->position != index) && !(apps_view_s.apps_reorder)) { if (apps_view_s.candidate_folder) elm_object_signal_emit(apps_view_s.candidate_folder->folder_layout, SIGNAL_FRAME_POSSIBLE_HIDE, SIGNAL_SOURCE); apps_view_s.candidate_folder = apps_data_find_item_by_index(index); + apps_view_s.new_item = NULL; if (apps_view_s.candidate_folder && !apps_view_s.candidate_folder->is_folder) { + apps_view_s.new_item = apps_view_s.candidate_folder ; apps_view_s.candidate_folder = NULL; } } - if (apps_view_s.candidate_folder) { + if (apps_view_s.candidate_folder && !(apps_view_s.apps_reorder)) { + apps_view_s.new_item = NULL; if (apps_data_get_folder_item_count(apps_view_s.candidate_folder) >= APPS_FOLDER_MAX_ITEM) elm_object_signal_emit(apps_view_s.candidate_folder->folder_layout, SIGNAL_FRAME_IMPOSSIBLE_SHOW, SIGNAL_SOURCE); else @@ -1911,7 +1926,6 @@ static void __apps_view_edit_drop_icon(void *data) ecore_timer_del(apps_view_s.edit_mode_scroll_timer); apps_view_s.edit_mode_scroll_timer = NULL; } - if (item->is_removable) elm_object_signal_emit(app_layout, SIGNAL_UNINSTALL_BUTTON_SHOW_ANI, SIGNAL_SOURCE); @@ -1919,7 +1933,28 @@ static void __apps_view_edit_drop_icon(void *data) __apps_view__set_icon_label_style(item, VIEW_STATE_EDIT); - if (apps_view_s.candidate_folder) { + if((apps_view_s.new_item && strcmp(apps_view_s.new_item->app_id, apps_view_s.picked_item->app_id) != 0 )&& !(apps_view_s.apps_reorder)) + { + apps_view_s.candidate_folder = apps_data_add_folder_with_items(apps_view_s.new_item,apps_view_s.picked_item); + apps_view_s.new_item->parent_db_id = apps_view_s.candidate_folder->db_id; + apps_db_update(apps_view_s.new_item); + if (apps_view_s.new_item->app_layout) { + evas_object_del(apps_view_s.new_item->app_layout); + apps_view_s.new_item->app_layout = NULL; + } + + apps_view_s.picked_item->parent_db_id = apps_view_s.candidate_folder->db_id; + apps_db_update(apps_view_s.picked_item); + if (apps_view_s.picked_item->app_layout) { + evas_object_del(apps_view_s.picked_item->app_layout); + apps_view_s.picked_item->app_layout = NULL; + } + apps_view_update_folder_icon(apps_view_s.candidate_folder); + __apps_view_open_folder_popup(apps_view_s.candidate_folder); + + apps_view_s.candidate_folder = NULL; + apps_view_s.new_item = NULL; + } else if(apps_view_s.candidate_folder && !(apps_view_s.apps_reorder)){ int folder_item_count = 0; folder_item_count = apps_data_get_folder_item_count(apps_view_s.candidate_folder); if (folder_item_count >= APPS_FOLDER_MAX_ITEM) { @@ -1928,7 +1963,7 @@ static void __apps_view_edit_drop_icon(void *data) toast_show(str); } else { item->parent_db_id = apps_view_s.candidate_folder->db_id; - apps_db_update(apps_view_s.picked_item); + apps_data_update_list(item,apps_view_s.candidate_folder); apps_view_update_folder_icon(apps_view_s.candidate_folder); elm_object_signal_emit(apps_view_s.candidate_folder->folder_layout, SIGNAL_FRAME_POSSIBLE_HIDE, SIGNAL_SOURCE); if (item->app_layout) { @@ -1939,11 +1974,18 @@ static void __apps_view_edit_drop_icon(void *data) elm_object_signal_emit(apps_view_s.candidate_folder->folder_layout, SIGNAL_FRAME_POSSIBLE_HIDE, SIGNAL_SOURCE); apps_view_s.candidate_folder = NULL; + }else if(apps_view_s.apps_reorder){ + app_data_t *before_item=apps_data_find_item_by_index(apps_view_s.position+1); + apps_data_shift_app(apps_view_s.picked_item,before_item); + + apps_view_s.apps_reorder=false; + apps_view_s.position=-1; } - apps_data_sort(); + apps_data_get_position(); apps_view_reorder(); - screen_reader_update(APPS); + apps_data_db_update(); + } static Eina_Bool __apps_view_scroll_timer_cb(void *data) @@ -1996,16 +2038,16 @@ static void __apps_view_scroll_to_page(int page_idx, bool animation) static int __apps_view_get_index(int page_index, int x, int y) { int row, col; - int sx = APPS_VIEW_W * 0.04; - int sy = APPS_VIEW_PADDING_TOP + APPS_VIEW_H * 0.05; - int w = (APPS_VIEW_W * 0.9) / APPS_VIEW_COL; - int h = (APPS_VIEW_H * 0.9) / APPS_VIEW_ROW; + int sx = APPS_VIEW_W * 0.07; + int sy = APPS_VIEW_PADDING_TOP + APPS_VIEW_H * 0.12; + int w = (APPS_VIEW_W * 0.94) / APPS_VIEW_COL; + int h = (APPS_VIEW_H * 0.94) / APPS_VIEW_ROW; int ROW_MAX = APPS_VIEW_ROW; int COL_MAX = APPS_VIEW_COL; if (_COMMON) { - w = (APPS_VIEW_W * 0.9) / APPS_VIEW_COL_COMMON; - h = (APPS_VIEW_H * 0.9) / APPS_VIEW_ROW_COMMON; + w = (APPS_VIEW_W * 0.94) / APPS_VIEW_COL_COMMON; + h = (APPS_VIEW_H * 0.94) / APPS_VIEW_ROW_COMMON; ROW_MAX = APPS_VIEW_ROW_COMMON; COL_MAX = APPS_VIEW_COL_COMMON; } @@ -2025,6 +2067,38 @@ static int __apps_view_get_index(int page_index, int x, int y) return INIT_VALUE; } +static void __apps_view_apps_position_change(int page_index, int x, int y) +{ + int row, col; + int sx = APPS_VIEW_W * 0.07; + int sy = APPS_VIEW_PADDING_TOP + APPS_VIEW_H * 0.12; + int w = (APPS_VIEW_W * 0.94) / APPS_VIEW_COL; + int h = (APPS_VIEW_H * 0.94) / APPS_VIEW_ROW; + int ROW_MAX = APPS_VIEW_ROW; + int COL_MAX = APPS_VIEW_COL; + + if (_COMMON) { + w = (APPS_VIEW_W * 0.94) / APPS_VIEW_COL_COMMON; + h = (APPS_VIEW_H * 0.94) / APPS_VIEW_ROW_COMMON; + ROW_MAX = APPS_VIEW_ROW_COMMON; + COL_MAX = APPS_VIEW_COL_COMMON; + } + + for (row = 0; row < ROW_MAX; row++) { + for (col = 0; col < COL_MAX; col++) { + int ny = sy + (row * h); + int nx = sx+(w/2) + (col * w); + + int d = (ny - y) * (ny - y) + (nx - x) * (nx - x); + if (d < APPS_VIEW_EDIT_MOVE_GAP) { + apps_view_s.apps_reorder=true; + apps_view_s.position=((APPS_VIEW_COL * APPS_VIEW_ROW) * page_index) + (row * COL_MAX) + col; + return; + } + } + } +} + static void __apps_view__set_icon_label_style(app_data_t *item, view_state_t state) { char style_string[STR_MAX] = {0, }; -- 2.7.4