Warning, file /libraries/baloo-widgets/src/filemetadatawidget.h was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 /* 0002 SPDX-FileCopyrightText: 2012-2013 Vishesh Handa <me@vhanda.in> 0003 0004 Adapted from KFileMetadataWidget 0005 SPDX-FileCopyrightText: 2008 Sebastian Trueg <trueg@kde.org> 0006 SPDX-FileCopyrightText: 2009-2010 Peter Penz <peter.penz@gmx.at> 0007 0008 SPDX-License-Identifier: LGPL-2.1-or-later 0009 */ 0010 0011 #ifndef _BALOO_FILE_METADATAWIDGET_H 0012 #define _BALOO_FILE_METADATAWIDGET_H 0013 0014 #include "widgets_export.h" 0015 0016 #include <KFileItem> 0017 0018 #include <QLocale> 0019 #include <QUrl> 0020 #include <QWidget> 0021 0022 #include <memory> 0023 0024 namespace Baloo 0025 { 0026 class FileMetaDataWidgetPrivate; 0027 0028 /** 0029 * Modify format of date display 0030 */ 0031 enum class DateFormats { 0032 LongFormat = QLocale::LongFormat, ///< @see QLocale::LongFormat 0033 ShortFormat = QLocale::ShortFormat, ///< @see QLocale::ShortFormat 0034 }; 0035 0036 enum class ConfigurationMode { 0037 ReStart = 0, /**< Switch into configuration mode. The selection is 0038 * initialized with the current configuration. 0039 * In case the widget is in configuration mode already, 0040 * the changes are discarded, and the mode is kept. 0041 */ 0042 Accept, /**< Save any changes, switch to regular mode */ 0043 Cancel, /**< Discard any changes, switch to regular mode */ 0044 }; 0045 0046 class BALOO_WIDGETS_EXPORT FileMetaDataWidget : public QWidget 0047 { 0048 Q_OBJECT 0049 Q_PROPERTY(bool readOnly READ isReadOnly WRITE setReadOnly) 0050 Q_PROPERTY(DateFormats dateFormat READ dateFormat WRITE setDateFormat) 0051 0052 public: 0053 explicit FileMetaDataWidget(QWidget *parent = nullptr); 0054 ~FileMetaDataWidget() override; 0055 0056 /** 0057 * Sets the items for which the meta data should be shown. 0058 * The signal metaDataRequestFinished() will be emitted, 0059 * as soon as the meta data for the items has been received. 0060 */ 0061 void setItems(const KFileItemList &items); 0062 KFileItemList items() const; 0063 0064 /** 0065 * If set to true, data such as the comment, tag or rating cannot be 0066 * changed by the user. Per default read-only is disabled. 0067 */ 0068 void setReadOnly(bool readOnly); 0069 bool isReadOnly() const; 0070 0071 /** 0072 * Set date display format. 0073 * Per Default format is Long = @see QLocale::LongFormat 0074 */ 0075 void setDateFormat(const DateFormats format); 0076 DateFormats dateFormat() const; 0077 0078 /** @see QWidget::sizeHint() */ 0079 QSize sizeHint() const override; 0080 0081 /** 0082 * Switch between regular (view) and configuration mode. 0083 * @since 19.08.00 0084 */ 0085 void setConfigurationMode(ConfigurationMode mode); 0086 0087 Q_SIGNALS: 0088 /** 0089 * Is emitted, if a meta data represents an URL that has 0090 * been clicked by the user. 0091 */ 0092 void urlActivated(const QUrl &url); 0093 0094 /** 0095 * Is emitted after the meta data has been received for the items 0096 * set by KFileMetaDataWidget::setItems(). 0097 * @since 4.6 0098 */ 0099 void metaDataRequestFinished(const KFileItemList &items); 0100 0101 private: 0102 int getMargin() const; 0103 friend class FileMetaDataWidgetPrivate; 0104 std::unique_ptr<FileMetaDataWidgetPrivate> const d; 0105 0106 Q_PRIVATE_SLOT(d, void slotLoadingFinished()) 0107 Q_PRIVATE_SLOT(d, void slotLinkActivated(QString)) 0108 Q_PRIVATE_SLOT(d, void slotDataChangeStarted()) 0109 Q_PRIVATE_SLOT(d, void slotDataChangeFinished()) 0110 }; 0111 0112 } 0113 Q_DECLARE_METATYPE(Baloo::DateFormats) 0114 0115 #endif // _BALOO_FILE_METADATAWIDGET_H