#include <QGraphicsWidget>
#include <QSet>
+class KItemListContainer;
+class KItemListContainerAccessible;
class KItemListController;
class KItemListGroupHeaderCreatorBase;
class KItemListHeader;
{
Q_OBJECT
- Q_PROPERTY(qreal scrollOffset READ scrollOffset WRITE setScrollOffset)
- Q_PROPERTY(qreal itemOffset READ itemOffset WRITE setItemOffset)
+ Q_PROPERTY(qreal scrollOffset READ scrollOffset WRITE setScrollOffset NOTIFY scrollOffsetChanged)
+ Q_PROPERTY(qreal itemOffset READ itemOffset WRITE setItemOffset NOTIFY itemOffsetChanged)
public:
+ /** The position in the view to which an item should be scrolled to. */
+ enum ViewItemPosition { Beginning, Middle, End, Nearest };
+
explicit KItemListView(QGraphicsWidget *parent = nullptr);
~KItemListView() override;
void setGroupHeaderCreator(KItemListGroupHeaderCreatorBase *groupHeaderCreator);
KItemListGroupHeaderCreatorBase *groupHeaderCreator() const;
+#ifndef QT_NO_ACCESSIBILITY
+ /**
+ * Uses \a parent to create an accessible object for \a parent. That accessible object will
+ * then be used as the accessible parent of the accessible object for this KItemListView.
+ * Make sure \a parent is the container which contains this specific KItemListView.
+ * This method must be called once before the accessible interface is queried for this class.
+ */
+ void setAccessibleParentsObject(KItemListContainer *accessibleParentsObject);
+ /** The parent of the QAccessibilityInterface of this class. */
+ KItemListContainerAccessible *accessibleParent();
+#endif
+
/**
* @return The basic size of all items. The size of an item may be larger than
* the basic size (see KItemListView::itemRect()).
/**
* Scrolls to the item with the index \a index so that the item
- * will be fully visible.
+ * will be fully visible. The item is positioned within the view
+ * as specified by \a viewItemPosition.
*/
- void scrollToItem(int index);
+ void scrollToItem(int index, ViewItemPosition viewItemPosition = ViewItemPosition::Nearest);
/**
* If several properties of KItemListView are changed synchronously, it is
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr) override;
+ /**
+ * Set the bottom offset for moving the view so that the small overlayed statusbar
+ * won't cover any items by accident.
+ */
+ void setStatusBarOffset(int offset);
+
Q_SIGNALS:
void scrollOrientationChanged(Qt::Orientation current, Qt::Orientation previous);
void scrollOffsetChanged(qreal current, qreal previous);
*/
void scrollingStopped();
+ void columnHovered(int roleIndex);
+ void columnUnHovered(int roleIndex);
+
protected:
QVariant itemChange(GraphicsItemChange change, const QVariant &value) override;
void setItemSize(const QSizeF &size);
QList<QByteArray> m_visibleRoles;
mutable KItemListWidgetCreatorBase *m_widgetCreator;
mutable KItemListGroupHeaderCreatorBase *m_groupHeaderCreator;
+#ifndef QT_NO_ACCESSIBILITY
+ /** The object that will be the parent of this classes QAccessibleInterface. */
+ KItemListContainerAccessible *m_accessibleParent = nullptr;
+#endif
KItemListStyleOption m_styleOption;
QHash<int, KItemListWidget *> m_visibleItems;
QPropertyAnimation *m_indicatorAnimation;
+ int m_statusBarOffset;
+
// When dragging items into the view where the sort-role of the model
// is empty, a visual indicator should be shown during dragging where
// the dropping will happen. This indicator is specified by an index
friend class KItemListController;
friend class KItemListControllerTest;
friend class KItemListViewAccessible;
- friend class KItemListAccessibleCell;
+ friend class KItemListDelegateAccessible;
+
+ friend class DolphinMainWindowTest;
};
/**