X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/97415005de040885cb63ea01fdb879e20226a2f2..cebcf8db:/src/kitemviews/private/kitemlistheaderwidget.h diff --git a/src/kitemviews/private/kitemlistheaderwidget.h b/src/kitemviews/private/kitemlistheaderwidget.h index 2342b4907..a522fa3a2 100644 --- a/src/kitemviews/private/kitemlistheaderwidget.h +++ b/src/kitemviews/private/kitemlistheaderwidget.h @@ -1,26 +1,14 @@ -/*************************************************************************** - * Copyright (C) 2011 by Peter Penz * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * - ***************************************************************************/ +/* + * SPDX-FileCopyrightText: 2011 Peter Penz + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ #ifndef KITEMLISTHEADERWIDGET_H #define KITEMLISTHEADERWIDGET_H #include "dolphin_export.h" + #include #include #include @@ -38,54 +26,56 @@ class DOLPHIN_EXPORT KItemListHeaderWidget : public QGraphicsWidget Q_OBJECT public: - KItemListHeaderWidget(QGraphicsWidget* parent = 0); - virtual ~KItemListHeaderWidget(); + 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 = 0) Q_DECL_OVERRIDE; + void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr) override; -signals: +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 @@ -101,32 +91,37 @@ 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) Q_DECL_OVERRIDE; - void mouseReleaseEvent(QGraphicsSceneMouseEvent* event) Q_DECL_OVERRIDE; - void mouseMoveEvent(QGraphicsSceneMouseEvent* event) Q_DECL_OVERRIDE; - void mouseDoubleClickEvent(QGraphicsSceneMouseEvent* event) Q_DECL_OVERRIDE; - void hoverEnterEvent(QGraphicsSceneHoverEvent* event) Q_DECL_OVERRIDE; - void hoverLeaveEvent(QGraphicsSceneHoverEvent* event) Q_DECL_OVERRIDE; - void hoverMoveEvent(QGraphicsSceneHoverEvent* event) Q_DECL_OVERRIDE; - -private slots: - void slotSortRoleChanged(const QByteArray& current, const QByteArray& previous); + 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 ¤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 = 0) 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 @@ -143,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 - -