#include <QPointF>
#include <QStaticText>
+class KItemListView;
+class KItemListStyleOption;
+
class LIBDOLPHINPRIVATE_EXPORT KFileItemListWidget : public KItemListWidget
{
Q_OBJECT
void setLayout(Layout layout);
Layout layout() const;
+ void setSupportsItemExpanding(bool supportsItemExpanding);
+ bool supportsItemExpanding() const;
+
virtual void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget = 0);
- virtual QRectF iconBoundingRect() const;
- virtual QRectF textBoundingRect() const;
+ virtual QRectF iconRect() const;
+ virtual QRectF textRect() const;
+ virtual QRectF textFocusRect() const;
virtual QRectF expansionToggleRect() const;
+ virtual QRectF selectionToggleRect() const;
+
+ /**
+ * Implementation of KItemListWidgetCreatorBase::itemSizeHint() when
+ * using the KItemListWidgetCreator-template.
+ *
+ * @see KItemListView
+ */
+ static QSizeF itemSizeHint(int index, const KItemListView* view);
+
+ /**
+ * Implementation of KItemListWidgetCreatorBase::preferredRoleColumnWidth() when
+ * using the KItemListWidgetCreator-template.
+ *
+ * @see KItemListView
+ */
+ static qreal preferredRoleColumnWidth(const QByteArray& role, int index, const KItemListView* view);
protected:
/**
void setOverlay(const QPixmap& overlay);
QPixmap overlay() const;
-
+
virtual void dataChanged(const QHash<QByteArray, QVariant>& current, const QSet<QByteArray>& roles = QSet<QByteArray>());
virtual void visibleRolesChanged(const QList<QByteArray>& current, const QList<QByteArray>& previous);
- virtual void visibleRolesSizesChanged(const QHash<QByteArray, QSizeF>& current, const QHash<QByteArray, QSizeF>& previous);
+ virtual void columnWidthChanged(const QByteArray& role, qreal current, qreal previous);
virtual void styleOptionChanged(const KItemListStyleOption& current, const KItemListStyleOption& previous);
virtual void hoveredChanged(bool hovered);
+ virtual void selectedChanged(bool selected);
+ virtual void siblingsInformationChanged(const QBitArray& current, const QBitArray& previous);
virtual void resizeEvent(QGraphicsSceneResizeEvent* event);
+ virtual void showEvent(QShowEvent* event);
+ virtual void hideEvent(QHideEvent* event);
+
+private slots:
+ void slotCutItemsChanged();
private:
- enum TextId {
+ enum RoleType {
Name,
Size,
Date,
- Permissions,
- Owner,
- Group,
- Type,
- Destination,
- Path,
- TextIdCount // Mandatory last entry
+ Generic // Mandatory last entry
};
void triggerCacheRefreshing();
void updateIconsLayoutTextCache();
void updateCompactLayoutTextCache();
void updateDetailsLayoutTextCache();
-
- void updateAdditionalInfoTextColor();
- QString roleText(TextId textId, const QVariant& roleValue) const;
+ void updateAdditionalInfoTextColor();
void drawPixmap(QPainter* painter, const QPixmap& pixmap);
+ void drawSiblingsInformation(QPainter* painter);
static QPixmap pixmapForIcon(const QString& name, int size);
- static TextId roleTextId(const QByteArray& role);
+ static void applyCutEffect(QPixmap& pixmap);
+ static void applyHiddenEffect(QPixmap& pixmap);
+ static RoleType roleType(const QByteArray& role);
+
+ /**
+ * @return Shown string for the role \p role of the item with the values \p values.
+ */
+ static QString roleText(const QByteArray& role, const QHash<QByteArray, QVariant>& values);
private:
- bool m_isDir;
+ bool m_isCut;
+ bool m_isHidden;
+ bool m_isExpandable;
+ bool m_supportsItemExpanding;
+
bool m_dirtyLayout;
bool m_dirtyContent;
QSet<QByteArray> m_dirtyContentRoles;
QPixmap m_pixmap;
QSize m_scaledPixmapSize;
- QRectF m_hoverPixmapRect;
- QPixmap m_hoverPixmap;
+ QRectF m_iconRect; // Cache for KItemListWidget::iconRect()
+ QPixmap m_hoverPixmap; // Cache for modified m_pixmap when hovering the item
+
+ struct TextInfo
+ {
+ QPointF pos;
+ QStaticText staticText;
+ };
+ QHash<QByteArray, TextInfo*> m_textInfo;
- QPointF m_textPos[TextIdCount];
- QStaticText m_text[TextIdCount];
- QRectF m_textBoundingRect;
+ QRectF m_textRect;
QList<QByteArray> m_sortedVisibleRoles;