[TIZEN_3.0 UX Impl] Added Copy option in time view. 78/85478/2 submit/tizen_mobile/20160831.103730
authorRahul Dadhich <r.dadhich@samsung.com>
Thu, 25 Aug 2016 09:05:49 +0000 (14:35 +0530)
committerRahul Dadhich <r.dadhich@samsung.com>
Thu, 25 Aug 2016 10:33:14 +0000 (16:03 +0530)
Change-Id: Ia84480a3d04f54429579d06b2f766ebc90369d13
Signed-off-by: Rahul Dadhich <r.dadhich@samsung.com>
src/2dview/gl-timeline.c
src/2dview/gl-timeline.h
src/util/gl-util.c
src/widget/gl-gesture.c
src/widget/gl-popup.c

index 0edb2c4ad32a19327ba1d1ae9c7a39a21d2c42ea..f33b71f168d27eb860bcf802798083fb11ebaaa7 100644 (file)
@@ -151,6 +151,7 @@ typedef enum _gl_tl_view_t {
        GL_TL_VIEW_EDIT,
        GL_TL_VIEW_SHARE,
        GL_TL_VIEW_MAX,
+       GL_TL_VIEW_COPY,
 } gl_tl_view_e;
 
 typedef struct _gl_tm_t gl_tm_s;
