diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,6 +1,8 @@ #add_subdirectory(naturalqueryparser) add_definitions(-DTRANSLATION_DOMAIN=\"baloowidgets5\") +add_subdirectory(filepropertiesplugin) + set(widgets_SRCS kblocklayout.cpp tagwidget.cpp diff --git a/src/filepropertiesplugin/CMakeLists.txt b/src/filepropertiesplugin/CMakeLists.txt new file mode 100644 --- /dev/null +++ b/src/filepropertiesplugin/CMakeLists.txt @@ -0,0 +1,12 @@ +set(baloofilepropertiesplugin_PART_SRCS baloofilepropertiesplugin.cpp) + +add_library(baloofilepropertiesplugin MODULE ${baloofilepropertiesplugin_PART_SRCS}) + +target_link_libraries(baloofilepropertiesplugin + KF5::I18n + KF5::KIOWidgets + KF5::BalooWidgets +) + +install(TARGETS baloofilepropertiesplugin DESTINATION ${PLUGIN_INSTALL_DIR}) +install(FILES baloofilepropertiesplugin.desktop DESTINATION ${SERVICES_INSTALL_DIR}) diff --git a/src/filepropertiesplugin/baloofilepropertiesplugin.h b/src/filepropertiesplugin/baloofilepropertiesplugin.h new file mode 100644 --- /dev/null +++ b/src/filepropertiesplugin/baloofilepropertiesplugin.h @@ -0,0 +1,35 @@ +/* + * This file is part of the KDE Baloo Project + * Copyright (C) 2017 Kai Uwe Broulik + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) version 3, or any + * later version accepted by the membership of KDE e.V. (or its + * successor approved by the membership of KDE e.V.), which shall + * act as a proxy defined in Section 6 of version 3 of the license. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see . + * + */ + +#pragma once + +#include + +class BalooFilePropertiesPlugin : public KPropertiesDialogPlugin +{ + Q_OBJECT + +public: + BalooFilePropertiesPlugin(QObject *parent, const QList &args); + ~BalooFilePropertiesPlugin() override; + +}; diff --git a/src/filepropertiesplugin/baloofilepropertiesplugin.cpp b/src/filepropertiesplugin/baloofilepropertiesplugin.cpp new file mode 100644 --- /dev/null +++ b/src/filepropertiesplugin/baloofilepropertiesplugin.cpp @@ -0,0 +1,70 @@ +/* + * This file is part of the KDE Baloo Project + * Copyright (C) 2017 Kai Uwe Broulik + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) version 3, or any + * later version accepted by the membership of KDE e.V. (or its + * successor approved by the membership of KDE e.V.), which shall + * act as a proxy defined in Section 6 of version 3 of the license. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see . + * + */ + +#include "baloofilepropertiesplugin.h" + +#include +#include +#include + +#include +#include +#include +#include + +#include "filemetadatawidget.h" + +K_PLUGIN_FACTORY(BalooFilePropertiesPluginFactory, registerPlugin();) +K_EXPORT_PLUGIN(BalooFilePropertiesPlugin("fileshare_propsdlgplugin")) + +BalooFilePropertiesPlugin::BalooFilePropertiesPlugin(QObject *parent, const QList &args) + : KPropertiesDialogPlugin(qobject_cast(parent)) +{ + Q_UNUSED(args); + + QWidget *widgetContainer = new QWidget(); + + QVBoxLayout *containerLayout = new QVBoxLayout(widgetContainer); + containerLayout->setContentsMargins(0, 0, 0, 0); + containerLayout->setSpacing(0); + + auto *metaDataWidget = new Baloo::FileMetaDataWidget(); + metaDataWidget->setItems(properties->items()); + connect(metaDataWidget, &Baloo::FileMetaDataWidget::urlActivated, this, [this](const QUrl &url) { + new KRun(url, properties); + }); + + containerLayout->addWidget(metaDataWidget); + containerLayout->addStretch(1); + + QScrollArea *metaDataArea = new QScrollArea(); + + metaDataArea->setWidget(widgetContainer); + metaDataArea->setWidgetResizable(true); + metaDataArea->setFrameShape(QFrame::NoFrame); + + properties->addPage(metaDataArea, i18nc("Tab page with file meta data", "&Details")); +} + +BalooFilePropertiesPlugin::~BalooFilePropertiesPlugin() = default; + +#include "baloofilepropertiesplugin.moc" diff --git a/src/filepropertiesplugin/baloofilepropertiesplugin.desktop b/src/filepropertiesplugin/baloofilepropertiesplugin.desktop new file mode 100644 --- /dev/null +++ b/src/filepropertiesplugin/baloofilepropertiesplugin.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Type=Service +Icon=baloo +Name=File Meta Data Properties Page +Comment=Properties page showing meta data of files, such as image dimensions, artist information, and others +X-KDE-Library=baloofilepropertiesplugin +X-KDE-Protocol=file +X-KDE-ServiceTypes=KPropertiesDialog/Plugin +MimeType=inode/directory;application/octet-stream