#include <aul.h>
#include <bundle.h>
#include <appsvc/appsvc.h>
-#include <app_manager.h>
-#include <heynoti.h>
+#include <vconf.h>
+#include <pkgmgr-info.h>
#include <FBaseObject.h>
#include <FBaseString.h>
#include "FAppPkg_PackageManagerImpl.h"
#include "FApp_Types.h"
#include "FApp_Aul.h"
+#include "FApp_AppArg.h"
#include "FApp_TemplateUtil.h"
}
result
-_Aul::SendResult(bundle* b, appsvc_result_val res)
+_Aul::SendResult(bundle* b, appsvc_result_val res, bool isSubMode, bool isServiceApp)
{
// to skip error handling, of appsvc_send_result, use aul_send_service_result() directly.
//int ret = appsvc_send_result(b, res);
snprintf(tmp, 32, "%d", static_cast<int>(res));
appsvc_add_data(b, APP_SVC_K_RES_VAL, tmp);
+ if (isSubMode)
+ {
+ _AppArg::UpdateSubMode(b);
+ }
+
+ if (isServiceApp)
+ {
+ _AppArg::UpdateServiceApp(b);
+ }
+
const int aul_ret = aul_send_service_result(b);
result r = GetConvertedResult(aul_ret, "SendResult");
bool
_Aul::IsRunning(const String& appId)
{
- bool isRunning = false;
- std::unique_ptr<char[]> pSlpPackageName(_StringConverter::CopyToCharArrayN(appId));
+ std::unique_ptr<char[]> pPackageId(_StringConverter::CopyToCharArrayN(appId));
- app_manager_is_running(pSlpPackageName.get(), &isRunning);
+ const bool isRunning = (aul_app_is_running(pPackageId.get()) > 0);
SysLog(NID_APP, "'%ls' %s running now.", appId.GetPointer(), (isRunning) ? "is" : "is NOT");
return isRunning;
result
_Aul::TerminateApplicationByPid(int pid)
{
- int ret_aul = aul_terminate_pid(pid);
+ int ret_aul = aul_subapp_terminate_request_pid(pid);
return GetConvertedResult(ret_aul, "TerminateApplicationByPid");
}
return r;
}
+typedef void (* cbForVconf)(keynode_t* node, void *pData);
+
result
-_Aul::SetPowerOffNotiListener( void (*powerOffCb)(void *pData), void *pData)
+_Aul::SetPowerOffNotiListener( void (*powerOffCb)(void* node, void *pData), void *pData)
{
+
+#if 1
+ int ret = vconf_notify_key_changed(VCONFKEY_SYSMAN_POWER_OFF_STATUS, (cbForVconf)powerOffCb, pData);
+ SysTryReturnResult(NID_SYS, ret == 0, E_SYSTEM, "It failed to set power off");
+#else
int heyFd = heynoti_init();
SysTryReturnResult(NID_APP, heyFd >= 0, E_SYSTEM, "heynoti_init failed.");
ret = heynoti_attach_handler(heyFd);
SysTryReturnResult(NID_APP, ret >= 0, E_SYSTEM, "heynoti_attach_handler failed.");
+#endif
return E_SUCCESS;
}
}
+String
+_Aul::GetMainAppId(const char* appid)
+{
+ pkgmgrinfo_appinfo_h handle = NULL;
+ int ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
+ if (ret != PMINFO_R_OK)
+ {
+ return String();
+ }
+
+ char* mainid = NULL;
+ ret = pkgmgrinfo_appinfo_get_submode_mainid(handle, &mainid);
+ SysTryLog(NID_APP, ret == PMINFO_R_OK, "Cannot get main id for %s.", appid);
+
+ const String tmp = String(mainid);
+ pkgmgrinfo_appinfo_destroy_appinfo(handle);
+ return tmp;
+}
+
+
AppId
_Aul::GetRealAppId(const AppId& appId)
{
String temp;
- // [INFO] ugly code for submode callee
appId.SubString(11, temp);
- if (temp == L"_AppControl")
+ if (temp == String(SUBMODE_NAME))
{
- String id;
- appId.SubString(0, 10, id);
- const String& name = _PackageManagerImpl::GetInstance()->GetDefaultAppExecutableName(id);
-
- const String retVal = id + L'.' + name;
- SysLog(NID_APP, "Converted caller Id is %ls", retVal.GetPointer());
-
- return retVal;
- }
- else
- {
- return appId;
+ std::unique_ptr<char[]> pAppId(_StringConverter::CopyToCharArrayN(appId));
+ const String& main = GetMainAppId(pAppId.get());
+ if (!main.IsEmpty())
+ {
+ SysLog(NID_APP, "main Id is %ls", main.GetPointer());
+ return main;
+ }
}
+
+ return appId;
}
} } // Tizen::App