X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/f65b0899c3666561cafac14f67ab0bb8a5bfa00a..cebcf8db:/src/kitemviews/private/kitemlistheaderwidget.h diff --git a/src/kitemviews/private/kitemlistheaderwidget.h b/src/kitemviews/private/kitemlistheaderwidget.h index 44adc23c5..a522fa3a2 100644 --- a/src/kitemviews/private/kitemlistheaderwidget.h +++ b/src/kitemviews/private/kitemlistheaderwidget.h @@ -26,54 +26,56 @@ class DOLPHIN_EXPORT KItemListHeaderWidget : public QGraphicsWidget Q_OBJECT public: - explicit KItemListHeaderWidget(QGraphicsWidget* parent = nullptr); + explicit KItemListHeaderWidget(QGraphicsWidget *parent = nullptr); ~KItemListHeaderWidget() override; - void setModel(KItemModelBase* model); - KItemModelBase* model() const; + void setModel(KItemModelBase *model); + KItemModelBase *model() const; void setAutomaticColumnResizing(bool automatic); bool automaticColumnResizing() const; - void setColumns(const QList& roles); + void setColumns(const QList &roles); QList columns() const; - void setColumnWidth(const QByteArray& role, qreal width); - qreal columnWidth(const QByteArray& role) const; + void setColumnWidth(const QByteArray &role, qreal width); + qreal columnWidth(const QByteArray &role) const; /** * Sets the column-width that is required to show the role unclipped. */ - void setPreferredColumnWidth(const QByteArray& role, qreal width); - qreal preferredColumnWidth(const QByteArray& role) const; + void setPreferredColumnWidth(const QByteArray &role, qreal width); + qreal preferredColumnWidth(const QByteArray &role) const; void setOffset(qreal offset); qreal offset() const; + void setSidePadding(qreal width); + qreal sidePadding() const; + qreal minimumColumnWidth() const; - void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget = nullptr) override; + void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr) override; Q_SIGNALS: /** * Is emitted if the width of a visible role has been adjusted by the user with the mouse * (no signal is emitted if KItemListHeader::setVisibleRoleWidth() is invoked). */ - void columnWidthChanged(const QByteArray& role, - qreal currentWidth, - qreal previousWidth); + void columnWidthChanged(const QByteArray &role, qreal currentWidth, qreal previousWidth); + + void sidePaddingChanged(qreal width); /** * Is emitted if the user has released the mouse button after adjusting the * width of a visible role. */ - void columnWidthChangeFinished(const QByteArray& role, - qreal currentWidth); + void columnWidthChangeFinished(const QByteArray &role, qreal currentWidth); /** * Is emitted if the position of the column has been changed. */ - void columnMoved(const QByteArray& role, int currentIndex, int previousIndex); + void columnMoved(const QByteArray &role, int currentIndex, int previousIndex); /** * Is emitted if the user has changed the sort order by clicking on a @@ -89,32 +91,37 @@ Q_SIGNALS: * the current sort role. Note that no signal will be emitted if the * sort role of the model has been changed without user interaction. */ - void sortRoleChanged(const QByteArray& current, const QByteArray& previous); + void sortRoleChanged(const QByteArray ¤t, const QByteArray &previous); + + void columnUnHovered(int columnIndex); + void columnHovered(int columnIndex); protected: - void mousePressEvent(QGraphicsSceneMouseEvent* event) override; - void mouseReleaseEvent(QGraphicsSceneMouseEvent* event) override; - void mouseMoveEvent(QGraphicsSceneMouseEvent* event) override; - void mouseDoubleClickEvent(QGraphicsSceneMouseEvent* event) override; - void hoverEnterEvent(QGraphicsSceneHoverEvent* event) override; - void hoverLeaveEvent(QGraphicsSceneHoverEvent* event) override; - void hoverMoveEvent(QGraphicsSceneHoverEvent* event) override; + void mousePressEvent(QGraphicsSceneMouseEvent *event) override; + void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override; + void mouseMoveEvent(QGraphicsSceneMouseEvent *event) override; + void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) override; + void hoverEnterEvent(QGraphicsSceneHoverEvent *event) override; + void hoverLeaveEvent(QGraphicsSceneHoverEvent *event) override; + void hoverMoveEvent(QGraphicsSceneHoverEvent *event) override; private Q_SLOTS: - void slotSortRoleChanged(const QByteArray& current, const QByteArray& previous); + void slotSortRoleChanged(const QByteArray ¤t, const QByteArray &previous); void slotSortOrderChanged(Qt::SortOrder current, Qt::SortOrder previous); private: - void paintRole(QPainter* painter, - const QByteArray& role, - const QRectF& rect, - int orderIndex, - QWidget* widget = nullptr) const; + enum PaddingGrip { + Leading, + Trailing, + }; + + void paintRole(QPainter *painter, const QByteArray &role, const QRectF &rect, int orderIndex, QWidget *widget = nullptr) const; - void updatePressedRoleIndex(const QPointF& pos); - void updateHoveredRoleIndex(const QPointF& pos); - int roleIndexAt(const QPointF& pos) const; - bool isAboveRoleGrip(const QPointF& pos, int roleIndex) const; + void updatePressedRoleIndex(const QPointF &pos); + void updateHoveredIndex(const QPointF &pos); + int roleIndexAt(const QPointF &pos) const; + bool isAboveRoleGrip(const QPointF &pos, int roleIndex) const; + bool isAbovePaddingGrip(const QPointF &pos, PaddingGrip paddingGrip) const; /** * Creates a pixmap of the role with the index \a roleIndex that is shown @@ -131,37 +138,31 @@ private: /** * @return x-position of the left border of the role \a role. */ - qreal roleXPosition(const QByteArray& role) const; + qreal roleXPosition(const QByteArray &role) const; private: - enum RoleOperation - { - NoRoleOperation, - ResizeRoleOperation, - MoveRoleOperation - }; + enum RoleOperation { NoRoleOperation, ResizeRoleOperation, ResizePaddingColumnOperation, MoveRoleOperation }; bool m_automaticColumnResizing; - KItemModelBase* m_model; + KItemModelBase *m_model; qreal m_offset; + qreal m_sidePadding; QList m_columns; QHash m_columnWidths; QHash m_preferredColumnWidths; - int m_hoveredRoleIndex; + int m_hoveredIndex; int m_pressedRoleIndex; RoleOperation m_roleOperation; QPointF m_pressedMousePos; - struct MovingRole - { + struct MovingRole { QPixmap pixmap; int x; int xDec; int index; - } m_movingRole; + }; + MovingRole m_movingRole; }; #endif - -