1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
/***************************************************************************
* Copyright (C) 2009 by Peter Penz <[email protected]> *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program 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 General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
***************************************************************************/
#ifndef INFORMATIONPANELCONTENT_H
#define INFORMATIONPANELCONTENT_H
#include <panels/panel.h>
#include <kconfig.h>
#include <kurl.h>
#include <kvbox.h>
class KFileItem;
class KMetaDataWidget;
class KSeparator;
class MetaTextLabel;
class PhononWidget;
class PixmapViewer;
class QPixmap;
class QString;
class QLabel;
class QScrollArea;
/**
* @brief Manages the widgets that display the meta information
* for file items of the Information Panel.
*/
class InformationPanelContent : public Panel
{
Q_OBJECT
public:
explicit InformationPanelContent(QWidget* parent = 0);
virtual ~InformationPanelContent();
/**
* Shows the meta information for the item \p item.
* The preview of the item is generated asynchronously,
* the other meta information are fetched synchronously.
*/
void showItem(const KFileItem& item);
/**
* Shows the meta information for the items \p items.
*/
void showItems(const KFileItemList& items);
/**
* Opens a menu which allows to configure which meta information
* should be shown.
*/
void configureSettings();
signals:
void urlActivated( const KUrl& url );
protected:
/** @see QObject::eventFilter() */
virtual bool eventFilter(QObject* obj, QEvent* event);
private slots:
/**
* Is invoked if no preview is available for the item. In this
* case the icon will be shown.
*/
void showIcon(const KFileItem& item);
/**
* Is invoked if a preview is available for the item. The preview
* \a pixmap is shown inside the info page.
*/
void showPreview(const KFileItem& item, const QPixmap& pixmap);
/**
* Marks the currently shown preview as outdated
* by greying the content.
*/
void markOutdatedPreview();
void slotPlayingStarted();
void slotPlayingStopped();
private:
/**
* Checks whether the an URL is repesented by a place. If yes,
* then the place icon and name are shown instead of a preview.
* @return True, if the URL represents exactly a place.
* @param url The url to check.
*/
bool applyPlace(const KUrl& url);
/**
* Sets the text for the label \a m_nameLabel and assures that the
* text is split in a way that it can be wrapped within the
* label width (QLabel::setWordWrap() does not work if the
* text represents one extremely long word).
*/
void setNameLabelText(const QString& text);
private:
KFileItem m_item;
bool m_pendingPreview;
QTimer* m_outdatedPreviewTimer;
PixmapViewer* m_preview;
PhononWidget* m_phononWidget;
QLabel* m_nameLabel;
KMetaDataWidget* m_metaDataWidget;
QScrollArea* m_metaDataArea;
};
#endif // INFORMATIONPANELCONTENT_H
|