@@ -2453,7 +2454,7 @@ static void __gl_timeline_date_check_sel_cb(void *data, Evas_Object *obj, void *
        int mode = timeline_d->view_m;
        Elm_Object_Item *it = (Elm_Object_Item *)ei;
        elm_genlist_item_selected_set(it, EINA_FALSE);
-       if (mode != GL_TL_VIEW_EDIT) {
+       if (!(mode == GL_TL_VIEW_EDIT || mode == GL_TL_VIEW_COPY)) {
                gl_dbgE("not edit mode");
                return;
        }
@@ -2775,7 +2776,7 @@ static Evas_Object *__gl_timeline_thumbs_get_content(void *data, Evas_Object *ob
                return layout;
        } else if (!g_strcmp0(part, GL_THUMB_CHECKBOX)) {
                Evas_Object *ck = NULL;
-               if (mode == GL_TL_VIEW_EDIT) {
+               if (mode == GL_TL_VIEW_EDIT || mode == GL_TL_VIEW_COPY) {
                        ck = elm_check_add(obj);
                        GL_CHECK_NULL(ck);
 
@@ -2796,7 +2797,7 @@ static Evas_Object *__gl_timeline_thumbs_get_content(void *data, Evas_Object *ob
                return ck;
        } else if (!g_strcmp0(part, "elm_image_open_icon_swallow_blocker")) {
                Evas_Object *btn1 = NULL;
-               if (mode == GL_TL_VIEW_EDIT) {
+               if (mode == GL_TL_VIEW_EDIT || mode == GL_TL_VIEW_COPY) {
                        btn1 = evas_object_rectangle_add(evas_object_evas_get(obj));
                        evas_object_color_set(btn1, 0, 255, 0, 0);
                        evas_object_propagate_events_set(btn1, EINA_FALSE);
@@ -2811,7 +2812,7 @@ static Evas_Object *__gl_timeline_thumbs_get_content(void *data, Evas_Object *ob
                return btn1;
        } else if (!g_strcmp0(part, "elm_image_open_icon_swallow")) {
                Evas_Object *btn = NULL;
-               if (mode == GL_TL_VIEW_EDIT) {
+               if (mode == GL_TL_VIEW_EDIT || mode == GL_TL_VIEW_COPY) {
                        btn = elm_button_add(obj);
                        elm_object_style_set(btn, "transparent");
                        evas_object_show(btn);
@@ -3060,7 +3061,7 @@ static Evas_Object *__gl_get_date_check(const void
        if (!g_strcmp0(pPart, "select.all.data.check")) {
 
                Evas_Object *ck = NULL;
-               if (mode == GL_TL_VIEW_EDIT) {
+               if (mode == GL_TL_VIEW_EDIT || mode == GL_TL_VIEW_COPY) {
                        ck = elm_check_add(pObject);
                        GL_CHECK_NULL(ck);
 
@@ -3177,7 +3178,7 @@ char *_gl_time_get_genlist_style(void *data)
        int win_h = 0;
        char *style = NULL;
        _gl_get_win_factor(ad->maininfo.win, &win_w, &win_h);
-       if (_gl_is_timeline_edit_mode(data)) {
+       if (_gl_is_timeline_edit_mode(data) || _gl_is_timeline_edit_copy_mode(data)) {
                ad->pinchinfo.zoom_level = GL_ZOOM_IN_ONE;
        }
        if ((rotate_mode == APP_DEVICE_ORIENTATION_270) ||
@@ -3227,7 +3228,7 @@ int _gl_timeline_create_grid_view(gl_timeline_s *timeline_d, Evas_Object *genlis
        if (!update) {
                _gl_data_get_items(-1, -1, &list);
                _gl_time_finialize_media_data(timeline_d);
-               if (timeline_d->view_m == GL_TL_VIEW_EDIT) {
+               if (timeline_d->view_m == GL_TL_VIEW_EDIT || timeline_d->view_m == GL_TL_VIEW_COPY) {
                        _gl_time_update_selected_media(timeline_d, list);
                }
                timeline_d->data_list = list;
@@ -3798,6 +3799,22 @@ static void __gl_timeline_edit_cb(void *data, Evas_Object *obj, void *ei)
        __gl_timeline_change_mode(data, GL_TL_VIEW_EDIT);
 }
 
+static void __gl_timeline_copy_cb(void *data, Evas_Object *obj, void *ei)
+{
+       GL_CHECK(data);
+       gl_appdata *ad = (gl_appdata *)data;
+       _gl_ctxpopup_del(data);
+       if (ad->uginfo.ug) {
+               /**
+               * Prevent changed to edit view in wrong way.
+               * 1. When invoke imageviewer UG;
+               */
+               gl_dbgW("UG invoked!");
+               return;
+       }
+       __gl_timeline_change_mode(data, GL_TL_VIEW_COPY);
+}
+
 static void __gl_albums_viewas_pop_cb(void *data, Evas_Object *obj, void *ei)
 {
        gl_dbg("ENTRY");
@@ -3972,6 +3989,8 @@ static void __gl_timeline_ie_cb(void *data, Evas_Object *obj, void *ei)
        __gl_timeline_change_mode(data, GL_TL_VIEW_NORMAL);
 }
 
+#endif
+
 /* 'Move medias' is only available in tab Albums */
 static int __gl_timeline_move_copy_op(void *data)
 {
@@ -4037,7 +4056,7 @@ static int __gl_timeline_update_move_copy_view(void *data)
        return 0;
 }
 
-static int __gl_timeline_move_copy(void *data)
+int __gl_timeline_move_copy(void *data)
 {
        GL_CHECK_VAL(data, -1);
        gl_appdata *ad = (gl_appdata *)data;
@@ -4054,7 +4073,7 @@ static int __gl_timeline_move_copy(void *data)
         */
        if (ad->albuminfo.path == NULL) {
                gl_dbg("New album");
-               if (gl_make_new_album(ad->albuminfo.new_name) != 0) {
+               if (gl_make_new_album(ad->albuminfo.new_name) == false) {
                        gl_popup_create_popup(ad, GL_POPUP_NOBUT,
                                              GL_STR_SAME_NAME_ALREADY_IN_USE);
                        gl_dbgE("Failed to make a new directory!");
@@ -4103,6 +4122,7 @@ GL_FAILED:
        return -1;
 }
 
+#if 0
 /* move media to album in edit view */
 static void __gl_timeline_move_cb(void *data, Evas_Object *obj, void *ei)
 {
@@ -4125,14 +4145,13 @@ static void __gl_timeline_move_cb(void *data, Evas_Object *obj, void *ei)
 }
 
 /* move media to album in edit view */
-static void __gl_timeline_copy_cb(void *data, Evas_Object *obj, void *ei)
+static void _gl_timeline_copy_cb(void *data, Evas_Object *obj, void *ei)
 {
        GL_CHECK(data);
        _gl_ctxpopup_del(data);
        gl_appdata *ad = (gl_appdata *)data;
        GL_CHECK(ad->tlinfo);
        gl_timeline_s *timeline_d = ad->tlinfo;
-       gl_dbg("");
 
        if (__gl_timeline_get_sel_cnt(timeline_d) == 0) {
                gl_dbgW("No thumbs selected!");
@@ -4296,6 +4315,9 @@ static int __gl_timeline_ctxpopup_append(void *data, Evas_Object *parent)
                /* Sort */
                _gl_ctxpopup_append(parent, GL_STR_SORT,
                                    __gl_timeline_sort_cb, data);
+               /* Copy to album */
+               _gl_ctxpopup_append(parent, GL_STR_ID_COPY_TO_ALBUM,
+                                                       __gl_timeline_copy_cb, data);
 #ifdef SUPPORT_SLIDESHOW
                /* Slide show */
                _gl_ctxpopup_append(parent, GL_STR_ID_SLIDESHOW,
@@ -4469,11 +4491,18 @@ static void __gl_timeline_del_cb(void *data, Evas_Object *obj, void *ei)
        /* Check MMC state for cancel operation */
        gl_check_mmc_state(ad, NULL);
        gl_dbg("MMC state: %d.", ad->maininfo.mmc_state);
-       _gl_db_update_lock_always(data, true);
-       _gl_set_file_op_cbs(data, __gl_timeline_del_op, NULL,
-                           __gl_timeline_update_del_view, cnt);
-       _gl_use_thread_operate_medias(ad, GL_STR_ID_DELETING, cnt,
-                                     GL_MEDIA_OP_DELETE_TIMELINE);
+
+       if (ad->tlinfo->view_m == GL_TL_VIEW_COPY) {
+               gl_dbg("copy operation from time view");
+               _gl_popup_create_copy_move(data, __gl_timeline_get_sel_cnt, data);
+       } else {
+               _gl_db_update_lock_always(data, true);
+               _gl_set_file_op_cbs(data, __gl_timeline_del_op, NULL,
+                               __gl_timeline_update_del_view, cnt);
+               _gl_use_thread_operate_medias(ad, GL_STR_ID_DELETING, cnt,
+                               GL_MEDIA_OP_DELETE_TIMELINE);
+       }
+
 }
 
 /* Select-all checkbox selected/deselected */
@@ -4778,12 +4807,13 @@ static int __gl_timeline_change_mode(void *data, int mode)
                break;
        case GL_TL_VIEW_EDIT:
        case GL_TL_VIEW_SHARE:
+       case GL_TL_VIEW_COPY:
                GL_GFREEIF(ad->tlinfo->sel_d);
                ad->tlinfo->sel_d = g_new0(gl_sel_s, 1);
                GL_CHECK_VAL(ad->tlinfo->sel_d, -1);
                _gl_ui_change_navi_title(ad->tlinfo->nf_it, GL_STR_ID_SELECT_ITEM,
                                         false);
-               if (GL_TL_VIEW_EDIT == mode) {
+               if (GL_TL_VIEW_EDIT == mode || GL_TL_VIEW_COPY == mode) {
                        __gl_timeline_edit_add_btns(data);
                }
 #ifdef GL_EXTENDED_FEATURES
@@ -4953,6 +4983,11 @@ int _gl_timeline_update_view(void *data)
        __gl_timeline_reset_btns(data);
        /* Update naviframe item title */
        __gl_timeline_reset_label(data);
+
+       if (ad->popupinfo.popup) {
+               gl_dbg("updating genlist");
+               _gl_update_copy_move_popup(data);
+       }
        return 0;
 }
 
@@ -5022,7 +5057,7 @@ int _gl_timeline_view_rotate(void *data)
        } else {
                elm_object_signal_emit(ad->tlinfo->parent, "timelineview,portrait", "");
        }
-       if (ad->tlinfo->view_m == GL_TL_VIEW_EDIT) {
+       if (ad->tlinfo->view_m == GL_TL_VIEW_EDIT || ad->tlinfo->view_m == GL_TL_VIEW_COPY) {
                elm_object_signal_emit(ad->ctrlinfo.ctrlbar_view_ly, "elm,selectall,state,visible,bg", "elm");
                elm_object_signal_emit(ad->ctrlinfo.ctrlbar_view_ly, "elm,selectall,state,visible", "elm");
        }
@@ -5192,3 +5227,14 @@ bool _gl_is_timeline_edit_mode(void *data)
        }
        return false;
 }
+
+bool _gl_is_timeline_edit_copy_mode(void *data)
+{
+       GL_CHECK_FALSE(data);
+       gl_appdata *ad = (gl_appdata *)data;
+       GL_CHECK_FALSE(ad->tlinfo);
+       if (ad->tlinfo->view_m == GL_TL_VIEW_COPY) {
+               return true;
+       }
+       return false;
+}
index 1bea68a65f690102d4267db558df4e7be0cc28c2..77b8d075d800bf90e14f344dfb797cb49fa4788f 100644 (file)
@@ -34,6 +34,8 @@ int _gl_timeline_update_grid_size(void *data);
 void _gl_update_timeview_iv_select_mode_reply(void *data, char **select_result, int count);
 int _gl_ext_load_time_iv_selected_list(app_control_h service, void *data);
 bool _gl_is_timeline_edit_mode(void *data);
+bool _gl_is_timeline_edit_copy_mode(void *data);
+int __gl_timeline_move_copy(void *data);
 
 #endif
 
index 2b168464b8bf41e15ae1efa18434627f42f3100f..a0a6fede3fbfe1b5d3aa2d753cfef7754a3b8189 100644 (file)
@@ -753,7 +753,7 @@ int _gl_move_media_thumb_by_id(void *data, const char *uuid, char *new_dir_name,
        gl_sdbg("New path : %s", new_path);
 
        /* Don't move, in 'All albums' */
-       if (!g_strcmp0(new_path, path)) {
+       if (mc_mode == GL_MC_MOVE && !g_strcmp0(new_path, path)) {
                *popup_op = GL_POPUP_OP_SAME_ALBUM;
                gl_dbg("File already in destination");
                ret = 0;
index da3930e721d446658c52d9ad063061a645a5c76c..336c637e720dd8a284aae4bae25c56fd4baa921b 100644 (file)
@@ -365,7 +365,7 @@ static void __gl_gesture_multi_move_event(void *data, Evas *evas,
        }
        gesture_d->ad->gridinfo.multi_touch = true;
 
-       if (_gl_is_timeline_edit_mode(gesture_d->ad)) {
+       if (_gl_is_timeline_edit_mode(gesture_d->ad) || _gl_is_timeline_edit_copy_mode(gesture_d->ad)) {
                gl_dbg("Prevent multi move in timeline edit mode");
                return;
        }
index 5cb340a08b4d8c9d72852a61d61c3753675bbb79..59d02b6c8d6b72d17f16b5c710ad2927e73db6b3 100644 (file)
@@ -1581,12 +1581,16 @@ static void __gl_thumbs_edit_create_album_cb(void *data, Evas_Object *obj, void
        ad->popupinfo.popup = NULL;
        ad->albuminfo.path = NULL;
        ad->albuminfo.file_mc_mode = GL_MC_COPY;
-       if (_gl_thumbs_get_edit_mode(data) == GL_THUMBS_EDIT_COPY) {
+       if (_gl_thumbs_get_edit_mode(data) == GL_THUMBS_EDIT_COPY || _gl_is_timeline_edit_copy_mode(ad)) {
                ad->albuminfo.file_mc_mode = GL_MC_COPY;
        } else if (_gl_thumbs_get_edit_mode(data) == GL_THUMBS_EDIT_MOVE) {
                ad->albuminfo.file_mc_mode = GL_MC_MOVE;
        }
-       _gl_albums_new_create_view(ad, gl_move_copy_to_album);
+       if (_gl_is_timeline_edit_copy_mode(ad)) {
+               _gl_albums_new_create_view(ad, __gl_timeline_move_copy);
+       } else {
+               _gl_albums_new_create_view(ad, gl_move_copy_to_album);
+       }
        return;
 }
 
@@ -1647,6 +1651,12 @@ static void __gl_popup_move_copy_sel_cb(void *data, Evas_Object *obj, void *ei)
                        __gl_thumbs_edit_copy_cb(ad, NULL, NULL);
                } else if (_gl_thumbs_get_edit_mode(ad) == GL_THUMBS_EDIT_MOVE) {
                        __gl_thumbs_edit_move_cb(ad, NULL, NULL);
+               } else if (_gl_is_timeline_edit_copy_mode(ad)) {
+                       if (ad->popupinfo.popup) {
+                               evas_object_del(ad->popupinfo.popup);
+                       }
+                       ad->albuminfo.file_mc_mode = GL_MC_COPY;
+                       __gl_timeline_move_copy(ad);
                }
                return;
        }
@@ -1766,7 +1776,7 @@ int _gl_popup_create_copy_move(void *data, void *sel_cb, void *cb_data)
        Evas_Object *popup = elm_popup_add(parent);
        evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND,
                                         EVAS_HINT_EXPAND);
-       if (_gl_thumbs_get_edit_mode(data) == GL_THUMBS_EDIT_COPY) {
+       if (_gl_thumbs_get_edit_mode(data) == GL_THUMBS_EDIT_COPY || _gl_is_timeline_edit_copy_mode(ad)) {
                _gl_ui_set_translate_part_str(popup, "title,text", GL_STR_ID_COPY);
        } else if (_gl_thumbs_get_edit_mode(data) == GL_THUMBS_EDIT_MOVE) {
                _gl_ui_set_translate_part_str(popup, "title,text", GL_STR_ID_MOVE);