Add type parameter for performance
[platform/framework/native/appfw.git] / src / app / package / FAppPkg_PackageInfoImpl.cpp
index a819fb1..0496213 100755 (executable)
@@ -29,6 +29,7 @@
 #include <FIoDatabase.h>
 #include <FIoDbEnumerator.h>
 #include <FIoDbStatement.h>
+#include <FIoFile.h>
 #include <FBaseSysLog.h>
 #include <FBaseUtilStringTokenizer.h>
 #include <FSecPrivilegeInfo.h>
@@ -226,15 +227,19 @@ _PackageInfoImpl::GetSize(void) const
        if (__fromDatabase)
        {
                SysTryReturn(NID_APP, __id.IsEmpty() == false, 0, E_SYSTEM, "id is IsEmpty.");
+               SysTryReturn(NID_APP, __type.IsEmpty() == false, 0, E_SYSTEM, "type is IsEmpty.");
 
                std::unique_ptr<char[]> pPackage(_StringConverter::CopyToCharArrayN(__id));
                SysTryReturn(NID_APP, pPackage, 0, E_OUT_OF_MEMORY, "pPackage is null.");
 
+               std::unique_ptr<char[]> pType(_StringConverter::CopyToCharArrayN(__type));
+               SysTryReturn(NID_APP, pType, 0, E_OUT_OF_MEMORY, "pType is null.");
+
                void* pClient = pkgmgr_client_new(PC_REQUEST);
                SysTryReturn(NID_APP, pClient, 0, E_SYSTEM, "pkgmgr_client_new() failed.");
 
-               SysLog(NID_APP, "pkgmgr_client_request_service(PM_REQUEST_GET_SIZE, %s)", pPackage.get());
-               size = pkgmgr_client_request_service(PM_REQUEST_GET_SIZE, 0, pClient, null, pPackage.get(), null, null, null);
+               SysLog(NID_APP, "pkgmgr_client_request_service(PM_REQUEST_GET_SIZE, %s, %s)", pType.get(), pPackage.get());
+               size = pkgmgr_client_request_service(PM_REQUEST_GET_SIZE, 0, pClient, pType.get(), pPackage.get(), null, null, null);
 
          pkgmgr_client_free(pClient);
        }
@@ -256,15 +261,19 @@ _PackageInfoImpl::GetDataSize(void) const
        if (__fromDatabase)
        {
                SysTryReturn(NID_APP, __id.IsEmpty() == false, 0, E_SYSTEM, "id is IsEmpty.");
+               SysTryReturn(NID_APP, __type.IsEmpty() == false, 0, E_SYSTEM, "type is IsEmpty.");
 
                std::unique_ptr<char[]> pPackage(_StringConverter::CopyToCharArrayN(__id));
                SysTryReturn(NID_APP, pPackage, 0, E_OUT_OF_MEMORY, "pPackage is null.");
 
+               std::unique_ptr<char[]> pType(_StringConverter::CopyToCharArrayN(__type));
+               SysTryReturn(NID_APP, pType, 0, E_OUT_OF_MEMORY, "pType is null.");
+
                void* pClient = pkgmgr_client_new(PC_REQUEST);
                SysTryReturn(NID_APP, pClient, 0, E_SYSTEM, "pkgmgr_client_new() failed.");
 
-               SysLog(NID_APP, "pkgmgr_client_request_service(PM_REQUEST_GET_SIZE, %s)", pPackage.get());
-               dataSize = pkgmgr_client_request_service(PM_REQUEST_GET_SIZE, 1, pClient, null, pPackage.get(), null, null, null);
+               SysLog(NID_APP, "pkgmgr_client_request_service(PM_REQUEST_GET_SIZE, %s, %s)", pType.get(), pPackage.get());
+               dataSize = pkgmgr_client_request_service(PM_REQUEST_GET_SIZE, 1, pClient, pType.get(), pPackage.get(), null, null, null);
 
          pkgmgr_client_free(pClient);
        }
@@ -420,14 +429,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();
                        }
@@ -554,6 +569,18 @@ _PackageInfoImpl::AddPrivilege(const String& privilege)
        return r;
 }
 
