From 2b0c0959a31b4d3ac1861dae08a5be858e693509 Mon Sep 17 00:00:00 2001 From: "aman.jeph" Date: Fri, 14 Aug 2020 19:06:17 +0530 Subject: [PATCH] Following Feature Implemented in this Patch 1. Auto Play Next 2. Rename video file 3. Show Thumbnail after rename issue Change-Id: I68ddcf053c83767f9ca6fb163101aa38a67a1f32 Signed-off-by: aman.jeph --- include/common/mp-util-media-service.h | 5 + include/mp-video-value-define.h | 2 +- res/edje/vp-button-white.edc | 14 +- res/edje/vp-entry-popup.edc | 181 ++-- res/images/textinput_input_line.png | Bin 0 -> 143 bytes res/po/en.po | 4 +- res/po/en_PH.po | 4 +- res/po/en_US.po | 4 +- src/common/mp-util-media-service.c | 123 ++- src/view/mp-video-list-remove-view.c | 6 +- src/view/mp-video-list-share-via-view.c | 2 +- src/view/mp-video-list-view-folder.c | 2 +- src/view/mp-video-list-view-item-of-folder.c | 2 +- src/view/mp-video-list-view-main.c | 4 +- src/view/mp-video-list-view-select.c | 881 ++++--------------- src/view/mp-video-list-view-thumbnail.c | 2 +- src/view/mp-video-search-view.c | 2 +- src/widget/mp-video-list-auto-play-ctrl.c | 143 +-- src/widget/mp-video-list-sort-ctrl.c | 39 +- src/widget/mp-video-rename-ctrl.c | 86 +- tizen-manifest.xml | 2 +- 21 files changed, 540 insertions(+), 968 deletions(-) create mode 100755 res/images/textinput_input_line.png diff --git a/include/common/mp-util-media-service.h b/include/common/mp-util-media-service.h index 2bdb59d..f962c86 100755 --- a/include/common/mp-util-media-service.h +++ b/include/common/mp-util-media-service.h @@ -164,4 +164,9 @@ bool mp_util_svc_is_device_storage(const int nVideoItemIndex); bool mp_util_svc_check_valid_media_id(char *pMediaId, int style, int *nMediaIndex); +void mp_util_svc_update_video_item(char *mediaUrl, int nVideoItemIndex); +void mp_util_svc_generate_thumbnai(int nVideoItemIndex); + + + #endif // _MP_UTIL_DATABASE_ diff --git a/include/mp-video-value-define.h b/include/mp-video-value-define.h index 0ffe02e..dc16fe9 100755 --- a/include/mp-video-value-define.h +++ b/include/mp-video-value-define.h @@ -574,7 +574,7 @@ #define VIDEO_POPUP_DETAIL_ITEM_W 367 #define VIDEO_FILE_ENTRY_LEN_MAX 255 -#define VIDEO_FILE_SEARCH_CHAR_LEN_MAX 50 +#define VIDEO_FILE_SEARCH_CHAR_LEN_MAX 64 #define VIDEO_CTXPOPUP_ITEM_W 500 #define VIDEO_CTXPOPUP_TITLE_H 54 diff --git a/res/edje/vp-button-white.edc b/res/edje/vp-button-white.edc index 6732239..dbf8210 100755 --- a/res/edje/vp-button-white.edc +++ b/res/edje/vp-button-white.edc @@ -22,6 +22,7 @@ #define BUTTON_BG_BACK_NORMAL "T01_icon_soft_back.png" #define BUTTON_BG_CLEAR_NORMAL "T01-2_icon_toolbar_cancel.png" +#define BUTTON_ICON_CLEAR_NORMAL "icon_search_clear.png" ////////////////////////////////////////////////////////////// @@ -298,7 +299,7 @@ group { name: "elm/button/base/clear"; images { - image: BUTTON_BG_CLEAR_NORMAL COMP; + image: BUTTON_ICON_CLEAR_NORMAL COMP; } parts { part { @@ -308,8 +309,9 @@ group { description { state: "default" 0.0; color: 0 0 0 0; - min: 50 50; - max: 50 50; + min: 32 32; + max: 32 32; + color: 0 0 0 0; } } part { @@ -327,10 +329,10 @@ group { to: "bg"; } image { - normal: BUTTON_BG_CLEAR_NORMAL; + normal: BUTTON_ICON_CLEAR_NORMAL; } - min: 30 30; - max: 30 30; + min: 15 15; + max: 15 15; color: 0 0 0 255; } } diff --git a/res/edje/vp-entry-popup.edc b/res/edje/vp-entry-popup.edc index b43d044..37cf023 100755 --- a/res/edje/vp-entry-popup.edc +++ b/res/edje/vp-entry-popup.edc @@ -13,81 +13,160 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -#define VP_POPUP_ENTRY_WIDTH_HEIGHT_MIN 0 60 -#define PV_POPUP_ENTRY_CONTENT_MIN 0 60 -#define POPUP_CONTENT_PADDING_LEFT_MIN_INC 15 -#define POPUP_CONTENT_PADDING_RIGHT_MIN_INC 15 +#define VP_POPUP_ENTRY_WIDTH_HEIGHT_MIN 0 76 +#define VP_POPUP_ENTRY_WIDTH_HEIGHT_MAX -1 76 +#define PV_POPUP_ENTRY_CONTENT_MIN 0 26 +#define PV_POPUP_ENTRY_CONTENT_MAX -1 26 +#define POPUP_CONTENT_PADDING_LEFT_MIN_INC 40 76 +#define POPUP_CONTENT_PADDING_RIGHT_MIN_INC 40 76 +images { + image: "textinput_input_line.png" COMP; +} +color_classes{ + color_class { "message_color_normal"; + color: 10 14 74 255; + } + color_class { "message_color_warning"; + color: 170 24 24 255; + } +} +styles { + style { name: "inputfield_info_noraml"; + base: "font=Tizen:weight=Regular:width=BreezeSans font_size=18 align=left color:#0a0e4a color_class:message_color_normal ellipsis=1.0 wrap=none text_class=tizen"; + } + style { name: "inputfield_info_warning"; + base: "font=Tizen:weight=Regular:width=BreezeSans font_size=18 align=left color:#aa1818 color_class:message_color_warning ellipsis=1.0 wrap=none text_class=tizen"; + } +} -group { - name: "pv.popup.entry"; +group { name: "pv.popup.entry"; parts { - part { - name:"bg"; - type: RECT; + part { name:"bg"; + type: SPACER; scale: 1; - description { - state: "default" 0.0; + description { state: "default" 0.0; min: VP_POPUP_ENTRY_WIDTH_HEIGHT_MIN; - color: 0 0 0 0; + max: VP_POPUP_ENTRY_WIDTH_HEIGHT_MAX; + //color: 0 255 0 255; } } - - part { - name: "pad_l"; + part { name: "pad_t"; type: SPACER; scale: 1; - description { - state: "default" 0.0; - min: POPUP_CONTENT_PADDING_LEFT_MIN_INC 0; - fixed: 1 0; + description { state: "default" 0.0; + min: 0 12; + max: -1 12; + fixed: 0 1; align: 0.0 0.0; - rel1 { relative: 0.0 0.0; to: "bg";} - rel2 { relative: 0.0 1.0; to: "bg";} + rel1 { to: "bg"; relative: 0.0 0.0; } + rel2 { to: "bg"; relative: 1.0 0.0; } + //color: 255 255 0 255; } } - - part { - name: "pad_r"; - type: SPACER; + //This swallow is 26 ..but in actual it is taking 29px + //So we have to increase overall size to 76 + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + min: PV_POPUP_ENTRY_CONTENT_MIN; + max: PV_POPUP_ENTRY_CONTENT_MAX; + fixed: 0 1; + align: 0.0 0.0; + rel1 { relative: 0.0 1.0; to_x: "bg"; to_y: "pad_t"; } + rel2 { relative: 0.0 1.0; to_x: "inputfield.button.gap"; to_y: "pad_t"; } + color: 0 255 0 255; + } + } + part { name: "inputfield.button.gap"; + type:SPACER; scale: 1; - description { - state: "default" 0.0; - min: POPUP_CONTENT_PADDING_RIGHT_MIN_INC 0; - fixed: 1 0; + description { state: "default" 0.0; + min: 16 26; + max: 16 26; + rel1 { to: "elm.swallow.end"; relative: 0.0 1.0; } + rel2 { to: "elm.swallow.end"; relative: 0.0 1.0; } align: 1.0 1.0; - rel1 { relative: 0.9 0.0; to: "bg";} - rel2 { relative: 0.9 1.0; to: "bg";} + //color: 255 0 0 255; } } - part { - name: "elm.swallow.content"; + part { name: "elm.swallow.end"; type: SWALLOW; scale: 1; - description { - state: "default" 0.0; - min: PV_POPUP_ENTRY_CONTENT_MIN; + description { state: "default" 0.0; + min: 32 32; + max: 32 32; + fixed: 1 1; + align: 1.0 0.0; + rel1 { relative: 1.0 0.0; to: "bg"; offset: 0 9; } + rel2 { relative: 1.0 0.0; to: "bg"; offset: 0 0; } + color: 0 0 255 255; + } + } + part { name: "separator.line"; + type: IMAGE; + scale: 1; + description { state: "default" 0.0; + min: 0 1; + max: -1 1; fixed: 0 1; - align: 0.0 0.5; - rel1 { relative: 1.0 0.5; to_x: "pad_l"; to_y: "bg"; } - rel2 { relative: 0.0 0.5; to_x: "pad_r"; to_y: "bg"; } + align: 0.0 0.0; + rel1 { to_x: "bg"; to_y: "elm.swallow.content"; relative: 0.0 1.0; } + rel2 { to_x: "bg"; to_y: "elm.swallow.content"; relative: 1.0 1.0; } + image.normal: textinput_input_line.png; } } - part { - name: "elm.swallow.end"; - type: SWALLOW; + part { name: "inputfield.message"; + type: TEXT; scale: 1; - description { - state: "default" 0.0; - min: 30 30; - max: 30 30; - align: 0.0 0.5; - rel1 { relative: 0.85 0.5; to_x: "bg"; to_y: "bg"; } - rel2 { relative: 1.0 0.5; to_x: "bg"; to_y: "bg"; } - fixed: 1 1; + mouse_events: 0; + description { state: "default" 0.0; + min: 0 22; + max: -1 22; + rel1 { to: "separator.line"; relative: 0.0 1.0; }; + rel2 { to: "pad_b"; relative: 1.0 0.0; } + text { + font: "Tizen:weight=Regular:width=BreezeSans"; + size: 18; + min: 1 0; + align: 0.0 0.5; + text_class: "tizen"; + } + visible: 1; + color: 10 14 74 255; + } + description { state: "warning" 0.0; + inherit: "default" 0.0; + color: 170 24 24 255; } } - + part { name: "pad_b"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: 0 12; + max: -1 12; + fixed: 0 1; + align: 0.0 1.0; + rel1 { to: "bg"; relative: 0.0 1.0; } + rel2 { to: "bg"; relative: 1.0 1.0; } + } + } + } + programs { + program { name: "warning_state_set"; + signal: "info,msg,warning"; + source: "vp"; + action: STATE_SET "warning" 0.0; + target: "inputfield.message"; + } + program { name: "normal_state_set"; + signal: "info,msg,default"; + source: "vp"; + action: STATE_SET "default" 0.0; + target: "inputfield.message"; + } } } /* group */ diff --git a/res/images/textinput_input_line.png b/res/images/textinput_input_line.png new file mode 100755 index 0000000000000000000000000000000000000000..c9804760ddbb1def8245d366c223f846959a3f6c GIT binary patch literal 143 zcmeAS@N?(olHy`uVBq!ia0y~yV7dupGjgy2N$&ldz5*$hVkgfK4j`!ENa+Cb-8@|! zLp;2bpFH|nb?(3kg@XoMZq5lNEMS67f#u))7E8wKT={{R1P lf8fN47Y=V5egN6R4BvvdUC#4|Ujv%R;OXk;vd$@?2>`-BE<6AL literal 0 HcmV?d00001 diff --git a/res/po/en.po b/res/po/en.po index f33aa9e..383fe1c 100755 --- a/res/po/en.po +++ b/res/po/en.po @@ -179,13 +179,13 @@ msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS" msgstr "Small" msgid "IDS_VIDEO_TPOP_FILE_NAME_ALREADY_IN_USE" -msgstr "File name already in use." +msgstr "Name is already in use." msgid "IDS_COM_BODY_CLOSE" msgstr "Close" msgid "IDS_COM_POP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED" -msgstr "Maximum number of characters reached." +msgstr "Can't enter more than 64 characters." msgid "IDS_COM_SK_STOP" msgstr "Stop" diff --git a/res/po/en_PH.po b/res/po/en_PH.po index 0156bdb..0b5b989 100755 --- a/res/po/en_PH.po +++ b/res/po/en_PH.po @@ -179,13 +179,13 @@ msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS" msgstr "Small" msgid "IDS_VIDEO_TPOP_FILE_NAME_ALREADY_IN_USE" -msgstr "File name already in use." +msgstr "Name is already in use." msgid "IDS_COM_BODY_CLOSE" msgstr "Close" msgid "IDS_COM_POP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED" -msgstr "Maximum number of characters reached." +msgstr "Can't enter more than 64 characters." msgid "IDS_COM_SK_STOP" msgstr "Stop" diff --git a/res/po/en_US.po b/res/po/en_US.po index df193fa..29cea44 100755 --- a/res/po/en_US.po +++ b/res/po/en_US.po @@ -179,13 +179,13 @@ msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS" msgstr "Small" msgid "IDS_VIDEO_TPOP_FILE_NAME_ALREADY_IN_USE" -msgstr "File name already in use." +msgstr "Name is already in use." msgid "IDS_COM_BODY_CLOSE" msgstr "Close" msgid "IDS_COM_POP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED" -msgstr "Maximum number of characters reached." +msgstr "Can't enter more than 64 characters." msgid "IDS_COM_SK_STOP" msgstr "Stop" diff --git a/src/common/mp-util-media-service.c b/src/common/mp-util-media-service.c index 3b69dcb..bc06b2e 100755 --- a/src/common/mp-util-media-service.c +++ b/src/common/mp-util-media-service.c @@ -1752,6 +1752,21 @@ char *mp_util_svc_get_video_folder_id(int nVideoFolderIndex) return NULL; } +void mp_util_svc_generate_thumbnai(int nVideoItemIndex) +{ + if (nVideoItemIndex < 0 || nVideoItemIndex >= mp_util_svc_get_video_list_size_for_checking_index()) { + VideoLogError("Error number of list item."); + return; + } + + media_info_h pVideoItem = (media_info_h) eina_list_nth(VideoItemList, nVideoItemIndex); + + if ( media_info_generate_thumbnail(pVideoItem) != MEDIA_CONTENT_ERROR_NONE) { + VideoLogWarning("media_info_generate_thumbnail Failed"); + } +} + + /** * Assing thumbnail update callback function * @param nVideoItemIndex : index of the video @@ -1814,6 +1829,110 @@ void mp_util_svc_cancel_thumbnail_update(int nVideoItemIndex) } } +void mp_util_svc_update_video_item(char *mediaUrl, int nVideoItemIndex) +{ + if (!VideoItemList) { + VideoLogError("Not exist video item list handle."); + return; + } + + char *szMediaUri = strdup(mediaUrl); + + if (!szMediaUri) { + VideoLogError("No exist video path."); + return; + } + + VideoSecureLogInfo("szMediaUri : %s", szMediaUri); + + media_info_h pUpdatedVideoItem = NULL; + filter_h m_FilterHandle = NULL; + char szTmpStr[STR_LEN_MAX] = { 0, }; + + if (media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) { + VideoLogInfo("Fail to create media filter handle."); + return; + } + + memset(szTmpStr, 0, STR_LEN_MAX); + snprintf(szTmpStr, STR_LEN_MAX, + "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1 OR MEDIA_STORAGE_TYPE=2 OR MEDIA_STORAGE_TYPE=101 OR MEDIA_STORAGE_TYPE=121) AND MEDIA_PATH = \"%s\"", + szMediaUri); + if (media_filter_set_condition + (m_FilterHandle, szTmpStr, + MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE) { + VideoLogError("Fail to set filter condition."); + media_filter_destroy(m_FilterHandle); + if (szMediaUri) { + free(szMediaUri); + szMediaUri = NULL; + } + return; + } + + if (media_info_foreach_media_from_db + (m_FilterHandle, mp_util_svc_iterate_for_get_video_item_cb, + &pUpdatedVideoItem) != MEDIA_CONTENT_ERROR_NONE) { + VideoLogError + ("Fail to get video item list with filter condition."); + media_filter_destroy(m_FilterHandle); + if (szMediaUri) { + free(szMediaUri); + szMediaUri = NULL; + } + return; + } + + if (media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) { + VideoLogError("Fail to destroy media filter handle."); + if (szMediaUri) { + free(szMediaUri); + szMediaUri = NULL; + } + return; + } + + if (pUpdatedVideoItem) { + char *szTmpStr = NULL; + media_info_get_thumbnail_path(pUpdatedVideoItem, &szTmpStr); + VideoSecureLogDebug("pUpdatedVideoItem - thumbnail path : %s", + szTmpStr); + if (szTmpStr) { + free(szTmpStr); + szTmpStr = NULL; + } + + media_info_get_display_name(pUpdatedVideoItem, &szTmpStr); + VideoSecureLogDebug("pUpdatedVideoItem - title : %s", szTmpStr); + if (szTmpStr) { + free(szTmpStr); + szTmpStr = NULL; + } + + int nCounter = 0; + Eina_List *pCurList = NULL; + media_info_h pTmpVideoItem = NULL; + EINA_LIST_FOREACH(VideoItemList, pCurList, pTmpVideoItem) { + if (nCounter == nVideoItemIndex) { + VideoLogError("nCounter : %d", nCounter); + if (pTmpVideoItem) { + media_info_destroy(pTmpVideoItem); + } + pCurList->data = pUpdatedVideoItem; + break; + } + ++nCounter; + } + } else { + VideoLogError("Fail to get video item from db.."); + } + + if (szMediaUri) { + free(szMediaUri); + szMediaUri = NULL; + } +} + /** * Update thumbnail info to DB * @param nVideoItemIndex : index of the video @@ -2074,10 +2193,10 @@ void mp_util_svc_update_database_cb(media_content_error_e nError, int nPid, return; } - if (nPid == mp_util_get_pid()) { + /*if (nPid == mp_util_get_pid()) { VideoLogError("It is same processor"); return; - } + }*/ UpdateDatabaseCbFunc pUpdateDbCbFunc = pUserData; diff --git a/src/view/mp-video-list-remove-view.c b/src/view/mp-video-list-remove-view.c index c62a1c9..3f64a09 100755 --- a/src/view/mp-video-list-remove-view.c +++ b/src/view/mp-video-list-remove-view.c @@ -842,11 +842,11 @@ static Evas_Object *__mp_remove_folder_view_get_grid_icon_cb(void *pUserData, Ev Evas_Object *img = elm_image_add(pObject); - if(pThumbIconUri == NULL) + if(pThumbIconUri == NULL || (strlen(pThumbIconUri) == 0)) { char edj_path[1024] = {0, }; char *path = app_get_resource_path(); - snprintf(edj_path, 1024, "%s%s/%s", path, "images", "player_library_list_thumbnail_default.png"); + snprintf(edj_path, 1024, "%s%s/%s", path, "images", "default_thumbnail.png"); free(path); elm_image_aspect_fixed_set(img, EINA_TRUE); elm_image_file_set(img, edj_path, NULL); @@ -903,7 +903,7 @@ static Evas_Object *__mp_remove_view_get_grid_icon_cb(void *pUserData, Evas_Obje Evas_Object *img = elm_image_add(pObject); - if(pThumbIconUri == NULL) + if(pThumbIconUri == NULL || (strlen(pThumbIconUri) == 0 )) { char *path = app_get_resource_path(); snprintf(edj_path, 1024, "%s%s/%s", path, "images", "default_thumbnail.png"); diff --git a/src/view/mp-video-list-share-via-view.c b/src/view/mp-video-list-share-via-view.c index 301095d..9ba6f76 100755 --- a/src/view/mp-video-list-share-via-view.c +++ b/src/view/mp-video-list-share-via-view.c @@ -920,7 +920,7 @@ static Evas_Object *__mp_share_view_get_grid_icon_cb(void *pUserData, Evas_Object *img = elm_image_add(pObject); - if(pThumbIconUri == NULL) + if(pThumbIconUri == NULL || (strlen(pThumbIconUri) == 0 )) { char *path = app_get_resource_path(); snprintf(edj_path, 1024, "%s%s/%s", path, "images", "default_thumbnail.png"); diff --git a/src/view/mp-video-list-view-folder.c b/src/view/mp-video-list-view-folder.c index fd726e8..70de54c 100755 --- a/src/view/mp-video-list-view-folder.c +++ b/src/view/mp-video-list-view-folder.c @@ -271,7 +271,7 @@ static Evas_Object *mp_folder_view_get_icon_of_folder_cb(void *pUserData,Evas_Ob Evas_Object *img = elm_image_add(pObject); - if(pThumbIconUri == NULL) + if(pThumbIconUri == NULL || (strlen(pThumbIconUri) == 0)) { char edj_path[1024] = {0, }; char *path = app_get_resource_path(); diff --git a/src/view/mp-video-list-view-item-of-folder.c b/src/view/mp-video-list-view-item-of-folder.c index 884c7f7..256a4df 100755 --- a/src/view/mp-video-list-view-item-of-folder.c +++ b/src/view/mp-video-list-view-item-of-folder.c @@ -286,7 +286,7 @@ Evas_Object *__mp_folder_item_view_get_icon_of_video_item_cb(void Evas_Object *img = elm_image_add(pObject); - if(pThumbIconUri == NULL) + if(pThumbIconUri == NULL || (strlen(pThumbIconUri) == 0 )) { char *path = app_get_resource_path(); snprintf(edj_path, 1024, "%s%s/%s", path, "images", "default_thumbnail.png"); diff --git a/src/view/mp-video-list-view-main.c b/src/view/mp-video-list-view-main.c index 17805d4..bbfe18b 100755 --- a/src/view/mp-video-list-view-main.c +++ b/src/view/mp-video-list-view-main.c @@ -1317,9 +1317,9 @@ void mp_list_view_init_widget(void *pNaviFrameHandle) g_pMainViewHandle->nListTabType = mp_util_get_main_tab_type(); - if (g_pMainViewHandle->nListTabType == LIST_TAB_TYPE_PERSONAL) { + /*if (g_pMainViewHandle->nListTabType == LIST_TAB_TYPE_PERSONAL) { __mp_list_personal_view_display(); - } + }*/ elm_toolbar_item_selected_set(g_pToolbarItemData.videos_item, EINA_TRUE); } diff --git a/src/view/mp-video-list-view-select.c b/src/view/mp-video-list-view-select.c index 3e99c87..e287f28 100755 --- a/src/view/mp-video-list-view-select.c +++ b/src/view/mp-video-list-view-select.c @@ -36,16 +36,25 @@ #include "vp-file-util.h" #include "mp-rotate-ctrl.h" #include "videos-view-mgr.h" +#include "mp-video-list-view-main.h" + +#define GENGRID_ITEM_WIDTH 304 // Width is ICON(280) + LEFT_PADDING(12) RIGHT_PADDING(12) +#define GENGRID_ITEM_HEIGHT 256 //Height is ICON(160) + TEXT_PART(56) + Bottom_PADDING(40) +#define BASE_LAYOUT_SWALLOW "elm.content.swallow" + +typedef struct _stGengridItemData{ + Elm_Object_Item *item; + Evas_Object *icon; + int videoIndex; +}stGengridItemData; + typedef struct { void *pNaviFrameHandle; void *pNaviFrameItem; void *pPreNaviItem; void *pGenlist; - Elm_Genlist_Item_Class *pGenListItc; - Elm_Genlist_Item_Class *pGenListLandscapeItc; - Elm_Gengrid_Item_Class *pGenGridItc_1; - Elm_Gengrid_Item_Class *pGenGridItc_2; + Elm_Gengrid_Item_Class *pSelectGIC; MpMediaSvcSortType nSortType; MpDbUpdateViewLev euLev; ChangeSelectViewCbFunc pChangeViewUserCbFunc; @@ -60,7 +69,6 @@ typedef struct { } st_SelectViewHandle; typedef struct { - Evas_Object *pBox; Evas_Object *pBaselayout; } st_SelectViewWidget; @@ -75,9 +83,6 @@ bool mp_select_view_arrange_video_list(void *pGenlist, bool bNeedSvc); void mp_select_view_naviframe_transition_effect_cb(void *pUserData, Evas_Object * pObject, void *pEventInfo); -static void __mp_select_view_base_layout_del_cb(void *pUserData, Evas * e, - Evas_Object * pObject, - void *pEventInfo); /** * @@ -87,54 +92,20 @@ void mp_select_view_destroy(void) VideoLogInfo(""); if (g_pSelectHandle) { + mp_util_db_set_update_fun(g_pSelectHandle->euLev, NULL); evas_object_smart_callback_del(g_pSelectHandle->pNaviFrameHandle, "transition,finished", mp_select_view_naviframe_transition_effect_cb); - + MP_DEL_GRID_ITC(g_pSelectHandle->pSelectGIC); + elm_gengrid_clear(g_pSelectHandle->pGenlist); MP_DEL_OBJ(g_pSelectHandle->pGenlist); - MP_DEL_ITC(g_pSelectHandle->pGenListItc); MP_FREE_STRING(g_pSelectHandle->pFolderUrl); - MP_FREE_STRING(g_pSelectHandle); - } - - if (g_pSelectWidget) { - MP_DEL_OBJ(g_pSelectWidget->pBox); - if (g_pSelectWidget->pBaselayout != NULL) { - evas_object_event_callback_del(g_pSelectWidget->pBaselayout, - EVAS_CALLBACK_DEL, - __mp_select_view_base_layout_del_cb); MP_DEL_OBJ(g_pSelectWidget->pBaselayout); + MP_FREE_STRING(g_pSelectWidget); } - MP_FREE_STRING(g_pSelectWidget); - } -} - -/** - * - */ -static void __mp_select_view_reset(void) -{ - VideoLogInfo(""); - - if (g_pSelectHandle) { - MP_FREE_STRING(g_pSelectHandle->pFolderUrl); - mp_util_db_set_update_fun(g_pSelectHandle->euLev, NULL); - mp_util_db_set_backup_fun(g_pSelectHandle->euLev, NULL); - evas_object_smart_callback_del(g_pSelectHandle->pNaviFrameHandle, - "transition,finished", - mp_select_view_naviframe_transition_effect_cb); - g_pSelectHandle->pGenlist = NULL; MP_FREE_STRING(g_pSelectHandle); } - - if (g_pSelectWidget) { - - g_pSelectWidget->pBox = NULL; - g_pSelectWidget->pBaselayout = NULL; - - MP_FREE_STRING(g_pSelectWidget); - } } /** @@ -171,6 +142,7 @@ static void __mp_select_view_trans_finished_cb(void *pUserData, } mp_widget_ctrl_enable_navi_handle_focus(obj); + mp_select_view_destroy(); evas_object_smart_callback_del(obj, "transition,finished", __mp_select_view_trans_finished_cb); @@ -238,7 +210,7 @@ void mp_select_view_naviframe_transition_effect_cb(void *pUserData, } if (pTmpContents) { - if (pTmpContents == g_pSelectWidget->pBox) { + if (pTmpContents == g_pSelectWidget->pBaselayout) { } else { VideoLogInfo ("It's not pListShareViaViewTabbarLayout in top screen."); @@ -248,104 +220,6 @@ void mp_select_view_naviframe_transition_effect_cb(void *pUserData, } } -/** - * - * @param pUserData - * @param pObject - * @param pPart - * @return - */ -static char *__mp_select_view_get_label_of_folder_cb(const void *pUserData, - Evas_Object * pObject, - const char *pPart) -{ - - int nFolderItemIndex = (int) pUserData; - - if (!g_strcmp0(pPart, "elm.text.main.left.top")) { - char *szTitle = NULL; - szTitle = mp_util_svc_get_video_folder_name(nFolderItemIndex); - - char *szTitleUtf8 = elm_entry_utf8_to_markup(szTitle); - - MP_FREE_STRING(szTitle); - return szTitleUtf8; - } else if (!g_strcmp0(pPart, "elm.text.sub.left.bottom")) { - char *szFolderPath = NULL; - szFolderPath = mp_util_svc_get_video_folder_url(nFolderItemIndex); - char *pDes_path = mp_util_get_dir_by_path(szFolderPath); - MP_FREE_STRING(szFolderPath); - char *szFolderUtf8 = elm_entry_utf8_to_markup(pDes_path); - MP_FREE_STRING(pDes_path); - return szFolderUtf8; - - } - - return NULL; -} - -/** - * - * @param pUserData - * @param pObject - * @param pPart - * @return - */ -static Evas_Object *__mp_select_view_get_icon_of_folder_cb(const void - *pUserData, - Evas_Object * - pObject, - const char - *pPart) -{ - int nFolderItemIndex = (int) pUserData; - VideoLogInfo("Index : %d", nFolderItemIndex); - - if (!g_strcmp0(pPart, "elm.icon.1")) { - VideoLogInfo("pPart: elm.icon.1 - thumbnail"); - - Evas_Object *pLayout = NULL; - Evas_Object *pBg = NULL; - char *pThumbIconUri = - mp_util_get_folder_thumbnail(nFolderItemIndex, - mp_sort_ctrl_get_sort_state()); - char edj_path[1024] = { 0 }; - - char *path = app_get_resource_path(); - snprintf(edj_path, 1024, "%s%s/%s", path, "edje", - VIDEO_CUSTOM_THEME); - free(path); - pLayout = elm_layout_add(pObject); - elm_layout_file_set(pLayout, edj_path, - "listview.thumbnail.layout"); - - if (!pThumbIconUri || !vp_file_exists(pThumbIconUri)) { - MP_FREE_STRING(pThumbIconUri); - } - - pBg = - mp_util_create_preload_image(pLayout, pThumbIconUri, - VIDEO_ICON_WIDTH); - elm_layout_content_set(pLayout, "elm.thumbnail.icon", pBg); - if (pBg) - evas_object_show(pBg); - - if (!mp_util_create_folder_sub_icon(pLayout, nFolderItemIndex)) { - VideoLogWarning - ("Create sub icon is failed. nFolderItemIndex: %d", - nFolderItemIndex); - } - - MP_FREE_STRING(pThumbIconUri); - - evas_object_show(pLayout); - - return pLayout; - } - - return NULL; -} - /** * * @return @@ -366,106 +240,6 @@ int mp_select_view_get_sort_type(void) return g_pSelectHandle->nSortType; } -#ifdef VS_FEATURE_LIST_VIEW -/** - * - * @param pUserData - * @param pObject - * @param pPart - * @return - */ -static char *__mp_select_view_get_label_of_video_item_cb(const void - *pUserData, - Evas_Object * - pObject, - const char *pPart) -{ - int nVideoItemIndex = (int) pUserData; - - if (!strcmp(pPart, "elm.text.main.left.top")) { - char *szTitle = mp_util_svc_get_video_title(nVideoItemIndex); - char *szTitleUtf8 = elm_entry_utf8_to_markup(szTitle); - if (szTitle) { - free(szTitle); - szTitle = NULL; - } - - return szTitleUtf8; - } else if (!strcmp(pPart, "elm.text.sub.left.bottom")) { - return mp_util_svc_get_duration_str_time(nVideoItemIndex); - } - return NULL; -} - -/** - * - * @param pUserData - * @param pObject - * @param pPart - * @return - */ -static Evas_Object *__mp_select_view_get_icon_of_video_item_cb(const void - *pUserData, - Evas_Object - *pObject, - const char - *pPart) -{ - Evas_Object *pLayout = NULL; - - int nVideoItemIndex = (int) pUserData; - if (!pPart || !pObject) { - return NULL; - } - - if (!strcmp(pPart, "elm.icon.1")) { - VideoLogInfo("pPart: elm.icon.1 - thumbnail"); - - char *pThumbIconUri = - mp_util_svc_get_video_thumbnail(nVideoItemIndex); - Evas_Object *pBg = NULL; - char edj_path[1024] = { 0 }; - - char *path = app_get_resource_path(); - snprintf(edj_path, 1024, "%s%s/%s", path, "edje", - VIDEO_CUSTOM_THEME); - free(path); - pLayout = elm_layout_add(pObject); - elm_layout_file_set(pLayout, edj_path, - "listview.thumbnail.layout"); - - if (!pThumbIconUri || !vp_file_exists(pThumbIconUri)) { - MP_FREE_STRING(pThumbIconUri); - } - - pBg = - mp_util_create_preload_image(pLayout, pThumbIconUri, - VIDEO_ICON_WIDTH); - elm_layout_content_set(pLayout, "elm.thumbnail.icon", pBg); - - if (pBg) - evas_object_show(pBg); - - MP_FREE_STRING(pThumbIconUri); - - if (!mp_util_create_video_sub_icon(pLayout, nVideoItemIndex)) { - VideoLogWarning("Local File or Create sub icon is failed.", - nVideoItemIndex); - } - - if (pLayout) { - evas_object_show(pLayout); - } - - return pLayout; - } - - MP_DEL_OBJ(pLayout); - - return NULL; -} -#endif - /*if other view need update select view, need register this update callback*/ /** * @@ -480,13 +254,12 @@ static void __mp_select_view_result_view_update_cb(void) g_pSelectHandle->bRename = TRUE; - bool bNormalShow = - mp_select_view_arrange_video_list(g_pSelectHandle->pGenlist, TRUE); + bool bNormalShow = mp_select_view_arrange_video_list(g_pSelectHandle->pGenlist, FALSE); if (bNormalShow) { Elm_Object_Item *pItem = NULL; - pItem = elm_genlist_first_item_get(g_pSelectHandle->pGenlist); + pItem = elm_gengrid_first_item_get(g_pSelectHandle->pGenlist); if (pItem) { - elm_genlist_item_bring_in(pItem, ELM_GENLIST_ITEM_SCROLLTO_IN); + elm_gengrid_item_bring_in(pItem, ELM_GENGRID_ITEM_SCROLLTO_IN); } } else { elm_naviframe_item_pop(g_pSelectHandle->pNaviFrameHandle); @@ -532,7 +305,7 @@ static void __mp_select_view_show_detail_view(int nIndex, bool IsFolder) * @param pObject * @param pEventInfo */ -static void __mp_select_view_genlist_selected_cb(void *pUserData, +static void __mp_select_view_gengrid_item_selected_cb(void *pUserData, Evas_Object * pObject, void *pEventInfo) { @@ -541,20 +314,13 @@ static void __mp_select_view_genlist_selected_cb(void *pUserData, ("[WARNING] Main handles of list view are not existed."); return; } -#ifdef VS_FEATURE_THUMBNAIL_VIEW - Elm_Object_Item *pSelectedItem = - elm_gengrid_selected_item_get(pObject); + + Elm_Object_Item *pSelectedItem = elm_gengrid_selected_item_get(pObject); if (pSelectedItem) { elm_gengrid_item_selected_set(pSelectedItem, EINA_FALSE); } -#else - Elm_Object_Item *pSelectedItem = - elm_genlist_selected_item_get(pObject); - if (pSelectedItem) { - elm_genlist_item_selected_set(pSelectedItem, EINA_FALSE); - } -#endif - int nSelectedIndex = (int) pUserData; + stGengridItemData *item_data = (stGengridItemData*)pUserData; + int nSelectedIndex = item_data->videoIndex; VideoLogInfo("selected index is %d", nSelectedIndex); if (SELECT_TYPE_DETAIL == g_pSelectHandle->eSelType) { @@ -575,80 +341,13 @@ static void __mp_select_view_genlist_selected_cb(void *pUserData, } else if (SELECT_TYPE_RENAME == g_pSelectHandle->eSelType) { VideoLogInfo("Show rename popup"); - g_pRenameLayout = - mp_rename_ctrl_show(g_pSelectHandle->pNaviFrameHandle, NULL, - (void *) - __mp_select_view_result_view_update_cb, + g_pRenameLayout = mp_rename_ctrl_show(g_pSelectHandle->pNaviFrameHandle, NULL, + (void *)__mp_select_view_result_view_update_cb, nSelectedIndex); } } -/** - * - * @param pFolderGenlist - */ -static void __mp_select_view_append_folder_items(void *pFolderGenlist) -{ - VideoLogInfo(""); - int nIndex = 0; - int nFolderListSize = 0; - - nFolderListSize = mp_util_svc_get_video_folder_size(); - VideoLogInfo("nVideoListSize : %d", nFolderListSize); - - if (nFolderListSize > 0) { - MP_DEL_ITC(g_pSelectHandle->pGenListItc); - g_pSelectHandle->pGenListItc = elm_genlist_item_class_new(); - g_pSelectHandle->pGenListItc->item_style = "2line.top"; - g_pSelectHandle->pGenListItc->func.text_get = - (void *) __mp_select_view_get_label_of_folder_cb; - g_pSelectHandle->pGenListItc->func.content_get = - (void *) __mp_select_view_get_icon_of_folder_cb; - g_pSelectHandle->pGenListItc->func.state_get = NULL; - g_pSelectHandle->pGenListItc->func.del = NULL; - g_pSelectHandle->pGenListItc->decorate_item_style = NULL; - - for (nIndex = 0; nIndex < nFolderListSize; nIndex++) { - VideoLogInfo("nCounter : %d", nIndex); - elm_genlist_item_append(pFolderGenlist, - g_pSelectHandle->pGenListItc, - (void *) nIndex, NULL, - ELM_GENLIST_ITEM_NONE, - __mp_select_view_genlist_selected_cb, - (void *) nIndex); - } - } -} - #ifdef VS_FEATURE_THUMBNAIL_VIEW -/** - * - * @param parent - * @param nWidth - * @param nHeight - * @return - */ -static Evas_Object *__mp_select_view_create_gengrid(Evas_Object * parent, - int nWidth, - int nHeight) -{ - Evas_Object *pGengrid; - pGengrid = elm_gengrid_add(parent); - if (!pGengrid) { - VideoLogError("pVideoGrid does not exist."); - return NULL; - } - evas_object_size_hint_weight_set(pGengrid, EVAS_HINT_EXPAND, - EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(pGengrid, EVAS_HINT_FILL, - EVAS_HINT_FILL); - elm_gengrid_item_size_set(pGengrid, nWidth, nHeight); - elm_gengrid_align_set(pGengrid, 0.0, 0.0); - elm_gengrid_horizontal_set(pGengrid, EINA_TRUE); - - return pGengrid; -} - /** * * @param pUserData @@ -656,13 +355,10 @@ static Evas_Object *__mp_select_view_create_gengrid(Evas_Object * parent, * @param pPart * @return */ -static char *__mp_select_view_get_label_of_grid_item_cb(const void - *pUserData, - Evas_Object * - pObject, - const char *pPart) +static char *__mp_select_view_get_label_of_grid_item_cb(void *pUserData, Evas_Object *pObject, const char *pPart) { - int nVideoItemIndex = (int) pUserData; + stGengridItemData *item_data = (stGengridItemData*)pUserData; + int nVideoItemIndex = item_data->videoIndex; if (!strcmp(pPart, "elm.text")) { char *szTitle; @@ -675,10 +371,9 @@ static char *__mp_select_view_get_label_of_grid_item_cb(const void } return szTitleUtf8; - } else if (!strcmp(pPart, "elm.text.2")) { + } else if (!strcmp(pPart, "elm.sub.text")) { return mp_util_svc_get_duration_str_time(nVideoItemIndex); } - return NULL; } @@ -689,321 +384,98 @@ static char *__mp_select_view_get_label_of_grid_item_cb(const void * @param pPart * @return */ -static Evas_Object *__mp_select_view_get_grid_icon_cb(const void - *pUserData, - Evas_Object * - pObject, - const char *pPart) +static Evas_Object *__mp_select_view_get_grid_icon_cb(void *pUserData, Evas_Object *pObject, const char *pPart) { - int nVideoItemIndex = (int) pUserData; - char edj_path[1024] = { 0 }; + stGengridItemData *item_data = (void*)pUserData; + int nVideoItemIndex = item_data->videoIndex; - char *path = app_get_resource_path(); - snprintf(edj_path, 1024, "%s%s/%s", path, "edje", - VIDEO_PLAYER_IMAGE_NAME_EDJ); - free(path); - if (!strcmp(pPart, "elm.swallow.icon")) { - char *pThumbIconUri = - mp_util_svc_get_video_thumbnail(nVideoItemIndex); - Evas_Object *pBg = NULL; - - if (!pThumbIconUri || !vp_file_exists(pThumbIconUri)) { - pBg = elm_image_add(pObject); - MP_FREE_STRING(pThumbIconUri); - evas_object_size_hint_aspect_set(pBg, EVAS_ASPECT_CONTROL_BOTH, - 1, 1); - elm_image_file_set(pBg, pThumbIconUri, NULL); - } else { - pBg = - mp_util_create_preload_image(pObject, pThumbIconUri, - GRID_VIDEO_ICON_WIDTH); - } + if (!strcmp(pPart, "elm.icon")) { + char *pThumbIconUri = mp_util_svc_get_video_thumbnail(nVideoItemIndex); + char edj_path[1024] = {0, }; - MP_FREE_STRING(pThumbIconUri); - - return pBg; - } else if (!strcmp(pPart, "elm.progressbar.icon")) { - return NULL; - } else if (!strcmp(pPart, "elm.lock.icon")) { - char *pVideoFile = mp_util_svc_get_video_url(nVideoItemIndex); - bool bRet = - mp_util_check_video_personal_status((const char *) pVideoFile); - MP_FREE_STRING(pVideoFile); - if (bRet) { - Evas_Object *pLockIcon = elm_image_add(pObject); - elm_image_file_set(pLockIcon, edj_path, - VIDEO_LIST_VIEW_ICON_PERSONAL_LOCK); - evas_object_size_hint_align_set(pLockIcon, EVAS_HINT_FILL, - EVAS_HINT_FILL); - evas_object_size_hint_weight_set(pLockIcon, EVAS_HINT_EXPAND, - EVAS_HINT_EXPAND); - evas_object_show(pLockIcon); - return pLockIcon; - } else { - return NULL; - } - } else if (!strcmp(pPart, "elm.dropbox.icon")) { - bool bRet = mp_util_svc_is_cloud_storage(nVideoItemIndex); - if (bRet) { - Evas_Object *pDropboxIcon = elm_image_add(pObject); - elm_image_file_set(pDropboxIcon, edj_path, - VIDEO_LIST_VIEW_ICON_DROPBOX); - evas_object_size_hint_align_set(pDropboxIcon, EVAS_HINT_FILL, - EVAS_HINT_FILL); - evas_object_size_hint_weight_set(pDropboxIcon, - EVAS_HINT_EXPAND, - EVAS_HINT_EXPAND); - evas_object_show(pDropboxIcon); - return pDropboxIcon; - } else { - return NULL; - } - } else if (!strcmp(pPart, "elm.swallow.end")) { - } - return NULL; -} - -/** - * - * @param pObjVideosList - * @param nGenItemIndex - */ -static void __mp_select_view_append_grid_items(void *pObjVideosList, - int nGenItemIndex) -{ - if (!g_pSelectHandle) { - VideoLogInfo("invalid handle"); - return; - } + Evas_Object *img = elm_image_add(pObject); - MP_DEL_GRID_ITC(g_pSelectHandle->pGenGridItc_1); - MP_DEL_GRID_ITC(g_pSelectHandle->pGenGridItc_2); - g_pSelectHandle->pGenGridItc_1 = elm_gengrid_item_class_new(); - g_pSelectHandle->pGenGridItc_1->item_style = "video/album_grid"; - g_pSelectHandle->pGenGridItc_1->func.text_get = - (void *) __mp_select_view_get_label_of_grid_item_cb; - g_pSelectHandle->pGenGridItc_1->func.content_get = - (void *) __mp_select_view_get_grid_icon_cb; - g_pSelectHandle->pGenGridItc_1->func.state_get = NULL; - g_pSelectHandle->pGenGridItc_1->func.del = NULL; - - g_pSelectHandle->pGenGridItc_2 = elm_gengrid_item_class_new(); - g_pSelectHandle->pGenGridItc_2->item_style = "video/album_grid"; - g_pSelectHandle->pGenGridItc_2->func.text_get = - (void *) __mp_select_view_get_label_of_grid_item_cb; - g_pSelectHandle->pGenGridItc_2->func.content_get = - (void *) __mp_select_view_get_grid_icon_cb; - g_pSelectHandle->pGenGridItc_2->func.state_get = NULL; - g_pSelectHandle->pGenGridItc_2->func.del = NULL; - - int nCount = - (mp_rotate_ctrl_check_landspace() ? VP_GENLIST_THUMB_LANDSPACE_COUNT - : VP_GENLIST_THUMB_PORTRAIT_COUNT); - int nIndex = nGenItemIndex * nCount; - int nMaxIndex = nIndex + nCount; - int nVideoListSize = mp_util_svc_get_number_of_video_item_by_type(); - - Elm_Object_Item *gridItem = NULL; - for (; (nIndex < nMaxIndex) && (nIndex < nVideoListSize); nIndex++) { - if (nIndex % 2 == 0) { - elm_gengrid_item_append(pObjVideosList, - g_pSelectHandle->pGenGridItc_1, - (void *) nIndex, - __mp_select_view_genlist_selected_cb, - (void *) nIndex); + if(pThumbIconUri == NULL || (strlen(pThumbIconUri) == 0 )) + { + char *path = app_get_resource_path(); + snprintf(edj_path, 1024, "%s%s/%s", path, "images", "default_thumbnail.png"); + free(path); + elm_image_aspect_fixed_set(img, EINA_TRUE); + elm_image_file_set(img, edj_path, NULL); } else { - elm_gengrid_item_append(pObjVideosList, - g_pSelectHandle->pGenGridItc_2, - (void *) nIndex, - __mp_select_view_genlist_selected_cb, - (void *) nIndex); + elm_image_fill_outside_set(img, EINA_TRUE); + elm_image_file_set(img, pThumbIconUri, NULL); + free(pThumbIconUri); } - elm_object_item_data_set(gridItem, (void *) nIndex); - } -} + elm_image_preload_disabled_set(img, EINA_FALSE); + 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); -/** - * - * @param height - * @param width - */ -static void mp_select_view_get_icon_dimensions(int *height, int *width) -{ - int winHeight = 0; - int winWidth = 0; - elm_win_screen_size_get(mp_util_get_main_window_handle(), NULL, NULL, - &winWidth, &winHeight); - - bool bLandscape = - mp_rotate_ctrl_check_landspace_by_win((Evas_Object *) - mp_util_get_main_window_handle - ()); - if (bLandscape) { - *width = winHeight / VP_GENLIST_THUMB_LANDSPACE_COUNT; - } else { - *width = winWidth / VP_GENLIST_THUMB_PORTRAIT_COUNT; + item_data->icon = img; + return img; } - *height = VP_ALBUM_THUMB_ICON_HEIGHT * MP_SCALE; + return NULL; } -/** - * - * @param pUserData - * @param pObject - * @param pPart - * @return - */ -static Evas_Object *__mp_select_view_get_icon_of_grid_cb(const void - *pUserData, - Evas_Object * - pObject, - const char *pPart) +static void __mp_select_view_grid_item_del_cb(void *data, Evas_Object *obj, void *event_info) { - VideoLogInfo("in __mp_select_view_get_icon_of_grid_cb"); - if (!g_pSelectHandle || !pObject) { - VideoLogError("g_pMainViewWidgetOfSelectList is NULL"); - return NULL; + if(g_pSelectHandle == NULL) + { + VideoLogError("g_pSelectHandle is invalid"); + return; } - - int nGenItemIndex = (int) pUserData; - int nHeight = 0; - int nWidth = 0; - mp_select_view_get_icon_dimensions(&nHeight, &nWidth); - - Evas_Object *pGengrid = - __mp_select_view_create_gengrid(pObject, nWidth, nHeight); - __mp_select_view_append_grid_items(pGengrid, nGenItemIndex); - - return pGengrid; + stGengridItemData *item_data = (stGengridItemData*)data; + elm_object_item_data_set(item_data->item, NULL); + free(item_data); } /** * - * @param nVideoItemIndex - * @return + * @param pObjVideosList + * @param nGenItemIndex */ -int mp_select_view_thumbnail_to_genlist_index(int nVideoItemIndex) +static void __mp_select_view_append_grid_items(void *pObjVideosList) { - /*nVideoItemIndex = 0-->max */ - if (nVideoItemIndex < 0) { - VideoLogDebug("invalid nVideoItemIndex"); - return 0; - } - g_pSelectHandle->bLandscape = - mp_rotate_ctrl_check_landspace_by_win((Evas_Object *) - mp_util_get_main_window_handle - ()); - int nItemCount = VP_GENLIST_THUMB_PORTRAIT_COUNT; - int nGenlistIndex = 0; - if (g_pSelectHandle->bLandscape) { - nItemCount = VP_GENLIST_THUMB_LANDSPACE_COUNT; - } - nGenlistIndex = nVideoItemIndex / nItemCount; - VideoLogWarning("in mp_select_view_thumbnail_to_genlist_index %d", - nGenlistIndex); - return nGenlistIndex; -} + if (!g_pSelectHandle) { + VideoLogInfo("invalid handle"); + return; + } + VideoLogInfo(""); -/** - * - * @param pGenlist - * @return - */ -static bool __mp_select_view_append_grid_layout(void *pGenlist) -{ - VideoLogInfo("in append grid layout"); - if (!pGenlist || !g_pSelectHandle) { - VideoLogError("error handle."); - return FALSE; - } - int nIndex = 0; - int nVideoListSize = mp_util_svc_get_number_of_video_item_by_type(); - if (nVideoListSize <= 0) { - VideoLogWarning("nVideoListSize = %d", nVideoListSize); - return FALSE; - } else - VideoLogWarning("nVideoListSize = %d", nVideoListSize); - - MP_DEL_ITC(g_pSelectHandle->pGenListItc); - g_pSelectHandle->pGenListItc = elm_genlist_item_class_new(); - - g_pSelectHandle->pGenListItc->item_style = "video/1icon.thumbnail"; - g_pSelectHandle->pGenListItc->func.text_get = NULL; - g_pSelectHandle->pGenListItc->func.content_get = - (void *) __mp_select_view_get_icon_of_grid_cb; - g_pSelectHandle->pGenListItc->func.state_get = NULL; - g_pSelectHandle->pGenListItc->func.del = NULL; - g_pSelectHandle->pGenListItc->decorate_item_style = NULL; - - MP_DEL_ITC(g_pSelectHandle->pGenListLandscapeItc); - g_pSelectHandle->pGenListLandscapeItc = elm_genlist_item_class_new(); - g_pSelectHandle->pGenListLandscapeItc->item_style = - "video/1icon.thumbnail.landscape"; - g_pSelectHandle->pGenListLandscapeItc->func.text_get = NULL; - g_pSelectHandle->pGenListLandscapeItc->func.content_get = - (void *) __mp_select_view_get_icon_of_grid_cb; - g_pSelectHandle->pGenListLandscapeItc->func.state_get = NULL; - g_pSelectHandle->pGenListLandscapeItc->func.del = NULL; - g_pSelectHandle->pGenListLandscapeItc->decorate_item_style = NULL; - - int nGenlistRow = 0; - nGenlistRow = - mp_select_view_thumbnail_to_genlist_index(nVideoListSize - 1); - - if (g_pSelectHandle->bLandscape) { - for (nIndex = 0; nIndex <= nGenlistRow; nIndex++) { - elm_genlist_item_append(pGenlist, - g_pSelectHandle->pGenListLandscapeItc, - (void *) nIndex, NULL, - ELM_GENLIST_ITEM_NONE, NULL, NULL); + if (!pObjVideosList) { + VideoLogInfo("gengrid object is invalid."); + return; } - } else { - for (nIndex = 0; nIndex <= nGenlistRow; nIndex++) { - elm_genlist_item_append(pGenlist, g_pSelectHandle->pGenListItc, - (void *) nIndex, NULL, - ELM_GENLIST_ITEM_NONE, NULL, NULL); + + if(g_pSelectHandle->pSelectGIC == NULL) + { + g_pSelectHandle->pSelectGIC = elm_gengrid_item_class_new(); + g_pSelectHandle->pSelectGIC->item_style = "videolist"; + g_pSelectHandle->pSelectGIC->func.text_get = __mp_select_view_get_label_of_grid_item_cb;; + g_pSelectHandle->pSelectGIC->func.content_get = __mp_select_view_get_grid_icon_cb; + g_pSelectHandle->pSelectGIC->func.state_get = NULL; + g_pSelectHandle->pSelectGIC->func.del = NULL; } - } - return TRUE; -} -#endif + int nVideoListSize = mp_util_svc_get_number_of_video_item_by_type(); -#ifdef VS_FEATURE_LIST_VIEW -/** - * - * @param pVideosGenlist - */ -static void __mp_select_view_append_video_items(void *pVideosGenlist) -{ - VideoLogInfo(""); - if (!g_pSelectHandle) { - VideoLogError(""); - return; - } + int nIndex = 0; - int nIndex = 0; - int nVideoListSize = mp_util_svc_get_number_of_video_item_by_type(); - - MP_DEL_ITC(g_pSelectHandle->pGenListItc); - g_pSelectHandle->pGenListItc = elm_genlist_item_class_new(); - g_pSelectHandle->pGenListItc->item_style = "2line.top"; - g_pSelectHandle->pGenListItc->func.text_get = - (void *) __mp_select_view_get_label_of_video_item_cb; - g_pSelectHandle->pGenListItc->func.content_get = - (void *) __mp_select_view_get_icon_of_video_item_cb; - g_pSelectHandle->pGenListItc->func.state_get = NULL; - g_pSelectHandle->pGenListItc->func.del = NULL; - g_pSelectHandle->pGenListItc->decorate_item_style = NULL; - - for (nIndex = 0; nIndex < nVideoListSize; nIndex++) { - elm_genlist_item_append(pVideosGenlist, - g_pSelectHandle->pGenListItc, - (void *) nIndex, NULL, - ELM_GENLIST_ITEM_NONE, - __mp_select_view_genlist_selected_cb, - (void *) nIndex); - } + for (nIndex = 0; nIndex < nVideoListSize; nIndex++) { + stGengridItemData *item_data = calloc(1, sizeof(stGengridItemData)); + if(item_data == NULL) + { + VideoLogError("Failed to allocate memory for item data"); + return; + } + item_data->videoIndex = nIndex; + item_data->item = elm_gengrid_item_append(pObjVideosList, g_pSelectHandle->pSelectGIC, + (void *) item_data, + __mp_select_view_gengrid_item_selected_cb, + (void *) item_data); + elm_gengrid_item_select_mode_set(item_data->item, ELM_OBJECT_SELECT_MODE_ALWAYS); + elm_object_item_del_cb_set(item_data->item, __mp_select_view_grid_item_del_cb); + } } #endif @@ -1039,8 +511,8 @@ bool mp_select_view_arrange_video_list(void *pGenlist, bool bNeedSvc) return FALSE; } - elm_genlist_clear(pGenlist); - __mp_select_view_append_video_items(pGenlist); + elm_gengrid_clear((Evas_Object*)pGenlist); + __mp_select_view_append_grid_items(pGenlist); } else #endif if (g_pSelectHandle->nViewType == MP_LIST_VIEW_AS_FOLDER_LIST) { @@ -1061,8 +533,8 @@ bool mp_select_view_arrange_video_list(void *pGenlist, bool bNeedSvc) return FALSE; } - elm_genlist_clear(pGenlist); - __mp_select_view_append_grid_layout(pGenlist); + elm_gengrid_clear((Evas_Object*)pGenlist); + __mp_select_view_append_grid_items(pGenlist); } else { VideoLogWarning("Folder view"); /*update folder list data */ @@ -1080,8 +552,8 @@ bool mp_select_view_arrange_video_list(void *pGenlist, bool bNeedSvc) return FALSE; } - elm_genlist_clear(pGenlist); - __mp_select_view_append_folder_items(pGenlist); + elm_gengrid_clear((Evas_Object*)pGenlist); + __mp_select_view_append_grid_items(pGenlist); } } else if (g_pSelectHandle->nViewType == MP_LIST_VIEW_AS_THUMBNAIL_LIST) { @@ -1096,8 +568,8 @@ bool mp_select_view_arrange_video_list(void *pGenlist, bool bNeedSvc) return FALSE; } - elm_genlist_clear(pGenlist); - __mp_select_view_append_grid_layout(pGenlist); + elm_gengrid_clear((Evas_Object*)pGenlist); + __mp_select_view_append_grid_items(pGenlist); } evas_object_show(pGenlist); @@ -1109,34 +581,26 @@ bool mp_select_view_arrange_video_list(void *pGenlist, bool bNeedSvc) * @param pParent * @return */ -Evas_Object *mp_select_view_create_internal_layout(void *pParent) +Evas_Object *mp_select_view_create_internal_layout(void *parent) { - if (!pParent) { - VideoLogInfo("[ERR]"); + if (!parent) { + VideoLogInfo("parent object for base layout is invalid"); return NULL; } VideoLogInfo(""); - if (g_pSelectWidget->pBaselayout) { - evas_object_del(g_pSelectWidget->pBaselayout); - g_pSelectWidget->pBaselayout = NULL; - } char edj_path[1024] = { 0 }; - char *path = app_get_resource_path(); - snprintf(edj_path, 1024, "%s%s/%s", path, "edje", - VIDEO_PLAYER_REMOVE_LIST_EDJ); + snprintf(edj_path, 1024, "%s%s/%s", path, "edje", VIDEO_CUSTOM_THEME); free(path); - g_pSelectWidget->pBaselayout = elm_layout_add(pParent); - elm_layout_file_set(g_pSelectWidget->pBaselayout, edj_path, - REMOVE_LIST_EDJ_GROUP); - evas_object_size_hint_weight_set(g_pSelectWidget->pBaselayout, - EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(g_pSelectWidget->pBaselayout, - EVAS_HINT_FILL, EVAS_HINT_FILL); - - return g_pSelectWidget->pBaselayout; + + Evas_Object* layout = elm_layout_add(parent); + elm_layout_file_set(layout, edj_path, "gengrid/layout"); + evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL); + + return layout; } /** @@ -1154,12 +618,12 @@ static void __mp_select_view_db_changed_cb(void *pUserData) bool bNormalShow = TRUE; bNormalShow = - mp_select_view_arrange_video_list(g_pSelectHandle->pGenlist, TRUE); + mp_select_view_arrange_video_list(g_pSelectHandle->pGenlist, FALSE); if (bNormalShow) { Elm_Object_Item *pItem = NULL; - pItem = elm_genlist_first_item_get(g_pSelectHandle->pGenlist); + pItem = elm_gengrid_first_item_get(g_pSelectHandle->pGenlist); if (pItem) { - elm_genlist_item_bring_in(pItem, ELM_GENLIST_ITEM_SCROLLTO_IN); + elm_gengrid_item_bring_in(pItem, ELM_GENGRID_ITEM_SCROLLTO_IN); } if (SELECT_TYPE_DETAIL == g_pSelectHandle->eSelType) { mp_detail_view_update(); @@ -1184,56 +648,25 @@ void __mp_select_soft_back_button_cb(void *data, Evas_Object * obj, Evas_Object *pTopNaviFrame = NULL; pTopNaviFrame = elm_naviframe_item_pop(g_pSelectHandle->pNaviFrameHandle); - evas_object_del(pTopNaviFrame); + //evas_object_del(pTopNaviFrame); } -/** - * - */ -void mp_select_view_create_genlist() +static Evas_Object* _create_gengrid(Evas_Object *parent) { - if (!g_pSelectHandle || !g_pSelectWidget) { - VideoLogError("Main handles of list view are not existed."); - return; - } - - VideoLogInfo(""); - - g_pSelectHandle->pGenlist = elm_genlist_add(g_pSelectWidget->pBox); - if (!g_pSelectHandle->pGenlist) { - VideoLogError("pGenlist is not existed."); - return; + if(g_pSelectWidget == NULL || parent == NULL) + { + VideoLogError("gengrid parent [%p] or widget handle [%p] maybe be invalid", g_pSelectWidget, parent); + return NULL; } - elm_scroller_bounce_set(g_pSelectHandle->pGenlist, EINA_FALSE, - EINA_TRUE); - evas_object_size_hint_weight_set(g_pSelectHandle->pGenlist, - EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(g_pSelectHandle->pGenlist, - EVAS_HINT_FILL, EVAS_HINT_FILL); - elm_genlist_block_count_set(g_pSelectHandle->pGenlist, - VIDEO_GENLIST_BLOCK_COUNT); - elm_genlist_homogeneous_set(g_pSelectHandle->pGenlist, EINA_TRUE); - elm_genlist_mode_set(g_pSelectHandle->pGenlist, ELM_LIST_COMPRESS); - elm_genlist_select_mode_set(g_pSelectHandle->pGenlist, - ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY); - - elm_box_pack_end(g_pSelectWidget->pBox, g_pSelectHandle->pGenlist); - elm_object_part_content_set(g_pSelectWidget->pBaselayout, - SWALLOW_LISTVIEW_CONTENT, - g_pSelectWidget->pBox); + Evas_Object *gengrid = elm_gengrid_add(parent); + evas_object_size_hint_weight_set(gengrid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(gengrid, EVAS_HINT_FILL, EVAS_HINT_FILL); + elm_gengrid_item_size_set(gengrid, GENGRID_ITEM_WIDTH, GENGRID_ITEM_HEIGHT); - bool bNormalShow = TRUE; - bNormalShow = - mp_select_view_arrange_video_list(g_pSelectHandle->pGenlist, - FALSE); - if (!bNormalShow) { - VideoLogError("invalid view"); - mp_select_view_destroy(); - return; - } - evas_object_show(g_pSelectHandle->pGenlist); + return gengrid; } + /** * * @param pParent @@ -1246,28 +679,25 @@ void mp_select_view_init(void *pParent) } VideoLogInfo(""); - g_pSelectWidget->pBaselayout = - mp_select_view_create_internal_layout(pParent); + g_pSelectWidget->pBaselayout = mp_select_view_create_internal_layout(pParent); if (!g_pSelectWidget->pBaselayout) { VideoLogError("pBaselayout is not existed."); return; } - evas_object_event_callback_add(g_pSelectWidget->pBaselayout, - EVAS_CALLBACK_DEL, - __mp_select_view_base_layout_del_cb, - NULL); - g_pSelectWidget->pBox = elm_box_add(g_pSelectWidget->pBaselayout); - if (!g_pSelectWidget->pBox) { - VideoLogError("pBox is not existed."); + g_pSelectHandle->pGenlist = _create_gengrid(g_pSelectWidget->pBaselayout); + if(g_pSelectHandle->pGenlist == NULL) + { + VideoLogError("Failed to create gengrid for select view"); return; } + elm_object_part_content_set(g_pSelectWidget->pBaselayout, BASE_LAYOUT_SWALLOW, (Evas_Object*)g_pSelectHandle->pGenlist); - mp_select_view_create_genlist(); + mp_select_view_arrange_video_list(g_pSelectHandle->pGenlist, FALSE); - Evas_Object *pLeftbtn = elm_button_add(pParent); - elm_object_style_set(pLeftbtn, "naviframe/end_btn/default"); - evas_object_smart_callback_add(pLeftbtn, "clicked", + Evas_Object *backButton = elm_button_add(pParent); + elm_object_style_set(backButton, "naviframe/back_btn/default"); + evas_object_smart_callback_add(backButton, "clicked", __mp_select_soft_back_button_cb, NULL); char *szTitle = NULL; @@ -1275,7 +705,7 @@ void mp_select_view_init(void *pParent) g_pSelectHandle->pNaviFrameItem = elm_naviframe_item_push(g_pSelectHandle->pNaviFrameHandle, szTitle, - pLeftbtn, NULL, + backButton, NULL, g_pSelectWidget->pBaselayout, NULL); elm_object_item_domain_text_translatable_set(g_pSelectHandle-> @@ -1341,9 +771,6 @@ void mp_select_view_push(void *pNaviFrame, void *pNaviItem, MpVideoListTabType eTabType) { VideoLogInfo(""); - if (g_pSelectHandle || g_pSelectWidget) { - mp_select_view_destroy(); - } g_pSelectHandle = (st_SelectViewHandle *) calloc(1, sizeof(st_SelectViewHandle)); @@ -1362,7 +789,7 @@ void mp_select_view_push(void *pNaviFrame, void *pNaviItem, g_pSelectHandle->eTabType = eTabType; g_pSelectHandle->euLev = pFolderUrl ? MP_DB_UPDATE_LEV_2 : MP_DB_UPDATE_LEV_1; - g_pSelectHandle->nViewType = mp_view_as_ctrl_get_type(); + g_pSelectHandle->nViewType = mp_list_view_view_type_get(); g_pSelectHandle->bLandscape = mp_rotate_ctrl_check_landspace_by_win((Evas_Object *) mp_util_get_main_window_handle @@ -1419,17 +846,3 @@ void mp_select_view_change_language(void) szTitle); g_free(szTitle); } - -/** - * - * @param pUserData - * @param e - * @param pObject - * @param pEventInfo - */ -static void __mp_select_view_base_layout_del_cb(void *pUserData, Evas * e, - Evas_Object * pObject, - void *pEventInfo) -{ - __mp_select_view_reset(); -} diff --git a/src/view/mp-video-list-view-thumbnail.c b/src/view/mp-video-list-view-thumbnail.c index 6a074da..986ef4f 100755 --- a/src/view/mp-video-list-view-thumbnail.c +++ b/src/view/mp-video-list-view-thumbnail.c @@ -881,7 +881,7 @@ static Evas_Object *__mp_thumbnail_view_get_grid_icon_cb(const void *pUserData, Evas_Object *img = elm_image_add(pObject); - if(pThumbIconUri == NULL) + if(pThumbIconUri == NULL || strlen(pThumbIconUri) == 0) { char *path = app_get_resource_path(); snprintf(edj_path, 1024, "%s%s/%s", path, "images", "default_thumbnail.png"); diff --git a/src/view/mp-video-search-view.c b/src/view/mp-video-search-view.c index 0dace7c..7d42483 100755 --- a/src/view/mp-video-search-view.c +++ b/src/view/mp-video-search-view.c @@ -468,7 +468,7 @@ Evas_Object *mp_search_view_get_icon_of_video_item_cb(void *pUserData, Evas_Obje Evas_Object *img = elm_image_add(pObject); - if(pThumbIconUri == NULL) + if(pThumbIconUri == NULL || (strlen(pThumbIconUri) == 0)) { char *path = app_get_resource_path(); snprintf(edj_path, 1024, "%s%s/%s", path, "images", "default_thumbnail.png"); diff --git a/src/widget/mp-video-list-auto-play-ctrl.c b/src/widget/mp-video-list-auto-play-ctrl.c index eee9dcb..7c49871 100755 --- a/src/widget/mp-video-list-auto-play-ctrl.c +++ b/src/widget/mp-video-list-auto-play-ctrl.c @@ -59,10 +59,6 @@ static void __mp_auto_play_ctrl_cancel_btn_cb(void *pUserData, static void __mp_auto_play_ctrl_select_item_cb(void *pUserData, Evas_Object * pObject, void *pEventInfo); -static void __mp_auto_play_ctrl_select_radio_cb(void *pUserData, - Evas_Object * pObject, - void *pEventInfo); - /** * @@ -149,17 +145,12 @@ void mp_auto_play_ctrl_set_type(MpListAutoPlaySelect nAutoPlaySelect) * @param pPart * @return */ -static char *__mp_auto_play_ctrl_get_label_of_genlsit_item_cb(const void - *pUserData, - Evas_Object * - pObject, - const char - *pPart) +static char *__mp_auto_play_ctrl_get_label_of_genlsit_item_cb(void *pUserData, Evas_Object *pObject, const char *pPart) { int nIndex = (int) pUserData; - if (!strcmp(pPart, "elm.text") || !strcmp(pPart, "elm.text.main.left")) { + if (!strcmp(pPart, "elm.text")) { switch (nIndex) { case MP_LIST_AUTO_PLAY_ON: return strdup(VIDEOS_STRING_COM_ON); @@ -170,6 +161,19 @@ static char *__mp_auto_play_ctrl_get_label_of_genlsit_item_cb(const void return NULL; } +static void __mp_auto_play_ctrl_popup_dismissed_cb(void *data, Evas_Object *obj, void *event_info) +{ + mp_auto_play_ctrl_hide(); +} + +static void __mp_auto_play_ctrl_radio_animation_finished(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + if(g_pAutoPlayHandle) { + elm_popup_dismiss(g_pAutoPlayHandle->pPopUpHandle); + } +} + + /** * * @param pUserData @@ -177,15 +181,7 @@ static char *__mp_auto_play_ctrl_get_label_of_genlsit_item_cb(const void * @param pPart * @return */ -static Evas_Object *__mp_auto_play_ctrl_get_icon_of_genlsit_item_cb(const - void - *pUserData, - Evas_Object - * - pObject, - const - char - *pPart) +static Evas_Object *__mp_auto_play_ctrl_get_icon_of_genlsit_item_cb(void *pUserData, Evas_Object *pObject, const char *pPart) { if (!g_pAutoPlayHandle) { @@ -196,7 +192,7 @@ static Evas_Object *__mp_auto_play_ctrl_get_icon_of_genlsit_item_cb(const int nIndex = (int) pUserData; Evas_Object *pTmpRadio = NULL; - if (!strcmp(pPart, "elm.swallow.end") || !strcmp(pPart, "elm.icon.2")) { + if (!strcmp(pPart, "elm.icon")) { pTmpRadio = elm_radio_add(pObject); elm_radio_state_value_set(pTmpRadio, nIndex); elm_radio_group_add(pTmpRadio, g_pAutoPlayHandle->pGroupRadio); @@ -207,9 +203,8 @@ static Evas_Object *__mp_auto_play_ctrl_get_icon_of_genlsit_item_cb(const mp_auto_play_ctrl_set_type(g_pAutoPlayHandle->nAutoPlaySelect); } - evas_object_smart_callback_add(pTmpRadio, "changed", - __mp_auto_play_ctrl_select_radio_cb, - (void *) pUserData); + elm_object_signal_emit(pTmpRadio, "elm,activate,radio,on", "elm"); + elm_object_signal_callback_add(pTmpRadio, "animation,finished", "", __mp_auto_play_ctrl_radio_animation_finished, (void*)pUserData); evas_object_show(pTmpRadio); @@ -277,62 +272,15 @@ static void __mp_auto_play_ctrl_select_item_cb(void *pUserData, } if (nIndex == g_pAutoPlayHandle->nAutoPlaySelect) { VideoLogInfo("Current state"); - mp_auto_play_ctrl_hide(); + elm_popup_dismiss(g_pAutoPlayHandle->pPopUpHandle); } else { g_pAutoPlayHandle->nAutoPlaySelect = nIndex; - elm_radio_value_set(g_pAutoPlayHandle->pGroupRadio, - g_pAutoPlayHandle->nAutoPlaySelect); + elm_radio_value_set(g_pAutoPlayHandle->pGroupRadio, g_pAutoPlayHandle->nAutoPlaySelect); mp_auto_play_ctrl_set_type(g_pAutoPlayHandle->nAutoPlaySelect); - - mp_auto_play_ctrl_hide(); } } -/** - * - * @param pUserData - * @param pObject - * @param pEventInfo - */ -static void __mp_auto_play_ctrl_select_radio_cb(void *pUserData, - Evas_Object * pObject, - void *pEventInfo) -{ - - if (!g_pAutoPlayHandle) { - VideoLogError(""); - return; - } - - int nIndex = (int) pUserData; - - VideoLogError("====================nindex=%d", nIndex); - if (nIndex == 1) { - VideoLogError("====================vp_set_auto_play=true"); - vp_set_auto_play(true); - } else { - VideoLogError("====================vp_set_auto_play=false"); - vp_set_auto_play(false); - } - if (vp_is_auto_play_on()) { - VideoLogError("====================found vp_set_auto_play=true"); - } - if (nIndex == g_pAutoPlayHandle->nAutoPlaySelect) { - VideoLogInfo("Current state"); - mp_auto_play_ctrl_hide(); - } else { - g_pAutoPlayHandle->nAutoPlaySelect = nIndex; - elm_radio_value_set(g_pAutoPlayHandle->pGroupRadio, - g_pAutoPlayHandle->nAutoPlaySelect); - - mp_auto_play_ctrl_set_type(g_pAutoPlayHandle->nAutoPlaySelect); - - mp_auto_play_ctrl_hide(); - } - -} - /** * * @param pUserData @@ -367,8 +315,7 @@ static void __mp_auto_play_ctrl_realized(void *data, Evas_Object * obj, Elm_Object_Item *pItem = elm_genlist_last_item_get(obj); if (pItem) { - elm_object_item_signal_emit(pItem, "elm,state,bottomline,hide", - ""); + elm_object_item_signal_emit(pItem, "elm,state,bottomline,hide", "elm"); } } @@ -402,8 +349,6 @@ bool mp_auto_play_ctrl_show() { VideoLogInfo(""); - - mp_auto_play_ctrl_delete_handle(); g_pAutoPlayHandle = (stMpVideoAutoPlay *) calloc(1, sizeof(stMpVideoAutoPlay)); @@ -417,7 +362,7 @@ bool mp_auto_play_ctrl_show() g_pAutoPlayHandle->pPopUpHandle = elm_popup_add(mp_util_get_main_window_handle()); - elm_object_style_set(g_pAutoPlayHandle->pPopUpHandle, "theme_bg"); + elm_popup_align_set(g_pAutoPlayHandle->pPopUpHandle, ELM_NOTIFY_ALIGN_FILL, 0.5); elm_object_domain_translatable_part_text_set(g_pAutoPlayHandle-> pPopUpHandle, @@ -441,15 +386,17 @@ bool mp_auto_play_ctrl_show() mp_util_get_main_window_handle(), "rotation,changed", __mp_auto_play_ctrl_rotate_cb, NULL); + evas_object_smart_callback_add(g_pAutoPlayHandle->pPopUpHandle, "dismissed", __mp_auto_play_ctrl_popup_dismissed_cb, NULL); + + g_pAutoPlayHandle->pBox = elm_box_add(g_pAutoPlayHandle->pPopUpHandle); + evas_object_size_hint_weight_set(g_pAutoPlayHandle->pBox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); // Set item of Genlist. MP_DEL_ITC(g_pAutoPlayHandle->stAutoPlayItc); g_pAutoPlayHandle->stAutoPlayItc = elm_genlist_item_class_new(); - g_pAutoPlayHandle->stAutoPlayItc->item_style = "default"; //"1text.1icon.2/popup"; - g_pAutoPlayHandle->stAutoPlayItc->func.text_get = - (void *) __mp_auto_play_ctrl_get_label_of_genlsit_item_cb; - g_pAutoPlayHandle->stAutoPlayItc->func.content_get = - (void *) __mp_auto_play_ctrl_get_icon_of_genlsit_item_cb; + g_pAutoPlayHandle->stAutoPlayItc->item_style = "1line"; + g_pAutoPlayHandle->stAutoPlayItc->func.text_get = __mp_auto_play_ctrl_get_label_of_genlsit_item_cb; + g_pAutoPlayHandle->stAutoPlayItc->func.content_get = __mp_auto_play_ctrl_get_icon_of_genlsit_item_cb; g_pAutoPlayHandle->stAutoPlayItc->func.state_get = NULL; g_pAutoPlayHandle->stAutoPlayItc->func.del = NULL; @@ -463,17 +410,14 @@ bool mp_auto_play_ctrl_show() evas_object_smart_callback_add(g_pAutoPlayHandle->pGenList, "realized", __mp_auto_play_ctrl_realized, NULL); - g_pAutoPlayHandle->pGroupRadio = - elm_radio_add(g_pAutoPlayHandle->pGenList); - bool pref; - pref = mp_auto_play_config_get_auto_play_status(); - if (pref) { + g_pAutoPlayHandle->pGroupRadio = elm_radio_add(g_pAutoPlayHandle->pGenList); + + if (mp_auto_play_config_get_auto_play_status()) { g_pAutoPlayHandle->nAutoPlaySelect = MP_LIST_AUTO_PLAY_ON; } else { g_pAutoPlayHandle->nAutoPlaySelect = MP_LIST_AUTO_PLAY_OFF; } - elm_radio_value_set(g_pAutoPlayHandle->pGroupRadio, - g_pAutoPlayHandle->nAutoPlaySelect); + elm_radio_value_set(g_pAutoPlayHandle->pGroupRadio, g_pAutoPlayHandle->nAutoPlaySelect); int nMax_view_list = 0; if (!vp_is_auto_play_on()) @@ -483,6 +427,7 @@ bool mp_auto_play_ctrl_show() (void *) MP_LIST_AUTO_PLAY_ON, NULL, ELM_GENLIST_ITEM_NONE, __mp_auto_play_ctrl_select_item_cb, NULL); + nMax_view_list++; elm_genlist_item_append(g_pAutoPlayHandle->pGenList, g_pAutoPlayHandle->stAutoPlayItc, (void *) MP_LIST_AUTO_PLAY_OFF, NULL, @@ -490,23 +435,13 @@ bool mp_auto_play_ctrl_show() __mp_auto_play_ctrl_select_item_cb, NULL); nMax_view_list++; + evas_object_show(g_pAutoPlayHandle->pGenList); + elm_box_pack_end(g_pAutoPlayHandle->pBox, g_pAutoPlayHandle->pGenList); + evas_object_size_hint_min_set(g_pAutoPlayHandle->pBox, -1, nMax_view_list*72); + elm_object_content_set(g_pAutoPlayHandle->pPopUpHandle, g_pAutoPlayHandle->pBox); - g_pAutoPlayHandle->pBox = elm_box_add(g_pAutoPlayHandle->pPopUpHandle); - - mp_widget_ctrl_set_popup_min_size(g_pAutoPlayHandle->pBox, 2, - VIDEOS_POPUP_114); - evas_object_size_hint_weight_set(g_pAutoPlayHandle->pBox, - EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(g_pAutoPlayHandle->pBox, - EVAS_HINT_FILL, EVAS_HINT_FILL); - - elm_box_pack_end(g_pAutoPlayHandle->pBox, g_pAutoPlayHandle->pGenList); - elm_object_content_set(g_pAutoPlayHandle->pPopUpHandle, - g_pAutoPlayHandle->pBox); - - evas_object_show(g_pAutoPlayHandle->pGenList); evas_object_show(g_pAutoPlayHandle->pPopUpHandle); return TRUE; diff --git a/src/widget/mp-video-list-sort-ctrl.c b/src/widget/mp-video-list-sort-ctrl.c index 929f3dd..cd9d23d 100755 --- a/src/widget/mp-video-list-sort-ctrl.c +++ b/src/widget/mp-video-list-sort-ctrl.c @@ -59,9 +59,6 @@ static void __mp_sort_ctrl_btn_asc_cb(void *pUserData, static void __mp_sort_ctrl_mouse_up_cb(void *pUserData, Evas * pEvas, Evas_Object * pObject, void *pEventInfo); -static void __mp_sort_ctrl_select_radio_cb(void *pUserData, - Evas_Object * pObject, - void *pEventInfo); //////////////////////////////////////////////////////////// // Internal function @@ -156,7 +153,7 @@ static char *mp_sort_ctrl_get_label_of_genlist_cb(void *pUserData, static void __mp_sort_ctrl_popup_dismissed_cb(void *data, Evas_Object *obj, void *event_info) { - mp_sort_ctrl_delete_handle(); + mp_sort_ctrl_hide(); } @@ -204,9 +201,7 @@ static Evas_Object *mp_sort_ctrl_get_icon_of_genlist_cb(void *pUserData, mp_sort_ctrl_set_sort_state(g_pSortCtrlHandle-> nCurrListSortType); } - evas_object_smart_callback_add(pTmpRadio, "changed", - __mp_sort_ctrl_select_radio_cb, - (void *) pUserData); + elm_object_signal_emit(pTmpRadio, "elm,activate,radio,on", "elm"); elm_object_signal_callback_add(pTmpRadio, "animation,finished", "", __mp_sort_ctrl_radio_animation_finished, (void*)pUserData); @@ -264,7 +259,7 @@ static void mp_sort_ctrl_select_item_cb(void *pUserData, nIndex = (int) elm_object_item_data_get(pItem); if (nIndex == g_pSortCtrlHandle->nCurrListSortType) { VideoLogInfo("Do nothing"); - mp_sort_ctrl_hide(); + elm_popup_dismiss(g_pSortCtrlHandle->pPopUpHandle); } else { g_pSortCtrlHandle->nCurrListSortType = nIndex; elm_radio_value_set(g_pSortCtrlHandle->pGroupRadio, @@ -274,33 +269,6 @@ static void mp_sort_ctrl_select_item_cb(void *pUserData, } } -/** - * - * @param pUserData - * @param pObject - * @param pEventInfo - */ -static void __mp_sort_ctrl_select_radio_cb(void *pUserData, - Evas_Object * pObject, - void *pEventInfo) -{ - if (!g_pSortCtrlHandle) { - VideoLogError(""); - return; - } - int nIndex = (int) pUserData; - - g_pSortCtrlHandle->nCurrListSortType = nIndex; - mp_sort_ctrl_set_sort_state(g_pSortCtrlHandle->nCurrListSortType); - - ListSortCtrlCbFunc fFunc = g_pSortCtrlHandle->ListSortCtrlUserCbFunc; - mp_sort_ctrl_hide(); - - if (fFunc) { - fFunc(); - } -} - static void __mp_sort_ctrl_mouse_up_cb(void *pUserData, Evas * pEvas, Evas_Object * pObject, void *pEventInfo) @@ -372,7 +340,6 @@ bool mp_sort_ctrl_show(ListSortCtrlCbFunc pListSortCtrlCb) { VideoLogInfo(""); - mp_sort_ctrl_delete_handle(); g_pSortCtrlHandle = (stMpVideoListSort *) calloc(1, sizeof(stMpVideoListSort)); if (!g_pSortCtrlHandle) { diff --git a/src/widget/mp-video-rename-ctrl.c b/src/widget/mp-video-rename-ctrl.c index 7ec20ef..f7f7e08 100755 --- a/src/widget/mp-video-rename-ctrl.c +++ b/src/widget/mp-video-rename-ctrl.c @@ -55,6 +55,7 @@ typedef struct _VideoRenamePopup { int nVideoIndex; bool bPersonalType; bool bSetToEnd; + Eina_Bool isWarningEnabled; Ecore_Idler *pSetLineEndIdler; } stRenamePopup; @@ -98,6 +99,35 @@ static void __mp_rename_ctrl_timeout_cb(void *pUserData, elm_object_focus_set(g_pRenameHandle->pEntry, EINA_TRUE); } +static void __mp_rename_ctrl_info_message_set(Evas_Object *layout, const char *message, Eina_Bool isWarning) +{ + if(layout == NULL || g_pRenameHandle == NULL) + { + VideoLogError("Layout is invalid, can't set message"); + return; + } + if(isWarning) { + elm_object_signal_emit(layout, "info,msg,warning", "vp"); + g_pRenameHandle->isWarningEnabled = EINA_TRUE; + } else { + elm_object_signal_emit(layout, "info,msg,default", "vp"); + g_pRenameHandle->isWarningEnabled = EINA_FALSE; + } + elm_object_part_text_set(layout, "inputfield.message", message); +} + +static void __mp_rename_ctrl_thumbnail_update_cb(int nError, const char *szPath, + void *pUserData) +{ + if(g_pRenameHandle == NULL) + { + VideoLogError("Rename data handle is invalid"); + return; + } + VideoLogInfo("Renamed thumbnail path: %s", szPath); +} + + /** * * @param pUserData @@ -116,12 +146,17 @@ static void __mp_rename_ctrl_ok_btn_cb(void *pUserData, return; } + Evas_Object *layout = elm_object_content_get(g_pRenameHandle->pPopUpHandle); + if(layout == NULL) + { + VideoLogError("content layout for popup is invalid."); + return; + } + int nDstLen = 0; if (!__mp_rename_ctrl_check_valid_text (g_pRenameHandle->szSaveFileName, &nDstLen)) { - mp_util_ticker_toast_with_timeout_cb_popup - (VIDEOS_NOTIPOP_MSG_INVALID_CHARACTERS, - __mp_rename_ctrl_timeout_cb); + __mp_rename_ctrl_info_message_set(layout, VIDEOS_NOTIPOP_MSG_INVALID_CHARACTERS, EINA_TRUE); return; } @@ -171,11 +206,7 @@ static void __mp_rename_ctrl_ok_btn_cb(void *pUserData, MP_FREE_STRING(szFilePath); MP_FREE_STRING(szFileExt); MP_FREE_STRING(szLocation); - - mp_util_ticker_toast_with_timeout_cb_popup - (VIDEOS_NOTIPOP_MSG_ALREADY_EXISTS, - __mp_rename_ctrl_timeout_cb); - + __mp_rename_ctrl_info_message_set(layout, VIDEOS_NOTIPOP_MSG_ALREADY_EXISTS, EINA_TRUE); return; } @@ -185,6 +216,7 @@ static void __mp_rename_ctrl_ok_btn_cb(void *pUserData, int ret = mp_util_rename_file((const char *) szFilePath, (const char *) szNewFile, &szNewPath); + VideoLogDebug("======================> File Rename Return Value: %d\n", ret); if (!szNewPath) { VideoLogError("szNewPath is NULL."); @@ -201,15 +233,23 @@ static void __mp_rename_ctrl_ok_btn_cb(void *pUserData, } else { mp_util_svc_move_to_db(g_pRenameHandle->nVideoIndex, szNewPath); + VideoLogDebug("moving to db: %s index: %d", szNewPath, g_pRenameHandle->nVideoIndex); + //this to update video item in video list + mp_util_svc_update_video_item(szNewPath, g_pRenameHandle->nVideoIndex); + mp_util_svc_register_thumbnail_update_func(g_pRenameHandle->nVideoIndex, __mp_rename_ctrl_thumbnail_update_cb, NULL); } char *szMediaUrl = mp_util_config_get_preview(); if (szMediaUrl) { if (!strcmp(szFilePath, szMediaUrl)) { mp_util_config_set_preview(szNewFile); + VideoLogDebug("Setting Preview URL:%s", szMediaUrl); } + } else { + VideoLogError("Failed to get preview url"); } + MP_FREE_STRING(szFilePath); MP_FREE_STRING(szFileExt); MP_FREE_STRING(szLocation); @@ -237,9 +277,6 @@ static void __mp_rename_ctrl_entry_max_len_cb(void *pUserData, void *pEventInfo) { VideoLogInfo(""); - - mp_util_ticker_toast_popup(VIDEOS_NOTIPOP_MSG_MAX_NUM_OF_CHARACTERS, - false, false); } /** @@ -350,6 +387,13 @@ static void __mp_rename_ctrl_entry_changed_cb(void *pUserData, } VideoLogInfo(""); + Evas_Object *layout = elm_object_content_get(g_pRenameHandle->pPopUpHandle); + if(layout == NULL) + { + VideoLogError("content layout for popup is invalid."); + return; + } + Evas_Object *en = pObj; char *entry_data = (char *) elm_entry_entry_get(en); @@ -394,9 +438,8 @@ static void __mp_rename_ctrl_entry_changed_cb(void *pUserData, szTempName)); elm_entry_cursor_begin_set(en); elm_entry_cursor_pos_set(en, position - 1); + __mp_rename_ctrl_info_message_set(layout, VIDEOS_NOTIPOP_MSG_INVALID_CHARACTERS, EINA_TRUE); - mp_util_status_bar_noti_popup_show - (VIDEOS_NOTIPOP_MSG_INVALID_CHARACTERS); MP_FREE_STRING(szFileName); return; } @@ -413,6 +456,9 @@ static void __mp_rename_ctrl_entry_changed_cb(void *pUserData, EINA_FALSE); } } + if(g_pRenameHandle->isWarningEnabled == EINA_TRUE) { + __mp_rename_ctrl_info_message_set(layout, VIDEOS_NOTIPOP_MSG_MAX_NUM_OF_CHARACTERS, EINA_FALSE); + } MP_FREE_STRING(g_pRenameHandle->szTempName); g_pRenameHandle->szTempName = strdup(szFileName); if (g_pRenameHandle->bSetToEnd) { @@ -583,6 +629,7 @@ static void __mp_rename_view_rotate_cb(void *data, Evas_Object * obj, //////////////////////////////////////////////////////////// // External function //////////////////////////////////////////////////////////// + /** * * @param pNaviFrameHandle @@ -614,6 +661,7 @@ Evas_Object *mp_rename_ctrl_show(void *pNaviFrameHandle, void *pUserData, g_pRenameHandle->RenameCtrlUserCbFunc = pRenameCtrlCb; g_pRenameHandle->nVideoIndex = nVideoItemIndex; g_pRenameHandle->bSetToEnd = TRUE; + g_pRenameHandle->isWarningEnabled = EINA_FALSE; char *pVideoFile = mp_util_svc_get_video_url(g_pRenameHandle->nVideoIndex); @@ -650,6 +698,7 @@ Evas_Object *mp_rename_ctrl_show(void *pNaviFrameHandle, void *pUserData, pLayout = elm_layout_add(g_pRenameHandle->pPopUpHandle); elm_layout_file_set(pLayout, edj_path, "pv.popup.entry"); + evas_object_size_hint_min_set(pLayout, -1, 76); //Create entry Evas_Object *en = NULL; @@ -696,8 +745,8 @@ Evas_Object *mp_rename_ctrl_show(void *pNaviFrameHandle, void *pUserData, __mp_rename_ctrl_set_save_file_name(); MP_FREE_STRING(g_pRenameHandle->szOldName); g_pRenameHandle->szOldName = g_strdup(g_pRenameHandle->szSaveFileName); - char *pNameUtf8 = - elm_entry_utf8_to_markup(g_pRenameHandle->szSaveFileName); + char *pNameUtf8 = elm_entry_utf8_to_markup(g_pRenameHandle->szSaveFileName); + elm_entry_entry_set(en, pNameUtf8); MP_FREE_STRING(pNameUtf8); elm_object_focus_set(en, EINA_TRUE); @@ -708,6 +757,9 @@ Evas_Object *mp_rename_ctrl_show(void *pNaviFrameHandle, void *pUserData, elm_object_part_content_set(pLayout, "elm.swallow.content", en); elm_object_content_set(g_pRenameHandle->pPopUpHandle, pLayout); + //Set Info Message + __mp_rename_ctrl_info_message_set(pLayout, VIDEOS_NOTIPOP_MSG_MAX_NUM_OF_CHARACTERS, EINA_FALSE); + g_pRenameHandle->pEntryClearBtn = elm_button_add(pLayout); elm_object_style_set(g_pRenameHandle->pEntryClearBtn, "clear"); elm_object_part_content_set(pLayout, "elm.swallow.end", @@ -720,7 +772,7 @@ Evas_Object *mp_rename_ctrl_show(void *pNaviFrameHandle, void *pUserData, g_pRenameHandle->pPopupCancelBtn = elm_button_add(g_pRenameHandle->pPopUpHandle); - elm_object_style_set(g_pRenameHandle->pPopupCancelBtn, "popup"); + elm_object_style_set(g_pRenameHandle->pPopupCancelBtn, "border"); elm_object_domain_translatable_text_set(g_pRenameHandle-> pPopupCancelBtn, VIDEOS_STRING, VIDEOS_COMMON_BUTTON_CANCEL_IDS); @@ -733,7 +785,7 @@ Evas_Object *mp_rename_ctrl_show(void *pNaviFrameHandle, void *pUserData, g_pRenameHandle->pPopupOkBtn = elm_button_add(g_pRenameHandle->pPopUpHandle); - elm_object_style_set(g_pRenameHandle->pPopupOkBtn, "popup"); + //elm_object_style_set(g_pRenameHandle->pPopupOkBtn, "border"); elm_object_domain_translatable_text_set(g_pRenameHandle->pPopupOkBtn, VIDEOS_STRING, VIDEOS_COMMON_BUTTON_RENAME_IDS); diff --git a/tizen-manifest.xml b/tizen-manifest.xml index b19560f..ca8c00b 100755 --- a/tizen-manifest.xml +++ b/tizen-manifest.xml @@ -1,5 +1,5 @@ - + -- 2.34.1