-/***************************************************************************
- * Copyright (C) 2006 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: 2006 Peter Penz <peter.penz19@gmail.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
#include "previewssettingspage.h"
#include <KIO/PreviewJob>
#include <KLocalizedString>
-#include <KServiceTypeTrader>
+#include <KPluginMetaData>
#include <QHBoxLayout>
#include <QLabel>
#include <QListView>
-#include <QPainter>
+#include <QScroller>
#include <QShowEvent>
#include <QSortFilterProxyModel>
#include <QSpinBox>
QLabel* showPreviewsLabel = new QLabel(i18nc("@title:group", "Show previews in the view for:"), this);
m_listView = new QListView(this);
+ QScroller::grabGesture(m_listView->viewport(), QScroller::TouchGesture);
+#if KIOWIDGETS_BUILD_DEPRECATED_SINCE(5, 87)
ServiceItemDelegate* delegate = new ServiceItemDelegate(m_listView, m_listView);
connect(delegate, &ServiceItemDelegate::requestServiceConfiguration,
this, &PreviewsSettingsPage::configureService);
+ m_listView->setItemDelegate(delegate);
+#endif
ServiceModel* serviceModel = new ServiceModel(this);
QSortFilterProxyModel* proxyModel = new QSortFilterProxyModel(this);
proxyModel->setSortCaseSensitivity(Qt::CaseInsensitive);
m_listView->setModel(proxyModel);
- m_listView->setItemDelegate(delegate);
m_listView->setVerticalScrollMode(QListView::ScrollPerPixel);
+ m_listView->setUniformItemSizes(true);
QLabel* localFileSizeLabel = new QLabel(i18n("Skip previews for local files above:"), this);
m_localFileSizeBox = new QSpinBox(this);
m_localFileSizeBox->setSingleStep(1);
- m_localFileSizeBox->setSuffix(QStringLiteral(" MB"));
+ m_localFileSizeBox->setSuffix(i18nc("Mebibytes; used as a suffix in a spinbox showing e.g. '3 MiB'", " MiB"));
m_localFileSizeBox->setRange(0, 9999999); /* MB */
- m_localFileSizeBox->setSpecialValueText(tr("No limit"));
+ m_localFileSizeBox->setSpecialValueText(i18n("No limit"));
QHBoxLayout* localFileSizeBoxLayout = new QHBoxLayout();
localFileSizeBoxLayout->addWidget(localFileSizeLabel);
m_remoteFileSizeBox = new QSpinBox(this);
m_remoteFileSizeBox->setSingleStep(1);
- m_remoteFileSizeBox->setSuffix(QStringLiteral(" MB"));
+ m_remoteFileSizeBox->setSuffix(i18nc("Mebibytes; used as a suffix in a spinbox showing e.g. '3 MiB'", " MiB"));
m_remoteFileSizeBox->setRange(0, 9999999); /* MB */
- m_remoteFileSizeBox->setSpecialValueText(tr("No previews"));
+ m_remoteFileSizeBox->setSpecialValueText(i18n("No previews"));
QHBoxLayout* remoteFileSizeBoxLayout = new QHBoxLayout();
remoteFileSizeBoxLayout->addWidget(remoteFileSizeLabel);
loadSettings();
connect(m_listView, &QListView::clicked, this, &PreviewsSettingsPage::changed);
- connect(m_localFileSizeBox, QOverload<int>::of(&QSpinBox::valueChanged), this, &PreviewsSettingsPage::changed);
- connect(m_remoteFileSizeBox, QOverload<int>::of(&QSpinBox::valueChanged), this, &PreviewsSettingsPage::changed);
+ connect(m_localFileSizeBox, &QSpinBox::valueChanged, this, &PreviewsSettingsPage::changed);
+ connect(m_remoteFileSizeBox, &QSpinBox::valueChanged, this, &PreviewsSettingsPage::changed);
}
PreviewsSettingsPage::~PreviewsSettingsPage()
globalConfig.writeEntry("MaximumRemoteSize",
maximumRemoteSize,
KConfigBase::Normal | KConfigBase::Global);
+
globalConfig.sync();
}
SettingsPageBase::showEvent(event);
}
+#if KIOWIDGETS_BUILD_DEPRECATED_SINCE(5, 87)
void PreviewsSettingsPage::configureService(const QModelIndex& index)
{
const QAbstractItemModel* model = index.model();
dialog->setAttribute(Qt::WA_DeleteOnClose);
dialog->show();
}
+#endif
void PreviewsSettingsPage::loadPreviewPlugins()
{
QAbstractItemModel* model = m_listView->model();
- const KService::List plugins = KServiceTypeTrader::self()->query(QStringLiteral("ThumbCreator"));
- foreach (const KService::Ptr& service, plugins) {
- const bool configurable = service->property(QStringLiteral("Configurable"), QVariant::Bool).toBool();
- const bool show = m_enabledPreviewPlugins.contains(service->desktopEntryName());
+ const QVector<KPluginMetaData> plugins = KIO::PreviewJob::availableThumbnailerPlugins();
+ for (const KPluginMetaData &plugin : plugins) {
+ const bool show = m_enabledPreviewPlugins.contains(plugin.pluginId());
model->insertRow(0);
const QModelIndex index = model->index(0, 0);
model->setData(index, show, Qt::CheckStateRole);
+ model->setData(index, plugin.name(), Qt::DisplayRole);
+ model->setData(index, plugin.pluginId(), ServiceModel::DesktopEntryNameRole);
+
+#if KIOWIDGETS_BUILD_DEPRECATED_SINCE(5, 87)
+ const bool configurable = plugin.value(QStringLiteral("Configurable"), false);
model->setData(index, configurable, ServiceModel::ConfigurableRole);
- model->setData(index, service->name(), Qt::DisplayRole);
- model->setData(index, service->desktopEntryName(), ServiceModel::DesktopEntryNameRole);
+#endif
}
model->sort(Qt::DisplayRole);