[TIZENIOT-1962] [TIZENIOT-1963] [TIZENIOT-1971] fixed following issues 02/245902/1
authoraman.jeph <aman.jeph@samsung.com>
Mon, 19 Oct 2020 11:19:21 +0000 (16:49 +0530)
committeraman.jeph <aman.jeph@samsung.com>
Mon, 19 Oct 2020 11:19:21 +0000 (16:49 +0530)
1. fixed done button always enable in subtitle settings
2. add white background  files or folder for which thumbnail is not available
3. added external storage icon

Change-Id: I75e20b6e1d48a120c867168ea67c3a851c870144
Signed-off-by: aman.jeph <aman.jeph@samsung.com>
playview/src/feature/vp-subtitle.c
res/edje/vp-videolist-custom-gengrid.edc
res/images/default_thumbnail.png
res/images/icon_external_drive.png [new file with mode: 0755]
src/common/mp-util-media-service.c
src/view/mp-video-list-remove-view.c
src/view/mp-video-list-share-via-view.c
src/view/mp-video-list-view-folder.c
src/view/mp-video-list-view-item-of-folder.c
src/view/mp-video-list-view-select.c
src/view/mp-video-list-view-thumbnail.c

index 06892d40a369e1b28aad398c3624e01a2cfc9c3c..1cc79d8bd62f376f28c7624f5e9a31fe43c816c2 100755 (executable)
@@ -64,6 +64,18 @@ static void _vp_subtitle_cancel_button_cb(void *data, Evas_Object * obj, const c
 static void _vp_subtitle_page_back_key_cb(void *data, Evas_Object *obj, void *event_info);
 
 
+static void _vp_subtitle_done_button_disable_state_update(Evas_Object *layout, Eina_Bool disable) {
+       if(layout == NULL) {
+               VideoLogError("Layout is invalid, can't change done button state");
+               return;
+       }
+       if(disable) {
+               elm_object_signal_emit(layout, "done_button,state,disable", "vp");
+       } else {
+               elm_object_signal_emit(layout, "done_button,state,enable", "vp");
+       }
+}
+
 /* callback functions */
 /**
  *
@@ -96,6 +108,8 @@ static void __vp_subtitle_check_change_cb(void *pUserData,
                                                                (void *) pSubtitle->pUserData);
                }
        }
+       Evas_Object *layout = elm_object_part_content_get(pSubtitle->pPageLayout, "title_content");
+       _vp_subtitle_done_button_disable_state_update(layout, EINA_FALSE);
 }
 
 /**
@@ -404,6 +418,7 @@ static Evas_Object* _vp_subtitle_create_title_content(Evas_Object* parent, Subti
 
        elm_object_signal_callback_add(layout, "cancel_button,clicked", "vp", _vp_subtitle_cancel_button_cb, (void*)pSubtitle);
        elm_object_signal_callback_add(layout, "done_button,clicked", "vp", _vp_subtitle_done_button_cb, (void*)pSubtitle );
+       _vp_subtitle_done_button_disable_state_update(layout, EINA_TRUE);
 
        evas_object_show(layout);
 
@@ -419,6 +434,8 @@ static  void _vp_subtitle_alignement_selected(void *data, Evas_Object * obj, con
        if (pSubtitle->pCloseCb) {
                pSubtitle->pCloseCb((int)VP_SUBTITLE_MODE_ALIGNMENT, TRUE, (void *) pSubtitle->pUserData);
        }
+       Evas_Object *layout = elm_object_part_content_get(pSubtitle->pPageLayout, "title_content");
+       _vp_subtitle_done_button_disable_state_update(layout, EINA_FALSE);
 }
 
 static  void _vp_subtitle_font_size_selected(void *data, Evas_Object * obj, const char *emission, const char *source)
@@ -428,6 +445,8 @@ static  void _vp_subtitle_font_size_selected(void *data, Evas_Object * obj, cons
        if (pSubtitle->pCloseCb) {
                pSubtitle->pCloseCb((int) VP_SUBTITLE_MODE_SIZE, TRUE, (void *) pSubtitle->pUserData);
        }
+       Evas_Object *layout = elm_object_part_content_get(pSubtitle->pPageLayout, "title_content");
+       _vp_subtitle_done_button_disable_state_update(layout, EINA_FALSE);
 }
 
 static void _vp_subtite_update_subtitle_settings_layout(Evas_Object *layout, SubtitlePopup *pSubtitle)
@@ -507,6 +526,11 @@ static Evas_Object* _vp_subtitle_create_base_layout(Evas_Object *parent, Subtitl
        elm_object_part_content_set(layout, "on_off_button", pSubtitle->pActivationCheck);
 
        _vp_subtite_update_subtitle_settings_layout(layout, pSubtitle);
+       if(bShow) {
+               elm_object_signal_emit(layout, "subtitle,on", "vp");
+       } else {
+               elm_object_signal_emit(layout, "subtitle,off", "vp");
+       }
 
        elm_object_signal_callback_add(layout, "alignment,clicked", "vp", _vp_subtitle_alignement_selected, (void*)pSubtitle);
        elm_object_signal_callback_add(layout, "font_size,clicked", "vp", _vp_subtitle_font_size_selected, (void*)pSubtitle);
index 37b1fd1683347b90bae5860dae022427ed28e3c2..18033135f840f0180419b3f0ab12a8393f17725c 100755 (executable)
@@ -272,7 +272,7 @@ group { "videolist/progressbar"
 
 group { "elm/gengrid/item/videolist/default";
        inherit: "elm/gengrid/item/videolist_event/default";
-       data.item: "contents" "elm.icon elm.progress elm.check";
+       data.item: "contents" "elm.icon elm.progress elm.check elm.storage.icon";
        data.item: "texts" "elm.text elm.sub.text";
 
        parts {
@@ -396,6 +396,10 @@ group { "elm/gengrid/item/videolist/default";
                                }
                                color: 0 0 0 0;
                        }
+                       desc { "white_bg";
+                               inherit: "default";
+                               color: 255 255 255 255;
+                       }
                }
                swallow { "elm.icon"; mouse; scale;
                        desc { "default";
@@ -410,6 +414,22 @@ group { "elm/gengrid/item/videolist/default";
                                color_class: "gengrid_item/default/icon_disabled";
                        }
                }
+               swallow { "elm.storage.icon"; nomouse; scale;
+                       desc { "default";
+                               rel1.to: "elm.icon";
+                               rel1.relative: 0.0 0.0;
+                               rel2.to: "elm.icon";
+                               rel2.relative: 0.0 0.0;
+                               min: 40 40;
+                               max: 40 40;
+                               align: 0.0 0.0;
+                               hid;
+                       }
+                       desc { "show";
+                               inherit: "default";
+                               vis;
+                       }
+               }
                swallow { "elm.check"; nomouse; scale;
                        desc { "default";
                                min: 38 38;
@@ -533,7 +553,32 @@ group { "elm/gengrid/item/videolist/default";
                        action: STATE_SET "default";
                        target: "elm.check";
                }
+               program { "show_storage_icon";
+                       signal: "elm,state,elm.storage.icon,visible";
+                       source: "elm";
+                       action: STATE_SET "show";
+                       target: "elm.storage.icon";
+               }
+               program { "hide_storage_icon";
+                       signal: "elm,state,elm.storage.icon,hidden";
+                       source: "elm";
+                       action: STATE_SET "default";
+                       target: "elm.storage.icon";
+               }
+               program { "icon_white_bg_set";
+                       signal: "icon,white_bg";
+                       source: "vp";
+                       action: STATE_SET "white_bg";
+                       target: "icon_area";
+               }
+               program { "icon_default_bg_set";
+                       signal: "icon,default_bg";
+                       source: "vp";
+                       action: STATE_SET "default";
+                       target: "icon_area";
+               }
                GENGRID_PROGRAM_DEFAULT(
+                       target: "icon_area";
                        target: "elm.icon";
                        target: "effect_cover";
                        target: "elm.text";
@@ -541,6 +586,7 @@ group { "elm/gengrid/item/videolist/default";
                        target: "event";
                        target: "elm.check";
                        target: "elm.progress";
+                       target: "elm.storage.icon";
                )
        }
 }
index 5b4044fa87d8c7a3da50f98c5f4da05bef687b9d..2800f40c1a72326e3dd03fd47f518831ee2a3647 100755 (executable)
Binary files a/res/images/default_thumbnail.png and b/res/images/default_thumbnail.png differ
diff --git a/res/images/icon_external_drive.png b/res/images/icon_external_drive.png
new file mode 100755 (executable)
index 0000000..70d2c7d
Binary files /dev/null and b/res/images/icon_external_drive.png differ
index e9e1ac95230e35cfc4e695440819b2a2a1573dbd..c513cc26036c428cb5549c53370940eacb9b0e6f 100755 (executable)
@@ -2086,10 +2086,13 @@ MpMediaStorageType mp_util_svc_get_folder_storage(const int
 
        ret = storage_foreach_device_supported(_storage_device_supported_cb, &storage_rec);
        if (ret != STORAGE_ERROR_NONE || storage_rec.storage_id == -1) {
-               VideoLogError("Get storage id failed!");
+               VideoLogError("failed to status of storage");
+               MP_FREE_STRING(folder_path);
                return storage_local;
        }
 
+       MP_FREE_STRING(folder_path);
+
        ret = storage_get_type(storage_rec.storage_id, &storage_type);
        if (ret != STORAGE_ERROR_NONE) {
                VideoLogError("Get storage type failed!");
@@ -2105,6 +2108,22 @@ MpMediaStorageType mp_util_svc_get_folder_storage(const int
        return storage_local;
 }
 
+static bool mp_util_svc_storage_callback(int storage_id, storage_type_e type,
+                                                                                                       storage_state_e state, const char *path, void *user_data) {
+
+       storage_rec_s *storage_rec = (storage_rec_s*)user_data;
+
+       if (!(storage_rec && storage_rec->file_url && path)) {
+               return true;
+       }
+
+       if (strncmp(path, storage_rec->file_url, strlen(path)) == 0) {
+               storage_rec->storage_id = storage_id;
+               return false;
+       }
+       return true;
+}
+
 
 /**
 * Get folder storage of the video
@@ -2120,13 +2139,38 @@ MpMediaStorageType mp_util_svc_get_video_storage(const int nVideoItemIndex)
                return storage_local;
        }
 
-       if (nVideoItemIndex < 0
-               || nVideoItemIndex >=
-               mp_util_svc_get_video_list_size_for_checking_index()) {
+       if (nVideoItemIndex < 0 || nVideoItemIndex >= mp_util_svc_get_video_list_size_for_checking_index()) {
                VideoLogError("Error number of list item.");
                return storage_local;
        }
 
+       char *file_path = mp_util_svc_get_video_url(nVideoItemIndex);
+
+
+       storage_rec_s storage_rec;
+       storage_rec.storage_id = -1;
+       storage_rec.file_url = file_path;
+       storage_type_e storage_type = 0;
+       int ret = storage_foreach_device_supported(mp_util_svc_storage_callback, &storage_rec);
+       if(ret != STORAGE_ERROR_NONE) {
+               VideoLogError("Failed to get storage status, [Error Code: %d]", ret);
+               MP_FREE_STRING(file_path);
+               return storage_local;
+       }
+
+       MP_FREE_STRING(file_path);
+
+       ret = storage_get_type(storage_rec.storage_id, &storage_type);
+       if (ret != STORAGE_ERROR_NONE) {
+               VideoLogError("Failed to get storage type [Error Code: %d]", ret);
+               return storage_local;
+       }
+
+       if (storage_type == STORAGE_TYPE_INTERNAL) {
+               storage_local = MP_MEDIA_TYPE_STORAGE_INTERNAL;
+       } else if (storage_type == STORAGE_TYPE_EXTERNAL) {
+               storage_local = MP_MEDIA_TYPE_STORAGE_EXTERNAL;
+       }
        return storage_local;
 }
 
index 94c8c237d0216490303d490729620b615e312f7e..60f6fe8cb79bf3d47ff84780bd02923d59a8a794 100755 (executable)
@@ -852,6 +852,7 @@ static Evas_Object *__mp_remove_folder_view_get_grid_icon_cb(void *pUserData, Ev
                        free(path);
                        elm_image_aspect_fixed_set(img, EINA_TRUE);
                        elm_image_file_set(img, edj_path, NULL);
+                       elm_object_item_signal_emit(item_data->item, "icon,white_bg", "vp");
                } else {
                        elm_image_fill_outside_set(img, EINA_TRUE);
                        elm_image_file_set(img, pThumbIconUri, NULL);
@@ -883,6 +884,20 @@ static Evas_Object *__mp_remove_folder_view_get_grid_icon_cb(void *pUserData, Ev
                item_data->checkbox = checkbox;
                return checkbox;
        }
+       else if(!strcmp(pPart, "elm.storage.icon") && (mp_util_svc_get_folder_storage(nFolderItemIndex) == MP_MEDIA_TYPE_STORAGE_EXTERNAL))
+       {
+               char edj_path[1024] = {0, };
+               char *path = app_get_resource_path();
+               snprintf(edj_path, 1024, "%s%s/%s", path, "images", "icon_external_drive.png");
+               free(path);
+
+               Evas_Object *img = elm_image_add(pObject);
+               elm_image_file_set(img, edj_path, NULL);
+               evas_object_size_hint_weight_set(img, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               evas_object_size_hint_align_set(img, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+               return img;
+       }
        return NULL;
 }
 
@@ -994,6 +1009,17 @@ static Evas_Object *__mp_remove_view_get_grid_icon_cb(void *pUserData, Evas_Obje
                item_data->checkbox = checkbox;
                return checkbox;
        }
+       else if(!strcmp(pPart, "elm.storage.icon") && (mp_util_svc_get_video_storage(nVideoItemIndex) == MP_MEDIA_TYPE_STORAGE_EXTERNAL)) {
+               char *path = app_get_resource_path();
+               snprintf(edj_path, 1024, "%s%s/%s", path, "images", "icon_external_drive.png");
+
+               Evas_Object *img = elm_image_add(pObject);
+               elm_image_file_set(img, edj_path, NULL);
+               evas_object_size_hint_weight_set(img, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               evas_object_size_hint_align_set(img, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+               return img;
+       }
        return NULL;
 }
 #endif
index d246feb2eda52ae4a7a1b8f38b48786ad993874f..16b5883dd9f9f64de4ec79254102a738ab7655f2 100755 (executable)
@@ -1010,6 +1010,18 @@ static Evas_Object *__mp_share_view_get_grid_icon_cb(void *pUserData,
                item_data->checkbox = checkbox;
                return checkbox;
        }
+       else if(!strcmp(pPart, "elm.storage.icon") && (mp_util_svc_get_video_storage(nVideoItemIndex) == MP_MEDIA_TYPE_STORAGE_EXTERNAL)) {
+               char *path = app_get_resource_path();
+               snprintf(edj_path, 1024, "%s%s/%s", path, "images", "icon_external_drive.png");
+               free(path);
+
+               Evas_Object *img = elm_image_add(pObject);
+               elm_image_file_set(img, edj_path, NULL);
+               evas_object_size_hint_weight_set(img, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               evas_object_size_hint_align_set(img, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+               return img;
+       }
        return NULL;
 }
 #endif
index 14ec6b04029d252b7a5384598b7a321d272b34cf..bef69c707cf539a540cebf124089406fa87a406b 100755 (executable)
@@ -279,6 +279,7 @@ static Evas_Object *mp_folder_view_get_icon_of_folder_cb(void *pUserData,Evas_Ob
                        free(path);
                        elm_image_aspect_fixed_set(img, EINA_TRUE);
                        elm_image_file_set(img, edj_path, NULL);
+                       elm_object_item_signal_emit(item_data->item, "icon,white_bg", "vp");
                } else {
                        elm_image_fill_outside_set(img, EINA_TRUE);
                        elm_image_file_set(img, pThumbIconUri, NULL);
@@ -293,6 +294,20 @@ static Evas_Object *mp_folder_view_get_icon_of_folder_cb(void *pUserData,Evas_Ob
 
                return img;
        }
+       else if(!strcmp(pPart, "elm.storage.icon") && (mp_util_svc_get_folder_storage(nFolderItemIndex) == MP_MEDIA_TYPE_STORAGE_EXTERNAL))
+       {
+               char edj_path[1024] = {0, };
+               char *path = app_get_resource_path();
+               snprintf(edj_path, 1024, "%s%s/%s", path, "images", "icon_external_drive.png");
+               free(path);
+
+               Evas_Object *img = elm_image_add(pObject);
+               elm_image_file_set(img, edj_path, NULL);
+               evas_object_size_hint_weight_set(img, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               evas_object_size_hint_align_set(img, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+               return img;
+       }
        return NULL;
 }
 
index cea661ecfb5ce132816a291c052367248ae8fd17..cd1ced35d5181e2db116e5800ec7cf95ff2e6dcb 100755 (executable)
@@ -345,6 +345,10 @@ Evas_Object *__mp_folder_item_view_get_icon_of_video_item_cb(void
        }
        else if(!strcmp(pPart, "elm.progress"))
        {
+               char *path = app_get_resource_path();
+               snprintf(edj_path, 1024, "%s%s/%s", path, "edje", VIDEO_CUSTOM_THEME);
+               free(path);
+
                Evas_Object *progessbar = elm_layout_add(pObject);
                elm_layout_file_set(progessbar, edj_path, "videolist/progressbar");
                evas_object_size_hint_weight_set(progessbar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
@@ -355,6 +359,18 @@ Evas_Object *__mp_folder_item_view_get_icon_of_video_item_cb(void
                __mp_folder_item_view_set_playback_progress(nVideoItemIndex, item_data);
                return progessbar;
        }
+       else if(!strcmp(pPart, "elm.storage.icon") && (mp_util_svc_get_video_storage(nVideoItemIndex) == MP_MEDIA_TYPE_STORAGE_EXTERNAL)) {
+               char *path = app_get_resource_path();
+               snprintf(edj_path, 1024, "%s%s/%s", path, "images", "icon_external_drive.png");
+               free(path);
+
+               Evas_Object *img = elm_image_add(pObject);
+               elm_image_file_set(img, edj_path, NULL);
+               evas_object_size_hint_weight_set(img, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               evas_object_size_hint_align_set(img, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+               return img;
+       }
        return NULL;
 }
 
index e287f28da5608950824c3429cebff4b17c82ec13..2540dc254cdc30e01f754bcaa6b5d51d9ac3b140 100755 (executable)
@@ -342,7 +342,7 @@ static void __mp_select_view_gengrid_item_selected_cb(void *pUserData,
                VideoLogInfo("Show rename popup");
 
                g_pRenameLayout = mp_rename_ctrl_show(g_pSelectHandle->pNaviFrameHandle, NULL,
-                                                               (void *)__mp_select_view_result_view_update_cb,
+                                                               __mp_select_view_result_view_update_cb,
                                                                nSelectedIndex);
        }
 }
@@ -414,6 +414,19 @@ static Evas_Object *__mp_select_view_get_grid_icon_cb(void *pUserData, Evas_Obje
                item_data->icon = img;
                return img;
        }
+       else if(!strcmp(pPart, "elm.storage.icon") && (mp_util_svc_get_video_storage(nVideoItemIndex) == MP_MEDIA_TYPE_STORAGE_EXTERNAL)) {
+               char edj_path[1024] = {0,};
+               char *path = app_get_resource_path();
+               snprintf(edj_path, 1024, "%s%s/%s", path, "images", "icon_external_drive.png");
+               free(path);
+
+               Evas_Object *img = elm_image_add(pObject);
+               elm_image_file_set(img, edj_path, NULL);
+               evas_object_size_hint_weight_set(img, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               evas_object_size_hint_align_set(img, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+               return img;
+       }
        return NULL;
 }
 
index ca5b265c65a66036ed25bc65eb54480278972b65..21384fbcc93b89c7640fd7a31a1a51503bd262f0 100755 (executable)
@@ -909,6 +909,19 @@ static Evas_Object *__mp_thumbnail_view_get_grid_icon_cb(void *pUserData, Evas_O
 
                return progessbar;
        }
+       else if(!strcmp(pPart, "elm.storage.icon") && (mp_util_svc_get_video_storage(nVideoItemIndex) == MP_MEDIA_TYPE_STORAGE_EXTERNAL))
+       {
+               char *path = app_get_resource_path();
+               snprintf(edj_path, 1024, "%s%s/%s", path, "images", "icon_external_drive.png");
+               free(path);
+
+               Evas_Object *img = elm_image_add(pObject);
+               elm_image_file_set(img, edj_path, NULL);
+               evas_object_size_hint_weight_set(img, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               evas_object_size_hint_align_set(img, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+               return img;
+       }
        return NULL;
 }