2 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
4 // Licensed under the Apache License, Version 2.0 (the License);
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
8 // http://www.apache.org/licenses/LICENSE-2.0
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
17 * @file FCnt_ContentDirectoryImpl.h
18 * @brief This is the header file for the %_ContentDirectoryImpl class.
20 * This header file contains the declarations of the %_ContentDirectoryImpl class.
23 #ifndef _FCNT_INTERNAL_CONTENT_DIRECTORY_IMPL_H_
24 #define _FCNT_INTERNAL_CONTENT_DIRECTORY_IMPL_H_
27 #include <unique_ptr.h>
28 #include <media_content.h>
29 #include <FBaseColIListT.h>
30 #include <FBaseColAllElementsDeleter.h>
32 namespace Tizen { namespace Content
34 static const int MAX_FIELD_LENGTH = 32;
35 static const int MAX_QUERY_COLUMNS = 20;
36 static const int MAX_QUERY_COLUMNS_FOR_IMAGE_OTHERS = 14;
37 static const int MAX_QUERY_COLUMNS_FOR_VIDEO = 18;
38 static const int ALBUM_COLUMN_NUM = 19;
42 char dbFieldOspName[MAX_FIELD_LENGTH];
43 char dbFieldSlpName[MAX_FIELD_LENGTH];
46 const static DatabaseFieldInfo dbfieldinfo[MAX_QUERY_COLUMNS] =
49 {"ContentType", "MEDIA_TYPE"},
50 {"ContentFileName", "MEDIA_DISPLAY_NAME"},
51 {"ContentName", "MEDIA_CONTENT_NAME"},
52 {"Category", "MEDIA_CATEGORY"},
53 {"Author", "MEDIA_AUTHOR"},
54 {"keyword", "MEDIA_KEYWORD"},
55 {"Provider", "MEDIA_PROVIDER"},
56 {"Rating", "MEDIA_AGE_RATING"},
57 {"LocationTag", "MEDIA_LOCATION_TAG"},
58 {"ContentSize", "MEDIA_SIZE"},
59 {"DateTime", "MEDIA_ADDED_TIME"},
60 {"Latitude", "MEDIA_LATITUDE"},
61 {"Longitude", "MEDIA_LONGITUDE"},
62 {"Altitude", "MEDIA_ALTITUDE"},
63 // for audio and video type 14 - 17
64 {"Title", "MEDIA_TITLE"},
65 {"Artist", "MEDIA_ARTIST"},
66 {"Genre", "MEDIA_GENRE"},
67 {"Year", "MEDIA_YEAR"},
68 // for audio type 18 - 19
69 {"Composer", "MEDIA_COMPOSER"},
70 {"Album", "MEDIA_ALBUM"}
73 class ContentSearchResult;
74 class ContentDirectory;
78 void operator()(GList* pGList)
85 struct FolderHandleDeleter
87 void operator()(media_folder_h folderHandle)
89 media_folder_destroy(folderHandle);
94 struct MediaHandleDeleter
96 void operator()(media_info_h mediaHandle)
98 media_info_destroy(mediaHandle);
103 struct FilterHandleDeleter
105 void operator()(filter_h filterHandle)
107 media_filter_destroy(filterHandle);
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_s, 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_