From 029d7bcea11da84ba98a44001607f992f8b38018 Mon Sep 17 00:00:00 2001 From: Duyoung Jang Date: Tue, 25 Jun 2013 20:35:21 +0900 Subject: [PATCH] Modify GetMenuIconN() API Change-Id: I067729fd4e1b75168e19dc54170ce7b725bd404e Signed-off-by: Duyoung Jang --- src/app/inc/FAppPkg_PackageAppInfoImpl.h | 8 +- src/app/package/FAppPkg_PackageAppInfoImpl.cpp | 74 ++++++++++---- src/app/package/FAppPkg_PackageInfoImpl.cpp | 11 ++- src/app/package/FAppPkg_PackageManagerImpl.cpp | 8 +- src/app/package/FAppPkg_PackageParser.cpp | 26 ++++- .../app/package/FAppPkg_PackageManagerServer.cpp | 109 --------------------- src/server/inc/FAppPkg_PackageManagerServer.h | 1 - 7 files changed, 96 insertions(+), 141 deletions(-) diff --git a/src/app/inc/FAppPkg_PackageAppInfoImpl.h b/src/app/inc/FAppPkg_PackageAppInfoImpl.h index f1e4576..e881ecf 100644 --- a/src/app/inc/FAppPkg_PackageAppInfoImpl.h +++ b/src/app/inc/FAppPkg_PackageAppInfoImpl.h @@ -68,8 +68,8 @@ public: 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; @@ -168,7 +168,6 @@ private: Tizen::Base::String __appIconPath; Tizen::Base::String __appSettingIconPath; Tizen::Base::String __appNotificationIconPath; - Tizen::Base::String __appTempIconPath; bool __launchingIconVisible; bool __mainApp; @@ -202,6 +201,9 @@ private: void* __pAppInfoHandle; + char* __pIconBuffer; + int __iconSize; + friend class PackageAppInfo; }; // _PackageAppInfoImpl diff --git a/src/app/package/FAppPkg_PackageAppInfoImpl.cpp b/src/app/package/FAppPkg_PackageAppInfoImpl.cpp index 1d69ad8..c076e18 100755 --- a/src/app/package/FAppPkg_PackageAppInfoImpl.cpp +++ b/src/app/package/FAppPkg_PackageAppInfoImpl.cpp @@ -106,7 +106,7 @@ _PackageAppInfoImpl::GetAppSettingIconPath(void) const } result -_PackageAppInfoImpl::SetAppSettingIconPath(const Tizen::Base::String& appSettingIcon) +_PackageAppInfoImpl::SetAppSettingIconPath(const String& appSettingIcon) { __appSettingIconPath = appSettingIcon; return E_SUCCESS; @@ -125,16 +125,40 @@ _PackageAppInfoImpl::SetAppNotificationIconPath(const String& notificationIconPa 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; } @@ -152,20 +176,39 @@ _PackageAppInfoImpl::GetAppMenuIconN(void) const } 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; } @@ -474,10 +517,13 @@ _PackageAppInfoImpl::_PackageAppInfoImpl(void) , __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."); @@ -536,14 +582,6 @@ _PackageAppInfoImpl::~_PackageAppInfoImpl(void) { pkgmgrinfo_appinfo_destroy_appinfo(__pAppInfoHandle); } - - if (File::IsFileExist(__appTempIconPath) == true) - { - File::Remove(__appTempIconPath); - - String tmp(L"/tmp/__icon/"); - Directory::Remove(tmp, true); - } } const String& diff --git a/src/app/package/FAppPkg_PackageInfoImpl.cpp b/src/app/package/FAppPkg_PackageInfoImpl.cpp index a819fb1..b4fd895 100755 --- a/src/app/package/FAppPkg_PackageInfoImpl.cpp +++ b/src/app/package/FAppPkg_PackageInfoImpl.cpp @@ -29,6 +29,7 @@ #include #include #include +#include #include #include #include @@ -420,14 +421,20 @@ _PackageInfoImpl::GetPackageAppInfoN(const AppId& appId) const 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(); } diff --git a/src/app/package/FAppPkg_PackageManagerImpl.cpp b/src/app/package/FAppPkg_PackageManagerImpl.cpp index 6022a6a..f047532 100755 --- a/src/app/package/FAppPkg_PackageManagerImpl.cpp +++ b/src/app/package/FAppPkg_PackageManagerImpl.cpp @@ -739,7 +739,6 @@ _PackageManagerImpl::GetPackageInfoFromFileN(const String& filePath) const SysLog(NID_APP, "packagePath = [%s], extension = [%s]", pPackagePath.get(), pExtension.get()); bool res = true; - result r = E_SUCCESS; if (strcasecmp(pExtension.get(), "tpk") == 0) { @@ -800,12 +799,7 @@ _PackageManagerImpl::GetPackageInfoFromFileN(const String& filePath) const 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()); diff --git a/src/app/package/FAppPkg_PackageParser.cpp b/src/app/package/FAppPkg_PackageParser.cpp index 46db347..6d2e9a5 100755 --- a/src/app/package/FAppPkg_PackageParser.cpp +++ b/src/app/package/FAppPkg_PackageParser.cpp @@ -827,8 +827,32 @@ _PackageParser::OnIconValue(const char* pCharacters) 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 { diff --git a/src/server/app/package/FAppPkg_PackageManagerServer.cpp b/src/server/app/package/FAppPkg_PackageManagerServer.cpp index 744f0c1..9e87de7 100755 --- a/src/server/app/package/FAppPkg_PackageManagerServer.cpp +++ b/src/server/app/package/FAppPkg_PackageManagerServer.cpp @@ -63,115 +63,6 @@ _PackageManagerServer::GetInstance(void) 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 pPackagePath(_StringConverter::CopyToCharArrayN(filePath)); - SysTryReturn(NID_APP, pPackagePath, null, E_OUT_OF_MEMORY, "pPackagePath is null."); - - std::unique_ptr 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 { diff --git a/src/server/inc/FAppPkg_PackageManagerServer.h b/src/server/inc/FAppPkg_PackageManagerServer.h index 0da3aa2..a362e3e 100644 --- a/src/server/inc/FAppPkg_PackageManagerServer.h +++ b/src/server/inc/FAppPkg_PackageManagerServer.h @@ -41,7 +41,6 @@ class _OSP_EXPORT_ _PackageManagerServer public: static _PackageManagerServer* GetInstance(void); - PackageInfo* GetPackageInfoFromFileN(const Tizen::Base::String& filePath) const; PackageType GetType(const Tizen::App::PackageId& packageId) const; -- 2.7.4