diff options
| author | Peter Penz <[email protected]> | 2012-04-21 21:28:16 +0200 |
|---|---|---|
| committer | Peter Penz <[email protected]> | 2012-04-21 21:32:42 +0200 |
| commit | ae4d11d918938fd9087f2035dac247969c1f2313 (patch) | |
| tree | 0303667797c81814b46b9ed5ed20b48ef31f2d71 /src/kitemviews/kfileitemlistwidget.h | |
| parent | 47d7cdffdd2d2c04067a5088eaeff67add53dde3 (diff) | |
Prepare view-engine for non-KFileItem usecase
Up to now the view-engine only provided a model-implementation that
supports file-items. The view-engine always had been designed to be able
to work with any kind of model, so now a KStandardItemModel is available.
The plan is to convert the places panel to the new view-engine. It should
be no problem to fix this until the feature freeze - in the worst case
the places-panel code could be reverted while still keeping the
KStandardItemModel changes.
Diffstat (limited to 'src/kitemviews/kfileitemlistwidget.h')
| -rw-r--r-- | src/kitemviews/kfileitemlistwidget.h | 184 |
1 files changed, 13 insertions, 171 deletions
diff --git a/src/kitemviews/kfileitemlistwidget.h b/src/kitemviews/kfileitemlistwidget.h index 33d348bab..4bd375481 100644 --- a/src/kitemviews/kfileitemlistwidget.h +++ b/src/kitemviews/kfileitemlistwidget.h @@ -22,188 +22,30 @@ #include <libdolphin_export.h> -#include <kitemviews/kitemlistwidget.h> +#include <kitemviews/kstandarditemlistwidget.h> -#include <QPixmap> -#include <QPointF> -#include <QStaticText> +class LIBDOLPHINPRIVATE_EXPORT KFileItemListWidgetInformant : public KStandardItemListWidgetInformant +{ +public: + KFileItemListWidgetInformant(); + virtual ~KFileItemListWidgetInformant(); -class KItemListRoleEditor; -class KItemListStyleOption; -class KItemListView; +protected: + virtual QString roleText(const QByteArray& role, const QHash<QByteArray, QVariant>& values) const; +}; -class LIBDOLPHINPRIVATE_EXPORT KFileItemListWidget : public KItemListWidget +class LIBDOLPHINPRIVATE_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 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); + static KItemListWidgetInformant* createInformant(); 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 QList<QByteArray>& current, const QList<QByteArray>& 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 editedRoleChanged(const QByteArray& current, const QByteArray& previous); - virtual void resizeEvent(QGraphicsSceneResizeEvent* event); - virtual void showEvent(QShowEvent* event); - virtual void hideEvent(QHideEvent* event); - -private slots: - void slotCutItemsChanged(); - void slotRoleEditingCanceled(int index, const QByteArray& role, const QVariant& value); - void slotRoleEditingFinished(int index, const QByteArray& role, const QVariant& value); - -private: - /** - * Typedefinitions for roles that require a special handling - * and must be accessible in a fast way. The mapping of a - * QByteArray role to the type is done by KFileItemListWidget::roleType(). - */ - enum RoleType { - Name, - Size, - Date, - Rating, - 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); - - QRectF roleEditingRect(const QByteArray &role) const; - - 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 Preferred size of the rating-image based on the given - * style-option. The height of the font is taken as - * reference. - */ - static QSizeF preferredRatingSize(const KItemListStyleOption& option); - - /** - * @return Horizontal padding in pixels that is added to the required width of - * a column to display the content. - */ - static qreal columnPadding(const KItemListStyleOption& option); - - /** - * @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_isCut; - bool m_isHidden; - bool m_isExpandable; - bool m_supportsItemExpanding; - - bool m_dirtyLayout; - bool m_dirtyContent; - QSet<QByteArray> 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<QByteArray, TextInfo*> m_textInfo; - - QRectF m_textRect; - - QList<QByteArray> m_sortedVisibleRoles; - - QRectF m_expansionArea; - - QColor m_customTextColor; - QColor m_additionalInfoTextColor; - - QPixmap m_overlay; - QPixmap m_rating; - - KItemListRoleEditor* m_roleEditor; + virtual bool isRoleRightAligned(const QByteArray& role) const; }; #endif |
