1
2 #include "previewtest.h"
3
4 #include <QApplication>
5 #include <QLabel>
6 #include <QLayout>
7 #include <QLineEdit>
8 #include <QPushButton>
9
10 #include <KConfigGroup>
11 #include <KIconLoader>
12 #include <KSharedConfig>
13 #include <QDebug>
14 #include <kio/previewjob.h>
15
PreviewTest()16 PreviewTest::PreviewTest()
17 : QWidget()
18 {
19 QGridLayout *layout = new QGridLayout(this);
20 m_url = new QLineEdit(this);
21
22 QString path;
23 KIconLoader().loadMimeTypeIcon(QStringLiteral("video-x-generic"), KIconLoader::Desktop, 256, KIconLoader::DefaultState, QStringList(), &path);
24
25 m_url->setText(path);
26 layout->addWidget(m_url, 0, 0);
27 QPushButton *btn = new QPushButton(QStringLiteral("Generate"), this);
28 connect(btn, &QAbstractButton::clicked, this, &PreviewTest::slotGenerate);
29 layout->addWidget(btn, 0, 1);
30
31 const KConfigGroup globalConfig(KSharedConfig::openConfig(), "PreviewSettings");
32 const QStringList enabledPlugins =
33 globalConfig.readEntry("Plugins",
34 QStringList() << QStringLiteral("directorythumbnail") << QStringLiteral("imagethumbnail") << QStringLiteral("jpegthumbnail"));
35
36 m_plugins = new QLineEdit(this);
37 layout->addWidget(m_plugins, 1, 0, 1, 2);
38 m_plugins->setText(enabledPlugins.join("; "));
39
40 m_preview = new QLabel(this);
41 m_preview->setMinimumSize(400, 300);
42 layout->addWidget(m_preview, 2, 0, 1, 2);
43 }
44
slotGenerate()45 void PreviewTest::slotGenerate()
46 {
47 KFileItemList items;
48 items.append(KFileItem(QUrl::fromUserInput(m_url->text())));
49
50 QStringList enabledPlugins;
51 const QStringList splittedText = m_plugins->text().split(';');
52 for (const QString &plugin : splittedText) {
53 enabledPlugins << plugin.trimmed();
54 }
55
56 KIO::PreviewJob *job = KIO::filePreview(items, QSize(m_preview->width(), m_preview->height()), &enabledPlugins);
57 connect(job, &KJob::result, this, &PreviewTest::slotResult);
58 connect(job, &KIO::PreviewJob::gotPreview, this, &PreviewTest::slotPreview);
59 connect(job, &KIO::PreviewJob::failed, this, &PreviewTest::slotFailed);
60 }
61
slotResult(KJob *)62 void PreviewTest::slotResult(KJob *)
63 {
64 qDebug() << "PreviewTest::slotResult(...)";
65 }
66
slotPreview(const KFileItem &,const QPixmap & pix)67 void PreviewTest::slotPreview(const KFileItem &, const QPixmap &pix)
68 {
69 qDebug() << "PreviewTest::slotPreview()";
70 m_preview->setPixmap(pix);
71 }
72
slotFailed()73 void PreviewTest::slotFailed()
74 {
75 qDebug() << "PreviewTest::slotFailed()";
76 m_preview->setText(QStringLiteral("failed"));
77 }
78
main(int argc,char ** argv)79 int main(int argc, char **argv)
80 {
81 QApplication app(argc, argv);
82 PreviewTest *w = new PreviewTest;
83 w->show();
84 return app.exec();
85 }
86