File indexing completed on 2024-12-08 07:17:49

0001 /*
0002     SPDX-FileCopyrightText: 2017 Kai Uwe Broulik <kde@privat.broulik.de>
0003 
0004     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0005 */
0006 
0007 #include "baloofilepropertiesplugin.h"
0008 
0009 #include <QFrame>
0010 #include <QScrollArea>
0011 #include <QVBoxLayout>
0012 
0013 #include <kio_version.h>
0014 #if KIO_VERSION >= QT_VERSION_CHECK(5, 98, 0)
0015 #include <KIO/JobUiDelegateFactory>
0016 #else
0017 #include <KIO/JobUiDelegate>
0018 #endif
0019 
0020 #include <KIO/OpenUrlJob>
0021 #include <KLocalizedString>
0022 #include <KPluginFactory>
0023 
0024 #include "filemetadatawidget.h"
0025 
0026 K_PLUGIN_CLASS_WITH_JSON(BalooFilePropertiesPlugin, "baloofilepropertiesplugin.json")
0027 
0028 BalooFilePropertiesPlugin::BalooFilePropertiesPlugin(QObject *parent, const QList<QVariant> &args)
0029 #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
0030     : KPropertiesDialogPlugin(qobject_cast<KPropertiesDialog *>(parent))
0031 #else
0032     : KPropertiesDialogPlugin(parent)
0033 #endif
0034 {
0035     Q_UNUSED(args);
0036 
0037     auto widgetContainer = new QWidget();
0038 
0039     auto containerLayout = new QVBoxLayout(widgetContainer);
0040     containerLayout->setContentsMargins(0, 0, 0, 0);
0041     containerLayout->setSpacing(0);
0042 
0043     auto metaDataWidget = new Baloo::FileMetaDataWidget();
0044     metaDataWidget->setItems(properties->items());
0045     connect(metaDataWidget, &Baloo::FileMetaDataWidget::urlActivated, this, [this](const QUrl &url) {
0046         auto job = new KIO::OpenUrlJob(url);
0047 #if KIO_VERSION >= QT_VERSION_CHECK(5, 98, 0)
0048         job->setUiDelegate(KIO::createDefaultJobUiDelegate(KJobUiDelegate::AutoHandlingEnabled, properties));
0049 #else
0050         job->setUiDelegate(new KIO::JobUiDelegate(KJobUiDelegate::AutoHandlingEnabled, properties));
0051 #endif
0052         job->start();
0053     });
0054 
0055     containerLayout->addWidget(metaDataWidget);
0056     containerLayout->addStretch(1);
0057 
0058     auto metaDataArea = new QScrollArea();
0059 
0060     metaDataArea->setWidget(widgetContainer);
0061     metaDataArea->setWidgetResizable(true);
0062     metaDataArea->setFrameShape(QFrame::NoFrame);
0063 
0064     connect(metaDataWidget, &Baloo::FileMetaDataWidget::metaDataRequestFinished, this, [this, metaDataArea] {
0065         properties->addPage(metaDataArea, i18nc("Tab page with file meta data", "&Details"));
0066     });
0067 }
0068 
0069 BalooFilePropertiesPlugin::~BalooFilePropertiesPlugin() = default;
0070 
0071 #include "baloofilepropertiesplugin.moc"
0072 
0073 #include "moc_baloofilepropertiesplugin.cpp"