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