]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/settings/general/configurepreviewplugindialog.cpp
GIT_SILENT Sync po/docbooks with svn
[dolphin.git] / src / settings / general / configurepreviewplugindialog.cpp
index ce70e2bad40c9bfacd67c37138e36834c956cc5f..a391812dfdf0dcd6cb442d63950ee393c5835e40 100644 (file)
@@ -1,81 +1,71 @@
-/***************************************************************************
- *   Copyright (C) 2011 by Peter Penz <peter.penz19@gmail.com>             *
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- *   This program is distributed in the hope that it will be useful,       *
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
- *   GNU General Public License for more details.                          *
- *                                                                         *
- *   You should have received a copy of the GNU General Public License     *
- *   along with this program; if not, write to the                         *
- *   Free Software Foundation, Inc.,                                       *
- *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA          *
- ***************************************************************************/
+/*
+ * SPDX-FileCopyrightText: 2011 Peter Penz <peter.penz19@gmail.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
 
 #include "configurepreviewplugindialog.h"
 
-#include <KLibrary>
-#include <KLocale>
-#include <KIO/NetAccess>
-#include <kio/thumbcreator.h>
+#if KIOWIDGETS_BUILD_DEPRECATED_SINCE(5, 87)
 
-#include <QApplication>
-#include <QDir>
-#include <QVBoxLayout>
+#include <KIO/DeleteJob>
+#include <KIO/JobUiDelegate>
+#include <KIO/ThumbCreator>
+#include <KJobWidgets>
+#include <KLocalizedString>
+#include <QPluginLoader>
+
+#include <QDialogButtonBox>
+#include <QPushButton>
+#include <QStandardPaths>
 #include <QUrl>
+#include <QVBoxLayout>
 
-ConfigurePreviewPluginDialog::ConfigurePreviewPluginDialog(const QString& pluginName,
-                                                           const QString& desktopEntryName,
-                                                           QWidget* parent) :
-    KDialog(parent),
-    m_configurationWidget(0),
-    m_previewPlugin(0)
+ConfigurePreviewPluginDialog::ConfigurePreviewPluginDialog(const QString &pluginName, const QString &desktopEntryName, QWidget *parent)
+    : QDialog(parent)
 {
-    KLibrary library(desktopEntryName);
-    if (library.load()) {
-        newCreator create = (newCreator)library.resolveFunction("new_creator");
+    QSharedPointer<ThumbCreator> previewPlugin;
+    const QString pluginPath = QPluginLoader(desktopEntryName).fileName();
+    if (!pluginPath.isEmpty()) {
+        newCreator create = (newCreator)QLibrary::resolve(pluginPath, "new_creator");
         if (create) {
-            m_previewPlugin = dynamic_cast<ThumbCreatorV2*>(create());
+            previewPlugin.reset(dynamic_cast<ThumbCreator *>(create()));
         }
     }
 
-    setCaption(i18nc("@title:window", "Configure Preview for %1", pluginName));
+    setWindowTitle(i18nc("@title:window", "Configure Preview for %1", pluginName));
+    setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Minimum);
     setMinimumWidth(400);
-    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);
-    }
-    layout->addStretch(1);
+    auto layout = new QVBoxLayout(this);
 
-    setMainWidget(mainWidget);
+    if (previewPlugin) {
+        auto configurationWidget = previewPlugin->createConfigurationWidget();
+        configurationWidget->setParent(this);
+        layout->addWidget(configurationWidget);
 
-    connect(this, &ConfigurePreviewPluginDialog::okClicked, this, &ConfigurePreviewPluginDialog::slotOk);
-}
+        layout->addStretch();
 
-ConfigurePreviewPluginDialog::~ConfigurePreviewPluginDialog()
-{
-}
+        connect(this, &ConfigurePreviewPluginDialog::accepted, 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);
 
-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();
+            // https://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);
+        });
+    }
+
+    auto buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, this);
+    connect(buttonBox, &QDialogButtonBox::accepted, this, &ConfigurePreviewPluginDialog::accept);
+    connect(buttonBox, &QDialogButtonBox::rejected, this, &ConfigurePreviewPluginDialog::reject);
+    layout->addWidget(buttonBox);
 
+    auto okButton = buttonBox->button(QDialogButtonBox::Ok);
+    okButton->setShortcut(Qt::CTRL | Qt::Key_Return);
+    okButton->setDefault(true);
 }
 
+#endif // KIO_VERSION