const Tizen::Base::String& GetAppNotificationIconPath(void) const;
result SetAppNotificationIconPath(const Tizen::Base::String& notificationIconPath);
- const Tizen::Base::String& GetAppTempIconPath(void) const;
- result SetAppTempIconPath(const Tizen::Base::String& tempIconPath);
+ char* GetAppMenuIconBufferN(int& size) const;
+ result SetAppMenuIconBuffer(char* pBuffer, int size);
Tizen::Graphics::Bitmap* GetAppMenuIconN(void) const;
Tizen::Base::String __appIconPath;
Tizen::Base::String __appSettingIconPath;
Tizen::Base::String __appNotificationIconPath;
- Tizen::Base::String __appTempIconPath;
bool __launchingIconVisible;
bool __mainApp;
void* __pAppInfoHandle;
+ char* __pIconBuffer;
+ int __iconSize;
+
friend class PackageAppInfo;
}; // _PackageAppInfoImpl
}
result
-_PackageAppInfoImpl::SetAppSettingIconPath(const Tizen::Base::String& appSettingIcon)
+_PackageAppInfoImpl::SetAppSettingIconPath(const String& appSettingIcon)
{
__appSettingIconPath = appSettingIcon;
return E_SUCCESS;
return E_SUCCESS;
}
-const String&
-_PackageAppInfoImpl::GetAppTempIconPath(void) const
+char*
+_PackageAppInfoImpl::GetAppMenuIconBufferN(int& size) const
{
- return __appTempIconPath;
+ if (__pIconBuffer)
+ {
+ char* pBuffer = new (std::nothrow) char[__iconSize];
+ SysTryReturn(NID_APP, pBuffer, null, E_OUT_OF_MEMORY, "pBuffer is null.");
+
+ memset(pBuffer, 0, __iconSize);
+ memcpy(pBuffer, __pIconBuffer, __iconSize);
+
+ size = __iconSize;
+ return pBuffer;
+ }
+ else
+ {
+ return null;
+ }
}
result
-_PackageAppInfoImpl::SetAppTempIconPath(const String& tempIconPath)
+_PackageAppInfoImpl::SetAppMenuIconBuffer(char* pBuffer, int size)
{
- __appTempIconPath = tempIconPath;
+ if (pBuffer)
+ {
+ __pIconBuffer = new (std::nothrow) char[size];
+ SysTryReturnResult(NID_APP, __pIconBuffer, E_OUT_OF_MEMORY, "__pIconBuffer is null.");
+
+ __iconSize = size;
+
+ memset(__pIconBuffer, 0, __iconSize);
+ memcpy(__pIconBuffer, pBuffer, __iconSize);
+ }
+
return E_SUCCESS;
}
}
iconPath = __appIconPath;
+ pBitmap = _AppResourceImpl::GetNonScalingBitmapN(iconPath);
}
else
{
- if (__appTempIconPath.IsEmpty() == true)
+ if ((__pIconBuffer == null) || (__iconSize <= 0))
{
return null;
}
- iconPath = __appTempIconPath;
+ iconPath = L"/tmp/icon.png";
+ if (File::IsFileExist(iconPath) == true)
+ {
+ File::Remove(iconPath);
+ }
+
+ result r = E_SUCCESS;
+ File file;
+
+ r = file.Construct(iconPath, "w");
+ SysTryReturn(NID_APP, r == E_SUCCESS, null, E_SYSTEM, "file.Construct() failed.");
+
+ r = file.Write((void*)__pIconBuffer, __iconSize);
+ SysTryReturn(NID_APP, r == E_SUCCESS, null, E_SYSTEM, "file.Write() failed.");
+
+ file.Flush();
+
+ pBitmap = _AppResourceImpl::GetNonScalingBitmapN(iconPath);
+
+ File::Remove(iconPath);
}
- SysLog(NID_APP, "iconPath = [%ls]", iconPath.GetPointer());
- pBitmap = _AppResourceImpl::GetNonScalingBitmapN(iconPath);
+ SysLog(NID_APP, "iconPath = [%ls]", iconPath.GetPointer());
return pBitmap;
}
, __pDataControlImplList(null)
, __pAppControlImplList(null)
, __pAppCategoryList(null)
+ , __pNameList(null)
, __uniqueId(0)
, __pkgId(0)
, __appFeature(0)
,__pAppInfoHandle(null)
+ , __pIconBuffer(null)
+ , __iconSize(0)
{
__pLaunchConditionImplList = new (std::nothrow) ArrayList;
SysTryReturnVoidResult(NID_APP, __pLaunchConditionImplList != null, E_OUT_OF_MEMORY, "__pLaunchConditionImplList instance must not be null.");
{
pkgmgrinfo_appinfo_destroy_appinfo(__pAppInfoHandle);
}
-
- if (File::IsFileExist(__appTempIconPath) == true)
- {
- File::Remove(__appTempIconPath);
-
- String tmp(L"/tmp/__icon/");
- Directory::Remove(tmp, true);
- }
}
const String&
#include <FIoDatabase.h>
#include <FIoDbEnumerator.h>
#include <FIoDbStatement.h>
+#include <FIoFile.h>
#include <FBaseSysLog.h>
#include <FBaseUtilStringTokenizer.h>
#include <FSecPrivilegeInfo.h>
String appDisplayName = pPackageAppInfo->GetAppDisplayName();
bool menuIconVisible = pPackageAppInfo->IsMenuIconVisible();
bool mainApp = pPackageAppInfo->IsMainApp();
- String tempIconPath = pPackageAppInfoImpl->GetAppTempIconPath();
+
+ int size = 0;
+ char* pIcon = pPackageAppInfoImpl->GetAppMenuIconBufferN(size);
+ if (pIcon)
+ {
+ pImpl->SetAppMenuIconBuffer(pIcon, size);
+ delete pIcon;
+ }
pImpl->SetAppId(appId);
pImpl->SetAppName(appName);
pImpl->SetAppDisplayName(appDisplayName);
pImpl->SetMenuIconVisible(menuIconVisible);
pImpl->SetMainApp(mainApp);
- pImpl->SetAppTempIconPath(tempIconPath);
return pInfo.release();
}
SysLog(NID_APP, "packagePath = [%s], extension = [%s]", pPackagePath.get(), pExtension.get());
bool res = true;
- result r = E_SUCCESS;
if (strcasecmp(pExtension.get(), "tpk") == 0)
{
pPackageAppInfoImpl->SetMainApp(true);
if ((pPkgInfo->icon_buf) && (pPkgInfo->icon_size > 0))
{
- String iconPath("/tmp/icon.png");
- File file;
- r = file.Construct(iconPath, "w+");
- r = file.Write(pPkgInfo->icon_buf, pPkgInfo->icon_size);
-
- pPackageAppInfoImpl->SetAppTempIconPath(iconPath);
+ pPackageAppInfoImpl->SetAppMenuIconBuffer(pPkgInfo->icon_buf, pPkgInfo->icon_size);
}
pPackageInfoImpl->AddPackageAppInfo(*pPackageAppInfo.release());
r = unzipper.UnzipTo(tmp, iconRelPath);
if (!IsFailed(r))
{
+ result r = E_SUCCESS;
+ File file;
tempIconPath = tmp + iconRelPath;
- pPackageAppInfoImpl->SetAppTempIconPath(tempIconPath);
+
+ r = file.Construct(tempIconPath, "r");
+ if (r == E_SUCCESS)
+ {
+ FileAttributes attr;
+ file.GetAttributes(tempIconPath, attr);
+ int size = (int)attr.GetFileSize();
+
+ char* pBuffer = new (std::nothrow) char[size];
+ SysTryReturn(NID_APP, pBuffer, false, E_OUT_OF_MEMORY, "pBuffer is null.");
+
+ memset(pBuffer, 0, size);
+ file.Read((void*)pBuffer, size);
+
+ pPackageAppInfoImpl->SetAppMenuIconBuffer(pBuffer, size);
+
+ Directory::Remove(tmp, true);
+ delete pBuffer;
+ }
+ else
+ {
+ SysLog(NID_APP, "file.Construct() failed.", tempIconPath.GetPointer());
+ }
}
else
{
return pPackageManagerServer;
}
-PackageInfo*
-_PackageManagerServer::GetPackageInfoFromFileN(const String& filePath) const
-{
- SysTryReturn(NID_APP, filePath.IsEmpty() == false, null, E_INVALID_ARG, "filePath is empty.");
- SysTryReturn(NID_APP, File::IsFileExist(filePath) == true, null, E_FILE_NOT_FOUND, "package is not existed.");
-
- String extension = File::GetFileExtension(filePath);
- SysTryReturn(NID_APP, extension.IsEmpty() == false, null, E_INVALID_ARG, "extension is empty.");
-
- std::unique_ptr<char[]> pPackagePath(_StringConverter::CopyToCharArrayN(filePath));
- SysTryReturn(NID_APP, pPackagePath, null, E_OUT_OF_MEMORY, "pPackagePath is null.");
-
- std::unique_ptr<char[]> pExtension(_StringConverter::CopyToCharArrayN(extension));
- SysTryReturn(NID_APP, pExtension, null, E_OUT_OF_MEMORY, "pExtension is null.");
-
- std::unique_ptr< PackageInfo > pPackageInfo(new (std::nothrow) PackageInfo);
- SysTryReturn(NID_APP, pPackageInfo, null, E_OUT_OF_MEMORY, "pPackageInfo instance must not be null.");
-
- SysLog(NID_APP, "packagePath = [%s], extension = [%s]", pPackagePath.get(), pExtension.get());
-
- bool res = true;
- result r = E_SUCCESS;
-
- if (strcasecmp(pExtension.get(), "tpk") == 0)
- {
- _PackageParser packageParser;
-
- res = packageParser.Construct(pPackageInfo.get());
- SysTryReturn(NID_APP, res, null, E_PARSING_FAILED, "Construct() is failed. [%s]", pPackagePath.get());
-
- res = packageParser.Parse(filePath);
- SysTryReturn(NID_APP, res, null, E_PARSING_FAILED, "Parse() is failed. [%s]", pPackagePath.get());
- }
- else if (strcasecmp(pExtension.get(), "wgt") == 0)
- {
- pkgmgr_info* pPkgmgrInfo = null;
-
- pPkgmgrInfo = pkgmgr_client_check_pkginfo_from_file(pPackagePath.get());
- SysTryReturn(NID_APP, pPkgmgrInfo, null, E_PARSING_FAILED, "pkgmgr_client_check_pkginfo_from_file(%s) is failed.", pPackagePath.get());
-
- _package_manager_pkg_detail_info_t* pPkgInfo = (_package_manager_pkg_detail_info_t*) pPkgmgrInfo;
- _PackageInfoImpl* pPackageInfoImpl = _PackageInfoImpl::GetInstance(pPackageInfo.get());
-
- SysLog(NID_APP, "package(%s), version(%s), label(%s), description(%s), author(%s), icon_size(%d), pkgname(%s)", pPkgInfo->pkgid, pPkgInfo->version, pPkgInfo->label,
- pPkgInfo->pkg_description, pPkgInfo->author, pPkgInfo->icon_size, pPkgInfo->pkg_name);
-
- pPackageInfoImpl->SetType(PACKAGE_TYPE_WGT);
- pPackageInfoImpl->SetId(pPkgInfo->pkgid);
- pPackageInfoImpl->SetVersion(pPkgInfo->version);
- pPackageInfoImpl->SetDisplayName(pPkgInfo->label);
- pPackageInfoImpl->SetDescription(pPkgInfo->pkg_description);
- pPackageInfoImpl->SetAuthor(pPkgInfo->author);
- pPackageInfoImpl->SetMainAppId(pPkgInfo->pkg_name);
-
- if (pPkgInfo->privilege_list)
- {
- GList* pList = null;
- pList = g_list_first(pPkgInfo->privilege_list);
- while (pList)
- {
- char* pPrivilege = (char*)pList->data;
- if (pPrivilege)
- {
- pPackageInfoImpl->AddPrivilege(*new (std::nothrow) String(pPrivilege));
- free(pPrivilege);
- }
- pList = g_list_next(pList);
- }
- g_list_free(pPkgInfo->privilege_list);
- }
-
- std::unique_ptr< PackageAppInfo > pPackageAppInfo(new (std::nothrow) PackageAppInfo);
- if (pPackageAppInfo)
- {
- _PackageAppInfoImpl* pPackageAppInfoImpl = _PackageAppInfoImpl::GetInstance(pPackageAppInfo.get());
-
- pPackageAppInfoImpl->SetAppId(pPkgInfo->pkg_name);
- pPackageAppInfoImpl->SetAppName(pPkgInfo->label);
- pPackageAppInfoImpl->SetAppDisplayName(pPkgInfo->label);
- pPackageAppInfoImpl->SetMainApp(true);
- if ((pPkgInfo->icon_buf) && (pPkgInfo->icon_size > 0))
- {
- String iconPath("/tmp/icon.png");
- File file;
- r = file.Construct(iconPath, "w+");
- r = file.Write(pPkgInfo->icon_buf, pPkgInfo->icon_size);
-
- pPackageAppInfoImpl->SetAppTempIconPath(iconPath);
- }
-
- pPackageInfoImpl->AddPackageAppInfo(*pPackageAppInfo.release());
- }
- else
- {
- SysLog(NID_APP, "pPackageAppInfo instance must not be null.");
- pkgmgr_client_free_pkginfo(pPkgmgrInfo);
- return null;
- }
-
- pkgmgr_client_free_pkginfo(pPkgmgrInfo);
- }
- else
- {
- SysTryReturn(NID_APP, false, null, E_UNSUPPORTED_FORMAT, "invalid extension! - packagePath = [%s], extension = [%s]", pPackagePath.get(), pExtension.get());
- }
-
- return pPackageInfo.release();
-}
-
PackageType
_PackageManagerServer::GetType(const PackageId& packageId) const
{
public:
static _PackageManagerServer* GetInstance(void);
- PackageInfo* GetPackageInfoFromFileN(const Tizen::Base::String& filePath) const;
PackageType GetType(const Tizen::App::PackageId& packageId) const;