]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/kitemviews/kfileitemlistwidget.h
Port away from deprecated QFontMetrics::width()
[dolphin.git] / src / kitemviews / kfileitemlistwidget.h
index 1d1b6fd86bcbda68dcc8e32e8b353ee913936649..7ce415dbee2986421d9c2ca0973feaa0998a5b6f 100644 (file)
 #ifndef KFILEITEMLISTWIDGET_H
 #define KFILEITEMLISTWIDGET_H
 
-#include <libdolphin_export.h>
+#include "dolphin_export.h"
+#include "kitemviews/kstandarditemlistwidget.h"
 
-#include <kitemviews/kitemlistwidget.h>
+class DOLPHIN_EXPORT KFileItemListWidgetInformant : public KStandardItemListWidgetInformant
+{
+public:
+    KFileItemListWidgetInformant();
+    ~KFileItemListWidgetInformant() override;
 
-#include <QPixmap>
-#include <QPointF>
-#include <QStaticText>
+protected:
+    QString itemText(int index, const KItemListView* view) const override;
+    bool itemIsLink(int index, const KItemListView* view) const override;
+    QString roleText(const QByteArray& role, const QHash<QByteArray, QVariant>& values) const override;
+    QFont customizedFontForLinks(const QFont& baseFont) const override;
+};
 
-class LIBDOLPHINPRIVATE_EXPORT KFileItemListWidget : public KItemListWidget
+class DOLPHIN_EXPORT KFileItemListWidget : public KStandardItemListWidget
 {
     Q_OBJECT
 
 public:
-    enum Layout
-    {
-        IconsLayout,
-        CompactLayout,
-        DetailsLayout
-    };
-
-    KFileItemListWidget(QGraphicsItem* parent);
-    virtual ~KFileItemListWidget();
+    KFileItemListWidget(KItemListWidgetInformant* informant, QGraphicsItem* parent);
+    ~KFileItemListWidget() override;
 
-    void setLayout(Layout layout);
-    Layout layout() const;
-
-    virtual void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget = 0);
-
-    virtual bool contains(const QPointF& point) const;
-    virtual QRectF hoverBoundingRect() const;
-    virtual QRectF expansionToggleRect() const;
+    static KItemListWidgetInformant* createInformant();
 
 protected:
-    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 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 resizeEvent(QGraphicsSceneResizeEvent* event);
-
-private:
-    enum TextId {
-        Name,
-        Size,
-        Date,
-        Permissions,
-        Owner,
-        Group,
-        Type,
-        Destination,
-        Path,
-        TextIdCount // Mandatory last entry
-    };
-
-    void updateCache();
-    void updateExpansionArea();
-    void updatePixmapCache();
-
-    void updateTextsCache();
-    void updateIconsLayoutTextCache();
-    void updateCompactLayoutTextCache();
-    void updateDetailsLayoutTextCache();
-
-    QString roleText(TextId textId, const QVariant& roleValue) const;
-
-    void drawPixmap(QPainter* painter, const QPixmap& pixmap);
-    void drawFocusIndicator(QPainter* painter);
-
-    static QPixmap pixmapForIcon(const QString& name, int size);
-    static TextId roleTextId(const QByteArray& role);
-
-private:
-    bool m_isDir;
-    bool m_dirtyLayout;
-    bool m_dirtyContent;
-    QSet<QByteArray> m_dirtyContentRoles;
-
-    Layout m_layout;
-    QPointF m_pixmapPos;
-    QPixmap m_pixmap;
-    QSize m_scaledPixmapSize;
-
-    QRectF m_hoverPixmapRect;
-    QPixmap m_hoverPixmap;
-
-    QPointF m_textPos[TextIdCount];
-    QStaticText m_text[TextIdCount];
-    QRectF m_textsBoundingRect;
-
-    QList<QByteArray> m_sortedVisibleRoles;
-
-    QRectF m_expansionArea;
-    QColor m_additionalInfoTextColor;
+    bool isRoleRightAligned(const QByteArray& role) const override;
+    bool isHidden() const override;
+    QFont customizedFont(const QFont& baseFont) const override;
+
+    /**
+     * @return Selection length without MIME-type extension
+     */
+    int selectionLength(const QString& text) const override;
 };
 
 #endif