aboutsummaryrefslogtreecommitdiffstats
path: root/tests/manual/jumplist/testwidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/manual/jumplist/testwidget.cpp')
-rw-r--r--tests/manual/jumplist/testwidget.cpp90
1 files changed, 61 insertions, 29 deletions
diff --git a/tests/manual/jumplist/testwidget.cpp b/tests/manual/jumplist/testwidget.cpp
index e6660e4..15982a6 100644
--- a/tests/manual/jumplist/testwidget.cpp
+++ b/tests/manual/jumplist/testwidget.cpp
@@ -38,34 +38,27 @@
#include <QStyle>
#include <QFile>
#include <QFileDialog>
+#include <QDesktopServices>
#include <QMessageBox>
+#include <QProcess>
+#include <QStatusBar>
+#include <QUrl>
#include <QWinJumpList>
#include <QWinJumpListItem>
#include <QWinJumpListCategory>
#include <QDebug>
TestWidget::TestWidget(QWidget *parent) :
- QWidget(parent),
+ QMainWindow(parent),
ui(new Ui::TestWidget)
{
ui->setupUi(this);
- if (QCoreApplication::arguments().contains("-text"))
- ui->text->setPlainText("Hello, world!");
- if (!QCoreApplication::arguments().contains("-fullscreen"))
- ui->btnClose->hide();
-
- for (int i = 1; i < QCoreApplication::arguments().size(); i++) {
- const QString arg = QCoreApplication::arguments().at(i);
- if (!arg.isEmpty() && arg.at(0) != '-' && QFile(arg).exists()) {
- showFile(arg);
- break;
- }
- }
-
- connect(ui->btnUpdate, &QAbstractButton::clicked, this, &TestWidget::updateJumpList);
- connect(ui->btnOpenFile, &QAbstractButton::clicked, this, &TestWidget::openFile);
- connect(ui->btnClose, &QAbstractButton::clicked, QCoreApplication::quit);
+ connect(ui->actionUpdate, &QAction::triggered, this, &TestWidget::updateJumpList);
+ connect(ui->actionOpen, &QAction::triggered, this, &TestWidget::openFile);
+ connect(ui->actionExit, &QAction::triggered, QCoreApplication::quit);
+ connect(ui->actionShow_in_Explorer, &QAction::triggered, this, &TestWidget::showInExplorer);
+ connect(ui->actionRun_JumpListView, &QAction::triggered, this, &TestWidget::runJumpListView);
}
TestWidget::~TestWidget()
@@ -73,6 +66,12 @@ TestWidget::~TestWidget()
delete ui;
}
+QStringList TestWidget::supportedMimeTypes()
+{
+ return QStringList() << "text/x-c++src" << "text/x-csrc" << "text/x-chdr"
+ << "text/x-c++hdr" << "text/x-qml" << "text/plain";
+}
+
void TestWidget::changeEvent(QEvent *e)
{
QWidget::changeEvent(e);
@@ -88,40 +87,73 @@ void TestWidget::changeEvent(QEvent *e)
void TestWidget::showFile(const QString &path)
{
QFile file(path);
- if (file.open(QIODevice::ReadOnly|QIODevice::Text))
- ui->text->setPlainText(QString::fromUtf8(file.readAll()));
- else
- QMessageBox::warning(this, "Error", "Failed to open file");
+ if (!file.open(QIODevice::ReadOnly|QIODevice::Text)) {
+ const QString error = "Failed to open file " + QDir::toNativeSeparators(path)
+ + ": " + file.errorString();
+ QMessageBox::warning(this, "Error", error);
+ return;
+ }
+ setText(QString::fromUtf8(file.readAll()));
+}
+
+void TestWidget::setText(const QString &text)
+{
+ ui->text->setPlainText(text);
}
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(QDir::toNativeSeparators(QCoreApplication::applicationFilePath()));
+ 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(), QDir::toNativeSeparators(QCoreApplication::applicationFilePath()), (QStringList() << "-style" << "fusion"));
+ 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(), QDir::toNativeSeparators(QCoreApplication::applicationFilePath()), QStringList("-text"));
+ jumplist.tasks()->addLink(ui->cbRunText->text(),
+ applicationBinary,
+ QStringList("-text"));
}
jumplist.tasks()->setVisible(!jumplist.tasks()->isEmpty());
}
void TestWidget::openFile()
{
- QString filePath = QFileDialog::getOpenFileName(this, "Open a text file", QString(), "Text files (*.txt)");
- if (filePath.isEmpty())
- return;
- else
- showFile(filePath);
+ QFileDialog fileDialog(this, "Open a Text File");
+ fileDialog.setAcceptMode(QFileDialog::AcceptOpen);
+ fileDialog.setMimeTypeFilters(TestWidget::supportedMimeTypes());
+ // Note: The native file dialog creates the frequent/recent entries.
+ if (!ui->actionUse_Native_File_Dialog->isChecked())
+ fileDialog.setOption(QFileDialog::DontUseNativeDialog);
+ if (fileDialog.exec() == QDialog::Accepted)
+ showFile(fileDialog.selectedFiles().first());
+}
+
+void TestWidget::showInExplorer()
+{
+ const QString path = QFile::decodeName(qgetenv("APPDATA"))
+ + "/Microsoft/Windows/Recent/Automaticdestinations";
+ QDesktopServices::openUrl(QUrl::fromLocalFile(path));
+}
+
+void TestWidget::runJumpListView()
+{
+ const char binary[] = "JumpListsView";
+ if (!QProcess::startDetached(binary))
+ statusBar()->showMessage(QLatin1String("Unable to run ") + binary);
}