]>
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
,
25 const QString
& desktopEntryName
,
29 QSharedPointer
<ThumbCreator
> previewPlugin
;
30 const QString pluginPath
= QPluginLoader(desktopEntryName
).fileName();
31 if (!pluginPath
.isEmpty()) {
32 newCreator create
= (newCreator
)QLibrary::resolve(pluginPath
, "new_creator");
34 previewPlugin
.reset(dynamic_cast<ThumbCreator
*>(create()));
38 setWindowTitle(i18nc("@title:window", "Configure Preview for %1", pluginName
));
39 setSizePolicy(QSizePolicy::Preferred
, QSizePolicy::Minimum
);
42 auto layout
= new QVBoxLayout(this);
45 auto configurationWidget
= previewPlugin
->createConfigurationWidget();
46 configurationWidget
->setParent(this);
47 layout
->addWidget(configurationWidget
);
51 connect(this, &ConfigurePreviewPluginDialog::accepted
, this, [=] {
52 // TODO: It would be great having a mechanism to tell PreviewJob that only previews
53 // for a specific MIME-type should be regenerated. As this is not available yet we
54 // delete the whole thumbnails directory.
55 previewPlugin
->writeConfiguration(configurationWidget
);
57 // https://specifications.freedesktop.org/thumbnail-spec/thumbnail-spec-latest.html#DIRECTORY
58 const QString thumbnailsPath
= QStandardPaths::writableLocation(QStandardPaths::GenericCacheLocation
) + QLatin1String("/thumbnails/");
59 KIO::del(QUrl::fromLocalFile(thumbnailsPath
), KIO::HideProgressInfo
);
63 auto buttonBox
= new QDialogButtonBox(QDialogButtonBox::Ok
| QDialogButtonBox::Cancel
, this);
64 connect(buttonBox
, &QDialogButtonBox::accepted
, this, &ConfigurePreviewPluginDialog::accept
);
65 connect(buttonBox
, &QDialogButtonBox::rejected
, this, &ConfigurePreviewPluginDialog::reject
);
66 layout
->addWidget(buttonBox
);
68 auto okButton
= buttonBox
->button(QDialogButtonBox::Ok
);
69 okButton
->setShortcut(Qt::CTRL
| Qt::Key_Return
);
70 okButton
->setDefault(true);