void TextInstance::startExecution() { bool ok = true; mText = evaluateString(ok, "text"); int pause = evaluateInteger(ok, "pause"); mNoUnicodeCharacters = evaluateBoolean(ok, "noUnicodeCharacters"); if(pause < 0) pause = 0; mTimer->setInterval(pause); mCurrentCharacter = 0; if(!ok) return; if(pause == 0) { if(!mKeyboardDevice.writeText(mText, 0, mNoUnicodeCharacters)) { emit executionException(FailedToSendInputException, tr("Unable to write the text")); return; } QTimer::singleShot(1, this, SIGNAL(executionEnded())); } else { pressNextKey(); mTimer->start(); } }
void PlaySoundInstance::startExecution() { bool ok = true; QString file = evaluateString(ok, "file"); int volume = evaluateInteger(ok, "volume"); mBlocking = evaluateBoolean(ok, "blocking"); bool looping = evaluateBoolean(ok, "looping"); bool isUrl = evaluateBoolean(ok, "url"); int playbackRate = evaluateInteger(ok, "playbackRate"); if(!ok) return; mMediaPlaylist->clear(); QUrl url; if(isUrl) url = QUrl(file); else url = QUrl::fromLocalFile(file); if(!mMediaPlaylist->addMedia(url)) { emit executionException(ActionTools::ActionException::InvalidParameterException, tr("Unable to load file %1: %2").arg(file).arg(mMediaPlayer->errorString())); return; } mMediaPlaylist->setPlaybackMode(looping ? QMediaPlaylist::Loop : QMediaPlaylist::CurrentItemOnce); mMediaPlayer->setPlaybackRate(playbackRate / 100.0f); mMediaPlayer->setVolume(volume); mMediaPlayer->play(); if(mMediaPlayer->error() != QMediaPlayer::NoError) { emit executionException(ActionTools::ActionException::InvalidParameterException, tr("Unable to play file %1: %2").arg(file).arg(mMediaPlayer->errorString())); return; } if(!mBlocking) emit executionEnded(); }
void FindImageInstance::startExecution() { bool ok = true; mSource = evaluateListElement<Source>(ok, sources, QStringLiteral("source")); mImageToFind = evaluateImage(ok, QStringLiteral("imageToFind")); mIfFound = evaluateIfAction(ok, QStringLiteral("ifFound")); mIfNotFound = evaluateIfAction(ok, QStringLiteral("ifNotFound")); mPositionVariableName = evaluateVariable(ok, QStringLiteral("position")); mMethod = evaluateListElement<Method>(ok, methods, QStringLiteral("method")); mWindowRelativePosition = evaluateBoolean(ok, QStringLiteral("windowRelativePosition")); mConfidenceMinimum = evaluateInteger(ok, QStringLiteral("confidenceMinimum")); mMaximumMatches = evaluateInteger(ok, QStringLiteral("maximumMatches")); mDownPyramidCount = evaluateInteger(ok, QStringLiteral("downPyramidCount")); mSearchExpansion = evaluateInteger(ok, QStringLiteral("searchExpansion")); mConfidenceVariableName = evaluateVariable(ok, QStringLiteral("confidence")); mSearchDelay = evaluateInteger(ok, QStringLiteral("searchDelay")); if(!ok) return; validateParameterRange(ok, mConfidenceMinimum, QStringLiteral("confidenceMinimum"), tr("minimum confidence"), 0, 100); validateParameterRange(ok, mMaximumMatches, QStringLiteral("maximumMatches"), tr("maximum matches"), 1); validateParameterRange(ok, mDownPyramidCount, QStringLiteral("downPyramidCount"), tr("downsampling"), 1); validateParameterRange(ok, mSearchExpansion, QStringLiteral("searchExpansion"), tr("search expansion"), 1); if(!ok) return; if(mImageToFind.isNull()) { emit executionException(ActionTools::ActionException::InvalidParameterException, tr("Invalid image to find")); return; } startSearching(); }
void SystemInstance::startExecution() { bool ok = true; auto operation = evaluateListElement<Operation>(ok, operations, QStringLiteral("operation")); bool force = evaluateBoolean(ok, QStringLiteral("force")); if(!ok) return; SystemSession systemSession; switch(operation) { case Logout: if(!systemSession.logout(force)) { emit executionException(NotAvailable, tr("Logout is not available")); return; } break; case Restart: if(!systemSession.restart(force)) { emit executionException(NotAvailable, tr("Restart is not available")); return; } break; case Shutdown: if(!systemSession.shutdown(force)) { emit executionException(NotAvailable, tr("Shutdown is not available")); return; } break; case Suspend: if(!systemSession.suspend(force)) { emit executionException(NotAvailable, tr("Suspend is not available")); return; } break; case Hibernate: if(!systemSession.hibernate(force)) { emit executionException(NotAvailable, tr("Hibernate is not available")); return; } break; case LockScreen: if(!systemSession.lockScreen()) { emit executionException(NotAvailable, tr("Lock is not available")); return; } break; case StartScreenSaver: if(!systemSession.startScreenSaver()) { emit executionException(NotAvailable, tr("Start screen saver is not available")); return; } break; } executionEnded(); }