#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;
using namespace Tizen::Base::Collection;
+using namespace Tizen::Graphics;
using namespace Tizen::Io;
namespace Tizen { namespace App { namespace Package
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
+{
+ Bitmap* pBitmap = null;
+ String iconPath;
+
+ 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*
+_PackageAppInfoImpl::GetAppMetadataListN(void) const
+{
+ 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*
_PackageAppInfoImpl::GetAppCategoryListN(void) const
{
- SysTryReturn(NID_APP, __pAppInfoHandle, null, E_SYSTEM, "[E_SYSTEM] __pAppInfoHandle is null.");
-
- result r = E_SUCCESS;
- int res = PMINFO_R_OK;
ArrayList* pList = null;
- pList = new (std::nothrow) ArrayList();
- SysTryReturn(NID_APP, pList, null, E_OUT_OF_MEMORY, "ArrayList creation failure.");
- pList->Construct();
-
- res = pkgmgrinfo_appinfo_foreach_category(__pAppInfoHandle, CategoryHandler, pList);
- if (res != PMINFO_R_OK)
+ if (__fromDatabase)
{
- SysLog(NID_APP, "pkgmgrinfo_appinfo_foreach_category() is failed. result = [%d]", res);
- r = E_SYSTEM;
+ SysTryReturn(NID_APP, __pAppInfoHandle, null, E_SYSTEM, "[E_SYSTEM] __pAppInfoHandle is null.");
+
+ result r = E_SUCCESS;
+ int res = PMINFO_R_OK;
- pList->RemoveAll(true);
- pList = null;
+ pList = new (std::nothrow) ArrayList();
+ SysTryReturn(NID_APP, pList, null, E_OUT_OF_MEMORY, "ArrayList creation failure.");
+ pList->Construct();
+
+ res = pkgmgrinfo_appinfo_foreach_category(__pAppInfoHandle, CategoryHandler, pList);
+ if (res != PMINFO_R_OK)
+ {
+ SysLog(NID_APP, "pkgmgrinfo_appinfo_foreach_category() is failed. result = [%d]", res);
+ r = E_SYSTEM;
+
+ pList->RemoveAll(true);
+ pList = null;
+ }
+
+ SetLastResult(r);
+
+ }
+ else
+ {
+ SysLog(NID_APP, "GetAppCategoryListN() is not available.");
}
- SetLastResult(r);
return pList;
}
return E_SUCCESS;
}
+result
+_PackageAppInfoImpl::AddCategory(String* pCategory)
+{
+ result r = E_SUCCESS;
+ r = __pAppCategoryList->Add(*pCategory);
+ SysTryReturnResult(NID_APP, !IsFailed(r), r, "__pAppCategoryList->Add() is failed.");
+
+ return r;
+}
+
+String
+_PackageAppInfoImpl::GetAppFeature(const String& key) const
+{
+ SysTryReturn(NID_APP, __appId.IsEmpty() == false, L"", E_SYSTEM, "__appId is empty.");
+
+ String value;
+ Database db;
+ String query;
+
+ query.Format(1024, L"SELECT AppFeature.VALUE FROM AppInfo, AppFeature WHERE AppFeature.ID = AppInfo.UNIQUE_ID and AppFeature.NAME = '%ls' and AppInfo.PACKAGE_NAME = '%ls'",
+ key.GetPointer(), __appId.GetPointer());
+
+ SysLog(NID_APP, "query = [%ls]", query.GetPointer());
+
+ result r = db.Construct(PACKAGE_DATABASE_FILE_NAME, "r");
+ SysTryReturn(NID_APP, r == E_SUCCESS, L"", E_SYSTEM, "db.Construct() failed. [%s]", GetErrorMessage(r));
+
+ std::unique_ptr< DbStatement > pStmt(_PackageManagerImpl::CreateStatementN(db, query));
+ SysTryReturn(NID_APP, pStmt, L"", E_SYSTEM, "CreateStatementN(%ls) failed. [%s]", query.GetPointer(), GetErrorMessage(GetLastResult()));
+
+ std::unique_ptr< DbEnumerator > pEnum(_PackageManagerImpl::ExecuteStatementN(db, pStmt.get()));
+ SysTryReturn(NID_APP, pEnum, L"", E_SYSTEM, "ExecuteStatementN() failed. [%s]", GetErrorMessage(GetLastResult()));
+
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ pEnum->GetStringAt(0, value);
+ }
+
+ SysLog(NID_APP, "value = [%ls]", value.GetPointer());
+
+ return value;
+}
+
_PackageAppInfoImpl*
_PackageAppInfoImpl::GetInstance(PackageAppInfo* pPackageAppInfo)
{
result
_PackageAppInfoImpl::Construct(const AppId& appId)
{
+ SysTryReturnResult(NID_APP, appId.IsEmpty() == false, E_INVALID_ARG, "appId is empty.");
+
int res = PMINFO_R_OK;
char* pExePath = null;
char* pDisplayName = null;
SysTryReturnResult(NID_APP, pAppId, E_OUT_OF_MEMORY, "pAppId is null");
res = pkgmgrinfo_appinfo_get_appinfo(pAppId.get(), &__pAppInfoHandle);
- SysTryReturnResult(NID_APP, res == 0, E_SYSTEM, "pkgmgrinfo_appinfo_get_appinfo failed, res = [%d]", res);
+ SysTryReturnResult(NID_APP, res == 0, E_SYSTEM, "pkgmgrinfo_appinfo_get_appinfo failed, res = [%d], appId = [%s]", res, pAppId.get());
+
+ __fromDatabase = true;
SetAppId(appId);
{
SysLog(NID_APP, "pkgmgrinfo_appinfo_get_notification_icon(): NotificationIcon = [%s]", pNotificationIcon);
String notificationIcon(pNotificationIcon);
- SetAppSettingIconPath(notificationIcon);
+ SetAppNotificationIconPath(notificationIcon);
}
else
{
res = pkgmgrinfo_appinfo_is_nodisplay(__pAppInfoHandle, &menuIconVisible);
if (res == PMINFO_R_OK)
{
- SysLog(NID_APP, "pkgmgrinfo_appinfo_is_nodisplay(): displayName = [%d]", menuIconVisible);
+ SysLog(NID_APP, "pkgmgrinfo_appinfo_is_nodisplay(): menuIconVisible = [%d]", menuIconVisible);
SetMenuIconVisible(!menuIconVisible);
}
else
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)
, __mainApp(false)
+ , __fromDatabase(false)
, __pLaunchConditionImplList(null)
, __pNotificationImplList(null)
, __pAppFeatureImplList(null)
, __pDataControlImplList(null)
, __pAppControlImplList(null)
+ , __pAppCategoryList(null)
, __uniqueId(0)
, __pkgId(0)
, __appFeature(0)
SysTryReturnVoidResult(NID_APP, __pAppControlImplList != null, E_OUT_OF_MEMORY, "__pAppControlImplList instance must not be null.");
__pAppControlImplList->Construct();
+ __pAppCategoryList = new (std::nothrow) ArrayList;
+ SysTryReturnVoidResult(NID_APP, __pAppCategoryList != null, E_OUT_OF_MEMORY, "__pAppCategoryList instance must not be null.");
+ __pAppCategoryList->Construct();
+
__pNameList = new (std::nothrow) HashMap;
SysTryReturnVoidResult(NID_APP, __pNameList != null, E_OUT_OF_MEMORY, "__pNameList instance must not be null.");
__pNameList->Construct();
__pAppControlImplList->RemoveAll(true);
delete __pAppControlImplList;
+ __pAppCategoryList->RemoveAll(true);
+ delete __pAppCategoryList;
+
__pNameList->RemoveAll(true);
delete __pNameList;
{
pkgmgrinfo_appinfo_destroy_appinfo(__pAppInfoHandle);
}
+
+ if (File::IsFileExist(__appTempIconPath) == true)
+ {
+ File::Remove(__appTempIconPath);
+ }
}
const String&
query.Format(1024, L"SELECT * FROM LaunchCondition WHERE ID = %d", GetUniqueId());
- r = db.Construct(PACKAGE_DATABASE_FILE_NAME, false);
+ r = db.Construct(PACKAGE_DATABASE_FILE_NAME, "r");
SysTryCatch(NID_APP, r == E_SUCCESS, , r, "[%s] An error occurs while opening a database.", GetErrorMessage(r));
pStmt = db.CreateStatementN(query);
query.Format(1024, L"SELECT * FROM Notification WHERE ID = %d", GetUniqueId());
- r = db.Construct(PACKAGE_DATABASE_FILE_NAME, false);
+ r = db.Construct(PACKAGE_DATABASE_FILE_NAME, "r");
SysTryCatch(NID_APP, r == E_SUCCESS, , r, "[%s] An error occurs while opening a database.", GetErrorMessage(r));
pStmt = db.CreateStatementN(query);
query.Format(1024, L"SELECT * FROM AppFeature WHERE ID = %d", GetUniqueId());
- r = db.Construct(PACKAGE_DATABASE_FILE_NAME, false);
+ r = db.Construct(PACKAGE_DATABASE_FILE_NAME, "r");
SysTryCatch(NID_APP, r == E_SUCCESS, , r, "[%s] An error occurs while opening a database.", GetErrorMessage(r));
pStmt = db.CreateStatementN(query);
query.Format(1024, L"SELECT * FROM AppFeature WHERE ID = %d", GetUniqueId());
- r = db.Construct(PACKAGE_DATABASE_FILE_NAME, false);
+ r = db.Construct(PACKAGE_DATABASE_FILE_NAME, "r");
SysTryReturn(NID_APP, r == E_SUCCESS, null, r, "[%s] An error occurs while opening a database.", GetErrorMessage(r));
const DbStatement* pStmt = db.CreateStatementN(query);
query.Format(1024, L"SELECT UNIQUE_ID FROM AppInfo WHERE APP_NAME = '%ls' and ID = %d", __name.GetPointer(), __pkgId);
- r = db.Construct(PACKAGE_DATABASE_FILE_NAME, false);
+ r = db.Construct(PACKAGE_DATABASE_FILE_NAME, "r");
SysTryCatch(NID_APP, r == E_SUCCESS, , r, "[%s] An error occurs while opening a database.", GetErrorMessage(r));
pStmt = db.CreateStatementN(query);