From 2e244923869527d1b85cae00dfba65d5a2bac2e4 Mon Sep 17 00:00:00 2001 From: "aman.jeph" Date: Tue, 22 Dec 2020 14:40:28 +0530 Subject: [PATCH] [TIZENIOT-2287] Sync order of video list in apps with video-player Change-Id: I65883df6a376b41a0f9c0cfb20aae33730db881e Signed-off-by: aman.jeph --- playview/include/vp-play-type-define.h | 5 ++ playview/src/core/include/vp-media-contents.h | 2 + playview/src/core/vp-media-contents.c | 89 +++++++++++++++++-- playview/src/view/vp-play-normal-view.c | 30 ++++--- src/view/mp-video-list-view-main.c | 5 ++ src/widget/mp-video-list-sort-ctrl.c | 17 ++-- vp-main/src/serviceParser/vp-service-parser.c | 7 +- vp-main/src/vp-main.c | 2 + 8 files changed, 123 insertions(+), 34 deletions(-) diff --git a/playview/include/vp-play-type-define.h b/playview/include/vp-play-type-define.h index c94491f..b6d6922 100755 --- a/playview/include/vp-play-type-define.h +++ b/playview/include/vp-play-type-define.h @@ -54,6 +54,7 @@ typedef enum { typedef enum { VIDEO_PLAY_LIST_TYPE_ALL = 0x00, VIDEO_PLAY_LIST_TYPE_FOLDER, + VIDEO_PLAY_LIST_TYPE_FAVOURITE } video_play_list_type_t; @@ -123,12 +124,16 @@ typedef enum { typedef enum { VIDEO_SORT_BY_NONE = 0, VIDEO_SORT_BY_NAME_A_Z, + VIDEO_SORT_BY_RECENTLY_ADDED, + VIDEO_SORT_BY_NAME, VIDEO_SORT_BY_NAME_Z_A, VIDEO_SORT_BY_DATE_MOST_RECENT, VIDEO_SORT_BY_OLDEST, + VIDEO_SORT_BY_GALLERY_ORDER, VIDEO_SORT_BY_MAX, } video_play_sort_type_t; + typedef enum { VIDEO_EDIT_WEATHER_TAG_NONE = -1, VIDEO_EDIT_WEATHER_TAG_NO, diff --git a/playview/src/core/include/vp-media-contents.h b/playview/src/core/include/vp-media-contents.h index 46b39d2..fb94ff6 100755 --- a/playview/src/core/include/vp-media-contents.h +++ b/playview/src/core/include/vp-media-contents.h @@ -99,3 +99,5 @@ bool vp_media_contents_subtitle_list_get(GList ** list); bool vp_media_contents_file_is_exist(const char *szFilePath); bool vp_media_contents_del_video(const char *szFilePath); +bool vp_media_contents_get_gallery_favourite_items(GList **pList); + diff --git a/playview/src/core/vp-media-contents.c b/playview/src/core/vp-media-contents.c index a67d45f..1582205 100755 --- a/playview/src/core/vp-media-contents.c +++ b/playview/src/core/vp-media-contents.c @@ -1504,7 +1504,18 @@ bool vp_media_contents_get_video_items_to_folder(int nSortType, nOrderType = MEDIA_CONTENT_ORDER_ASC; VP_STRDUP(szOrder, MEDIA_MODIFIED_TIME); break; - + case VIDEO_SORT_BY_NAME: + nOrderType = MEDIA_CONTENT_ORDER_ASC; + VP_STRDUP(szOrder, MEDIA_DISPLAY_NAME); + break; + case VIDEO_SORT_BY_RECENTLY_ADDED: + nOrderType = MEDIA_CONTENT_ORDER_DESC; + VP_STRDUP(szOrder, MEDIA_ADDED_TIME) + break; + case VIDEO_SORT_BY_GALLERY_ORDER: + nOrderType = MEDIA_CONTENT_ORDER_DESC; + VP_STRDUP(szOrder, "MEDIA_TIMELINE, MEDIA_DISPLAY_NAME"); + break; default: nOrderType = MEDIA_CONTENT_ORDER_ASC; VP_STRDUP(szOrder, MEDIA_TITLE); @@ -1598,6 +1609,65 @@ bool vp_media_contents_get_video_items_to_folder(int nSortType, return FALSE; } +bool vp_media_contents_get_gallery_favourite_items(GList **pList) +{ + vp_media_contents_connect(); + filter_h pFilterHandle = NULL; + int nRet = MEDIA_CONTENT_ERROR_NONE; + bool ret_val = TRUE; + media_content_order_e nOrderType = MEDIA_CONTENT_ORDER_DESC; + char *szOrder = NULL; + char *szCondition = g_strdup_printf("MEDIA_TYPE = 1 AND (MEDIA_FAVOURITE>0) AND (MEDIA_STORAGE_TYPE IS NOT 101)");; + VP_STRDUP(szOrder, "MEDIA_TIMELINE, MEDIA_DISPLAY_NAME"); + + nRet = media_filter_create(&pFilterHandle); + if (nRet != MEDIA_CONTENT_ERROR_NONE) { + VideoLogError("media_filter_create is fail : 0x%x", nRet); + ret_val = FALSE; + goto Exception; + } + nRet = media_filter_set_condition(pFilterHandle, szCondition, + MEDIA_CONTENT_COLLATE_DEFAULT); + if (nRet != MEDIA_CONTENT_ERROR_NONE) { + VideoLogError("media_filter_set_condition is fail : 0x%x", nRet); + ret_val = FALSE; + goto Exception; + } + + nRet = + media_filter_set_order(pFilterHandle, nOrderType, szOrder, + MEDIA_CONTENT_COLLATE_NOCASE); + if (nRet != MEDIA_CONTENT_ERROR_NONE) { + VideoLogError("media_filter_set_order is fail : 0x%x", nRet); + ret_val = FALSE; + goto Exception; + } + + nRet = + media_info_foreach_media_from_db(pFilterHandle, + __vp_media_contents_video_iter_cb, + pList); + if (nRet != MEDIA_CONTENT_ERROR_NONE) { + VideoLogError("media_info_foreach_media_from_db is fail : 0x%x", nRet); + ret_val = FALSE; + goto Exception; + } + + nRet = media_filter_destroy(pFilterHandle); + if (nRet != MEDIA_CONTENT_ERROR_NONE) { + VideoLogError("media_filter_destroy is fail : 0x%x", nRet); + VP_FREE(szCondition); + VP_FREE(szOrder); + return FALSE; + } + + Exception: + VP_FREE(szCondition); + VP_FREE(szOrder); + return ret_val; +} + + /** * * @param nSortType @@ -1647,15 +1717,24 @@ bool vp_media_contents_get_video_items(int nSortType, GList ** pList) nOrderType = MEDIA_CONTENT_ORDER_ASC; VP_STRDUP(szOrder, MEDIA_MODIFIED_TIME); break; - + case VIDEO_SORT_BY_NAME: + nOrderType = MEDIA_CONTENT_ORDER_ASC; + VP_STRDUP(szOrder, MEDIA_DISPLAY_NAME); + break; + case VIDEO_SORT_BY_RECENTLY_ADDED: + nOrderType = MEDIA_CONTENT_ORDER_DESC; + VP_STRDUP(szOrder, MEDIA_ADDED_TIME) + break; + case VIDEO_SORT_BY_GALLERY_ORDER: + nOrderType = MEDIA_CONTENT_ORDER_DESC; + VP_STRDUP(szOrder, "MEDIA_TIMELINE, MEDIA_DISPLAY_NAME"); + break; default: nOrderType = MEDIA_CONTENT_ORDER_ASC; VP_STRDUP(szOrder, MEDIA_TITLE); } - szCondition = - g_strdup_printf - ("MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE IS NOT 101)"); + szCondition = g_strdup_printf("MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE IS NOT 101)"); nRet = media_filter_set_condition(pFilterHandle, szCondition, diff --git a/playview/src/view/vp-play-normal-view.c b/playview/src/view/vp-play-normal-view.c index e2b5d9f..45ae02e 100755 --- a/playview/src/view/vp-play-normal-view.c +++ b/playview/src/view/vp-play-normal-view.c @@ -13768,25 +13768,27 @@ bool vp_play_normal_view_realize(normal_view_handle pViewHandle) if (pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_GALLERY || pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_MYFILE) { - char *szFolder = - vp_play_util_get_folder_from_path(pNormalView->szMediaURL); - vp_media_contents_get_video_items_to_folder - (VIDEO_SORT_BY_DATE_MOST_RECENT, szFolder, - &(pNormalView->pMediaItemList)); - VP_FREE(szFolder); + if(pPlayView->nListType == VIDEO_PLAY_LIST_TYPE_FOLDER) { + char *szFolder = vp_play_util_get_folder_from_path(pNormalView->szMediaURL); + vp_media_contents_get_video_items_to_folder(VIDEO_SORT_BY_GALLERY_ORDER, szFolder, &(pNormalView->pMediaItemList)); + VP_FREE(szFolder); + } else if (pPlayView->nListType == VIDEO_PLAY_LIST_TYPE_FAVOURITE) { + vp_media_contents_get_gallery_favourite_items(&(pNormalView->pMediaItemList)); + } + else { + vp_media_contents_get_video_items(VIDEO_SORT_BY_GALLERY_ORDER, &(pNormalView->pMediaItemList)); + // Gallery reverse the list after getting list from db. + // so keep in sync with gallery we have to reverse the list. + pNormalView->pMediaItemList = g_list_reverse(pNormalView->pMediaItemList); + } } else if (pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_MULTI_PATH) { } else { if (pPlayView->nListType == VIDEO_PLAY_LIST_TYPE_FOLDER) { - char *szFolder = - vp_play_util_get_folder_from_path(pNormalView->szMediaURL); - vp_media_contents_get_video_items_to_folder(nType, szFolder, - &(pNormalView-> - pMediaItemList)); + char *szFolder = vp_play_util_get_folder_from_path(pNormalView->szMediaURL); + vp_media_contents_get_video_items_to_folder(nType, szFolder, &(pNormalView->pMediaItemList)); VP_FREE(szFolder); } else { - vp_media_contents_get_video_items(nType, - &(pNormalView-> - pMediaItemList)); + vp_media_contents_get_video_items(nType, &(pNormalView->pMediaItemList)); } } #ifdef _PERF_TEST_ diff --git a/src/view/mp-video-list-view-main.c b/src/view/mp-video-list-view-main.c index d111617..9788d12 100755 --- a/src/view/mp-video-list-view-main.c +++ b/src/view/mp-video-list-view-main.c @@ -112,6 +112,11 @@ void mp_list_view_view_type_set(int viewType) return; } g_pMainViewHandle->nCurrentViewType = type; + + // "preference/org.tizen.videos/view_as_type" is also defined in + // mp-video-list-sort-ctrl.h as PREF_MP_VIDEO_VIEW_AS_TYPE_KEY + // but sort control is not used anymore + preference_set_int("preference/org.tizen.videos/view_as_type", type); } int mp_list_view_view_type_get() diff --git a/src/widget/mp-video-list-sort-ctrl.c b/src/widget/mp-video-list-sort-ctrl.c index cd9d23d..259ae50 100755 --- a/src/widget/mp-video-list-sort-ctrl.c +++ b/src/widget/mp-video-list-sort-ctrl.c @@ -105,21 +105,18 @@ void mp_sort_ctrl_delete_handle(void) void mp_sort_ctrl_set_sort_state(MpListSortType nListSortType) { if (!g_pSortCtrlHandle) { - VideoLogError(""); + VideoLogError("g_pSortCtrlHandle is invalid"); return; } - if (MP_LIST_SORT_BY_NONE >= nListSortType - || nListSortType >= MP_LIST_SORT_BY_MAX) { + if (MP_LIST_SORT_BY_NONE >= nListSortType || nListSortType >= MP_LIST_SORT_BY_MAX) { VideoLogWarning("[WARNING] Value of sort type is not matched."); nListSortType = MP_LIST_SORT_BY_RECENTLY_ADDED; } g_pSortCtrlHandle->nCurrListSortType = nListSortType; - int nRet = - preference_set_int(PREF_VP_VIDEOS_SORT_TYPE, - g_pSortCtrlHandle->nCurrListSortType); + int nRet = preference_set_int(PREF_VP_VIDEOS_SORT_TYPE, g_pSortCtrlHandle->nCurrListSortType); if (nRet) { VideoLogWarning("[WARNING] Fail to set value about sort type."); } @@ -472,15 +469,13 @@ int mp_sort_ctrl_get_sort_state(void) int nValue = MP_LIST_SORT_BY_NONE; if (0 != preference_get_int(PREF_VP_VIDEOS_SORT_TYPE, &nValue)) { - VideoLogInfo - ("Setting normal list type because of defending wrong value.:%d", - nValue); - mp_sort_ctrl_set_sort_state(MP_LIST_SORT_BY_RECENTLY_ADDED); + VideoLogInfo("Setting normal list type because of defending wrong value.:%d", nValue); + preference_set_int(PREF_VP_VIDEOS_SORT_TYPE, MP_LIST_SORT_BY_RECENTLY_ADDED); return MP_LIST_SORT_BY_RECENTLY_ADDED; } if (nValue <= MP_LIST_SORT_BY_NONE || nValue >= MP_LIST_SORT_BY_MAX) { - mp_sort_ctrl_set_sort_state(MP_LIST_SORT_BY_RECENTLY_ADDED); + preference_set_int(PREF_VP_VIDEOS_SORT_TYPE, MP_LIST_SORT_BY_RECENTLY_ADDED); return MP_LIST_SORT_BY_RECENTLY_ADDED; } diff --git a/vp-main/src/serviceParser/vp-service-parser.c b/vp-main/src/serviceParser/vp-service-parser.c index 579c356..be2c34d 100755 --- a/vp-main/src/serviceParser/vp-service-parser.c +++ b/vp-main/src/serviceParser/vp-service-parser.c @@ -253,9 +253,8 @@ Eina_Bool VpServiceParserGetServiceData(app_control_h pAppSvcHandle, __VpServiceParserGetSortType(pAppSvcHandle); pReceiveData->eListType = __VpServiceParserGetListType(pAppSvcHandle); - } else if (pReceiveData->eLaunchType == VP_LAUNCH_TYPE_LIST) { - pReceiveData->eListType = - __VpServiceParserGetListType(pAppSvcHandle); + } else if (pReceiveData->eLaunchType == VP_LAUNCH_TYPE_LIST || pReceiveData->eLaunchType == VP_LAUNCH_TYPE_IMAGE_VIEWER) { + pReceiveData->eListType = __VpServiceParserGetListType(pAppSvcHandle); } else { pReceiveData->eSortType = VP_VIDEO_SORT_TYPE_BY_NONE; pReceiveData->eListType = VP_VIDEO_PLAY_LIST_TYPE_NONE; @@ -1241,7 +1240,7 @@ static VpVideoPlayListType __VpServiceParserGetListType(app_control_h if (pPlayType == NULL) { VideoLogInfo("pPlayType == NULL!!!"); - pPlayType = VP_VIDEO_PLAY_LIST_TYPE_NONE; + ePlayType = VP_VIDEO_PLAY_LIST_TYPE_NONE; goto RESULT_RETURN; } diff --git a/vp-main/src/vp-main.c b/vp-main/src/vp-main.c index efe5d1c..4dbe234 100755 --- a/vp-main/src/vp-main.c +++ b/vp-main/src/vp-main.c @@ -429,6 +429,8 @@ static Eina_Bool __appControl_idler_cb(void *data) VP_VIDEO_PLAY_LIST_TYPE_FOLDER) { vp_play_view_set_list_mode(pAppData->pPlayView, VIDEO_PLAY_LIST_TYPE_FOLDER); + } else if(pAppData->pServiceData->eListType == VP_VIDEO_PLAY_LIST_TYPE_FAVORITE) { + vp_play_view_set_list_mode(pAppData->pPlayView, VIDEO_PLAY_LIST_TYPE_FAVOURITE); } else { vp_play_view_set_list_mode(pAppData->pPlayView, VIDEO_PLAY_LIST_TYPE_ALL); -- 2.34.1