2 // Open Service Platform
3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 // Licensed under the Apache License, Version 2.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
9 // http://www.apache.org/licenses/LICENSE-2.0
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
18 * @file FCnt_ContentDirectoryImpl.h
19 * @brief This is the header file for the %_ContentDirectoryImpl class.
21 * This header file contains the declarations of the %_ContentDirectoryImpl class.
24 #ifndef _FCNT_INTERNAL_CONTENT_DIRECTORY_IMPL_H_
25 #define _FCNT_INTERNAL_CONTENT_DIRECTORY_IMPL_H_
28 #include <unique_ptr.h>
29 #include <media_content.h>
30 #include <FBaseColIListT.h>
31 #include <FBaseColAllElementsDeleter.h>
33 namespace Tizen { namespace Content
35 static const int MAX_FIELD_LENGTH = 32;
36 static const int MAX_QUERY_COLUMNS = 20;
37 static const int MAX_QUERY_COLUMNS_FOR_IMAGE_OTHERS = 14;
38 static const int MAX_QUERY_COLUMNS_FOR_VIDEO = 18;
39 static const int ALBUM_COLUMN_NUM = 19;
43 char dbFieldOspName[MAX_FIELD_LENGTH];
44 char dbFieldSlpName[MAX_FIELD_LENGTH];
47 const static DatabaseFieldInfo dbfieldinfo[MAX_QUERY_COLUMNS] =
50 {"ContentType", "MEDIA_TYPE"},
51 {"ContentFileName", "MEDIA_DISPLAY_NAME"},
52 {"ContentName", "MEDIA_CONTENT_NAME"},
53 {"Category", "MEDIA_CATEGORY"},
54 {"Author", "MEDIA_AUTHOR"},
55 {"keyword", "MEDIA_KEYWORD"},
56 {"Provider", "MEDIA_PROVIDER"},
57 {"Rating", "MEDIA_AGE_RATING"},
58 {"LocationTag", "MEDIA_LOCATION_TAG"},
59 {"ContentSize", "MEDIA_SIZE"},
60 {"DateTime", "MEDIA_ADDED_TIME"},
61 {"Latitude", "MEDIA_LATITUDE"},
62 {"Longitude", "MEDIA_LONGITUDE"},
63 {"Altitude", "MEDIA_ALTITUDE"},
64 // for audio and video type 14 - 17
65 {"Title", "MEDIA_TITLE"},
66 {"Artist", "MEDIA_ARTIST"},
67 {"Genre", "MEDIA_GENRE"},
68 {"Year", "MEDIA_YEAR"},
69 // for audio type 18 - 19
70 {"Composer", "MEDIA_COMPOSER"},
71 {"Album", "MEDIA_ALBUM"}
74 class ContentSearchResult;
75 class ContentDirectory;
79 void operator()(GList* pGList)
86 struct FolderHandleDeleter
88 void operator()(media_folder_h folderHandle)
90 media_folder_destroy(folderHandle);
95 struct MediaHandleDeleter
97 void operator()(media_info_h mediaHandle)
99 media_info_destroy(mediaHandle);
104 struct FilterHandleDeleter
106 void operator()(filter_h* pFilterHandle)
108 media_filter_destroy(*pFilterHandle);
112 class _ContentDirectoryImpl
113 : public Tizen::Base::Object
118 * This is the default constructor for this class.
122 _ContentDirectoryImpl(void);
125 * This is the destructor for this class.
129 virtual ~_ContentDirectoryImpl(void);
132 * @see @ref Tizen::Content::ContentDirectory::Construct()
134 result Construct(ContentType type);
137 * @see @ref Tizen::Content::ContentDirectory::Construct()
139 result Construct(const Tizen::Base::Collection::IListT<ContentType>& contentTypeList);
142 * @see @ref Tizen::Content::ContentDirectory::GetContentDirectoryCount()
144 int GetContentDirectoryCount(void) const;
147 * @see @ref Tizen::Content::ContentDirectory::GetContentDirectoryPathListN()
149 Tizen::Base::Collection::IList* GetContentDirectoryPathListN(Tizen::Base::SortOrder sortOrder) const;
152 * @see @ref Tizen::Content::ContentDirectory::GetContentDirectoryItemCount()
154 int GetContentDirectoryItemCount(const Tizen::Base::String& contentDirectoryPath) const;
157 * @see @ref Tizen::Content::ContentDirectory::GetContentDirectoryItemListN()
159 Tizen::Base::Collection::IList* GetContentDirectoryItemListN(const Tizen::Base::String& contentDirectoryPath, int pageNo, int countPerPage,
160 const Tizen::Base::String& column, Tizen::Base::SortOrder sortOrder) const;
162 static _ContentDirectoryImpl* GetInstance(ContentDirectory& contentDirectory);
164 static const _ContentDirectoryImpl* GetInstance(const ContentDirectory& contentDirectory);
167 _ContentDirectoryImpl(const _ContentDirectoryImpl& rhs);
168 _ContentDirectoryImpl& operator =(const _ContentDirectoryImpl& rhs);
170 result CreateFolderFilter(bool isMultiContentType, const Tizen::Base::String& folderPath) const;
171 result FillFinalOutList(char* pFolderId) const;
172 result GetSlpColumnName(Tizen::Base::String& inputCol, Tizen::Base::String sortCol) const;
173 result MapCoreErrorToNativeResult(int reason) const;
174 bool CheckMediaPath(const Tizen::Base::String& directoryPath) const;
176 mutable std::unique_ptr<filter_h, FilterHandleDeleter> __pFilterHandle;
177 mutable std::unique_ptr<Tizen::Base::Collection::ArrayList, Tizen::Base::Collection::AllElementsDeleter> __pFinalOutList;
178 ContentType __contentType;
179 bool __isMultiContentType;
180 Tizen::Base::String __multiContentTypeExpr;
183 }; // class _ContentDirectoryImpl
187 #endif // _FCNT_INTERNAL_CONTENT_DIRECTORY_IMPL_H_