[TIZENIOT-2287] Sync order of video list in apps with video-player 48/250248/1 submit/tizen/20201222.114140 submit/tizen/20201223.043855 submit/tizen/20201223.095625
authoraman.jeph <aman.jeph@samsung.com>
Tue, 22 Dec 2020 09:10:28 +0000 (14:40 +0530)
committeraman.jeph <aman.jeph@samsung.com>
Tue, 22 Dec 2020 09:10:28 +0000 (14:40 +0530)
Change-Id: I65883df6a376b41a0f9c0cfb20aae33730db881e
Signed-off-by: aman.jeph <aman.jeph@samsung.com>
playview/include/vp-play-type-define.h
playview/src/core/include/vp-media-contents.h
playview/src/core/vp-media-contents.c
playview/src/view/vp-play-normal-view.c
src/view/mp-video-list-view-main.c
src/widget/mp-video-list-sort-ctrl.c
vp-main/src/serviceParser/vp-service-parser.c
vp-main/src/vp-main.c

index c94491f1dec4d65c4447abd4339cc95023a5e01f..b6d69220916c4ed16a8b9a40120e6e7cf3b64712 100755 (executable)
@@ -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,
index 46b39d2654c4fef72745e7d1661b44c9e45dd301..fb94ff6d9863afbb7a522fdbf74a52bdc3a6d23d 100755 (executable)
@@ -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);
+
index a67d45f4ba570be6c84ff7c24cc92cd28ef3ae5f..158220564aa4bab4d91e0d92d9cbe81e821363f1 100755 (executable)
@@ -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,
index e2b5d9f120285db7e9c17d0b3ec4a7a8eaa67493..45ae02ed6beb35f494830ace747cc6404671afd1 100755 (executable)
@@ -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_
index d11161723d060d8a84646205f0147b3d851a0f7c..9788d12c0697b2d264fdf50a4ea82734f1694d98 100755 (executable)
@@ -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()
index cd9d23d79ff3a2355e29ef255da0761d0dbfcc77..259ae50b9c587d89b11d053ab22ede5e54350c3e 100755 (executable)
@@ -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;
        }
 
index 579c3565d477d291735d335f7aa32d21dc37d0cf..be2c34d1612808e71f4309a54a9269a6c7aa5a1e 100755 (executable)
@@ -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;
        }
 
index efe5d1c083e050b712148925e4b54afde3fb6888..4dbe234e7befc3ebd10968f2d537e834d32a9937 100755 (executable)
@@ -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);