GetnMenuIconPathN() is updated.
authorDuyoung Jang <duyoung.jang@samsung.com>
Fri, 29 Mar 2013 07:32:18 +0000 (16:32 +0900)
committerDuyoung Jang <duyoung.jang@samsung.com>
Fri, 29 Mar 2013 07:32:18 +0000 (16:32 +0900)
Change-Id: Id576c3fbe922edc4bc33382735f575e2a5005372
Signed-off-by: Duyoung Jang <duyoung.jang@samsung.com>
src/app/CMakeLists.txt
src/app/inc/FAppPkg_PackageAppInfoImpl.h
src/app/inc/FAppPkg_PackageParser.h
src/app/package/FAppPkg_PackageAppInfoImpl.cpp
src/app/package/FAppPkg_PackageInfoImpl.cpp
src/app/package/FAppPkg_PackageManagerImpl.cpp
src/app/package/FAppPkg_PackageParser.cpp

index 844963d..26f22d0 100644 (file)
@@ -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
index ee150b5..7ec25a1 100755 (executable)
@@ -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;
index 62a2cd5..70c1e7a 100755 (executable)
@@ -150,6 +150,8 @@ private:
        _PackageInfoImpl* __pPackageInfoImpl;
        PackageAppInfo* __pAppInfo;
 
+       Tizen::Base::String __packagePath;
+
        char* __pDefaultIconType;
        bool __isDefaultName;
 }; // _PackageParser
index 9aa0d9a..ad1169b 100755 (executable)
 #include <FIoDatabase.h>
 #include <FIoDbEnumerator.h>
 #include <FIoDbStatement.h>
+#include <FIoFile.h>
 #include <FBase_StringConverter.h>
 
 #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&
index 47478e4..40421d2 100755 (executable)
@@ -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;
                        }
index aef44b2..e4f72ed 100755 (executable)
@@ -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());
 
index 13496b0..94651e0 100755 (executable)
@@ -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;
 }