diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index e566e13..adca488 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,91 +1,93 @@ #add_subdirectory(naturalqueryparser) add_definitions(-DTRANSLATION_DOMAIN=\"baloowidgets5\") +add_subdirectory(filepropertiesplugin) + set(widgets_SRCS kblocklayout.cpp tagwidget.cpp kedittagsdialog.cpp tagcheckbox.cpp filemetadatawidget.cpp filemetadataconfigwidget.cpp filemetadataprovider.cpp indexeddataretriever.cpp kcommentwidget.cpp keditcommentdialog.cpp metadatafilter.cpp widgetfactory.cpp #groupedlineedit.cpp #querybuilder.cpp #querybuildercompleter.cpp filefetchjob.cpp ) add_library(KF5BalooWidgets ${widgets_SRCS}) add_library(KF5::BalooWidgets ALIAS KF5BalooWidgets) target_link_libraries(KF5BalooWidgets PUBLIC Qt5::Widgets Qt5::Core KF5::KIOCore # KFileItem KF5::CoreAddons # KProcess, KJob PRIVATE KF5::I18n KF5::FileMetaData KF5::WidgetsAddons KF5::Baloo #KF5::BalooNaturalQueryParser KF5::CoreAddons KF5::ConfigGui ) set_target_properties(KF5BalooWidgets PROPERTIES VERSION ${BALOO_WIDGETS_VERSION_STRING} SOVERSION ${BALOO_WIDGETS_SOVERSION} EXPORT_NAME BalooWidgets ) target_include_directories(KF5BalooWidgets INTERFACE "$") generate_export_header(KF5BalooWidgets BASE_NAME BALOO_WIDGETS EXPORT_FILE_NAME widgets_export.h) install(TARGETS KF5BalooWidgets EXPORT KF5BalooWidgetsTargets ${KF5_INSTALL_TARGETS_DEFAULT_ARGS}) ecm_generate_headers(KF5BalooWidgets_CamelCase_HEADERS HEADER_NAMES TagWidget FileMetaDataWidget FileMetaDataConfigWidget #QueryBuilder #GroupedLineEdit PREFIX baloo REQUIRED_HEADERS KF5BalooWidgets_HEADERS ) install(FILES ${KF5BalooWidgets_CamelCase_HEADERS} DESTINATION ${KF5_INCLUDE_INSTALL_DIR}/BalooWidgets/Baloo COMPONENT Devel ) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/widgets_export.h ${KF5BalooWidgets_HEADERS} DESTINATION ${KF5_INCLUDE_INSTALL_DIR}/BalooWidgets/baloo COMPONENT Devel ) # # Extractor Process # add_executable(baloo_filemetadata_temp_extractor extractor.cpp) target_link_libraries(baloo_filemetadata_temp_extractor Qt5::Core KF5::I18n KF5::FileMetaData ) install(TARGETS baloo_filemetadata_temp_extractor DESTINATION ${BIN_INSTALL_DIR}) diff --git a/src/filepropertiesplugin/CMakeLists.txt b/src/filepropertiesplugin/CMakeLists.txt new file mode 100644 index 0000000..bd50141 --- /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.cpp b/src/filepropertiesplugin/baloofilepropertiesplugin.cpp new file mode 100644 index 0000000..6ec27c4 --- /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 index 0000000..866b548 --- /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 diff --git a/src/filepropertiesplugin/baloofilepropertiesplugin.h b/src/filepropertiesplugin/baloofilepropertiesplugin.h new file mode 100644 index 0000000..0beb03e --- /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; + +};