diff --git a/Messages.sh b/Messages.sh --- a/Messages.sh +++ b/Messages.sh @@ -2,4 +2,6 @@ $EXTRACTRC `find . -name \*.rc -o -name \*.ui -o -name \*.kcfg | grep -v "/src/naturalqueryparser/"` >> rc.cpp $XGETTEXT `find . -name \*.cc -o -name \*.cpp -o -name \*.h -o -name \*.qml | grep -v "/src/naturalqueryparser/"` -o $podir/baloowidgets.pot + +$XGETTEXT `find . -name \*.cc -o -name \*.cpp -o -name \*.h -o -name \*.qml | grep -v "/src/filepropertiesplugin/"` -o $podir/baloowidgets.pot rm -f rc.cpp diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,5 +1,6 @@ #add_subdirectory(naturalqueryparser) add_definitions(-DTRANSLATION_DOMAIN=\"baloowidgets\") +add_subdirectory(filepropertiesplugin) set(widgets_SRCS kblocklayout.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,image/jp2,image/jpeg,image/pgf,image/png,image/tiff,image/x-exv,image/x-canon-cr2,image/x-canon-crw,image/x-fuji-raf,image/x-minolta-mrw,image/x-nikon-nef,image/x-olympus-orf,image/x-panasonic-rw2,image/x-pentax-pef,image/x-photoshop,image/x-samsung-srw,video/x-ms-asf,video/x-msvideo,video/x-flv,video/quicktime,video/mpeg,video/x-ms-wmv,video/mp4,video/x-matroska,video/webm,application/x-mobipocket-ebook,application/vnd.oasis.opendocument.text,application/vnd.oasis.opendocument.presentation,application/vnd.oasis.opendocument.spreadsheet,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.openxmlformats-officedocument.presentationml.presentation,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/msword,application/vnd.ms-excel,application/vnd.ms-powerpoint,text/plain,text/richtext,text/x-gettext-translation,application/pdf,audio/mpeg,audio/mpeg3,audio/x-mpeg,audio/mp4,audio/flac,audio/x-musepack,audio/ogg,audio/x-vorbis+ogg,audio/opus,audio/x-opus+ogg,audio/wav,audio/x-aiff,audio/x-ape,audio/x-wavpack +MimeType=all/all,text/plain,image/jpeg