[TIZENIOT-1853] Play gifs in gallery app 39/248239/3 submit/tizen/20201124.074607 submit/tizen/20201209.025211
authorJagrat Patidar <j1.patidar@samsung.com>
Tue, 24 Nov 2020 07:13:55 +0000 (12:43 +0530)
committerJagrat Patidar <j1.patidar@samsung.com>
Tue, 24 Nov 2020 07:20:59 +0000 (12:50 +0530)
Change-Id: I53e03e129219018833f939bea63304f3003c3290

src/main/slider/ivug-slider-new.cpp
src/main/view/ivug-main-view.cpp
src/main/view/ivug-photocam.cpp

index c0bcb515c5dd9b5c9c51a65c74faeaf3403bcae0..3190f688ae516488515a19a780075575deeffbca 100644 (file)
@@ -737,8 +737,9 @@ void ivug_enable_gesture(Ivug_SliderNew *slider_new)
        elm_photocam_gesture_enabled_set(slider_new->pMainView->photocam, EINA_TRUE);
        elm_photocam_gesture_enabled_set(slider_new->pMainView->photocam2, EINA_TRUE);
 
-       elm_gesture_layer_cb_set(slider_new->gesture, ELM_GESTURE_N_LONG_TAPS, ELM_GESTURE_STATE_ABORT, ivug_long_tap_gesture_abort_cb, slider_new);
-       elm_gesture_layer_cb_set(slider_new->gesture, ELM_GESTURE_N_LONG_TAPS, ELM_GESTURE_STATE_MOVE, ivug_long_tap_gesture_move_cb, slider_new);
+       //Long tap gesture not required currently.
+       //elm_gesture_layer_cb_set(slider_new->gesture, ELM_GESTURE_N_LONG_TAPS, ELM_GESTURE_STATE_ABORT, ivug_long_tap_gesture_abort_cb, slider_new);
+       //elm_gesture_layer_cb_set(slider_new->gesture, ELM_GESTURE_N_LONG_TAPS, ELM_GESTURE_STATE_MOVE, ivug_long_tap_gesture_move_cb, slider_new);
 
        elm_gesture_layer_cb_set(slider_new->gesture, ELM_GESTURE_MOMENTUM , ELM_GESTURE_STATE_START, _momentum_start, slider_new);
        elm_gesture_layer_cb_set(slider_new->gesture, ELM_GESTURE_MOMENTUM , ELM_GESTURE_STATE_MOVE, _momentum_move, slider_new);
@@ -819,8 +820,10 @@ Ivug_SliderNew * ivug_slider_new_init(Evas_Object *parent, void *pMainView)
 
        elm_gesture_layer_cb_set(gesture, ELM_GESTURE_N_LONG_TAPS, ELM_GESTURE_STATE_START, NULL, NULL);
        elm_gesture_layer_cb_set(gesture, ELM_GESTURE_N_LONG_TAPS, ELM_GESTURE_STATE_END, NULL, NULL);
-       elm_gesture_layer_cb_set(gesture, ELM_GESTURE_N_LONG_TAPS, ELM_GESTURE_STATE_ABORT, ivug_long_tap_gesture_abort_cb, slider_new);
-       elm_gesture_layer_cb_set(gesture, ELM_GESTURE_N_LONG_TAPS, ELM_GESTURE_STATE_MOVE, ivug_long_tap_gesture_move_cb, slider_new);
+
+       //Long tap gesture not required currently.
+       //elm_gesture_layer_cb_set(gesture, ELM_GESTURE_N_LONG_TAPS, ELM_GESTURE_STATE_ABORT, ivug_long_tap_gesture_abort_cb, slider_new);
+       //elm_gesture_layer_cb_set(gesture, ELM_GESTURE_N_LONG_TAPS, ELM_GESTURE_STATE_MOVE, ivug_long_tap_gesture_move_cb, slider_new);
 
        elm_gesture_layer_cb_set(gesture, ELM_GESTURE_MOMENTUM , ELM_GESTURE_STATE_START, _momentum_start, slider_new);
        elm_gesture_layer_cb_set(gesture, ELM_GESTURE_MOMENTUM , ELM_GESTURE_STATE_MOVE, _momentum_move, slider_new);
