From da71ebe9807e906dad9419170d6713d94c92b5d5 Mon Sep 17 00:00:00 2001 From: Duyoung Jang Date: Fri, 29 Mar 2013 16:32:18 +0900 Subject: [PATCH] GetnMenuIconPathN() is updated. Change-Id: Id576c3fbe922edc4bc33382735f575e2a5005372 Signed-off-by: Duyoung Jang --- src/app/CMakeLists.txt | 1 + src/app/inc/FAppPkg_PackageAppInfoImpl.h | 4 +++ src/app/inc/FAppPkg_PackageParser.h | 2 ++ src/app/package/FAppPkg_PackageAppInfoImpl.cpp | 42 ++++++++++++++++++++++++-- src/app/package/FAppPkg_PackageInfoImpl.cpp | 21 ++++++++----- src/app/package/FAppPkg_PackageManagerImpl.cpp | 13 ++++++-- src/app/package/FAppPkg_PackageParser.cpp | 34 +++++++++++++-------- 7 files changed, 93 insertions(+), 24 deletions(-) diff --git a/src/app/CMakeLists.txt b/src/app/CMakeLists.txt index 844963d..26f22d0 100644 --- a/src/app/CMakeLists.txt +++ b/src/app/CMakeLists.txt @@ -3,6 +3,7 @@ SET (this_target app) INCLUDE_DIRECTORIES ( ${SLP_INCLUDE_DIRS} ${CMAKE_SOURCE_DIR}/inc + ${CMAKE_SOURCE_DIR}/src/app ${CMAKE_SOURCE_DIR}/src/base/inc ${CMAKE_SOURCE_DIR}/src/io/inc ${CMAKE_SOURCE_DIR}/src/system/inc diff --git a/src/app/inc/FAppPkg_PackageAppInfoImpl.h b/src/app/inc/FAppPkg_PackageAppInfoImpl.h index ee150b5..7ec25a1 100755 --- a/src/app/inc/FAppPkg_PackageAppInfoImpl.h +++ b/src/app/inc/FAppPkg_PackageAppInfoImpl.h @@ -69,6 +69,9 @@ 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); + Tizen::Graphics::Bitmap* GetAppMenuIconN(void) const; Tizen::Base::Collection::HashMap* GetAppMetadataListN(void) const; @@ -166,6 +169,7 @@ private: Tizen::Base::String __appIconPath; Tizen::Base::String __appSettingIconPath; Tizen::Base::String __appNotificationIconPath; + Tizen::Base::String __appTempIconPath; bool __launchingIconVisible; bool __mainApp; diff --git a/src/app/inc/FAppPkg_PackageParser.h b/src/app/inc/FAppPkg_PackageParser.h index 62a2cd5..70c1e7a 100755 --- a/src/app/inc/FAppPkg_PackageParser.h +++ b/src/app/inc/FAppPkg_PackageParser.h @@ -150,6 +150,8 @@ private: _PackageInfoImpl* __pPackageInfoImpl; PackageAppInfo* __pAppInfo; + Tizen::Base::String __packagePath; + char* __pDefaultIconType; bool __isDefaultName; }; // _PackageParser diff --git a/src/app/package/FAppPkg_PackageAppInfoImpl.cpp b/src/app/package/FAppPkg_PackageAppInfoImpl.cpp index 9aa0d9a..ad1169b 100755 --- a/src/app/package/FAppPkg_PackageAppInfoImpl.cpp +++ b/src/app/package/FAppPkg_PackageAppInfoImpl.cpp @@ -32,9 +32,11 @@ #include #include #include +#include #include #include "FAppPkg_PackageManagerImpl.h" +#include "FApp_AppResourceImpl.h" #include "FApp_TemplateUtil.h" using namespace Tizen::Base; @@ -123,12 +125,43 @@ _PackageAppInfoImpl::SetAppNotificationIconPath(const String& notificationIconPa return E_SUCCESS; } +const String& +_PackageAppInfoImpl::GetAppTempIconPath(void) const +{ + return __appTempIconPath; +} + +result +_PackageAppInfoImpl::SetAppTempIconPath(const String& tempIconPath) +{ + __appTempIconPath = tempIconPath; + return E_SUCCESS; +} + Bitmap* _PackageAppInfoImpl::GetAppMenuIconN(void) const { - SysTryReturn(NID_APP, __appIconPath.IsEmpty() == false, null, E_FILE_NOT_FOUND, "appIconPath() is empty."); + Bitmap* pBitmap = null; + String iconPath; - return null; + if (__fromDatabase) + { + SysTryReturn(NID_APP, __appIconPath.IsEmpty() == false, null, E_FILE_NOT_FOUND, "appIconPath() is empty."); + + iconPath = __appIconPath; + } + else + { + SysTryReturn(NID_APP, __appTempIconPath.IsEmpty() == false, null, E_FILE_NOT_FOUND, "__appTempIconPath() is empty."); + + iconPath = __appTempIconPath; + } + + SysLog(NID_APP, "iconPath = [%ls]", iconPath.GetPointer()); + + pBitmap = _AppResourceImpl::GetNonScalingBitmapN(iconPath); + + return pBitmap; } HashMap* @@ -509,6 +542,11 @@ _PackageAppInfoImpl::~_PackageAppInfoImpl(void) { pkgmgrinfo_appinfo_destroy_appinfo(__pAppInfoHandle); } + + if (File::IsFileExist(__appTempIconPath) == true) + { + File::Remove(__appTempIconPath); + } } const String& diff --git a/src/app/package/FAppPkg_PackageInfoImpl.cpp b/src/app/package/FAppPkg_PackageInfoImpl.cpp index 47478e4..40421d2 100755 --- a/src/app/package/FAppPkg_PackageInfoImpl.cpp +++ b/src/app/package/FAppPkg_PackageInfoImpl.cpp @@ -392,22 +392,27 @@ _PackageInfoImpl::GetPackageAppInfoN(const AppId& appId) const continue; } + _PackageAppInfoImpl* pPackageAppInfoImpl = _PackageAppInfoImpl::GetInstance(pPackageAppInfo); + SysTryReturn(NID_APP, pPackageAppInfoImpl, null, E_SYSTEM, "pPackageAppInfoImpl is null."); + PackageAppInfo* pInfo = new (std::nothrow) PackageAppInfo; SysTryReturn(NID_APP, pInfo, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Insufficient memory"); - _PackageAppInfoImpl* pPackageAppInfoImpl = _PackageAppInfoImpl::GetInstance(pInfo); - SysTryReturn(NID_APP, pPackageAppInfoImpl, null, E_SYSTEM, "pPackageAppInfoImpl is null."); + _PackageAppInfoImpl* pImpl = _PackageAppInfoImpl::GetInstance(pInfo); + SysTryReturn(NID_APP, pImpl, null, E_SYSTEM, "pImpl is null."); String appName = pPackageAppInfo->GetAppName(); String appDisplayName = pPackageAppInfo->GetAppDisplayName(); bool menuIconVisible = pPackageAppInfo->IsMenuIconVisible(); bool mainApp = pPackageAppInfo->IsMainApp(); - - pPackageAppInfoImpl->SetAppId(appId); - pPackageAppInfoImpl->SetAppName(appName); - pPackageAppInfoImpl->SetAppDisplayName(appDisplayName); - pPackageAppInfoImpl->SetMenuIconVisible(menuIconVisible); - pPackageAppInfoImpl->SetMainApp(mainApp); + String tempIconPath = pPackageAppInfoImpl->GetAppTempIconPath(); + + pImpl->SetAppId(appId); + pImpl->SetAppName(appName); + pImpl->SetAppDisplayName(appDisplayName); + pImpl->SetMenuIconVisible(menuIconVisible); + pImpl->SetMainApp(mainApp); + pImpl->SetAppTempIconPath(tempIconPath); return pInfo; } diff --git a/src/app/package/FAppPkg_PackageManagerImpl.cpp b/src/app/package/FAppPkg_PackageManagerImpl.cpp index aef44b2..e4f72ed 100755 --- a/src/app/package/FAppPkg_PackageManagerImpl.cpp +++ b/src/app/package/FAppPkg_PackageManagerImpl.cpp @@ -747,7 +747,8 @@ _PackageManagerImpl::GetPackageInfoFromFileN(const String& filePath) const _package_manager_pkg_detail_info_t* pPkgInfo = (_package_manager_pkg_detail_info_t*) pPkgmgrInfo; _PackageInfoImpl* pPackageInfoImpl = _PackageInfoImpl::GetInstance(pPackageInfo.get()); - SysLog(NID_APP, "id(%s), version(%s), label(%s), description(%s), author(%s)", pPkgInfo->pkgid, pPkgInfo->version, pPkgInfo->label, pPkgInfo->pkg_description, pPkgInfo->author); + SysLog(NID_APP, "id(%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); @@ -782,7 +783,15 @@ _PackageManagerImpl::GetPackageInfoFromFileN(const String& filePath) const pPackageAppInfoImpl->SetAppName(pPkgInfo->label); pPackageAppInfoImpl->SetAppDisplayName(pPkgInfo->label); pPackageAppInfoImpl->SetMainApp(true); - // icon - pPkgInfo->icon_buf + if ((pPkgInfo->icon_buf) && (pPkgInfo->icon_size > 0)) + { + String iconPath("/tmp/icon.png"); + File file; + file.Construct(iconPath, "w+"); + file.Write(pPkgInfo->icon_buf, pPkgInfo->icon_size); + + pPackageAppInfoImpl->SetAppTempIconPath(iconPath); + } pPackageInfoImpl->AddPackageAppInfo(*pPackageAppInfo.release()); diff --git a/src/app/package/FAppPkg_PackageParser.cpp b/src/app/package/FAppPkg_PackageParser.cpp index 13496b0..94651e0 100755 --- a/src/app/package/FAppPkg_PackageParser.cpp +++ b/src/app/package/FAppPkg_PackageParser.cpp @@ -513,6 +513,8 @@ _PackageParser::Construct(PackageInfo* pPackageInfo) bool _PackageParser::Parse(const String& packagepath) { + __packagePath = packagepath; + bool res = true; FileUnzipper unzipper; @@ -794,14 +796,15 @@ _PackageParser::OnIconValue(const char* pCharacters) SysTryReturn(NID_APP, pSection, true, E_SYSTEM, "pSection is null"); String iconRelPath; + String tempIconPath; if (strcasecmp(__pDefaultIconType, "Xhigh") == 0) { - iconRelPath.Format(1024, L"screen-density-xhigh/%s", pCharacters); + iconRelPath.Format(1024, L"shared/res/screen-density-xhigh/%s", pCharacters); } else if (strcasecmp(__pDefaultIconType, "High") == 0) { - iconRelPath.Format(1024, L"screen-density-high/%s", pCharacters); + iconRelPath.Format(1024, L"shared/res/screen-density-high/%s", pCharacters); } else { @@ -810,18 +813,25 @@ _PackageParser::OnIconValue(const char* pCharacters) if (strcasecmp(pSection, "MainMenu") == 0) { - pPackageAppInfoImpl->SetAppMenuIconPath(iconRelPath); - } - else if (strcasecmp(pSection, "Setting") == 0) - { - pPackageAppInfoImpl->SetAppSettingIconPath(iconRelPath); - } - else if (strcasecmp(pSection, "Notification") == 0) - { - pPackageAppInfoImpl->SetAppNotificationIconPath(iconRelPath); + FileUnzipper unzipper; + String tmp(L"/tmp/"); + + result r = unzipper.Construct(__packagePath); + SysTryReturn(NID_APP, !IsFailed(r), false, E_SYSTEM, "unzipper.Construct() failed."); + + r = unzipper.UnzipTo(tmp, iconRelPath); + if (!IsFailed(r)) + { + tempIconPath = tmp + iconRelPath; + pPackageAppInfoImpl->SetAppTempIconPath(tempIconPath); + } + else + { + SysLog(NID_APP, "UnzipTo() is failed."); + } } - SysLog(NID_APP, "Section = [%s], Icon = [%ls]", pSection, iconRelPath.GetPointer()); + SysLog(NID_APP, "Section = [%s], Icon = [%ls], TempIcon = [%ls]", pSection, iconRelPath.GetPointer(), tempIconPath.GetPointer()); return true; } -- 2.7.4