[content] Change sort mode
[platform/framework/native/content.git] / src / FCnt_ContentDirectoryImpl.cpp
index be4b8ef..2b5e8ad 100644 (file)
@@ -1,5 +1,4 @@
 //
-// Open Service Platform
 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
 //
 // Licensed under the Apache License, Version 2.0 (the License);
@@ -222,10 +221,14 @@ _ContentDirectoryImpl::CreateFolderFilter(bool isMultiContentType, const Tizen::
                        SysTryReturnResult(NID_CNT, r == E_SUCCESS, r, "Failed to perform Append operation.");
                }
 
-               r = folderPath.Insert('"', 0);
-               SysTryReturnResult(NID_CNT, r == E_SUCCESS, r, "Failed to perform Insert operation.");
-               r = folderPath.Insert('"', folderPath.GetLength());
-               SysTryReturnResult(NID_CNT, r == E_SUCCESS, r, "Failed to perform Insert operation.");
+               r = folderPath.Replace("\'", "''");
+               SysTryReturnResult(NID_CNT, r == E_SUCCESS, r, "Failed to perform Replace operation for nameExpr.");
+
+               r = folderPath.Insert('\'', 0);
+               SysTryReturnResult(NID_CNT, r == E_SUCCESS, r, "Failed to perform Insert operation for nameExpr.");
+
+               r = folderPath.Insert('\'', folderPath.GetLength());
+               SysTryReturnResult(NID_CNT, r == E_SUCCESS, r, "Failed to perform Insert operation for nameExpr.");
 
                r = inputCondition.Append(folderPath);
                SysTryReturnResult(NID_CNT, r == E_SUCCESS, r, "Failed to perform Append operation.");
@@ -239,12 +242,9 @@ _ContentDirectoryImpl::CreateFolderFilter(bool isMultiContentType, const Tizen::
 
                SysLog(NID_CNT, "pInputCond is [%s].", pInputCond.get());
 
-               if ((pInputCond.get())[0] != null)
-               {
-                       ret = media_filter_set_condition(*(pFilterHandle.get()), pInputCond.get(), MEDIA_CONTENT_COLLATE_DEFAULT);
-                       r = MapCoreErrorToNativeResult(ret);
-                       SysTryReturnResult(NID_CNT, ret == MEDIA_CONTENT_ERROR_NONE, r, "Failed to perform media_filter_set_condition operation.");
-               }
+               ret = media_filter_set_condition(*(pFilterHandle.get()), pInputCond.get(), MEDIA_CONTENT_COLLATE_DEFAULT);
+               r = MapCoreErrorToNativeResult(ret);
+               SysTryReturnResult(NID_CNT, ret == MEDIA_CONTENT_ERROR_NONE, r, "Failed to perform media_filter_set_condition operation.");
        }
 
        __pFilterHandle.reset(pFilterHandle.release());
