return DerivedType::requiredArguments;
}
+ void process(DoneCallback doneCb) override
+ {
+ invoker.addToMainLoopQueue([this, doneCb{std::move(doneCb)}]() {
+ auto res = this->processImpl(std::move(doneCb));
+ markAsCompleted();
+
+ if (res)
+ doneCb.callAfterTimeElapsed(sideEffectDelays::eModGesture);
+ else
+ ERROR("%s", res.getError().message.c_str());
+ });
+ }
+
protected:
+ virtual DBus::ValueOrError<void> processImpl(DoneCallback doneCb) = 0;
+
std::vector<std::shared_ptr<UIElement>> uiElements;
- ecore::Timer timer;
+ ecore::AsyncInvoker invoker;
};
template <typename DerivedType>
public:
using GestureDispatcher<DerivedType>::uiElements;
using GestureDispatcher<DerivedType>::markAsCompleted;
- using GestureDispatcher<DerivedType>::timer;
static constexpr unsigned int requiredArguments = 1;
- void process(DoneCallback doneCb) override
+ DBus::ValueOrError<void> processImpl(DoneCallback doneCb) override
{
- timer.reset(NO_DELAY, [this, doneCb = std::move(doneCb)]() {
- ASSERT(uiElements.size() == requiredArguments);
- auto coord = uiElements.front()->getScanningCoordinates();
- auto res = utils::EventGenerator::generateTapGesture(coord.x, coord.y, DerivedType::hold_time);
- if (res) {
- doneCb.callAfterTimeElapsed(sideEffectDelays::eModGesture);
- } else {
- ERROR("%s", res.getError().message.c_str());
- }
- markAsCompleted();
- return ecore::TimerRepetitionPolicy::cancel;
- });
+ ASSERT(uiElements.size() == requiredArguments);
+ auto coord = uiElements.front()->getScanningCoordinates();
+ return utils::EventGenerator::generateTapGesture(coord.x, coord.y, DerivedType::hold_time);
}
};
public:
using GestureDispatcher<DerivedType>::uiElements;
using GestureDispatcher<DerivedType>::markAsCompleted;
- using GestureDispatcher<DerivedType>::timer;
static constexpr int requiredArguments = 1;
- void process(DoneCallback doneCb) override
+ DBus::ValueOrError<void> processImpl(DoneCallback doneCb) override
{
- timer.reset(NO_DELAY, [this, doneCb = std::move(doneCb)]() {
- ASSERT(uiElements.size() == requiredArguments);
+ ASSERT(uiElements.size() == requiredArguments);
- auto from = getStartPoint();
- auto to = getEndPoint();
+ auto from = getStartPoint();
+ auto to = getEndPoint();
- auto res = utils::EventGenerator::generateDragGesture(from.x, from.y, to.x, to.y, DEFAULT_STEPS_NUMBER, NO_DELAY);
- if (res) {
- doneCb.callAfterTimeElapsed(sideEffectDelays::eModGesture);
- } else {
- ERROR("%s", res.getError().message.c_str());
- }
-
- markAsCompleted();
- return ecore::TimerRepetitionPolicy::cancel;
- });
+ return utils::EventGenerator::generateDragGesture(from.x, from.y, to.x, to.y, DEFAULT_STEPS_NUMBER, NO_DELAY);
}
protected:
public:
using GestureDispatcher<DerivedType>::uiElements;
using GestureDispatcher<DerivedType>::markAsCompleted;
- using GestureDispatcher<DerivedType>::timer;
static constexpr int requiredArguments = 2;
- void process(DoneCallback doneCb) override
+ DBus::ValueOrError<void> processImpl(DoneCallback doneCb) override
{
- timer.reset(NO_DELAY, [this, doneCb = std::move(doneCb)]() {
- ASSERT(uiElements.size() == requiredArguments);
-
- auto from = uiElements.front()->getScanningCoordinates();
- auto to = uiElements.back()->getScanningCoordinates();
+ ASSERT(uiElements.size() == requiredArguments);
- auto res = utils::EventGenerator::generateDragGesture(from.x, from.y, to.x, to.y, DerivedType::steps, DerivedType::hold_time);
- if (res) {
- doneCb.callAfterTimeElapsed(sideEffectDelays::eModGesture);
- } else {
- ERROR("%s", res.getError().message.c_str());
- }
+ auto from = uiElements.front()->getScanningCoordinates();
+ auto to = uiElements.back()->getScanningCoordinates();
- markAsCompleted();
- return ecore::TimerRepetitionPolicy::cancel;
- });
+ return utils::EventGenerator::generateDragGesture(from.x, from.y, to.x, to.y, DerivedType::steps, DerivedType::hold_time);
}
};
public:
using GestureDispatcher<DerivedType>::uiElements;
using GestureDispatcher<DerivedType>::markAsCompleted;
- using GestureDispatcher<DerivedType>::timer;
static constexpr int requiredArguments = 1;
- void process(DoneCallback doneCb) override
+ DBus::ValueOrError<void> processImpl(DoneCallback doneCb) override
{
- timer.reset(NO_DELAY, [this, doneCb = std::move(doneCb)]() {
- ASSERT(GestureDispatcher<DerivedType>::uiElements.size() == requiredArguments);
- auto coord = GestureDispatcher<DerivedType>::uiElements.front()->getScanningCoordinates();
-
- auto res = utils::EventGenerator::generatePinchGesture(coord.x, coord.y, DerivedType::radius_change, DEFAULT_STEPS_NUMBER);
- if (res) {
- doneCb.callAfterTimeElapsed(sideEffectDelays::eModGesture);
- } else {
- ERROR("%s", res.getError().message.c_str());
- }
+ ASSERT(GestureDispatcher<DerivedType>::uiElements.size() == requiredArguments);
+ auto coord = GestureDispatcher<DerivedType>::uiElements.front()->getScanningCoordinates();
- markAsCompleted();
- return ecore::TimerRepetitionPolicy::cancel;
- });
+ return utils::EventGenerator::generatePinchGesture(coord.x, coord.y, DerivedType::radius_change, DEFAULT_STEPS_NUMBER);
}
};