From 558f3a129a3c5ca6572631b7f55c8ebfabb56bc3 Mon Sep 17 00:00:00 2001 From: Duyoung Jang Date: Mon, 18 Mar 2013 21:13:30 +0900 Subject: [PATCH] GetPrivilegeListN() is added. Change-Id: I0d579ab8e86f7835f7e65eca262764c29b358830 Signed-off-by: Duyoung Jang --- src/app/inc/FAppPkg_PackageAppInfoImpl.h | 3 +- src/app/package/FAppPkg_PackageAppInfoImpl.cpp | 49 ++++++++++++++++++++++++-- src/app/package/FAppPkg_PackageInfoImpl.cpp | 12 ++++--- 3 files changed, 57 insertions(+), 7 deletions(-) diff --git a/src/app/inc/FAppPkg_PackageAppInfoImpl.h b/src/app/inc/FAppPkg_PackageAppInfoImpl.h index 1163337..2ef78e2 100755 --- a/src/app/inc/FAppPkg_PackageAppInfoImpl.h +++ b/src/app/inc/FAppPkg_PackageAppInfoImpl.h @@ -71,7 +71,7 @@ public: Tizen::Graphics::Bitmap* GetAppMenuIconN(void) const; - Tizen::Base::Collection::IMap* GetAppMetadataListN(void) const; + Tizen::Base::Collection::HashMap* GetAppMetadataListN(void) const; Tizen::Base::Collection::ArrayList* GetAppCategoryListN(void) const; bool IsMenuIconVisible(void) const; @@ -152,6 +152,7 @@ public: private: static int CategoryHandler(const char* pCategoryName, void* pUserData); + static int MetadataHandler(const char* pKey, const char* pValue, void* pUserData); private: _PackageAppInfoImpl(const _PackageAppInfoImpl& value); diff --git a/src/app/package/FAppPkg_PackageAppInfoImpl.cpp b/src/app/package/FAppPkg_PackageAppInfoImpl.cpp index d5284f2..d372654 100755 --- a/src/app/package/FAppPkg_PackageAppInfoImpl.cpp +++ b/src/app/package/FAppPkg_PackageAppInfoImpl.cpp @@ -131,10 +131,40 @@ _PackageAppInfoImpl::GetAppMenuIconN(void) const return null; } -IMap* +HashMap* _PackageAppInfoImpl::GetAppMetadataListN(void) const { - return null; + HashMap* pMap = null; + + if (__fromDatabase) + { + SysTryReturn(NID_APP, __pAppInfoHandle, null, E_SYSTEM, "__pAppInfoHandle is null."); + + result r = E_SUCCESS; + int res = PMINFO_R_OK; + + pMap = new (std::nothrow) HashMap(); + SysTryReturn(NID_APP, pMap, null, E_OUT_OF_MEMORY, "ArrayList creation failure."); + pMap->Construct(); + + res = pkgmgrinfo_appinfo_foreach_metadata(__pAppInfoHandle, MetadataHandler, pMap); + if (res != PMINFO_R_OK) + { + SysLog(NID_APP, "pkgmgrinfo_appinfo_foreach_metadata() is failed. result = [%d]", res); + r = E_SYSTEM; + + pMap->RemoveAll(true); + pMap = null; + } + + SetLastResult(r); + } + else + { + SysLog(NID_APP, "GetAppMetadataListN() is not available."); + } + + return pMap; } ArrayList* @@ -358,6 +388,21 @@ _PackageAppInfoImpl::CategoryHandler(const char* pCategoryName, void* pUserData) return 0; } +int +_PackageAppInfoImpl::MetadataHandler(const char* pKey, const char* pValue, void* pUserData) +{ + SysTryReturn(NID_APP, pKey, 0, E_SYSTEM, "pKey must not be null."); + SysTryReturn(NID_APP, pValue, 0, E_SYSTEM, "pValue must not be null."); + SysTryReturn(NID_APP, pUserData, 0, E_SYSTEM, "pUserData must not be null."); + + SysLog(NID_APP, "Key = [%s], Value = [%s]", pKey, pValue); + + MultiHashMap* pMultiMap = (MultiHashMap*) pUserData; + pMultiMap->Add(*(new (std::nothrow) String(pKey)), *(new (std::nothrow) String(pValue))); + + return 0; +} + // to be reviewed _PackageAppInfoImpl::_PackageAppInfoImpl(void) : __launchingIconVisible(true) diff --git a/src/app/package/FAppPkg_PackageInfoImpl.cpp b/src/app/package/FAppPkg_PackageInfoImpl.cpp index 9748972..fd97e11 100755 --- a/src/app/package/FAppPkg_PackageInfoImpl.cpp +++ b/src/app/package/FAppPkg_PackageInfoImpl.cpp @@ -31,6 +31,7 @@ #include #include #include +#include #include #include @@ -41,8 +42,9 @@ using namespace Tizen::Base; using namespace Tizen::Base::Collection; -using namespace Tizen::Io; using namespace Tizen::Base::Utility; +using namespace Tizen::Io; +using namespace Tizen::Security; namespace Tizen { namespace App { namespace Package { @@ -439,10 +441,12 @@ _PackageInfoImpl::GetPrivilegeListN(void) const String* pPrivilege = dynamic_cast (__pPrivilegeList->GetAt(i)); if (pPrivilege) { - String* pPrivilegeString = new (std::nothrow) String(*pPrivilege); - SysTryReturn(NID_APP, pPrivilegeString, null, E_OUT_OF_MEMORY, "pPrivilegeString must not be null."); + PrivilegeInfo* pPrivilegeInfo = new (std::nothrow) PrivilegeInfo; + SysTryReturn(NID_APP, pPrivilegeInfo, null, E_OUT_OF_MEMORY, "pPrivilegeInfo must not be null."); + + pPrivilegeInfo->Construct(*pPrivilege); - r = pPrivilegeList->Add(*pPrivilegeString); + r = pPrivilegeList->Add(*pPrivilegeInfo); } } -- 2.7.4