@@ -295,14 +295,14 @@ _ContentDirectoryImpl::GetContentDirectoryPathListN(Tizen::Base::SortOrder sortO
 
        if (sortOrder == SORT_ORDER_ASCENDING)
        {
-               ret = media_filter_set_order(*(__pFilterHandle.get()), MEDIA_CONTENT_ORDER_ASC, MEDIA_PATH, MEDIA_CONTENT_COLLATE_DEFAULT);
+               ret = media_filter_set_order(*(__pFilterHandle.get()), MEDIA_CONTENT_ORDER_ASC, MEDIA_PATH, MEDIA_CONTENT_COLLATE_NOCASE);
                r = MapCoreErrorToNativeResult(ret);
                SysTryReturn(NID_CNT, ret == MEDIA_CONTENT_ERROR_NONE, null, r,
                                "[%s] Failed to perform media_filter_set_order operation.", GetErrorMessage(r));
        }
        else if (sortOrder == SORT_ORDER_DESCENDING)
        {
-               ret = media_filter_set_order(*(__pFilterHandle.get()), MEDIA_CONTENT_ORDER_DESC, MEDIA_PATH, MEDIA_CONTENT_COLLATE_DEFAULT);
+               ret = media_filter_set_order(*(__pFilterHandle.get()), MEDIA_CONTENT_ORDER_DESC, MEDIA_PATH, MEDIA_CONTENT_COLLATE_NOCASE);
                r = MapCoreErrorToNativeResult(ret);
                SysTryReturn(NID_CNT, ret == MEDIA_CONTENT_ERROR_NONE, null, r,
                                "[%s] Failed to perform media_filter_set_order operation.", GetErrorMessage(r));
@@ -529,32 +529,6 @@ _ContentDirectoryImpl::GetContentDirectoryItemListN(const Tizen::Base::String& c
        r = CreateFolderFilter(__isMultiContentType, detachedPath);
        SysTryReturn(NID_CNT, !IsFailed(r), null, E_SYSTEM, "[E_SYSTEM] Failed to perform CreateFolderFilter operation.");
 
-       if ((!column.IsEmpty()) && (sortOrder != SORT_ORDER_NONE))
-       {
-               //__inputColumnName (osp column name) is replaced with slpColumn (slp column name).
-               r = GetSlpColumnName(slpColumn, column);
-               SysTryReturn(NID_CNT, !IsFailed(r), null, r, "[%s] Failed to perform GetSlpColumnName operation.", GetErrorMessage(r));
-
-               //CopyToCharArrayN: utility function, converts a osp string to char*
-               std::unique_ptr<char[]> pSortCol(_StringConverter::CopyToCharArrayN(slpColumn));
-               SysTryReturn(NID_CNT, pSortCol, null, E_OUT_OF_MEMORY, "The memory is insufficient.");
-
-               if (sortOrder == SORT_ORDER_ASCENDING)
-               {
-                       ret = media_filter_set_order(*(__pFilterHandle.get()), MEDIA_CONTENT_ORDER_ASC, pSortCol.get(), MEDIA_CONTENT_COLLATE_DEFAULT);
-                       r = MapCoreErrorToNativeResult(ret);
-                       SysTryReturn(NID_CNT, ret == MEDIA_CONTENT_ERROR_NONE, null, r,
-                                       "[%s] Failed to perform media_filter_set_order operation.", GetErrorMessage(r));
-               }
-               else if (sortOrder == SORT_ORDER_DESCENDING)
-               {
-                       ret = media_filter_set_order(*(__pFilterHandle.get()), MEDIA_CONTENT_ORDER_DESC, pSortCol.get(), MEDIA_CONTENT_COLLATE_DEFAULT);
-                       r = MapCoreErrorToNativeResult(ret);
-                       SysTryReturn(NID_CNT, ret == MEDIA_CONTENT_ERROR_NONE, null, r,
-                                       "[%s] Failed to perform media_filter_set_order operation.", GetErrorMessage(r));
-               }
-       }
-
        pTempList = pItemList.get();
        ret = media_folder_foreach_folder_from_db(*(__pFilterHandle.get()), MediaFoldersCb, &pTempList);
        r = MapCoreErrorToNativeResult(ret);
@@ -616,6 +590,32 @@ _ContentDirectoryImpl::GetContentDirectoryItemListN(const Tizen::Base::String& c
                SysLog(NID_CNT, "totalCount [%d] totalPageCount[%d] __countPerPage[%d] __pageNo[%d] offset[%d]",
                                totalCount, totalPageCount, countPerPage, pageNo, offset);
 
+               if ((!column.IsEmpty()) && (sortOrder != SORT_ORDER_NONE))
+               {
+                       //__inputColumnName (osp column name) is replaced with slpColumn (slp column name).
+                       r = GetSlpColumnName(slpColumn, column);
+                       SysTryReturn(NID_CNT, !IsFailed(r), null, r, "[%s] Failed to perform GetSlpColumnName operation.", GetErrorMessage(r));
+
+                       //CopyToCharArrayN: utility function, converts a osp string to char*
+                       std::unique_ptr<char[]> pSortCol(_StringConverter::CopyToCharArrayN(slpColumn));
+                       SysTryReturn(NID_CNT, pSortCol, null, E_OUT_OF_MEMORY, "The memory is insufficient.");
+
+                       if (sortOrder == SORT_ORDER_ASCENDING)
+                       {
+                               ret = media_filter_set_order(*(__pFilterHandle.get()), MEDIA_CONTENT_ORDER_ASC, pSortCol.get(), MEDIA_CONTENT_COLLATE_NOCASE);
+                               r = MapCoreErrorToNativeResult(ret);
+                               SysTryReturn(NID_CNT, ret == MEDIA_CONTENT_ERROR_NONE, null, r,
+                                               "[%s] Failed to perform media_filter_set_order operation.", GetErrorMessage(r));
+                       }
+                       else if (sortOrder == SORT_ORDER_DESCENDING)
+                       {
+                               ret = media_filter_set_order(*(__pFilterHandle.get()), MEDIA_CONTENT_ORDER_DESC, pSortCol.get(), MEDIA_CONTENT_COLLATE_NOCASE);
+                               r = MapCoreErrorToNativeResult(ret);
+                               SysTryReturn(NID_CNT, ret == MEDIA_CONTENT_ERROR_NONE, null, r,
+                                               "[%s] Failed to perform media_filter_set_order operation.", GetErrorMessage(r));
+                       }
+               }
+
                ret = media_filter_set_offset(*(__pFilterHandle.get()),offset,countPerPage);
                r = MapCoreErrorToNativeResult(ret);
                SysTryReturn(NID_CNT, !IsFailed(r), null, r, "[%s] Failed to perform media_filter_set_offset operation.", GetErrorMessage(r));