#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();
-
- void setLayout(Layout layout);
- Layout layout() const;
+ KFileItemListWidget(KItemListWidgetInformant* informant, QGraphicsItem* parent);
+ ~KFileItemListWidget() override;
- virtual void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget = 0);
-
- virtual QRectF iconBoundingRect() const;
- virtual QRectF textBoundingRect() const;
- virtual QRectF expansionToggleRect() const;
+ static KItemListWidgetInformant* createInformant();
protected:
- 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 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();
-
- void updateAdditionalInfoTextColor();
-
- QString roleText(TextId textId, const QVariant& roleValue) const;
-
- void drawPixmap(QPainter* painter, const QPixmap& pixmap);
-
- 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_textBoundingRect;
-
- QList<QByteArray> m_sortedVisibleRoles;
-
- QRectF m_expansionArea;
-
- QColor m_customTextColor;
- QColor m_additionalInfoTextColor;
-
- QPixmap m_overlay;
+ 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