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,35 @@
// SPDX-License-Identifier: MIT
#include "../keyboardlayout.h"
#include <QTest>
class KeyboardLayoutTest : public QObject
{
Q_OBJECT
private Q_SLOTS:
void mapsNumberRow();
void rejectsInvalidNumber();
};
void KeyboardLayoutTest::mapsNumberRow()
{
QCOMPARE(numberRowKey(u"se", u"", 1, false).value(), Qt::Key_1);
QCOMPARE(numberRowKey(u"se", u"", 1, true).value(), Qt::Key_Exclam);
QCOMPARE(numberRowKey(u"se", u"", 4, true).value(), Qt::Key_currency);
QCOMPARE(numberRowKey(u"us", u"", 2, true).value(), Qt::Key_At);
QCOMPARE(numberRowKey(u"de", u"", 7, true).value(), Qt::Key_Slash);
QCOMPARE(numberRowKey(u"fr", u"", 1, false).value(), Qt::Key_Ampersand);
QCOMPARE(numberRowKey(u"fr", u"", 1, true).value(), Qt::Key_1);
}
void KeyboardLayoutTest::rejectsInvalidNumber()
{
QVERIFY(!numberRowKey(u"se", u"", 0, false));
QVERIFY(!numberRowKey(u"se", u"", 10, true));
}
QTEST_GUILESS_MAIN(KeyboardLayoutTest)
#include "test-keyboardlayout.moc"
@@ -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"