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_ContentInfoImpl.cpp
18 * @brief This is the implementation file for the %_ContentInfoImpl class.
20 * This file contains implementation of the %_ContentInfoImpl class.
23 #include <FBaseSysLog.h>
24 #include <FCntContentInfo.h>
25 #include <FCntAudioMetadata.h>
26 #include <FCntContentManagerUtil.h>
28 #include <FGrpBitmap.h>
29 #include <FMediaImage.h>
30 #include <FApp_AppInfo.h>
31 #include <FIo_FileImpl.h>
32 #include "FCnt_ContentInfoImpl.h"
35 using namespace Tizen::App;
36 using namespace Tizen::Base;
37 using namespace Tizen::Io;
38 using namespace Tizen::Locations;
39 using namespace Tizen::Graphics;
40 using namespace Tizen::Media;
42 namespace Tizen { namespace Content
45 static const int _THUMBNAIL_IMAGE_WIDTH = 80;
46 static const int _THUMBNAIL_IMAGE_HEIGHT = 60;
47 static const double _DEFAULT_COORDINATE = -200.0;
49 _ContentInfoImpl::_ContentInfoImpl(void)
50 : __contentId(Tizen::Base::UuId::GetInvalidUuId())
52 , __contentType(CONTENT_TYPE_UNKNOWN)
60 , __thumbnailPath(L"")
70 , __isConstructed(false)
75 _ContentInfoImpl::~_ContentInfoImpl(void)
81 _ContentInfoImpl::GetInstance(ContentInfo& contentInfo)
83 return contentInfo.__pContentInfoImpl;
86 const _ContentInfoImpl*
87 _ContentInfoImpl::GetInstance(const ContentInfo& contentInfo)
89 return contentInfo.__pContentInfoImpl;
93 _ContentInfoImpl::Construct(const String& contentPath, const String& thumbnailPath, bool setGps)
99 _ContentInfoImpl::GetContentId(void) const
105 _ContentInfoImpl::GetContentType(void) const
107 return __contentType;
111 _ContentInfoImpl::GetDateTime(void) const
117 _ContentInfoImpl::GetMimeType(void) const
123 _ContentInfoImpl::GetContentSize(void) const
125 return __contentSize;
129 _ContentInfoImpl::GetContentName(void) const
131 return __contentName;
135 _ContentInfoImpl::GetContentPath(void) const
137 String changedPath(L"");
138 result r = GetCompatContentPath(__contentPath, changedPath);
139 SysTryLogReturn(NID_CNT, !IsFailed(r), L"", "Failed to perform GetCompatContentPath.");
145 _ContentInfoImpl::GetPhysicalContentPath(void) const
147 return __contentPath;
151 _ContentInfoImpl::GetCoordinates(void) const
153 return __coordinates;
157 _ContentInfoImpl::SetCoordinates(const Coordinates& coordinates)
159 double latitude = coordinates.GetLatitude();
160 double longitude = coordinates.GetLongitude();
161 double altitude = coordinates.GetAltitude();
163 if (!Double::IsNaN(latitude))
165 __latitude = latitude;
167 if (!Double::IsNaN(longitude))
169 __longitude = longitude;
171 if (!Double::IsNaN(altitude))
173 __altitude = altitude;
176 __coordinates = coordinates;
180 _ContentInfoImpl::SetLocationTag(const String& locationTag)
182 __locationTag = locationTag;
186 _ContentInfoImpl::GetLocationTag(void) const
188 return __locationTag;
192 _ContentInfoImpl::SetRating(const String& rating)
198 _ContentInfoImpl::GetRating(void) const
204 _ContentInfoImpl::SetCategory(const String& category)
206 __category = category;
210 _ContentInfoImpl::GetCategory(void) const
216 _ContentInfoImpl::SetDescription(const String& description)
218 __description = description;
222 _ContentInfoImpl::GetDescription(void) const
224 return __description;
228 _ContentInfoImpl::GetThumbnailN(void) const
230 result r = E_SUCCESS;
232 Bitmap* pBitmap = null;
234 SysTryReturn(NID_CNT, !__thumbnailPath.IsEmpty(), null, E_DATA_NOT_FOUND,
235 "[E_DATA_NOT_FOUND] GetThumbnailN() failed.");
237 String changedPath(L"");
238 r = GetCompatContentPath(__thumbnailPath, changedPath);
239 SysTryReturn(NID_CNT, !IsFailed(r), null, E_DATA_NOT_FOUND, "[%s] Failed to perform GetCompatContentPath.", GetErrorMessage(E_DATA_NOT_FOUND));
241 if (__contentType == CONTENT_TYPE_IMAGE || __contentType == CONTENT_TYPE_AUDIO
242 || __contentType == CONTENT_TYPE_VIDEO)
244 r = image.Construct();
245 SysTryReturn(NID_CNT, !IsFailed(r), null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] GetThumbnailN() failed.");
247 if (_AppInfo::GetApiVersion() == _API_VERSION_2_0 && _AppInfo::IsOspCompat())
249 pBitmap = image.DecodeN(changedPath, BITMAP_PIXEL_FORMAT_ARGB8888, _THUMBNAIL_IMAGE_WIDTH, _THUMBNAIL_IMAGE_HEIGHT);
253 pBitmap = image.DecodeN(changedPath, BITMAP_PIXEL_FORMAT_ARGB8888);
260 if (r == E_OUT_OF_MEMORY)
262 SysLogException(NID_CNT, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] GetThumbnailN() failed.");
267 SysLogException(NID_CNT, E_DATA_NOT_FOUND, "[E_DATA_NOT_FOUND] GetThumbnailN() failed.");
274 SysLogException(NID_CNT, E_DATA_NOT_FOUND, "[E_DATA_NOT_FOUND] GetThumbnailN() failed.");
282 _ContentInfoImpl::IsDrmProtected(void) const
288 _ContentInfoImpl::GetKeyword(void) const
294 _ContentInfoImpl::SetContentName(const String& contentName)
296 __contentName = contentName;
300 _ContentInfoImpl::SetKeyword(const String& keyword)
306 _ContentInfoImpl::SetAuthor(const String& author)
312 _ContentInfoImpl::GetAuthor(void) const
318 _ContentInfoImpl::SetProvider(const String& provider)
320 __provider = provider;
324 _ContentInfoImpl::GetProvider(void) const
330 _ContentInfoImpl::GetMediaFormat(void) const
332 return File::GetFileExtension(__contentPath);
336 _ContentInfoImpl::SetContentId(const ContentId& contentId)
338 __contentId = contentId;
342 _ContentInfoImpl::SetContentType(const ContentType& contentType)
344 __contentType = contentType;
348 _ContentInfoImpl::SetContentSize(unsigned long contentSize)
350 __contentSize = contentSize;
354 _ContentInfoImpl::SetMimeType(const String& mimeType)
356 __mimeType = mimeType;
360 _ContentInfoImpl::SetDateTime(const DateTime& dateTime)
362 __dateTime = dateTime;
366 _ContentInfoImpl::SetContentPath(const String& contentPath)
368 __contentPath = contentPath;
372 _ContentInfoImpl::SetMediaFormat(const String& mediaFormat)
374 __mediaFormat = mediaFormat;
378 _ContentInfoImpl::SetDrmProtected(bool isDrm)
384 _ContentInfoImpl::GetLatitude(void) const
390 _ContentInfoImpl::GetLongitude(void) const
396 _ContentInfoImpl::GetAltitude(void) const
402 _ContentInfoImpl::SetLatitude(double latitude)
404 __latitude = latitude;
408 _ContentInfoImpl::SetLongitude(double longitude)
410 __longitude = longitude;
414 _ContentInfoImpl::SetAltitude(double altitude)
416 __altitude = altitude;
420 _ContentInfoImpl::GetThumbnailPath(void) const
422 return __thumbnailPath;
426 _ContentInfoImpl::SetThumbnailPath(const String& thumbnailPath)
428 __thumbnailPath = thumbnailPath;
432 _ContentInfoImpl::SetStorageType(int storageType)
434 __storageType = storageType;
438 _ContentInfoImpl::GetModifiedTime(void) const
440 return __modifiedTime;
444 _ContentInfoImpl::SetModifiedTime(const DateTime& modifiedTime)
446 __modifiedTime = modifiedTime;
450 _ContentInfoImpl::GetCompatContentPath(const String& contentPath, String& changedPath) const
452 result r = E_SUCCESS;
453 changedPath = contentPath;
455 // If the api version is 2.0, the content path has to be changed.
456 if (_AppInfo::GetApiVersion() == _API_VERSION_2_0 && _AppInfo::IsOspCompat())
458 r = _FileImpl::ConvertPhysicalToVirtualPath(contentPath, changedPath);
459 SysTryReturnResult(NID_CNT, !IsFailed(r), E_INVALID_ARG,
460 "[%s] Failed to convert physical path to virtual path.", GetErrorMessage(E_INVALID_ARG));
467 _ContentInfoImpl::IsReconstructable(void) const
469 return __isConstructed;
473 _ContentInfoImpl::SetReconstructable(bool isConstructed)
475 __isConstructed = isConstructed;