X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/81b84a1eaf9fcfc3c2318b7ab4d30c7c578e9680..aa31bcecc65948b469815fbd89389926c4efbeb3:/src/settings/general/configurepreviewplugindialog.cpp diff --git a/src/settings/general/configurepreviewplugindialog.cpp b/src/settings/general/configurepreviewplugindialog.cpp index ce70e2bad..a391812df 100644 --- a/src/settings/general/configurepreviewplugindialog.cpp +++ b/src/settings/general/configurepreviewplugindialog.cpp @@ -1,81 +1,71 @@ -/*************************************************************************** - * Copyright (C) 2011 by Peter Penz * - * * - * 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 + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ #include "configurepreviewplugindialog.h" -#include -#include -#include -#include +#if KIOWIDGETS_BUILD_DEPRECATED_SINCE(5, 87) -#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) +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 previewPlugin; + const QString pluginPath = QPluginLoader(desktopEntryName).fileName(); + if (!pluginPath.isEmpty()) { + newCreator create = (newCreator)QLibrary::resolve(pluginPath, "new_creator"); if (create) { - m_previewPlugin = dynamic_cast(create()); + previewPlugin.reset(dynamic_cast(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