┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/kitemviews/kfileitemlistwidget.h
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2012-04-21 21:28:16 +0200
committerPeter Penz <[email protected]>2012-04-21 21:32:42 +0200
commitae4d11d918938fd9087f2035dac247969c1f2313 (patch)
tree0303667797c81814b46b9ed5ed20b48ef31f2d71 /src/kitemviews/kfileitemlistwidget.h
parent47d7cdffdd2d2c04067a5088eaeff67add53dde3 (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.h184
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