]>
cloud.milkyroute.net Git - dolphin.git/blob - src/settings/general/configurepreviewplugindialog.cpp
2 * SPDX-FileCopyrightText: 2011 Peter Penz <peter.penz19@gmail.com>
4 * SPDX-License-Identifier: GPL-2.0-or-later
7 #include "configurepreviewplugindialog.h"
9 #if KIOWIDGETS_BUILD_DEPRECATED_SINCE(5, 87)
11 #include <KIO/DeleteJob>
12 #include <KIO/JobUiDelegate>
13 #include <KIO/ThumbCreator>
14 #include <KJobWidgets>
15 #include <KLocalizedString>
16 #include <QPluginLoader>
18 #include <QDialogButtonBox>
19 #include <QPushButton>
20 #include <QStandardPaths>
22 #include <QVBoxLayout>
24 ConfigurePreviewPluginDialog::ConfigurePreviewPluginDialog(const QString
&pluginName
, const QString
&desktopEntryName
, QWidget
*parent
)
27 QSharedPointer
<ThumbCreator
> previewPlugin
;
28 const QString pluginPath
= QPluginLoader(desktopEntryName
).fileName();
29 if (!pluginPath
.isEmpty()) {
30 newCreator create
= (newCreator
)QLibrary::resolve(pluginPath
, "new_creator");
32 previewPlugin
.reset(dynamic_cast<ThumbCreator
*>(create()));
36 setWindowTitle(i18nc("@title:window", "Configure Preview for %1", pluginName
));
37 setSizePolicy(QSizePolicy::Preferred
, QSizePolicy::Minimum
);
40 auto layout
= new QVBoxLayout(this);
43 auto configurationWidget
= previewPlugin
->createConfigurationWidget();
44 configurationWidget
->setParent(this);
45 layout
->addWidget(configurationWidget
);
49 connect(this, &ConfigurePreviewPluginDialog::accepted
, this, [=] {
50 // TODO: It would be great having a mechanism to tell PreviewJob that only previews
51 // for a specific MIME-type should be regenerated. As this is not available yet we
52 // delete the whole thumbnails directory.
53 previewPlugin
->writeConfiguration(configurationWidget
);
55 // https://specifications.freedesktop.org/thumbnail-spec/thumbnail-spec-latest.html#DIRECTORY
56 const QString thumbnailsPath
= QStandardPaths::writableLocation(QStandardPaths::GenericCacheLocation
) + QLatin1String("/thumbnails/");
57 KIO::del(QUrl::fromLocalFile(thumbnailsPath
), KIO::HideProgressInfo
);
61 auto buttonBox
= new QDialogButtonBox(QDialogButtonBox::Ok
| QDialogButtonBox::Cancel
, this);
62 connect(buttonBox
, &QDialogButtonBox::accepted
, this, &ConfigurePreviewPluginDialog::accept
);
63 connect(buttonBox
, &QDialogButtonBox::rejected
, this, &ConfigurePreviewPluginDialog::reject
);
64 layout
->addWidget(buttonBox
);
66 auto okButton
= buttonBox
->button(QDialogButtonBox::Ok
);
67 okButton
->setShortcut(Qt::CTRL
| Qt::Key_Return
);
68 okButton
->setDefault(true);