1a69a01cdSopenharmony_ci/* 2a69a01cdSopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd. 3a69a01cdSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4a69a01cdSopenharmony_ci * you may not use this file except in compliance with the License. 5a69a01cdSopenharmony_ci * You may obtain a copy of the License at 6a69a01cdSopenharmony_ci * 7a69a01cdSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8a69a01cdSopenharmony_ci * 9a69a01cdSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10a69a01cdSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11a69a01cdSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12a69a01cdSopenharmony_ci * See the License for the specific language governing permissions and 13a69a01cdSopenharmony_ci * limitations under the License. 14a69a01cdSopenharmony_ci */ 15a69a01cdSopenharmony_ci 16a69a01cdSopenharmony_ci#include "swap_input.h" 17a69a01cdSopenharmony_ci 18a69a01cdSopenharmony_ci#include "input_manager.h" 19a69a01cdSopenharmony_ci#include "multimode_manager.h" 20a69a01cdSopenharmony_ci#include "wukong_define.h" 21a69a01cdSopenharmony_ci#include "report.h" 22a69a01cdSopenharmony_cinamespace OHOS { 23a69a01cdSopenharmony_cinamespace WuKong { 24a69a01cdSopenharmony_ciSwapInput::SwapInput() : InputAction() 25a69a01cdSopenharmony_ci{ 26a69a01cdSopenharmony_ci std::shared_ptr<MultimodeInputMsg> multimodeInputMsg = std::make_shared<MultimodeInputMsg>(); 27a69a01cdSopenharmony_ci multimodeInputMsg->inputType_ = INPUTTYPE_SWAPINPUT; 28a69a01cdSopenharmony_ci inputedMsgObject_ = multimodeInputMsg; 29a69a01cdSopenharmony_ci} 30a69a01cdSopenharmony_ci 31a69a01cdSopenharmony_ciSwapInput::~SwapInput() 32a69a01cdSopenharmony_ci{ 33a69a01cdSopenharmony_ci} 34a69a01cdSopenharmony_ci 35a69a01cdSopenharmony_ciErrCode SwapInput::OrderInput(const std::shared_ptr<SpcialTestObject>& specialTestObject) 36a69a01cdSopenharmony_ci{ 37a69a01cdSopenharmony_ci ErrCode result; 38a69a01cdSopenharmony_ci static bool isBack = true; 39a69a01cdSopenharmony_ci SwapParam* swapPtr = static_cast<SwapParam*>(specialTestObject.get()); 40a69a01cdSopenharmony_ci if (swapPtr == nullptr) { 41a69a01cdSopenharmony_ci return OHOS::ERR_INVALID_VALUE; 42a69a01cdSopenharmony_ci } 43a69a01cdSopenharmony_ci int xSrcPosition = swapPtr->startX_; 44a69a01cdSopenharmony_ci int ySrcPosition = swapPtr->startY_; 45a69a01cdSopenharmony_ci int xDstPosition = swapPtr->endX_; 46a69a01cdSopenharmony_ci int yDstPosition = swapPtr->endY_; 47a69a01cdSopenharmony_ci if (swapPtr->isGoBack_) { 48a69a01cdSopenharmony_ci isBack = !isBack; 49a69a01cdSopenharmony_ci swapPtr->isBack_ = isBack; 50a69a01cdSopenharmony_ci } 51a69a01cdSopenharmony_ci if (isBack) { 52a69a01cdSopenharmony_ci xSrcPosition = swapPtr->endX_; 53a69a01cdSopenharmony_ci ySrcPosition = swapPtr->endY_; 54a69a01cdSopenharmony_ci xDstPosition = swapPtr->startX_; 55a69a01cdSopenharmony_ci yDstPosition = swapPtr->startY_; 56a69a01cdSopenharmony_ci } 57a69a01cdSopenharmony_ci result = MultimodeManager::GetInstance()->IntervalSwap(xSrcPosition, ySrcPosition, xDstPosition, yDstPosition); 58a69a01cdSopenharmony_ci return result; 59a69a01cdSopenharmony_ci} 60a69a01cdSopenharmony_ci 61a69a01cdSopenharmony_ciErrCode SwapInput::RandomInput() 62a69a01cdSopenharmony_ci{ 63a69a01cdSopenharmony_ci int32_t screenWidth = -1; 64a69a01cdSopenharmony_ci int32_t screenHeight = -1; 65a69a01cdSopenharmony_ci ErrCode result = WuKongUtil::GetInstance()->GetScreenSize(screenWidth, screenHeight); 66a69a01cdSopenharmony_ci if (result != OHOS::ERR_OK) { 67a69a01cdSopenharmony_ci return result; 68a69a01cdSopenharmony_ci } 69a69a01cdSopenharmony_ci int xSrcPosition = rand() % screenWidth; 70a69a01cdSopenharmony_ci int ySrcPosition = rand() % screenHeight; 71a69a01cdSopenharmony_ci int xDstPosition = rand() % screenWidth; 72a69a01cdSopenharmony_ci int yDstPosition = rand() % screenHeight; 73a69a01cdSopenharmony_ci INFO_LOG_STR("Swap: (%d, %d) -> (%d, %d)", xSrcPosition, ySrcPosition, xDstPosition, yDstPosition); 74a69a01cdSopenharmony_ci result = MultimodeManager::GetInstance()->IntervalSwap(xSrcPosition, ySrcPosition, xDstPosition, yDstPosition); 75a69a01cdSopenharmony_ci if (result != OHOS::ERR_OK) { 76a69a01cdSopenharmony_ci return result; 77a69a01cdSopenharmony_ci } 78a69a01cdSopenharmony_ci Report::GetInstance()->SyncInputInfo(inputedMsgObject_); 79a69a01cdSopenharmony_ci return result; 80a69a01cdSopenharmony_ci} 81a69a01cdSopenharmony_ci 82a69a01cdSopenharmony_ciInputType SwapInput::GetInputInfo() 83a69a01cdSopenharmony_ci{ 84a69a01cdSopenharmony_ci return INPUTTYPE_SWAPINPUT; 85a69a01cdSopenharmony_ci} 86a69a01cdSopenharmony_ci} // namespace WuKong 87a69a01cdSopenharmony_ci} // namespace OHOS 88