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_ImageContentInfoImpl.cpp
18 * @brief This is the implementation file for the %_ImageContentInfoImpl class.
20 * This file contains implementation of the %_ImageContentInfoImpl class.
23 #include <FBaseSysLog.h>
25 #include <FIoDirectory.h>
26 #include <FSysEnvironment.h>
27 #include <FIo_FileImpl.h>
28 #include <FApp_AppInfo.h>
29 #include "FCnt_ImageContentInfoImpl.h"
32 using namespace Tizen::App;
33 using namespace Tizen::Base;
34 using namespace Tizen::Io;
35 using namespace Tizen::Locations;
36 using namespace Tizen::System;
38 namespace Tizen { namespace Content
41 _ImageContentInfoImpl::_ImageContentInfoImpl(void)
45 , __orientationType(IMAGE_ORIENTATION_TYPE_UNKNOWN)
52 _ImageContentInfoImpl::~_ImageContentInfoImpl(void)
57 _ImageContentInfoImpl*
58 _ImageContentInfoImpl::GetInstance(ImageContentInfo& imageContentInfo)
60 return imageContentInfo.__pImageContentInfoImpl;
63 const _ImageContentInfoImpl*
64 _ImageContentInfoImpl::GetInstance(const ImageContentInfo& imageContentInfo)
66 return imageContentInfo.__pImageContentInfoImpl;
70 _ImageContentInfoImpl::Construct(const String& contentPath, const String& thumbnailPath, bool setGps)
73 String tempPath(contentPath);
75 if (_AppInfo::GetApiVersion() == _API_VERSION_2_0 && _AppInfo::IsOspCompat())
77 if (contentPath.StartsWith(OSP_MEDIA_PHONE, 0))
79 // Because the content path is saved like /opt/media or /opt/storage/sdcard/ in SLP database,
80 // it should be converted in 2.0.
81 r = tempPath.Replace(OSP_MEDIA_PHONE, Environment::GetMediaPath());
82 SysTryReturnResult(NID_CNT, !IsFailed(r), E_INVALID_ARG, "Construct() failed.");
84 else if (contentPath.StartsWith(OSP_MEDIA_MMC, 0))
86 r = tempPath.Replace(OSP_MEDIA_MMC, Environment::GetExternalStoragePath());
87 SysTryReturnResult(NID_CNT, !IsFailed(r), E_INVALID_ARG, "Construct() failed.");
91 SysLogException(NID_CNT, E_INVALID_ARG,
92 "[E_INVALID_ARG] The contentPath should start with /Media or /Storagecard/Media.");
98 SysTryReturnResult(NID_CNT, _FileImpl::IsMediaPath(contentPath), E_INVALID_ARG,
99 "The contentPath should start with /Media or /Storagecard/Media.");
100 SysTryReturnResult(NID_CNT, File::IsFileExist(contentPath), E_FILE_NOT_FOUND,
101 "The file corresponding to contentPath could not be found.");
103 if (!thumbnailPath.IsEmpty())
106 "The thumbnailPath is not supported but you can get the thumbnail managed by Tizen from ContentInfo::GetThumbnailN().");
111 SysLog(NID_CNT, "The setGps is not supported.");
114 SetContentPath(tempPath);
115 SetContentType(CONTENT_TYPE_IMAGE);
121 _ImageContentInfoImpl::Construct(const String* pContentPath)
123 result r = E_SUCCESS;
125 if (pContentPath != null)
127 String contentPath(*pContentPath);
129 if (!_AppInfo::IsOspCompat())
131 if (!(contentPath.StartsWith(Environment::GetMediaPath(), 0)
132 || contentPath.StartsWith(Environment::GetExternalStoragePath(), 0)))
134 SysLogException(NID_CNT, E_INVALID_ARG, "[E_INVALID_ARG] The path is not supported.");
135 return E_INVALID_ARG;
141 if (contentPath.StartsWith(OSP_MEDIA_PHONE, 0))
143 // Because the content path is saved like /opt/media or /opt/storage/sdcard/ in SLP database,
144 // it should be converted in 2.0.
145 r = contentPath.Replace(OSP_MEDIA_PHONE, Environment::GetMediaPath());
146 SysTryReturnResult(NID_CNT, !IsFailed(r), E_INVALID_ARG, "Construct() failed.");
148 else if (contentPath.StartsWith(OSP_MEDIA_MMC, 0))
150 r = contentPath.Replace(OSP_MEDIA_MMC, Environment::GetExternalStoragePath());
151 SysTryReturnResult(NID_CNT, !IsFailed(r), E_INVALID_ARG, "Construct() failed.");
155 SysLogException(NID_CNT, E_INVALID_ARG,
156 "[E_INVALID_ARG] The contentPath should start with /Media or /Storagecard/Media.");
157 return E_INVALID_ARG;
161 int length = contentPath.GetLength();
162 SysTryReturnResult(NID_CNT, length != 0, E_INVALID_ARG,
163 "The length of pContentPath is 0.");
164 SysTryReturnResult(NID_CNT, File::IsFileExist(*pContentPath), E_FILE_NOT_FOUND,
165 "The file corresponding to pContentPath could not be found.");
167 SetContentPath(contentPath);
168 SetContentType(CONTENT_TYPE_IMAGE);
172 SetContentType(CONTENT_TYPE_IMAGE);
179 _ImageContentInfoImpl::GetWidth(void) const
185 _ImageContentInfoImpl::GetHeight(void) const
191 _ImageContentInfoImpl::GetOrientation(void) const
193 return __orientationType;
197 _ImageContentInfoImpl::GetImageTakenDate(void) const
203 _ImageContentInfoImpl::GetTitle(void) const
205 if (__title.IsEmpty())
207 SysLog(NID_CNT, "Title is empty.");
215 _ImageContentInfoImpl::IsBurstShot(void) const
221 _ImageContentInfoImpl::GetBurstShotId(void) const
223 return __burstShotId;
227 _ImageContentInfoImpl::SetWidth(int width)
233 _ImageContentInfoImpl::SetHeight(int height)
239 _ImageContentInfoImpl::SetTitle(const String& title)
245 _ImageContentInfoImpl::SetOrientation(const ImageOrientationType& orientationType)
247 __orientationType = orientationType;
251 _ImageContentInfoImpl::SetImageTakenDate(const DateTime& takenDate)
253 __takenDate = takenDate;
257 _ImageContentInfoImpl::SetBurstShot(const bool isBurst)
263 _ImageContentInfoImpl::SetBurstShotId(const String& burstShotId)
265 __burstShotId = burstShotId;