summaryrefslogtreecommitdiffstats
path: root/src/libwindowmanager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/libwindowmanager.cpp')
-rw-r--r--src/libwindowmanager.cpp66
1 files changed, 66 insertions, 0 deletions
diff --git a/src/libwindowmanager.cpp b/src/libwindowmanager.cpp
index db59dab..41cf1fe 100644
--- a/src/libwindowmanager.cpp
+++ b/src/libwindowmanager.cpp
@@ -65,6 +65,7 @@ class LibWindowmanager::Impl {
int deactivateWindow(json_object *object);
int endDraw(json_object *object);
int setRenderOrder(json_object* object);
+ int getAreaList(ChangeAreaReq* req);
int changeAreaSize(json_object* object);
int getDisplayInfo(json_object *object);
@@ -453,6 +454,65 @@ int LibWindowmanager::Impl::setRenderOrder(json_object *object) {
});
}
+int LibWindowmanager::Impl::getAreaList(ChangeAreaReq* req) {
+ TRACE();
+ json_object* obj = json_object_new_object();
+ int rc = -1;
+ /* send the request */
+ int rc2 =
+ this->api_call("getAreaList", nullptr,
+ [req, &rc](bool ok, json_object *j) {
+ if (ok) {
+ json_object *val, *jarea;
+ if (json_object_object_get_ex(j, g_kKeyResponse, &val)) {
+ HMI_DEBUG("libwm", "responce:%s", json_object_get_string(val));
+ if (json_object_object_get_ex(val, "areas", &jarea)) {
+ int size = json_object_array_length(val);
+ for(int i = 0; i < size; i++)
+ {
+ json_object* elem = json_object_array_get_idx(jarea, i);
+ Rect rect;
+ json_object *_val, *jrect;
+ std::string name;
+ json_object_object_get_ex(elem, "name", &_val);
+ name = json_object_get_string(_val);
+ if(json_object_object_get_ex(elem, "rect", &jrect)) {
+ if(json_object_object_get_ex(jrect, "x", &_val))
+ rect.set_left(json_object_get_int(_val));
+ if(json_object_object_get_ex(jrect, "y", &_val))
+ rect.set_top(json_object_get_int(_val));
+ if(json_object_object_get_ex(jrect, "w", &_val))
+ rect.set_width(json_object_get_int(_val));
+ if(json_object_object_get_ex(jrect, "h", &_val))
+ rect.set_height(json_object_get_int(_val));
+ }
+ req->addAreaList(name, rect);
+ }
+ rc = 0;
+ }
+ }
+ else {
+ HMI_ERROR("libwm", "Not found key \"response\"");
+ rc = -EINVAL;
+ return;
+ }
+ } else {
+ HMI_ERROR("libwm", "Windowmanager-service is not initialized: %s",
+ j != nullptr ? json_object_to_json_string_ext(
+ j, JSON_C_TO_STRING_PRETTY)
+ : "no-info");
+ rc = -EPERM;
+ }
+ });
+
+ if (0 > rc2) {
+ HMI_ERROR("libwm", "api_call() failed");
+ rc = rc2;
+ }
+
+ return rc;
+}
+
int LibWindowmanager::Impl::changeAreaSize(json_object* object) {
TRACE();
return this->api_call(__func__, object, [](bool ok, json_object *j) {
@@ -718,6 +778,7 @@ int LibWindowmanager::Impl::api_call(
int rc = 0;
if ((0 == strcmp("RequestSurface", verb)) ||
(0 == strcmp("GetDisplayInfo", verb)) ||
+ (0 == strcmp("getAreaList", verb)) ||
(0 == strcmp("GetAreaInfo", verb))) {
// We need to wrap the actual onReply call once in order to
// *look* like a normal functions pointer (std::functions<>
@@ -1129,6 +1190,11 @@ int LibWindowmanager::setRenderOrder(const vector<string>& render_order) {
return this->d->setRenderOrder(object);
}
+int LibWindowmanager::getAreaList(ChangeAreaReq* req)
+{
+ return this->d->getAreaList(req);
+}
+
int LibWindowmanager::changeAreaSize(const ChangeAreaReq &req) {
json_object* object = json_object_new_object();
json_object_object_add(object, "save", json_object_new_boolean(req.getSave()));