aboutsummaryrefslogtreecommitdiffstats
path: root/src/homescreen.cpp
diff options
context:
space:
mode:
authorwang_zhiqiang <wang_zhiqiang@dl.cn.nexty-ele.com>2019-06-20 16:39:50 +0800
committerwang_zhiqiang <wang_zhiqiang@dl.cn.nexty-ele.com>2019-06-20 16:39:50 +0800
commit6e82b2eebd593cb02c8f54f1f93ef4d4605d92e9 (patch)
tree910333f911319dcf969115fd643bfc5e4d2ccd9b /src/homescreen.cpp
parentf4b5074bc8b6657e4b190a1541e0051d8ebaa194 (diff)
parentb47445061a00ba7bde7a8edd145a7d109b22d4a7 (diff)
Merge branch 'sandbox/wangzhiqiang/als2019' into sandbox/wangzhiqiang/hss-bugsandbox/wangzhiqiang/hss-bug
Diffstat (limited to 'src/homescreen.cpp')
-rw-r--r--src/homescreen.cpp18
1 files changed, 14 insertions, 4 deletions
diff --git a/src/homescreen.cpp b/src/homescreen.cpp
index d9fef91..ae98643 100644
--- a/src/homescreen.cpp
+++ b/src/homescreen.cpp
@@ -37,6 +37,8 @@ const char _display_message[] = "display_message";
const char _reply_message[] = "reply_message";
const char _keyData[] = "data";
const char _keyId[] = "id";
+const char _parameter[] = "parameter";
+const char _area[] = "area";
struct hs_handshake {
hs_handshake(int times, int sleep) : m_times(times), m_sleep(sleep) {}
@@ -332,12 +334,16 @@ static void pingSample(afb_req_t request)
static void tap_shortcut (afb_req_t request)
{
int ret = 0;
+ struct json_object *param_obj, *area_obj;
const char* value = afb_req_value(request, _application_id);
- if (value) {
+ if (value
+ && json_object_object_get_ex(afb_req_json(request), _parameter, &param_obj)
+ && json_object_object_get_ex(param_obj, _area, &area_obj)) {
AFB_INFO("request appid = %s.", value);
+ const char* area = json_object_get_string(area_obj);
ret = g_hs_instance->client_manager->handleRequest(request, __FUNCTION__, value);
if(ret == AFB_REQ_NOT_STARTED_APPLICATION) {
- g_hs_instance->client_manager->setStartupAppid(std::string(value));
+ g_hs_instance->client_manager->setStartupAppidAndArea(make_pair(std::string(value), std::string(area)));
std::string id = g_hs_instance->app_info->getAppProperty(value, _keyId);
HS_AfmMainProxy afm_proxy;
afm_proxy.start(request->api, id);
@@ -486,11 +492,15 @@ static void unsubscribe(afb_req_t request)
static void showWindow(afb_req_t request)
{
int ret = 0;
+ struct json_object *param_obj, *area_obj;
const char* value = afb_req_value(request, _application_id);
- if (value) {
+ if (value
+ && json_object_object_get_ex(afb_req_json(request), _parameter, &param_obj)
+ && json_object_object_get_ex(param_obj, _area, &area_obj)) {
+ const char* area = json_object_get_string(area_obj);
ret = g_hs_instance->client_manager->handleRequest(request, __FUNCTION__, value);
if(ret == AFB_REQ_NOT_STARTED_APPLICATION) {
- g_hs_instance->client_manager->setStartupAppid(std::string(value));
+ g_hs_instance->client_manager->setStartupAppidAndArea(make_pair(std::string(value), std::string(area)));
std::string id = g_hs_instance->app_info->getAppProperty(value, _keyId);
HS_AfmMainProxy afm_proxy;
afm_proxy.start(request->api, id);