From 617e1b378b354c513bac638ded47addc1c7204a5 Mon Sep 17 00:00:00 2001 From: Emmanuel Pescosta Date: Sat, 24 Jan 2015 23:07:30 +0100 Subject: [PATCH] Port ConfigurePreviewPluginDialog away from KLibrary, KIO::NetAccess::del and ThumbCreatorV2 --- .../general/configurepreviewplugindialog.cpp | 77 +++++++++---------- .../general/configurepreviewplugindialog.h | 17 +--- 2 files changed, 41 insertions(+), 53 deletions(-) diff --git a/src/settings/general/configurepreviewplugindialog.cpp b/src/settings/general/configurepreviewplugindialog.cpp index c81e666c8..eb9ad010c 100644 --- a/src/settings/general/configurepreviewplugindialog.cpp +++ b/src/settings/general/configurepreviewplugindialog.cpp @@ -19,28 +19,29 @@ #include "configurepreviewplugindialog.h" -#include +#include #include -#include -#include +#include +#include +#include +#include -#include -#include -#include #include +#include +#include +#include ConfigurePreviewPluginDialog::ConfigurePreviewPluginDialog(const QString& pluginName, const QString& desktopEntryName, QWidget* parent) : - KDialog(parent), - m_configurationWidget(0), - m_previewPlugin(0) + KDialog(parent) { - KLibrary library(desktopEntryName); - if (library.load()) { - newCreator create = (newCreator)library.resolveFunction("new_creator"); + QSharedPointer previewPlugin; + const QString pluginPath = KPluginLoader::findPlugin(desktopEntryName); + if (!pluginPath.isEmpty()) { + newCreator create = (newCreator)QLibrary::resolve(pluginPath, "new_creator"); if (create) { - m_previewPlugin = dynamic_cast(create()); + previewPlugin.reset(dynamic_cast(create())); } } @@ -49,31 +50,27 @@ ConfigurePreviewPluginDialog::ConfigurePreviewPluginDialog(const QString& plugin setButtons(Ok | Cancel); setDefaultButton(Ok); - QWidget* mainWidget = new QWidget(this); - mainWidget->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Minimum); - QVBoxLayout* layout = new QVBoxLayout(mainWidget); - if (m_previewPlugin) { - m_configurationWidget = m_previewPlugin->createConfigurationWidget(); - layout->addWidget(m_configurationWidget); + if (previewPlugin) { + auto mainWidget = new QWidget(this); + mainWidget->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Minimum); + setMainWidget(mainWidget); + + auto configurationWidget = previewPlugin->createConfigurationWidget(); + configurationWidget->setParent(mainWidget); + + auto layout = new QVBoxLayout(mainWidget); + layout->addWidget(configurationWidget); + layout->addStretch(); + + connect(this, &ConfigurePreviewPluginDialog::okClicked, this, [=] { + // TODO: It would be great having a mechanism to tell PreviewJob that only previews + // for a specific MIME-type should be regenerated. As this is not available yet we + // delete the whole thumbnails directory. + previewPlugin->writeConfiguration(configurationWidget); + + // http://specifications.freedesktop.org/thumbnail-spec/thumbnail-spec-latest.html#DIRECTORY + const QString thumbnailsPath = QStandardPaths::writableLocation(QStandardPaths::GenericCacheLocation) + QLatin1String("/thumbnails/"); + KIO::del(QUrl::fromLocalFile(thumbnailsPath), KIO::HideProgressInfo); + }); } - layout->addStretch(1); - - setMainWidget(mainWidget); - - connect(this, &ConfigurePreviewPluginDialog::okClicked, this, &ConfigurePreviewPluginDialog::slotOk); -} - -ConfigurePreviewPluginDialog::~ConfigurePreviewPluginDialog() -{ -} - -void ConfigurePreviewPluginDialog::slotOk() -{ - m_previewPlugin->writeConfiguration(m_configurationWidget); - // TODO: It would be great having a mechanism to tell PreviewJob that only previews - // for a specific MIME-type should be regenerated. As this is not available yet we - // delete the whole thumbnails directory. - QApplication::changeOverrideCursor(Qt::BusyCursor); - KIO::NetAccess::del(QUrl::fromLocalFile(QDir::homePath() + "/.thumbnails/"), this); - QApplication::restoreOverrideCursor(); -} +} \ No newline at end of file diff --git a/src/settings/general/configurepreviewplugindialog.h b/src/settings/general/configurepreviewplugindialog.h index 5a3f5354a..02a0cde34 100644 --- a/src/settings/general/configurepreviewplugindialog.h +++ b/src/settings/general/configurepreviewplugindialog.h @@ -22,8 +22,6 @@ #include -class ThumbCreatorV2; - /** * @brief Dialog for configuring preview-plugins. */ @@ -39,17 +37,10 @@ public: * widget. * @param parent Parent widget. */ - explicit ConfigurePreviewPluginDialog(const QString& pluginName, - const QString& desktopEntryName, - QWidget* parent = 0); - virtual ~ConfigurePreviewPluginDialog(); - -private slots: - void slotOk(); - -private: - QWidget* m_configurationWidget; - ThumbCreatorV2* m_previewPlugin; + ConfigurePreviewPluginDialog(const QString& pluginName, + const QString& desktopEntryName, + QWidget* parent); + virtual ~ConfigurePreviewPluginDialog() = default; }; #endif