libaurum: apply smart pointer wider and extract impl out
[platform/core/uifw/aurum.git] / org.tizen.aurum-bootstrap / src / Commands / LongClickCommand.cc
1 #include "LongClickCommand.h"
2 #include <loguru.hpp>
3
4 #include <UiObject.h>
5 #include <UiDevice.h>
6
7 LongClickCommand::LongClickCommand(const ::aurum::ReqClick* request,
8                                    ::aurum::RspClick*       response)
9     : mRequest{request}, mResponse{response}
10 {
11 }
12
13 ::grpc::Status LongClickCommand::execute()
14 {
15     LOG_SCOPE_F(INFO, "LongClick --------------- ");
16
17     ObjectMapper* mObjMap = ObjectMapper::getInstance();
18     ::aurum::ReqClick_RequestType type = mRequest->type();
19
20     if (type == ::aurum::ReqClick_RequestType_ELEMENTID) {
21         std::shared_ptr<UiObject> obj = mObjMap->getElement(mRequest->elementid());
22         if (obj) {
23             obj->longClick(LOGNCLICK_INTERVAL);
24             mResponse->set_status(::aurum::RspStatus::OK);
25         } else
26             mResponse->set_status(::aurum::RspStatus::ERROR);
27     } else if (type == ::aurum::ReqClick_RequestType_COORD) {
28         std::shared_ptr<UiDevice> obj = UiDevice::getInstance();
29         const ::aurum::Point& point = mRequest->coordination();
30         obj->click(point.x(), point.y(), LOGNCLICK_INTERVAL);
31         mResponse->set_status(::aurum::RspStatus::OK);
32     } else if (type == ::aurum::ReqClick_RequestType_ATSPI) {
33         mResponse->set_status(::aurum::RspStatus::ERROR);
34     }
35
36     return grpc::Status::OK;
37 }