[content] Change sort mode
[platform/framework/native/content.git] / src / FCnt_ContentSearchImpl.cpp
index 8d6c8c7..aadcafb 100644 (file)
@@ -1,5 +1,4 @@
 //\r
-// Open Service Platform\r
 // Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
 //\r
 // Licensed under the Apache License, Version 2.0 (the License);\r
@@ -172,15 +171,12 @@ _ContentSearchImpl::CreateQueryFilter(bool isAndAppendReq) const
        {\r
                //CopyToCharArrayN: utility function, converts a osp string to char*\r
                pInputCond = std::unique_ptr<char[]>(_StringConverter::CopyToCharArrayN(inputCondition));\r
-               SysTryReturnResult(NID_CNT, (pInputCond.get())[0], E_OUT_OF_MEMORY, "pInputCond is NULL.");\r
+               SysTryReturnResult(NID_CNT, pInputCond, E_OUT_OF_MEMORY, "pInputCond is NULL.");\r
 \r
                SysLog(NID_CNT, "pInputCond = %s", pInputCond.get());\r
 \r
-               if ((pInputCond.get())[0])\r
-               {\r
-                       ret = media_filter_set_condition(*(pFilterHandle.get()), pInputCond.get(), MEDIA_CONTENT_COLLATE_DEFAULT);\r
-                       SysTryReturnResult(NID_CNT, ret == MEDIA_CONTENT_ERROR_NONE, E_SYSTEM, "Failed to perform media_filter_set_condition operation.");\r
-               }\r
+               ret = media_filter_set_condition(*(pFilterHandle.get()), pInputCond.get(), MEDIA_CONTENT_COLLATE_DEFAULT);\r
+               SysTryReturnResult(NID_CNT, ret == MEDIA_CONTENT_ERROR_NONE, E_SYSTEM, "Failed to perform media_filter_set_condition operation.");\r
        }\r
 \r
        if (!__inputColumnName.IsEmpty()) // SortColumn is optional in case of SearchN\r
@@ -192,16 +188,16 @@ _ContentSearchImpl::CreateQueryFilter(bool isAndAppendReq) const
                //CopyToCharArrayN: utility function, converts a osp string to char*\r
 \r
                pSortCol = std::unique_ptr<char[]>(_StringConverter::CopyToCharArrayN(slpColumn));\r
-               SysTryReturnResult(NID_CNT, (pSortCol.get())[0], E_OUT_OF_MEMORY, "pSortCol is NULL.");\r
+               SysTryReturnResult(NID_CNT, pSortCol, E_OUT_OF_MEMORY, "pSortCol is NULL.");\r
 \r
                if (__inputSortOrder == SORT_ORDER_ASCENDING)\r
                {\r
-                       ret = media_filter_set_order(*(pFilterHandle.get()), MEDIA_CONTENT_ORDER_ASC, pSortCol.get(), MEDIA_CONTENT_COLLATE_DEFAULT);\r
+                       ret = media_filter_set_order(*(pFilterHandle.get()), MEDIA_CONTENT_ORDER_ASC, pSortCol.get(), MEDIA_CONTENT_COLLATE_NOCASE);\r
                        SysTryReturnResult(NID_CNT, ret == MEDIA_CONTENT_ERROR_NONE, E_SYSTEM, "Failed to perform media_filter_set_order operation.");\r
                }\r
                else if (__inputSortOrder == SORT_ORDER_DESCENDING)\r
                {\r
-                       ret = media_filter_set_order(*(pFilterHandle.get()), MEDIA_CONTENT_ORDER_DESC, pSortCol.get(), MEDIA_CONTENT_COLLATE_DEFAULT);\r
+                       ret = media_filter_set_order(*(pFilterHandle.get()), MEDIA_CONTENT_ORDER_DESC, pSortCol.get(), MEDIA_CONTENT_COLLATE_NOCASE);\r
                        SysTryReturnResult(NID_CNT, ret == MEDIA_CONTENT_ERROR_NONE, E_SYSTEM, "Failed to perform media_filter_set_order operation.");\r
                }\r
        }\r
@@ -1476,10 +1472,12 @@ _ContentSearchImpl::ExecuteAndFillAlbumValues(void) const
        std::unique_ptr<GList, SearchGListDeleter> pItemList;\r
        GList* pTemp = NULL;\r
        std::unique_ptr<media_album_s, AlbumHandleDeleter> pAlbumHandle;\r
+       std::unique_ptr<media_album_s, AlbumHandleDeleter> pTempAlbumHandle;\r
 \r
-       Object* pValue = NULL;\r
-       char* __pAlbumName = NULL;\r
+       char* pName = NULL;\r
        std::unique_ptr<char, CharDeleter> pAlbumName;\r
+       std::unique_ptr< String > pValue;\r
+       int lastIndex = 0;\r
 \r
        pTemp = pItemList.get();\r
 \r
@@ -1491,28 +1489,40 @@ _ContentSearchImpl::ExecuteAndFillAlbumValues(void) const
        for (int idx = 0; idx < (int)g_list_length(pTemp); idx++)\r
        {\r
                pAlbumHandle.reset(static_cast<media_album_h>(g_list_nth_data(pTemp, idx)));\r
-               ret = media_album_get_name(pAlbumHandle.get(), &__pAlbumName);\r
+               ret = media_album_get_name(pAlbumHandle.get(), &pName);\r
                r = MapCoreErrorToNativeResult(ret);\r
                SysTryReturnResult(NID_CNT, !IsFailed(r), r, "Failed to perform media_album_get_name.");\r
                \r
-               if (__pAlbumName != NULL)\r
+               if (pName != NULL)\r
                {\r
-                       SysLog(NID_CNT, "pColumnVal = %s", __pAlbumName);\r
-\r
-                       pAlbumName.reset(__pAlbumName);\r
+                       SysLog(NID_CNT, "pColumnVal = %s", pName);\r
 \r
-                       pValue = new (std::nothrow) String(pAlbumName.get());\r
+                       pAlbumName.reset(pName);\r
+                       pValue.reset(new (std::nothrow) String(pAlbumName.get()));\r
                        SysTryReturnResult(NID_CNT, pValue != NULL, E_OUT_OF_MEMORY, "media_info_foreach_media_from_db pTemp is null.");\r
-               }\r
 \r
-               if (pValue != NULL)\r
-               {\r
-                       r = __pFinalOutList->Add(*pValue);\r
-                       SysTryReturnResult(NID_CNT, r == E_SUCCESS, r, "Failed to perform arraylist Add operation.");\r
-               }\r
+                       if (idx == 0)\r
+                       {\r
+                               r = __pFinalOutList->Add(pValue.get());\r
+                               SysTryReturnResult(NID_CNT, r == E_SUCCESS, r, "Failed to perform arraylist Add operation.");\r
+                               pValue.release();\r
+                       }\r
+                       else\r
+                       {\r
+                               String* pTempNameList(static_cast< String* >(__pFinalOutList->GetAt(lastIndex)));\r
+\r
+                               if (pValue->CompareTo(*pTempNameList) != 0)\r
+                               {\r
+                                       r = __pFinalOutList->Add(pValue.get());\r
+                                       SysTryReturnResult(NID_CNT, r == E_SUCCESS, r, "Failed to perform arraylist Add operation.");\r
 \r
-               pValue = NULL;\r
+                                       pValue.release();\r
+                                       lastIndex++;\r
+                               }\r
+                       }\r
+               }\r
        }\r
+\r
        return r;\r
 }\r
 \r