Add Plasma task group shortcuts

This commit is contained in:
ajp_anton
2026-09-04 14:52:45 +00:00
parent 4a78e6b485
commit 088c42bc14
13 changed files with 923 additions and 0 deletions
@@ -0,0 +1,90 @@
// SPDX-License-Identifier: MIT
#include "../taskselection.h"
#include <QStandardItemModel>
#include <QTest>
#include <abstracttasksmodel.h>
using TaskManager::AbstractTasksModel;
class TaskSelectionTest : public QObject
{
Q_OBJECT
private Q_SLOTS:
void returnsTopLevelTask();
void selectsChildByCyclePosition();
void startsWithFirstChild();
void keepsSeparateLaunchersAsSlots();
void mergesLauncherWithRunningApplication();
};
void TaskSelectionTest::returnsTopLevelTask()
{
QStandardItemModel model;
model.appendRow(new QStandardItem(QStringLiteral("Dolphin")));
QCOMPARE(taskToActivate(model, 0, 0), model.index(0, 0));
QVERIFY(!taskToActivate(model, 1, 0).isValid());
}
void TaskSelectionTest::selectsChildByCyclePosition()
{
QStandardItemModel model;
auto *group = new QStandardItem(QStringLiteral("Dolphin"));
group->appendRow(new QStandardItem(QStringLiteral("one")));
group->appendRow(new QStandardItem(QStringLiteral("two")));
group->appendRow(new QStandardItem(QStringLiteral("three")));
model.appendRow(group);
const QModelIndex parent = model.index(0, 0);
QCOMPARE(taskToActivate(model, 0, 0), model.index(0, 0, parent));
QCOMPARE(taskToActivate(model, 0, 1), model.index(1, 0, parent));
QCOMPARE(taskToActivate(model, 0, 2), model.index(2, 0, parent));
QCOMPARE(taskToActivate(model, 0, 3), model.index(0, 0, parent));
QCOMPARE(taskToActivate(model, 0, -1), model.index(2, 0, parent));
QCOMPARE(taskToActivate(model, 0, -2), model.index(1, 0, parent));
}
void TaskSelectionTest::startsWithFirstChild()
{
QStandardItemModel model;
auto *group = new QStandardItem(QStringLiteral("Firefox"));
group->appendRow(new QStandardItem(QStringLiteral("first")));
group->appendRow(new QStandardItem(QStringLiteral("second")));
model.appendRow(group);
QCOMPARE(taskToActivate(model, 0, 0), model.index(0, 0, model.index(0, 0)));
}
void TaskSelectionTest::keepsSeparateLaunchersAsSlots()
{
QStandardItemModel model;
model.appendRow(new QStandardItem(QStringLiteral("launcher")));
model.appendRow(new QStandardItem(QStringLiteral("window")));
QCOMPARE(logicalTaskRows(model, true), QVector<int>({0, 1}));
}
void TaskSelectionTest::mergesLauncherWithRunningApplication()
{
QStandardItemModel model;
model.appendRow(new QStandardItem(QStringLiteral("Dolphin launcher")));
model.appendRow(new QStandardItem(QStringLiteral("Firefox window")));
model.appendRow(new QStandardItem(QStringLiteral("Dolphin windows")));
model.setData(model.index(0, 0), true, AbstractTasksModel::IsLauncher);
model.setData(model.index(0, 0), QStringLiteral("org.kde.dolphin"), AbstractTasksModel::AppId);
model.setData(model.index(1, 0), true, AbstractTasksModel::IsWindow);
model.setData(model.index(1, 0), QStringLiteral("firefox"), AbstractTasksModel::AppId);
model.setData(model.index(2, 0), true, AbstractTasksModel::IsWindow);
model.setData(model.index(2, 0), QStringLiteral("org.kde.dolphin"), AbstractTasksModel::AppId);
QCOMPARE(logicalTaskRows(model, false), QVector<int>({2, 1}));
}
QTEST_GUILESS_MAIN(TaskSelectionTest)
#include "test-taskselection.moc"