]> cloud.milkyroute.net Git - dolphin.git/blob - src/kitemviews/kfileitemlistwidget.h
Move drawing of textbackground to KItemListWidget
[dolphin.git] / src / kitemviews / kfileitemlistwidget.h
1 /***************************************************************************
2 * Copyright (C) 2011 by Peter Penz <peter.penz19@gmail.com> *
3 * *
4 * This program is free software; you can redistribute it and/or modify *
5 * it under the terms of the GNU General Public License as published by *
6 * the Free Software Foundation; either version 2 of the License, or *
7 * (at your option) any later version. *
8 * *
9 * This program is distributed in the hope that it will be useful, *
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
12 * GNU General Public License for more details. *
13 * *
14 * You should have received a copy of the GNU General Public License *
15 * along with this program; if not, write to the *
16 * Free Software Foundation, Inc., *
17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
18 ***************************************************************************/
19
20 #ifndef KFILEITEMLISTWIDGET_H
21 #define KFILEITEMLISTWIDGET_H
22
23 #include <libdolphin_export.h>
24
25 #include <kitemviews/kitemlistwidget.h>
26
27 #include <QPixmap>
28 #include <QPointF>
29 #include <QStaticText>
30
31 class LIBDOLPHINPRIVATE_EXPORT KFileItemListWidget : public KItemListWidget
32 {
33 Q_OBJECT
34
35 public:
36 enum Layout
37 {
38 IconsLayout,
39 CompactLayout,
40 DetailsLayout
41 };
42
43 KFileItemListWidget(QGraphicsItem* parent);
44 virtual ~KFileItemListWidget();
45
46 void setLayout(Layout layout);
47 Layout layout() const;
48
49 virtual void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget = 0);
50
51 virtual QRectF iconBoundingRect() const;
52 virtual QRectF textBoundingRect() const;
53 virtual QRectF expansionToggleRect() const;
54
55 protected:
56 virtual void dataChanged(const QHash<QByteArray, QVariant>& current, const QSet<QByteArray>& roles = QSet<QByteArray>());
57 virtual void visibleRolesChanged(const QHash<QByteArray, int>& current, const QHash<QByteArray, int>& previous);
58 virtual void visibleRolesSizesChanged(const QHash<QByteArray, QSizeF>& current, const QHash<QByteArray, QSizeF>& previous);
59 virtual void styleOptionChanged(const KItemListStyleOption& current, const KItemListStyleOption& previous);
60 virtual void hoveredChanged(bool hovered);
61 virtual void resizeEvent(QGraphicsSceneResizeEvent* event);
62
63 private:
64 enum TextId {
65 Name,
66 Size,
67 Date,
68 Permissions,
69 Owner,
70 Group,
71 Type,
72 Destination,
73 Path,
74 TextIdCount // Mandatory last entry
75 };
76
77 void updateCache();
78 void updateExpansionArea();
79 void updatePixmapCache();
80
81 void updateTextsCache();
82 void updateIconsLayoutTextCache();
83 void updateCompactLayoutTextCache();
84 void updateDetailsLayoutTextCache();
85
86 QString roleText(TextId textId, const QVariant& roleValue) const;
87
88 void drawPixmap(QPainter* painter, const QPixmap& pixmap);
89
90 static QPixmap pixmapForIcon(const QString& name, int size);
91 static TextId roleTextId(const QByteArray& role);
92
93 private:
94 bool m_isDir;
95 bool m_dirtyLayout;
96 bool m_dirtyContent;
97 QSet<QByteArray> m_dirtyContentRoles;
98
99 Layout m_layout;
100 QPointF m_pixmapPos;
101 QPixmap m_pixmap;
102 QSize m_scaledPixmapSize;
103
104 QRectF m_hoverPixmapRect;
105 QPixmap m_hoverPixmap;
106
107 QPointF m_textPos[TextIdCount];
108 QStaticText m_text[TextIdCount];
109 QRectF m_textBoundingRect;
110
111 QList<QByteArray> m_sortedVisibleRoles;
112
113 QRectF m_expansionArea;
114 QColor m_additionalInfoTextColor;
115 };
116
117 #endif
118
119