index 876d188b97ea8a97626c058642afa7d8fd1ebf98..57232f8c15fec1f8577ae15f403716a803bca2c4 100644 (file)
@@ -45,6 +45,10 @@ typedef enum {
 #undef LOG_CAT
 #define LOG_CAT "IV-MAIN-VIEW"
 
+#define MOVE_GIF_X 140
+#define RESIZE_GIF_W 1000
+#define RESIZE_GIF_H 720
+
 // EDJE
 #define IVUG_MAIN_EDJ  full_path(EDJ_PATH, "/ivug-main.edj")
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -674,6 +678,89 @@ void _update_main_view(Ivug_MainView *pMainView)
        return;
 }
 
+static void
+ivug_gif_view_pop_cb(void *data, Evas_Object* obj, void* event_info)
+{
+       ivug_ret_if(!data);
+       Ivug_MainView *pMainView = (Ivug_MainView *)data;
+
+       Elm_Object_Item *it = elm_naviframe_top_item_get(pMainView->navi_bar);
+       MSG_IVUG_HIGH("GIF View Pop");
+
+       elm_naviframe_item_pop(pMainView->navi_bar);
+}
+
+
+static Evas_Object*
+ivug_gif_view_back_button_create(Evas_Object *parent, Evas_Smart_Cb cb_func, void *data)
+{
+       ivug_retv_if(!parent, NULL);
+
+       Evas_Object *btn = NULL;
+       btn = elm_button_add(parent);
+       if (btn == NULL) {
+               MSG_ERROR("create button failed.");
+               return NULL;
+       }
+
+       elm_object_style_set(btn, "naviframe/back_btn/default");
+
+       evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+       if (cb_func) {
+               evas_object_smart_callback_add(btn, "clicked", cb_func, data);
+       }
+       return btn;
+}
+
+
+static Eina_Bool
+naviframe_pop_cb(void *data, Elm_Object_Item *it)
+{
+       return EINA_TRUE;
+}
+
+
+static Evas_Object*
+ivug_create_content(Evas_Object *parent, char* path)
+{
+       ivug_retv_if(!parent, NULL);
+
+       Evas_Object *ly =  elm_layout_add(parent);
+       evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+       Evas_Object * img =  elm_image_add(ly);
+       elm_image_file_set(img, path, NULL);
+       elm_image_animated_set(img, EINA_TRUE);
+       elm_image_animated_play_set(img, EINA_TRUE);
+
+       evas_object_move(img, MOVE_GIF_X, 0);
+       evas_object_resize(img, RESIZE_GIF_W, RESIZE_GIF_H);
+       evas_object_show(img);
+       evas_object_show(ly);
+
+       return ly;
+}
+
+
+static void ivug_create_gif_view(Ivug_MainView *pMainView, char* path)
+{
+       IV_ASSERT(pMainView != NULL);
+       Evas_Object *sn_layout = ivug_slider_new_get_layout(pMainView->pSliderNew);
+       Evas_Object *content;
+       Evas_Object *btn;
+       Elm_Object_Item *nf_it;
+
+       content = ivug_create_content(pMainView->navi_bar, path);
+
+       /* Push a new item */
+       nf_it = elm_naviframe_item_push(pMainView->navi_bar, NULL, NULL, NULL, content, NULL);
+
+       Evas_Object *btnBack = ivug_gif_view_back_button_create(pMainView->navi_bar, ivug_gif_view_pop_cb, pMainView);
+       elm_object_item_part_content_set(nf_it, "prev_btn", btnBack);
+       elm_naviframe_item_pop_cb_set(nf_it, naviframe_pop_cb, pMainView->navi_bar);
+}
+
 /**
  * play video icon clicked
  * @param data: main view data
@@ -696,11 +783,16 @@ _on_slider_playvideo_icon_clicked(void *data, Evas_Object *obj, const char *sour
                return;
        }
 
-       MSG_MAIN_HIGH("Launching video player");
-       if (pMainView->mode == IVUG_MODE_CAMERA_SIMPLE) {
-               ivug_ext_launch_videoplayer(mdata->filepath, true);
+       if (ivug_is_agif(pMainView, mdata->filepath)) {
+               MSG_MAIN_HIGH("Launching GIF");
+               ivug_create_gif_view(pMainView, mdata->filepath);
        } else {
-               ivug_ext_launch_videoplayer(mdata->filepath, false);
+               MSG_MAIN_HIGH("Launching video player");
+               if (pMainView->mode == IVUG_MODE_CAMERA_SIMPLE) {
+                       ivug_ext_launch_videoplayer(mdata->filepath, true);
+               } else {
+                       ivug_ext_launch_videoplayer(mdata->filepath, false);
+               }
        }
 }
 
@@ -1636,8 +1728,13 @@ ivug_main_view_start(Ivug_MainView *pMainView, app_control_h service)
                        elm_photocam_file_set(pMainView->photocam, mdata->thumbnail_path);
                        ivug_disable_gesture(pMainView->pSliderNew);
                } else {
-                       edje_object_signal_emit(elm_layout_edje_get(sn_layout), "hide,icon", "video_play_icon");
-                       pMainView->is_play_Icon = false;
+                       if (ivug_is_agif(pMainView, mdata->filepath)) {
+                               edje_object_signal_emit(elm_layout_edje_get(sn_layout), "show,icon", "video_play_icon");
+                               pMainView->is_play_Icon = true;
+                       } else {
+                               edje_object_signal_emit(elm_layout_edje_get(sn_layout), "hide,icon", "video_play_icon");
+                               pMainView->is_play_Icon = false;
+                       }
                        int bx = 0, by = 0, bw = 0, bh = 0;
                        e = elm_photocam_file_set(pMainView->photocam, mdata->filepath);
                        MSG_MAIN_HIGH("photocam_file_set Error = %d", e);
@@ -1680,8 +1777,13 @@ ivug_main_view_start(Ivug_MainView *pMainView, app_control_h service)
                        elm_photocam_file_set(pMainView->photocam, mdata->thumbnail_path);
                        ivug_disable_gesture(pMainView->pSliderNew);
                } else {
-                       edje_object_signal_emit(elm_layout_edje_get(sn_layout), "hide,icon", "video_play_icon");
-                       pMainView->is_play_Icon = false;
+                       if (ivug_is_agif(pMainView, mdata->filepath)) {
+                               edje_object_signal_emit(elm_layout_edje_get(sn_layout), "show,icon", "video_play_icon");
+                               pMainView->is_play_Icon = true;
+                       } else {
+                               edje_object_signal_emit(elm_layout_edje_get(sn_layout), "hide,icon", "video_play_icon");
+                               pMainView->is_play_Icon = false;
+                       }
                        e = elm_photocam_file_set(pMainView->photocam, mdata->filepath);
 
                        if (EVAS_LOAD_ERROR_NONE != e) {
@@ -1748,7 +1850,11 @@ SHOW_PHOTOCAM:
                                if (pData && pData->slide_type == SLIDE_TYPE_VIDEO) {
                                        elm_photocam_file_set(pMainView->photocam2, pData->thumbnail_path);
                                } else if (pData) {
-                                       e = elm_photocam_file_set(pMainView->photocam2, pData->filepath);
+                                       if (ivug_is_agif(pMainView, pData->filepath)) {
+                                               e = elm_photocam_file_set(pMainView->photocam2, pData->thumbnail_path);
+                                       } else {
+                                               e = elm_photocam_file_set(pMainView->photocam2, pData->filepath);
+                                       }
 
                                        if (EVAS_LOAD_ERROR_NONE != e) {
                                                MSG_HIGH("Loading default Thumbnail");
@@ -1773,7 +1879,12 @@ SHOW_PHOTOCAM:
                        if (pmData->slide_type == SLIDE_TYPE_VIDEO) {
                                elm_photocam_file_set(pMainView->photocam0, pmData->thumbnail_path);
                        } else {
-                               e = elm_photocam_file_set(pMainView->photocam0, pmData->filepath);
+                               if (ivug_is_agif(pMainView, pmData->filepath)) {
+                                               elm_photocam_file_set(pMainView->photocam0, pmData->thumbnail_path);
+                               } else {
+                                               e = elm_photocam_file_set(pMainView->photocam0, pmData->filepath);
+                               }
+
                                if (EVAS_LOAD_ERROR_NONE != e) {
                                        MSG_HIGH("Loading default Thumbnail");
                                        elm_photocam_file_set(pMainView->photocam0, default_thumbnail_edj_path);
@@ -2253,4 +2364,4 @@ ivug_main_view_hide_menu_bar(Ivug_MainView *pMainView)
 
        edje_object_signal_emit(_EDJ(pMainView->lyContent), "elm,state,hide", "user");
        edje_object_signal_emit(elm_layout_edje_get(pMainView->lyContent), "hide,back,btn", "user");
-}
+}
\ No newline at end of file
index 23bcf030e198fba2496f36743badae42237a75f0..35fcba9a4f23a9cd023a763d67e5de2d637898e8 100644 (file)
@@ -607,9 +607,15 @@ _ivug_main_view_left_transit_by_item_complete_cb(void *data, Evas_Object * obj,
                Media_Data *mData = ivug_medialist_get_data(mitem);
 
                if (mData->slide_type == SLIDE_TYPE_IMAGE) {
-                       edje_object_signal_emit(elm_layout_edje_get(sn_layout), "hide,icon", "video_play_icon");
-                       ivug_enable_gesture(pMainView->pSliderNew);
-                       pMainView->is_play_Icon = false;
+                       if (ivug_is_agif(pMainView, mData->filepath)) {
+                               edje_object_signal_emit(elm_layout_edje_get(sn_layout), "show,icon", "video_play_icon");
+                               ivug_disable_gesture(pMainView->pSliderNew);
+                               pMainView->is_play_Icon = true;
+                       } else {
+                               edje_object_signal_emit(elm_layout_edje_get(sn_layout), "hide,icon", "video_play_icon");
+                               ivug_enable_gesture(pMainView->pSliderNew);
+                               pMainView->is_play_Icon = false;
+                       }
                } else {
                        edje_object_signal_emit(elm_layout_edje_get(sn_layout), "show,icon", "video_play_icon");
                        ivug_disable_gesture(pMainView->pSliderNew);
@@ -682,9 +688,16 @@ _ivug_main_view_right_transit_by_item_complete_cb(void *data, Evas_Object * obj,
                Media_Data *mData = ivug_medialist_get_data(mitem);
 
                if (mData->slide_type == SLIDE_TYPE_IMAGE) {
-                       edje_object_signal_emit(elm_layout_edje_get(sn_layout), "hide,icon", "video_play_icon");
-                       ivug_enable_gesture(pMainView->pSliderNew);
-                       pMainView->is_play_Icon = false;
+                       if (ivug_is_agif(pMainView, mData->filepath)) {
+                               edje_object_signal_emit(elm_layout_edje_get(sn_layout), "show,icon", "video_play_icon");
+                               ivug_disable_gesture(pMainView->pSliderNew);
+                               pMainView->is_play_Icon = true;
+                       } else {
+                               edje_object_signal_emit(elm_layout_edje_get(sn_layout), "hide,icon", "video_play_icon");
+                               ivug_enable_gesture(pMainView->pSliderNew);
+                               pMainView->is_play_Icon = false;
+                       }
+
                } else {
                        edje_object_signal_emit(elm_layout_edje_get(sn_layout), "show,icon", "video_play_icon");
                        ivug_disable_gesture(pMainView->pSliderNew);
@@ -774,7 +787,11 @@ void ivug_set_prev_next_photocam_images(void *data, Evas_Object **prev_pc, Evas_
                if (pmData->slide_type == SLIDE_TYPE_VIDEO) {
                        elm_photocam_file_set(*prev_pc, pmData->thumbnail_path);
                } else {
-                       err = elm_photocam_file_set(*prev_pc, pmData->filepath);
+                       if (ivug_is_agif(pMainView, pmData->filepath)) {
+                               err = elm_photocam_file_set(*prev_pc, pmData->thumbnail_path);
+                       } else {
+                               err = elm_photocam_file_set(*prev_pc, pmData->filepath);
+                       }
 
                        if (EVAS_LOAD_ERROR_NONE != err) {
                                MSG_HIGH("Loading default Thumbnail");
@@ -800,7 +817,11 @@ void ivug_set_prev_next_photocam_images(void *data, Evas_Object **prev_pc, Evas_
                if (pmData->slide_type == SLIDE_TYPE_VIDEO) {
                        elm_photocam_file_set(*next_pc, pmData->thumbnail_path);
                } else {
-                       err = elm_photocam_file_set(*next_pc, pmData->filepath);
+                       if (ivug_is_agif(pMainView, pmData->filepath)) {
+                               err = elm_photocam_file_set(*next_pc, pmData->thumbnail_path);
+                       } else {
+                               err = elm_photocam_file_set(*next_pc, pmData->filepath);
+                       }
 
                        if (EVAS_LOAD_ERROR_NONE != err) {
                                MSG_HIGH("Loading default Thumbnail");