]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/kitemviews/kitemlistview.h
Merge remote-tracking branch 'fork/work/zakharafoniam/useful-groups'
[dolphin.git] / src / kitemviews / kitemlistview.h
index 7bcaec704dee9f8316852e7457a66a6f4bcec827..1382405d058b89e87fe218cd6a6bd12cc20e8e89 100644 (file)
@@ -59,6 +59,9 @@ class DOLPHIN_EXPORT KItemListView : public QGraphicsWidget
     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;
 
@@ -172,6 +175,11 @@ public:
      */
     qreal verticalPageStep() const;
 
+    /**
+     * @return The line step which should be used for the scroll by mouse wheel.
+     */
+    virtual qreal scrollSingleStep() const;
+
     /**
      * @return Index of the item that is below the point \a pos.
      *         The position is relative to the upper right of
@@ -251,9 +259,10 @@ public:
 
     /**
      * 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
@@ -298,6 +307,12 @@ public:
 
     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);
@@ -426,6 +441,8 @@ protected Q_SLOTS:
     virtual void slotGroupedSortingChanged(bool current);
     virtual void slotSortOrderChanged(Qt::SortOrder current, Qt::SortOrder previous);
     virtual void slotSortRoleChanged(const QByteArray &current, const QByteArray &previous);
+    virtual void slotGroupOrderChanged(Qt::SortOrder current, Qt::SortOrder previous);
+    virtual void slotGroupRoleChanged(const QByteArray &current, const QByteArray &previous);
     virtual void slotCurrentChanged(int current, int previous);
     virtual void slotSelectionChanged(const KItemSet &current, const KItemSet &previous);
 
@@ -548,8 +565,9 @@ private:
     void recycleGroupHeaderForWidget(KItemListWidget *widget);
 
     /**
-     * Helper method for slotGroupedSortingChanged(), slotSortOrderChanged()
-     * and slotSortRoleChanged(): Iterates through all visible items and updates
+     * Helper method for slotGroupedSortingChanged(), slotSortOrderChanged(),
+     * slotSortRoleChanged(), slotGroupOrderChanged() and slotGroupRoleChanged():
+     * Iterates through all visible items and updates
      * the group-header widgets.
      */
     void updateVisibleGroupHeaders();
@@ -772,6 +790,8 @@ private:
 
     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
@@ -789,7 +809,9 @@ private:
     friend class KItemListController;
     friend class KItemListControllerTest;
     friend class KItemListViewAccessible;
-    friend class KItemListAccessibleCell;
+    friend class KItemListDelegateAccessible;
+
+    friend class DolphinMainWindowTest;
 };
 
 /**