]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/kitemviews/kfileitemlistwidget.h
Details view: Allow to turn off expandable folders like in Dolphin 1.7
[dolphin.git] / src / kitemviews / kfileitemlistwidget.h
index 0332f1159d56c49d4d03db255e2a970bb1e39334..4958313356d8dc56f5a6441e2cddb4d0d5c571d0 100644 (file)
@@ -46,22 +46,56 @@ public:
     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 expansionToggleRect() const;
+    virtual QRectF selectionToggleRect() const;
+
+    /**
+     * @return Shown string for the role \p role of the item with the values \p values.
+     */
+    // TODO: Move this method to a helper class shared by KFileItemListWidget and
+    // KFileItemListView to share information that is required to calculate the size hints
+    // in KFileItemListView and to represent the actual data in KFileItemListWidget.
+    static QString roleText(const QByteArray& role, const QHash<QByteArray, QVariant>& values);
 
 protected:
+    /**
+     * Invalidates the cache which results in calling KFileItemListWidget::refreshCache() as
+     * soon as the item need to gets repainted.
+     */
+    void invalidateCache();
+
+    /**
+     * Is called if the cache got invalidated by KFileItemListWidget::invalidateCache().
+     * The default implementation is empty.
+     */
+    virtual void refreshCache();
+
     void setTextColor(const QColor& color);
     QColor textColor() const;
-    
+
+    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 QHash<QByteArray, int>& current, const QHash<QByteArray, int>& previous);
+    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 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 {
@@ -77,7 +111,7 @@ private:
         TextIdCount // Mandatory last entry
     };
 
-    void updateCache();
+    void triggerCacheRefreshing();
     void updateExpansionArea();
     void updatePixmapCache();
 
@@ -85,18 +119,23 @@ private:
     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);
 
 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;
@@ -106,18 +145,21 @@ private:
     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
 
     QPointF m_textPos[TextIdCount];
     QStaticText m_text[TextIdCount];
-    QRectF m_textBoundingRect;
+    QRectF m_textRect;
 
     QList<QByteArray> m_sortedVisibleRoles;
 
     QRectF m_expansionArea;
-    QColor* m_customTextColor;
+
+    QColor m_customTextColor;
     QColor m_additionalInfoTextColor;
+
+    QPixmap m_overlay;
 };
 
 #endif