merge with master
[apps/core/preloaded/ug-myfile-efl.git] / src / common / mf-ug-cb.c
index 39440c7..fb0661f 100644 (file)
@@ -191,7 +191,7 @@ void mf_ug_cb_add_button_cb(void *data, Evas_Object *obj, void *event_info)
                return;\r
        }\r
 \r
-       if (ugd->ug_UiGadget.ug_iSelectMode == EXPORT_MODE) {\r
+       if (ugd->ug_UiGadget.ug_iSelectMode == EXPORT_MODE || ugd->ug_UiGadget.ug_iSelectMode == SAVE_MODE) {\r
                result = g_strdup(ugd->ug_Status.ug_pPath->str);\r
        } else {\r
                result = mf_ug_util_get_send_result(ugd);\r
@@ -463,7 +463,7 @@ void mf_ug_cb_upper_click_cb(void *data, Evas_Object * obj, void *event_info)
                return;\r
        }\r
 \r
-       if (mf_ug_fm_svc_wapper_is_root_path(ugd)) {\r
+       if (mf_ug_fm_svc_wapper_is_root_path(ugd->ug_Status.ug_pPath)) {\r
                ugd->ug_Status.ug_iViewType = mf_ug_view_root;\r
        }\r
 \r
@@ -864,7 +864,7 @@ static void __mf_ug_cb_mmc_remove_view_operation(void *data)
 \r
        Evas_Object *parent = NULL;\r
        const char *labelStorage = NULL;\r
-       parent = ugd->ug_MainWindow.ug_pContent;\r
+       parent = ugd->ug_MainWindow.ug_pNaviGenlist;\r
        labelStorage = MEMORY_FOLDER;\r
 \r
        mf_ug_genlist_item_remove(parent, labelStorage);\r
@@ -1001,6 +1001,24 @@ void mf_ug_cb_dir_update_cb(mf_ug_inotify_event event, char *name, void *data)
 **    Modification : Created function\r
 **\r
 ******************************/\r
+static GString *__mf_ug_cb_dir_pipe_get_parent(GString *path)\r
+{\r
+\r
+       ug_mf_retvm_if(path == NULL, NULL, "path is NULL");\r
+       ug_mf_retvm_if(path->str == NULL, NULL, "path->str is NULL");\r
+\r
+       if (ecore_file_exists(path->str)) {\r
+               return path;\r
+       } else if (mf_ug_fm_svc_wapper_is_root_path(path)) {\r
+               return path;\r
+       } else {\r
+               GString *parent = mf_ug_fm_svc_wrapper_get_file_parent_path(path);\r
+               UG_SAFE_FREE_GSTRING(path);\r
+               __mf_ug_cb_dir_pipe_get_parent(parent);\r
+       }\r
+       return path;\r
+}\r
+\r
 void mf_ug_cb_dir_pipe_cb(void *data, void *buffer, unsigned int nbyte)\r
 {\r
        UG_TRACE_BEGIN;\r
@@ -1008,39 +1026,144 @@ void mf_ug_cb_dir_pipe_cb(void *data, void *buffer, unsigned int nbyte)
        ug_mf_retm_if(ugd == NULL, "ugd is NULL");\r
 \r
 \r
-       ugNaviBar *pNavi_s = mf_ug_navi_bar_get_in_use_navi(ugd);\r
-       ug_mf_retm_if(pNavi_s == NULL, "get navigation bar in use failed");\r
-\r
        if (ugd->ug_ListPlay.ug_iPlayState != PLAY_STATE_INIT) {\r
                return;\r
        }\r
+       if (ugd->ug_Status.ug_iViewType == mf_ug_view_root) {\r
+               return;\r
+       }\r
+\r
+       if (g_strcmp0(ugd->ug_Status.monitor_path, ugd->ug_Status.ug_pPath->str)) {\r
+               return;\r
+       }\r
        if (buffer) {\r
                ug_dir_event_t *msg = (ug_dir_event_t *) buffer;\r
                ug_debug("event : %d, name : %s", msg->event, msg->name);\r
 \r
                Evas_Object *newContent = NULL;\r
+               ugListItemData *itemData = NULL;\r
+               Elm_Object_Item *it = NULL;\r
+               GString *parent = NULL;\r
+               char *path = NULL;\r
+               int count = 0;\r
+\r
                switch (msg->event) {\r
                case UG_MF_INOTI_CREATE:\r
                case UG_MF_INOTI_MOVE_IN:\r
                        /*/1 TODO:  add new item to list */\r
+                       if(msg->name) {\r
+                               path = g_strconcat(ugd->ug_Status.ug_pPath->str, "/", msg->name, NULL);\r
+                               int file_type = 0;\r
+                               if (mf_ug_file_attr_is_dir(path)) {\r
+                                       file_type = UG_FILE_TYPE_DIR;\r
+                               } else {\r
+                                       file_type = UG_FILE_TYPE_FILE;\r
+                               }\r
+                               ugFsNodeInfo *pNode = mf_ug_util_generate_pnode(path, file_type);\r
+                               if (ugd->ug_MainWindow.ug_pNaviGenlist == NULL) {\r
+\r
+                                       Evas_Object *genlist = NULL;\r
+                                       genlist = elm_genlist_add(ugd->ug_MainWindow.ug_pNaviBar);\r
+                                       evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);\r
+                                       evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);\r
+\r
+                                       ugd->ug_MainWindow.ug_pNaviGenlist = genlist;\r
+                                       evas_object_smart_callback_add(genlist, "selected", mf_ug_genlist_selected_gl, ugd);\r
+\r
+                                       evas_object_del(elm_object_part_content_unset(ugd->ug_MainWindow.ug_pNaviLayout, "part1"));\r
+\r
+                                       elm_object_part_content_set(ugd->ug_MainWindow.ug_pNaviLayout, "part1", newContent);\r
+                                       elm_object_part_content_set(ugd->ug_MainWindow.ug_pNaviLayout, "part1", genlist);\r
+                               }\r
+                               if (file_type == UG_FILE_TYPE_DIR) {\r
+                                       if (ugd->ug_UiGadget.ug_iSelectMode == MULTI_FILE_MODE ||\r
+                                           ugd->ug_UiGadget.ug_iSelectMode == SINGLE_FILE_MODE ||\r
+                                           ugd->ug_UiGadget.ug_iSelectMode == IMPORT_MODE ||\r
+                                           ugd->ug_UiGadget.ug_iSelectMode == EXPORT_MODE ||\r
+                                           ugd->ug_UiGadget.ug_iSelectMode == SAVE_MODE ||\r
+                                           ugd->ug_UiGadget.ug_iSelectMode == IMPORT_SINGLE) {\r
+\r
+                                               mf_ug_genlist_item_append(ugd->ug_MainWindow.ug_pNaviGenlist, pNode, ugd, 0, &ugd->ug_Status.ug_normalitc);\r
+                                       } else {\r
+                                               int groupValue = elm_genlist_items_count(ugd->ug_MainWindow.ug_pNaviGenlist);\r
+                                               mf_ug_genlist_item_append(ugd->ug_MainWindow.ug_pNaviGenlist, pNode, ugd, groupValue, &ugd->ug_Status.ug_itc);\r
+                                       }\r
+                               } else {\r
+                                       if (ugd->ug_UiGadget.ug_iSelectMode == SINGLE_ALL_MODE || ugd->ug_UiGadget.ug_iSelectMode == SINGLE_FILE_MODE) {\r
+                                               int groupValue = elm_genlist_items_count(ugd->ug_MainWindow.ug_pNaviGenlist);\r
+                                               mf_ug_genlist_item_append(ugd->ug_MainWindow.ug_pNaviGenlist, pNode, ugd, groupValue, &ugd->ug_Status.ug_itc);\r
+                                       } else if (ugd->ug_UiGadget.ug_iSelectMode == EXPORT_MODE || ugd->ug_UiGadget.ug_iSelectMode == SAVE_MODE) {\r
+                                               mf_ug_genlist_item_append(ugd->ug_MainWindow.ug_pNaviGenlist, pNode, ugd, 0, &ugd->ug_Status.ug_normalitc);\r
+                                       } else {\r
+                                               mf_ug_genlist_item_append(ugd->ug_MainWindow.ug_pNaviGenlist, pNode, ugd, 0, &ugd->ug_Status.ug_itc);\r
+                                       }\r
+\r
+                               }\r
+\r
+                               if (pNode != NULL) {\r
+                                       UG_SAFE_FREE_CHAR(pNode->ext);\r
+                                       free(pNode);\r
+                                       pNode = NULL;\r
+                               }\r
+                       }\r
                        break;\r
                case UG_MF_INOTI_DELETE:\r
                case UG_MF_INOTI_MOVE_OUT:\r
                        /*/1 TODO:  remove item from list */\r
+                       path = g_strconcat(ugd->ug_Status.ug_pPath->str, "/", msg->name, NULL);\r
+                       it = elm_genlist_first_item_get(ugd->ug_MainWindow.ug_pNaviGenlist);\r
+                       while (it) {\r
+                               itemData = elm_object_item_data_get(it);\r
+                               if (itemData->ug_pItemName == NULL || itemData->ug_pItemName->str == NULL) {\r
+                                       ug_debug();\r
+                                       continue;\r
+                               }\r
+                               if (g_strcmp0(path, itemData->ug_pItemName->str) == 0) {\r
+                                       elm_object_item_del(it);\r
+                                       break;\r
+                               }\r
+\r
+                               it = elm_genlist_item_next_get(it);\r
+                       }\r
+                       count = elm_genlist_items_count(ugd->ug_MainWindow.ug_pNaviGenlist);\r
+                       ugd->ug_Status.ug_bNoContentFlag = !count;\r
+\r
                        break;\r
                case UG_MF_INOTI_MODIFY:\r
                        /*/1 TODO:  update item in list */\r
+                       ugd->ug_MainWindow.ug_pNaviGenlist = newContent = mf_ug_genlist_create_content_list_view(ugd);\r
+                       mf_ug_navi_bar_set_new_content(ugd->ug_MainWindow.ug_pNaviLayout, newContent);\r
                        break;\r
                case UG_MF_INOTI_DELETE_SELF:\r
                case UG_MF_INOTI_MOVE_SELF:\r
                        /*/1 TODO:  watching directory is removed, change current directory. */\r
+               {\r
+                       GString *current = NULL;\r
+                       current = g_string_new(ugd->ug_Status.ug_pPath->str);\r
+                       parent = __mf_ug_cb_dir_pipe_get_parent(current);\r
+\r
+                       ugNaviBar *pNavi_s = mf_ug_navi_bar_get_in_use_navi(ugd);\r
+\r
+\r
+                       g_string_free(ugd->ug_Status.ug_pPath, TRUE);\r
+                       ugd->ug_Status.ug_pPath = NULL;\r
+                       ugd->ug_Status.ug_pPath = parent;\r
+\r
+                       if (pNavi_s->ug_pCurrentPath != NULL) {\r
+                               free(pNavi_s->ug_pCurrentPath);\r
+                               pNavi_s->ug_pCurrentPath = NULL;\r
+                       }\r
+                       pNavi_s->ug_pCurrentPath = g_strdup(parent->str);\r
+\r
+\r
+\r
+                       mf_ug_navi_bar_create_default_view(ugd);\r
+               }\r
                        break;\r
                default:\r
                        ug_mf_error("Unknown event");\r
                        break;\r
                }\r
-               ugd->ug_MainWindow.ug_pContent = newContent = mf_ug_genlist_create_content_list_view(ugd);\r
-               mf_ug_navi_bar_set_new_content(ugd->ug_MainWindow.ug_pNaviLayout, newContent);\r
                mf_ug_ctrl_bar_set_item_disable(ugd);\r
                if (msg->name) {\r
                        free(msg->name);\r