diff --git a/src/cli/main.cpp b/src/cli/main.cpp --- a/src/cli/main.cpp +++ b/src/cli/main.cpp @@ -144,35 +144,13 @@ DEFINE_COMMAND(nextActivity, 0) { - const auto activities = controller->activities(); - const auto currentActivity = controller->currentActivity(); - - for (int i = 0; i < activities.count() - 1; ++i) { - if (activities[i] == currentActivity) { - switchToActivity(activities[i + 1]); - return 0; - } - } - - switchToActivity(activities[0]); - + controller->nextActivity(); return 0; } DEFINE_COMMAND(previousActivity, 0) { - const auto activities = controller->activities(); - const auto currentActivity = controller->currentActivity(); - - for (int i = 1; i < activities.count(); ++i) { - if (activities[i] == currentActivity) { - switchToActivity(activities[i - 1]); - return 0; - } - } - - switchToActivity(activities.last()); - + controller->previousActivity(); return 0; } diff --git a/src/lib/controller.h b/src/lib/controller.h --- a/src/lib/controller.h +++ b/src/lib/controller.h @@ -111,6 +111,16 @@ */ QFuture startActivity(const QString &id); + /** + * Switches to the previous activity + */ + QFuture previousActivity(); + + /** + * Switches to the next activity + */ + QFuture nextActivity(); + private: // const QScopedPointer d; }; diff --git a/src/lib/controller.cpp b/src/lib/controller.cpp --- a/src/lib/controller.cpp +++ b/src/lib/controller.cpp @@ -120,6 +120,24 @@ DBusFuture::fromVoid(); } +QFuture Controller::previousActivity() +{ + return Manager::isServiceRunning() ? + DBusFuture::asyncCall( + Manager::activities(), QStringLiteral("PreviousActivity")) + : + DBusFuture::fromVoid(); +} + +QFuture Controller::nextActivity() +{ + return Manager::isServiceRunning() ? + DBusFuture::asyncCall( + Manager::activities(), QStringLiteral("NextActivity")) + : + DBusFuture::fromVoid(); +} + } // namespace KActivities // #include "controller.moc"