X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/a4ede4e0ebaf0bba57da8fc2924577f1a8ff7b54..16e3d669de256aab86f957cd5b3bee91bd2fbbff:/src/kitemviews/kfileitemlistwidget.h diff --git a/src/kitemviews/kfileitemlistwidget.h b/src/kitemviews/kfileitemlistwidget.h index d68a22405..07ca59b44 100644 --- a/src/kitemviews/kfileitemlistwidget.h +++ b/src/kitemviews/kfileitemlistwidget.h @@ -20,161 +20,42 @@ #ifndef KFILEITEMLISTWIDGET_H #define KFILEITEMLISTWIDGET_H -#include +#include "dolphin_export.h" -#include +#include -#include -#include -#include +class DOLPHIN_EXPORT KFileItemListWidgetInformant : public KStandardItemListWidgetInformant +{ +public: + KFileItemListWidgetInformant(); + virtual ~KFileItemListWidgetInformant(); -class KItemListView; -class KItemListStyleOption; +protected: + virtual QString itemText(int index, const KItemListView* view) const Q_DECL_OVERRIDE; + virtual bool itemIsLink(int index, const KItemListView* view) const Q_DECL_OVERRIDE; + virtual QString roleText(const QByteArray& role, const QHash& values) const Q_DECL_OVERRIDE; + virtual QFont customizedFontForLinks(const QFont& baseFont) const Q_DECL_OVERRIDE; +}; -class LIBDOLPHINPRIVATE_EXPORT KFileItemListWidget : public KItemListWidget +class DOLPHIN_EXPORT KFileItemListWidget : public KStandardItemListWidget { Q_OBJECT public: - enum Layout - { - IconsLayout, - CompactLayout, - DetailsLayout - }; - - KFileItemListWidget(QGraphicsItem* parent); + KFileItemListWidget(KItemListWidgetInformant* informant, QGraphicsItem* parent); virtual ~KFileItemListWidget(); - 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 iconRect() const; - virtual QRectF textRect() 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); + static KItemListWidgetInformant* createInformant(); protected: - /** - * Invalidates the cache which results in calling KFileItemListWidget::refreshCache() as - * soon as the item need to gets repainted. - */ - void invalidateCache(); + virtual bool isRoleRightAligned(const QByteArray& role) const Q_DECL_OVERRIDE; + virtual bool isHidden() const Q_DECL_OVERRIDE; + virtual QFont customizedFont(const QFont& baseFont) const Q_DECL_OVERRIDE; /** - * Is called if the cache got invalidated by KFileItemListWidget::invalidateCache(). - * The default implementation is empty. + * @return Selection length without MIME-type extension */ - virtual void refreshCache(); - - void setTextColor(const QColor& color); - QColor textColor() const; - - void setOverlay(const QPixmap& overlay); - QPixmap overlay() const; - - virtual void dataChanged(const QHash& current, const QSet& roles = QSet()); - virtual void visibleRolesChanged(const QList& current, const QList& 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 RoleType { - Name, - Size, - Date, - Generic // Mandatory last entry - }; - - void triggerCacheRefreshing(); - void updateExpansionArea(); - void updatePixmapCache(); - - void updateTextsCache(); - void updateIconsLayoutTextCache(); - void updateCompactLayoutTextCache(); - void updateDetailsLayoutTextCache(); - - void updateAdditionalInfoTextColor(); - - void drawPixmap(QPainter* painter, const QPixmap& pixmap); - void drawSiblingsInformation(QPainter* painter); - - static QPixmap pixmapForIcon(const QString& name, int size); - 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& values); - -private: - bool m_isCut; - bool m_isHidden; - bool m_isExpandable; - bool m_supportsItemExpanding; - - bool m_dirtyLayout; - bool m_dirtyContent; - QSet m_dirtyContentRoles; - - Layout m_layout; - QPointF m_pixmapPos; - QPixmap m_pixmap; - QSize m_scaledPixmapSize; - - 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 m_textInfo; - - QRectF m_textRect; - - QList m_sortedVisibleRoles; - - QRectF m_expansionArea; - - QColor m_customTextColor; - QColor m_additionalInfoTextColor; - - QPixmap m_overlay; + virtual int selectionLength(const QString& text) const Q_DECL_OVERRIDE; }; #endif