Cover single portal assignment and optional hotkey locking
This commit is contained in:
1 parent
d1a62c51ef
commit
83f16d8dcd
2 files changed
+28
-14
No files matched your search
@@ -70,6 +70,14 @@ int main() {
|
||||
ptt.observe(false, 1250, 400);
|
||||
ptt.observe(true, 1600, 400);
|
||||
CHECK(ptt.talking && !ptt.latched); // ровно interval — два одиночных нажатия
|
||||
ptt = {};
|
||||
ptt.observe(true, 0, 0);
|
||||
CHECK(ptt.talking && !ptt.latched);
|
||||
ptt.observe(false, 50, 0);
|
||||
ptt.observe(true, 100, 0);
|
||||
CHECK(ptt.talking && !ptt.latched); // отключённая галочка: двойное нажатие не фиксирует
|
||||
ptt.observe(false, 150, 0);
|
||||
CHECK(!ptt.talking);
|
||||
std::printf("PTT key chords and activation: %s\n", failures ? "FAILED" : "PASSED");
|
||||
return failures ? 1 : 0;
|
||||
}
|
||||
@@ -95,23 +95,27 @@ private slots:
|
||||
QCOMPARE(fake.bindCount, 0); // при первом запуске не открываем системный диалог
|
||||
portal.configure("x11:123");
|
||||
QTRY_COMPARE(fake.bindCount, 1);
|
||||
QTRY_COMPARE(portal.descriptions().value(0), QString("F8"));
|
||||
QTRY_COMPARE(portal.description(), QString("F8"));
|
||||
QCOMPARE(fake.shortcuts.size(), 1);
|
||||
QCOMPARE(fake.shortcuts[0].id, QString("ptt"));
|
||||
QTRY_VERIFY(!portal.busy());
|
||||
QDBusObjectPath session(fake.session);
|
||||
emit fake.Activated(QDBusObjectPath("/unrelated"), "ptt1", 0, {});
|
||||
emit fake.Activated(QDBusObjectPath("/unrelated"), "ptt", 0, {});
|
||||
emit fake.Activated(session, "other_action", 0, {});
|
||||
emit fake.Activated(session, "ptt1", 1, {});
|
||||
emit fake.Activated(session, "ptt", 1, {});
|
||||
QTRY_COMPARE(talking.size(), 1);
|
||||
QCOMPARE(talking.last()[0].toBool(), true);
|
||||
emit fake.Activated(session, "ptt1", 2, {}); // повторное событие не создаёт второй start
|
||||
emit fake.Activated(session, "ptt", 2, {}); // повторное событие не создаёт второй start
|
||||
emit fake.Activated(session, "ptt2", 3, {});
|
||||
emit fake.Deactivated(session, "ptt1", 4, {});
|
||||
emit fake.Deactivated(session, "ptt", 4, {});
|
||||
emit fake.Deactivated(session, "ptt2", 5, {});
|
||||
QTRY_COMPARE(talking.size(), 2);
|
||||
QCOMPARE(talking.last()[0].toBool(), false); // отпускание одного из двух хоткеев не останавливает второй
|
||||
QCOMPARE(talking.last()[0].toBool(), false); // старые/чужие ID не активируют передачу
|
||||
QSignalSpy resets(&portal, &PttPortal::resetRequested);
|
||||
portal.setInhibited(true);
|
||||
emit fake.Activated(session, "ptt1", 6, {});
|
||||
emit fake.Deactivated(session, "ptt1", 7, {});
|
||||
QCOMPARE(resets.size(), 1); // сброс нужен также при фиксации после отпускания клавиши
|
||||
emit fake.Activated(session, "ptt", 6, {});
|
||||
emit fake.Deactivated(session, "ptt", 7, {});
|
||||
QTest::qWait(20);
|
||||
QCOMPARE(talking.size(), 2);
|
||||
portal.setInhibited(false);
|
||||
@@ -119,24 +123,26 @@ private slots:
|
||||
QTRY_COMPARE(fake.configureCount, 1); // изменение через Configure, без повторного Bind
|
||||
fake.shortcuts[0].properties["trigger_description"] = "Ctrl+F8";
|
||||
emit fake.ShortcutsChanged(session, fake.shortcuts);
|
||||
QTRY_COMPARE(portal.descriptions().value(0), QString("Ctrl+F8"));
|
||||
emit fake.Activated(session, "ptt1", 8, {});
|
||||
QTRY_COMPARE(portal.description(), QString("Ctrl+F8"));
|
||||
QTRY_COMPARE(resets.size(), 2);
|
||||
emit fake.Activated(session, "ptt", 8, {});
|
||||
QTRY_COMPARE(talking.size(), 3);
|
||||
emit fake.sessionObject->Closed({});
|
||||
QTRY_COMPARE(talking.size(), 4);
|
||||
QCOMPARE(talking.last()[0].toBool(), false);
|
||||
QVERIFY(portal.descriptions()[0].isEmpty());
|
||||
QTRY_COMPARE(resets.size(), 3);
|
||||
QVERIFY(portal.description().isEmpty());
|
||||
fake.bindResponse = 1;
|
||||
portal.configure("");
|
||||
QTRY_COMPARE(fake.bindCount, 2);
|
||||
QTRY_VERIFY(!portal.busy());
|
||||
QVERIFY(portal.descriptions()[0].isEmpty()); // отмена не оставляет активную сессию
|
||||
QVERIFY(portal.description().isEmpty()); // отмена не оставляет активную сессию
|
||||
fake.bindResponse = 0;
|
||||
portal.configure("");
|
||||
QTRY_COMPARE(fake.bindCount, 3);
|
||||
QTRY_COMPARE(fake.configureCount, 2); // сохранённые сочетания восстанавливаются, затем открывается настройка
|
||||
QTRY_COMPARE(portal.descriptions().value(0), QString("F8"));
|
||||
emit fake.Activated(QDBusObjectPath(fake.session), "ptt3", 9, {});
|
||||
QTRY_COMPARE(portal.description(), QString("F8"));
|
||||
emit fake.Activated(QDBusObjectPath(fake.session), "ptt", 9, {});
|
||||
QTRY_COMPARE(talking.size(), 5);
|
||||
QVERIFY(bus.unregisterService(service));
|
||||
QTRY_COMPARE(talking.size(), 6);
|
||||
|
||||
Reference in new issue
Block a user