#include <kitemviews/kitemliststyleoption.h>
+#include <QBitArray>
#include <QGraphicsWidget>
#include <QStyle>
void setVisibleRoles(const QList<QByteArray>& roles);
QList<QByteArray> visibleRoles() const;
- void setVisibleRolesSizes(const QHash<QByteArray, QSizeF> rolesSizes);
- QHash<QByteArray, QSizeF> visibleRolesSizes() const;
+ /**
+ * Sets the width of a role that should be used if the alignment of the content
+ * should be done in columns.
+ */
+ void setColumnWidth(const QByteArray& role, qreal width);
+ qreal columnWidth(const QByteArray& role) const;
void setStyleOption(const KItemListStyleOption& option);
const KItemListStyleOption& styleOption() const;
void setHovered(bool hovered);
bool isHovered() const;
- void setAlternatingBackgroundColors(bool enable);
- bool alternatingBackgroundColors() const;
+ void setAlternateBackground(bool enable);
+ bool alternateBackground() const;
void setEnabledSelectionToggle(bool enabled);
bool enabledSelectionToggle() const;
+ /**
+ * Sets the sibling information for the item and all of its parents.
+ * The sibling information of the upper most parent is represented by
+ * the first bit, the sibling information of the item by the last bit.
+ * The sibling information is useful for drawing the branches in
+ * tree views.
+ */
+ void setSiblingsInformation(const QBitArray& siblings);
+ QBitArray siblingsInformation() const;
+
/**
* @return True if \a point is inside KItemListWidget::hoverRect(),
* KItemListWidget::textRect(), KItemListWidget::selectionToggleRect()
*/
virtual QRectF textRect() const = 0;
+ /**
+ * @return Focus rectangle for indicating the current item. Per default
+ * textRect() will be returned. Overwrite this method if textRect()
+ * provides a larger rectangle than the actual text (e.g. to
+ * be aligned with the iconRect()). The textFocusRect() may not be
+ * outside the boundaries of textRect().
+ */
+ virtual QRectF textFocusRect() const;
+
/**
* @return Rectangle for the selection-toggle that is used to select or deselect an item.
* Per default an empty rectangle is returned which means that no selection-toggle
protected:
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 visibleRolesSizesChanged(const QHash<QByteArray, QSizeF>& current, const QHash<QByteArray, QSizeF>& previous);
+ virtual void columnWidthChanged(const QByteArray& role, qreal current, qreal previous);
virtual void styleOptionChanged(const KItemListStyleOption& current, const KItemListStyleOption& previous);
virtual void currentChanged(bool current);
virtual void selectedChanged(bool selected);
virtual void hoveredChanged(bool hovered);
- virtual void alternatingBackgroundColorsChanged(bool enabled);
- virtual void resizeEvent(QGraphicsSceneResizeEvent* event);
+ virtual void alternateBackgroundChanged(bool enabled);
+ virtual void siblingsInformationChanged(const QBitArray& current, const QBitArray& previous);
+ virtual void resizeEvent(QGraphicsSceneResizeEvent* event);
/**
* @return The current opacity of the hover-animation. When implementing a custom painting-code for a hover-state
bool m_selected;
bool m_current;
bool m_hovered;
- bool m_alternatingBackgroundColors;
+ bool m_alternateBackground;
bool m_enabledSelectionToggle;
QHash<QByteArray, QVariant> m_data;
QList<QByteArray> m_visibleRoles;
- QHash<QByteArray, QSizeF> m_visibleRolesSizes;
+ QHash<QByteArray, qreal> m_columnWidths;
KItemListStyleOption m_styleOption;
+ QBitArray m_siblingsInfo;
qreal m_hoverOpacity;
mutable QPixmap* m_hoverCache;