]> cloud.milkyroute.net Git - dolphin.git/blob - src/panels/information/informationpanelcontent.h
Merge branch 'release/20.08' into master
[dolphin.git] / src / panels / information / informationpanelcontent.h
1 /*
2 * SPDX-FileCopyrightText: 2009-2010 Peter Penz <peter.penz19@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7 #ifndef INFORMATIONPANELCONTENT_H
8 #define INFORMATIONPANELCONTENT_H
9
10 #include <KFileItem>
11 #include <config-baloo.h>
12
13 #include <QPointer>
14 #include <QUrl>
15 #include <QWidget>
16
17 class KFileItemList;
18 class PhononWidget;
19 class PixmapViewer;
20 class PlacesItemModel;
21 class QPixmap;
22 class QDialogButtonBox;
23 class QString;
24 class QLabel;
25 class QScrollArea;
26 class QGestureEvent;
27
28 namespace KIO {
29 class PreviewJob;
30 }
31
32 namespace Baloo {
33 class FileMetaDataWidget;
34 }
35
36 /**
37 * @brief Manages the widgets that display the meta information
38 * for file items of the Information Panel.
39 */
40 class InformationPanelContent : public QWidget
41 {
42 Q_OBJECT
43
44 public:
45 explicit InformationPanelContent(QWidget* parent = nullptr);
46 ~InformationPanelContent() override;
47
48 /**
49 * Shows the meta information for the item \p item.
50 * The preview of the item is generated asynchronously,
51 * the other meta information are fetched synchronously.
52 */
53 void showItem(const KFileItem& item);
54
55 /**
56 * Shows the meta information for the items \p items and its preview
57 */
58 void showItems(const KFileItemList& items);
59
60 KFileItemList items();
61
62 /**
63 * Refreshes the preview display, hiding it if needed
64 */
65 void refreshPreview();
66
67 /**
68 * Switch the metadatawidget into configuration mode
69 */
70 void configureShownProperties();
71
72 /*
73 * Set the auto play media mode for the file previewed
74 * Eventually starting media playback when turning it on
75 * But not stopping it when turning it off
76 */
77 void setPreviewAutoPlay(bool autoPlay);
78
79 signals:
80 void urlActivated( const QUrl& url );
81 void configurationFinished();
82 void contextMenuRequested(const QPoint& pos);
83
84 public slots:
85 /**
86 * Is invoked after the file meta data configuration dialog has been
87 * closed and refreshes the displayed meta data by the panel.
88 */
89 void refreshMetaData();
90
91 protected:
92 /** @see QObject::eventFilter() */
93 bool eventFilter(QObject* obj, QEvent* event) override;
94
95 bool event(QEvent * event) override;
96
97 private slots:
98 /**
99 * Is invoked if no preview is available for the item. In this
100 * case the icon will be shown.
101 */
102 void showIcon(const KFileItem& item);
103
104 /**
105 * Is invoked if a preview is available for the item. The preview
106 * \a pixmap is shown inside the info page.
107 */
108 void showPreview(const KFileItem& item, const QPixmap& pixmap);
109
110 /**
111 * Marks the currently shown preview as outdated
112 * by greying the content.
113 */
114 void markOutdatedPreview();
115
116 void slotHasVideoChanged(bool hasVideo);
117
118 private:
119 /**
120 * Sets the text for the label \a m_nameLabel and assures that the
121 * text is split in a way that it can be wrapped within the
122 * label width (QLabel::setWordWrap() does not work if the
123 * text represents one extremely long word).
124 */
125 void setNameLabelText(const QString& text);
126
127 /**
128 * Adjusts the sizes of the widgets dependent on the available
129 * width given by \p width.
130 */
131 void adjustWidgetSizes(int width);
132
133 /**
134 * Refreshes the image in the PixmapViewer
135 */
136 void refreshPixmapView();
137
138 bool gestureEvent(QGestureEvent* event);
139
140 private:
141 KFileItem m_item;
142
143 QPointer<KIO::PreviewJob> m_previewJob;
144 QTimer* m_outdatedPreviewTimer;
145
146 PixmapViewer* m_preview;
147 PhononWidget* m_phononWidget;
148 QLabel* m_nameLabel;
149 Baloo::FileMetaDataWidget* m_metaDataWidget;
150 QScrollArea* m_metaDataArea;
151 QLabel* m_configureLabel;
152 QDialogButtonBox* m_configureButtons;
153
154 PlacesItemModel* m_placesItemModel;
155 bool m_isVideo;
156 };
157
158 #endif // INFORMATIONPANELCONTENT_H