-/***************************************************************************
- * 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>
+#if KIOWIDGETS_BUILD_DEPRECATED_SINCE(5, 87)
+
+#include <KIO/DeleteJob>
+#include <KIO/JobUiDelegate>
+#include <KIO/ThumbCreator>
+#include <KJobWidgets>
#include <KLocalizedString>
-#include <KIO/NetAccess>
-#include <kio/thumbcreator.h>
+#include <QPluginLoader>
-#include <QApplication>
-#include <QDir>
-#include <QVBoxLayout>
+#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