/*! Adds a destination to the category pointing to \a filePath. */ QWinJumpListItem *QWinJumpListCategory::addDestination(const QString &filePath) { QWinJumpListItem *item = new QWinJumpListItem(QWinJumpListItem::Destination); item->setFilePath(filePath); addItem(item); return item; }
void TestWidget::updateJumpList() { QWinJumpList jumplist; if (!m_id.isEmpty()) jumplist.setIdentifier(m_id); const QString applicationBinary = QDir::toNativeSeparators(QCoreApplication::applicationFilePath()); jumplist.recent()->setVisible(ui->cbShowRecent->isChecked()); jumplist.frequent()->setVisible(ui->cbShowFrequent->isChecked()); if (ui->cbRunFullscreen->isChecked()) { QWinJumpListItem *item = new QWinJumpListItem(QWinJumpListItem::Link); item->setTitle(ui->cbRunFullscreen->text()); item->setFilePath(applicationBinary); item->setArguments(QStringList("-fullscreen")); item->setIcon(style()->standardIcon(QStyle::SP_TitleBarMaxButton)); jumplist.tasks()->addItem(item); } if (ui->cbRunFusion->isChecked()) { jumplist.tasks()->addLink(style()->standardIcon(QStyle::SP_DesktopIcon), ui->cbRunFusion->text(), applicationBinary, (QStringList() << "-style" << "fusion")); } if (ui->cbRunText->isChecked()) { jumplist.tasks()->addSeparator(); jumplist.tasks()->addLink(ui->cbRunText->text(), applicationBinary, QStringList("-text")); } jumplist.tasks()->setVisible(!jumplist.tasks()->isEmpty()); }
/*! \overload addLink() Adds a link to the category using \a icon, \a title, \a executablePath, and optionally \a arguments. */ QWinJumpListItem *QWinJumpListCategory::addLink(const QIcon &icon, const QString &title, const QString &executablePath, const QStringList &arguments) { QWinJumpListItem *item = new QWinJumpListItem(QWinJumpListItem::Link); item->setFilePath(executablePath); item->setTitle(title); item->setArguments(arguments); item->setIcon(icon); addItem(item); return item; }
void tst_QWinJumpList::testRecent() { if (QSysInfo::windowsVersion() >= QSysInfo::WV_WINDOWS10) QSKIP("QTBUG-48751: Recent items do not work on Windows 10", Continue); QScopedPointer<QWinJumpList> jumplist(new QWinJumpList); QWinJumpListCategory *recent1 = jumplist->recent(); QVERIFY(recent1); QVERIFY(!recent1->isVisible()); QVERIFY(recent1->title().isEmpty()); recent1->clear(); QVERIFY(recent1->isEmpty()); recent1->addItem(0); QVERIFY(recent1->isEmpty()); recent1->setVisible(true); QVERIFY(recent1->isVisible()); recent1->addLink(QStringLiteral("tst_QWinJumpList"), QCoreApplication::applicationFilePath()); QTest::ignoreMessage(QtWarningMsg, "QWinJumpListCategory::addItem(): only tasks/custom categories support separators."); recent1->addSeparator(); QTest::ignoreMessage(QtWarningMsg, "QWinJumpListCategory::addItem(): only tasks/custom categories support destinations."); recent1->addDestination(QCoreApplication::applicationDirPath()); // cleanup the first jumplist instance and give the system a little time to update. // then test that another jumplist instance loads up the recent item(s) added above jumplist.reset(); QTest::qWait(100); jumplist.reset(new QWinJumpList); QWinJumpListCategory *recent2 = jumplist->recent(); QVERIFY(recent2); QCOMPARE(recent2->count(), 1); QWinJumpListItem* item = recent2->items().value(0); QVERIFY(item); const QString itemPath = item->filePath(); const QString applicationFilePath = QCoreApplication::applicationFilePath(); QVERIFY2(!itemPath.compare(applicationFilePath, Qt::CaseInsensitive), msgFileNameMismatch(itemPath, applicationFilePath)); QEXPECT_FAIL("", "QWinJumpListItem::title not supported for recent items", Continue); QCOMPARE(item->title(), QStringLiteral("tst_QWinJumpList")); recent2->clear(); QVERIFY(recent2->isEmpty()); }
void tst_QWinJumpList::testTasks() { QWinJumpList jumplist; QWinJumpListCategory *tasks = jumplist.tasks(); QVERIFY(tasks); QVERIFY(!tasks->isVisible()); QVERIFY(tasks->isEmpty()); QVERIFY(tasks->title().isEmpty()); tasks->setVisible(true); QVERIFY(tasks->isVisible()); tasks->addItem(0); QVERIFY(tasks->isEmpty()); QWinJumpListItem* link1 = tasks->addLink(QStringLiteral("tst_QWinJumpList"), QCoreApplication::applicationFilePath()); QCOMPARE(link1->type(), QWinJumpListItem::Link); QCOMPARE(link1->title(), QStringLiteral("tst_QWinJumpList")); QCOMPARE(link1->filePath(), QCoreApplication::applicationFilePath()); QCOMPARE(tasks->count(), 1); QCOMPARE(tasks->items(), QList<QWinJumpListItem *>() << link1); QWinJumpListItem* link2 = tasks->addLink(QStringLiteral("tst_QWinJumpList"), QCoreApplication::applicationFilePath(), QStringList(QStringLiteral("-test"))); QCOMPARE(link2->type(), QWinJumpListItem::Link); QCOMPARE(link2->title(), QStringLiteral("tst_QWinJumpList")); QCOMPARE(link2->filePath(), QCoreApplication::applicationFilePath()); QCOMPARE(link2->arguments(), QStringList(QStringLiteral("-test"))); QCOMPARE(tasks->count(), 2); QCOMPARE(tasks->items(), QList<QWinJumpListItem *>() << link1 << link2); QWinJumpListItem* separator = tasks->addSeparator(); QCOMPARE(separator->type(), QWinJumpListItem::Separator); QCOMPARE(tasks->count(), 3); QCOMPARE(tasks->items(), QList<QWinJumpListItem *>() << link1 << link2 << separator); QWinJumpListItem* destination = tasks->addDestination(QCoreApplication::applicationDirPath()); QCOMPARE(destination->type(), QWinJumpListItem::Destination); QCOMPARE(destination->filePath(), QCoreApplication::applicationDirPath()); QCOMPARE(tasks->count(), 4); QCOMPARE(tasks->items(), QList<QWinJumpListItem *>() << link1 << link2 << separator << destination); tasks->clear(); QVERIFY(tasks->isEmpty()); QVERIFY(tasks->items().isEmpty()); }
void tst_QWinJumpList::testRecent() { QScopedPointer<QWinJumpList> jumplist(new QWinJumpList); QWinJumpListCategory *recent1 = jumplist->recent(); QVERIFY(recent1); QVERIFY(!recent1->isVisible()); QVERIFY(recent1->title().isEmpty()); recent1->clear(); QVERIFY(recent1->isEmpty()); recent1->addItem(0); QVERIFY(recent1->isEmpty()); recent1->setVisible(true); QVERIFY(recent1->isVisible()); recent1->addLink(QStringLiteral("tst_QWinJumpList"), QCoreApplication::applicationFilePath()); QTest::ignoreMessage(QtWarningMsg, "QWinJumpListCategory::addItem(): only tasks/custom categories support separators."); recent1->addSeparator(); QTest::ignoreMessage(QtWarningMsg, "QWinJumpListCategory::addItem(): only tasks/custom categories support destinations."); recent1->addDestination(QCoreApplication::applicationDirPath()); // cleanup the first jumplist instance and give the system a little time to update. // then test that another jumplist instance loads up the recent item(s) added above jumplist.reset(); QTest::qWait(100); jumplist.reset(new QWinJumpList); QWinJumpListCategory *recent2 = jumplist->recent(); QVERIFY(recent2); QCOMPARE(recent2->count(), 1); QWinJumpListItem* item = recent2->items().value(0); QVERIFY(item); QCOMPARE(item->filePath(), QCoreApplication::applicationFilePath()); QEXPECT_FAIL("", "QWinJumpListItem::title not supported for recent items", Continue); QCOMPARE(item->title(), QStringLiteral("tst_QWinJumpList")); recent2->clear(); QVERIFY(recent2->isEmpty()); }
QWinJumpListItem *QQuickJumpListItem::toJumpListItem() const { QWinJumpListItem *item = new QWinJumpListItem(QWinJumpListItem::Separator); switch (m_type) { case ItemTypeDestination: item->setType(QWinJumpListItem::Destination); item->setFilePath(property("filePath").toString()); break; case ItemTypeLink: item->setType(QWinJumpListItem::Link); item->setFilePath(property("executablePath").toString()); item->setArguments(QStringList(property("arguments").toStringList())); item->setDescription(property("description").toString()); item->setTitle(property("title").toString()); item->setIcon(QIcon(property("iconPath").toString())); break; } return item; }