Пример #1
0
/*!
    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;
}
Пример #2
0
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());
}
Пример #3
0
/*!
    \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;
}
Пример #4
0
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());
}
Пример #7
0
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;
}