+bool
+_PackageInfoImpl::IsPreloaded(void) const
+{
+       return __preloaded;
+}
+
+bool
+_PackageInfoImpl::IsUpdated(void) const
+{
+       return __updated;
+}
+
 result
 _PackageInfoImpl::AddPackageAppInfo(const PackageAppInfo& packageAppInfo)
 {
@@ -578,6 +605,8 @@ _PackageInfoImpl::_PackageInfoImpl(void)
        , __uninstallable(true)
        , __movable(false)
        , __downloaded(false)
+       , __preloaded(false)
+       , __updated(false)
        , __iconAvailable(false)
        , __externalStorage(false)
        , __fromDatabase(false)
@@ -1041,8 +1070,8 @@ _PackageInfoImpl::Construct(const PackageId& packageId)
        pkgmgrinfo_installed_storage storage = PMINFO_INTERNAL_STORAGE;
        bool removable = true;
        bool movable = true;
-       bool preloaded = true;
-       bool updated = true;
+       bool preloaded = false;
+       bool updated = false;
 
        std::unique_ptr<char[]> pPackageId(_StringConverter::CopyToCharArrayN(packageId));
        SysTryReturnResult(NID_APP, pPackageId, E_OUT_OF_MEMORY, "pPackageId is null");
@@ -1130,37 +1159,41 @@ _PackageInfoImpl::Construct(const PackageId& packageId)
                SysLog(NID_APP, "pkgmgrinfo_pkginfo_is_movable() is failed. result = [%d]", result);
        }
 
+       result = pkgmgrinfo_pkginfo_is_preload(__packageInfoHandle, &preloaded);
+       if (result == PMINFO_R_OK)
+       {
+               __preloaded = preloaded;
+       }
+       else
+       {
+               SysLog(NID_APP, "pkgmgrinfo_pkginfo_is_preload() is failed. result = [%d]", result);
+       }
+
        result = pkgmgrinfo_pkginfo_is_update(__packageInfoHandle, &updated);
        if (result == PMINFO_R_OK)
        {
-               if (updated == true)
+               __updated = updated;
+       }
+       else
+       {
+               SysLog(NID_APP, "pkgmgrinfo_pkginfo_is_update() is failed. result = [%d]", result);
+       }
+
+       if (updated == true)
+       {
+               __downloaded = true;
+       }
+       else
+       {
+               if (preloaded == true)
                {
-                       __downloaded = true;
+                       __downloaded = false;
                }
                else
                {
-                       result = pkgmgrinfo_pkginfo_is_preload(__packageInfoHandle, &preloaded);
-                       if (result == PMINFO_R_OK)
-                       {
-                               if (preloaded == true)
-                               {
-                                       __downloaded = false;
-                               }
-                               else
-                               {
-                                       __downloaded = true;
-                               }
-                       }
-                       else
-                       {
-                               SysLog(NID_APP, "pkgmgrinfo_pkginfo_is_preload() is failed. result = [%d]", result);
-                       }
+                       __downloaded = true;
                }
        }
-       else
-       {
-               SysLog(NID_APP, "pkgmgrinfo_pkginfo_is_update() is failed. result = [%d]", result);
-       }
 
        result = pkgmgrinfo_pkginfo_get_description(__packageInfoHandle, &pDescription);
        if (result == PMINFO_R_OK)
@@ -1187,8 +1220,6 @@ _PackageInfoImpl::Construct(const PackageId& packageId)
        result = pkgmgrinfo_pkginfo_get_installed_time(__packageInfoHandle, &installedTime);
        if (result == PMINFO_R_OK)
        {
-               SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_installed_time(): installedTime = [%d]", installedTime);
-
                time_t dateTime = (time_t) installedTime;
                struct tm* pGmTime = null;
 
@@ -1198,7 +1229,6 @@ _PackageInfoImpl::Construct(const PackageId& packageId)
                        DateTime tempTime;
                        tempTime.SetValue(pGmTime->tm_year + 1900, pGmTime->tm_mon + 1, pGmTime->tm_mday, pGmTime->tm_hour, pGmTime->tm_min, pGmTime->tm_sec);
                        __dateTime = tempTime;
-                       SysLog(NID_APP, "Time %d %d/%d, %d:%d:%d", tempTime.GetYear(), tempTime.GetMonth(), tempTime.GetDay(), tempTime.GetHour(), tempTime.GetMinute(), tempTime.GetSecond());
                }
        }
        else