]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/kitemviews/kitemlistview.h
Fix selection rect after porting from QFontMetrics::width()
[dolphin.git] / src / kitemviews / kitemlistview.h
index f201802893db75b50598e211f1a9902936b9ce35..2a3b7ada27569f3e4544936b158a801384d398f3 100644 (file)
@@ -1,8 +1,7 @@
 /***************************************************************************
  *   Copyright (C) 2011 by Peter Penz <peter.penz19@gmail.com>             *
  *                                                                         *
- *   Based on the Itemviews NG project from Trolltech Labs:                *
- *   http://qt.gitorious.org/qt-labs/itemviews-ng                          *
+ *   Based on the Itemviews NG project from Trolltech Labs                 *
  *                                                                         *
  *   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  *
 #define KITEMLISTVIEW_H
 
 #include "dolphin_export.h"
+#include "kitemviews/kitemliststyleoption.h"
+#include "kitemviews/kitemlistwidget.h"
+#include "kitemviews/kitemmodelbase.h"
+#include "kitemviews/kstandarditemlistgroupheader.h"
+#include "kitemviews/private/kitemlistviewanimation.h"
 
-#include <kitemviews/kstandarditemlistgroupheader.h>
-#include <kitemviews/kitemliststyleoption.h>
-#include <kitemviews/kitemlistwidget.h>
-#include <kitemviews/kitemmodelbase.h>
-#include <kitemviews/private/kitemlistviewanimation.h>
 #include <QGraphicsWidget>
 #include <QSet>
 
@@ -67,8 +66,8 @@ class DOLPHIN_EXPORT KItemListView : public QGraphicsWidget
     Q_PROPERTY(qreal itemOffset READ itemOffset WRITE setItemOffset)
 
 public:
-    KItemListView(QGraphicsWidget* parent = 0);
-    virtual ~KItemListView();
+    explicit KItemListView(QGraphicsWidget* parent = nullptr);
+    ~KItemListView() override;
 
     /**
      * Offset of the scrollbar that represents the scroll-orientation
@@ -154,13 +153,13 @@ public:
 
     /**
      * @return The basic size of all items. The size of an item may be larger than
-     *         the basic size (see KItemListView::itemSizeHint() and KItemListView::itemRect()).
+     *         the basic size (see KItemListView::itemRect()).
      */
     QSizeF itemSize() const;
 
     const KItemListStyleOption& styleOption() const;
 
-    virtual void setGeometry(const QRectF& rect) Q_DECL_OVERRIDE;
+    void setGeometry(const QRectF& rect) override;
 
     /**
      * @return The page step which should be used by the vertical scroll bar.
@@ -178,6 +177,7 @@ public:
     int itemAt(const QPointF& pos) const;
     bool isAboveSelectionToggle(int index, const QPointF& pos) const;
     bool isAboveExpansionToggle(int index, const QPointF& pos) const;
+    bool isAboveText(int index, const QPointF& pos) const;
 
     /**
      * @return Index of the first item that is at least partly visible.
@@ -192,18 +192,19 @@ public:
     int lastVisibleIndex() const;
 
     /**
-     * @return Calculates the required size for all items in the model.
-     *         It might be larger than KItemListView::itemSize().
-     *         In this case the layout grid will be stretched to assure an
-     *         unclipped item.
-     *         NOTE: the logical height (width) is actually the
-     *         width (height) if the scroll orientation is Qt::Vertical!
+     * Calculates the required size for all items in the model.
+     * It might be larger than KItemListView::itemSize().
+     * In this case the layout grid will be stretched to assure an
+     * unclipped item.
+     *
+     * @note the logical height (width) is actually the
+     * width (height) if the scroll orientation is Qt::Vertical!
      */
     void calculateItemSizeHints(QVector<qreal>& logicalHeightHints, qreal& logicalWidthHint) const;
 
     /**
      * If set to true, items having child-items can be expanded to show the child-items as
-     * part of the view. Per default the expanding of items is is disabled. If expanding of
+     * part of the view. Per default the expanding of items is disabled. If expanding of
      * items is enabled, the methods KItemModelBase::setExpanded(), KItemModelBase::isExpanded(),
      * KItemModelBase::isExpandable() and KItemModelBase::expandedParentsCount()
      * must be reimplemented. The view-implementation
@@ -222,7 +223,7 @@ public:
     /**
      * @return The context rectangle of the item relative to the top/left of
      *         the currently visible area (see KItemListView::offset()). The
-     *         context rectangle is defined by by the united rectangle of
+     *         context rectangle is defined by the united rectangle of
      *         the icon rectangle and the text rectangle (see KItemListWidget::iconRect()
      *         and KItemListWidget::textRect()) and is useful as reference for e.g. aligning
      *         a tooltip or a context-menu for an item. Note that a context rectangle will
@@ -278,7 +279,7 @@ public:
      */
     void editRole(int index, const QByteArray& role);
 
-    virtual 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:
     void scrollOrientationChanged(Qt::Orientation current, Qt::Orientation previous);
@@ -318,7 +319,7 @@ signals:
     void roleEditingFinished(int index, const QByteArray& role, const QVariant& value);
 
 protected:
-    virtual QVariant itemChange(GraphicsItemChange change, const QVariant &value) Q_DECL_OVERRIDE;
+    QVariant itemChange(GraphicsItemChange change, const QVariant &value) override;
     void setItemSize(const QSizeF& size);
     void setStyleOption(const KItemListStyleOption& option);
 
@@ -375,13 +376,13 @@ protected:
     virtual void onTransactionBegin();
     virtual void onTransactionEnd();
 
-    virtual bool event(QEvent* event) Q_DECL_OVERRIDE;
-    virtual void mousePressEvent(QGraphicsSceneMouseEvent* event) Q_DECL_OVERRIDE;
-    virtual void mouseMoveEvent(QGraphicsSceneMouseEvent* event) Q_DECL_OVERRIDE;
-    virtual void dragEnterEvent(QGraphicsSceneDragDropEvent* event) Q_DECL_OVERRIDE;
-    virtual void dragMoveEvent(QGraphicsSceneDragDropEvent* event) Q_DECL_OVERRIDE;
-    virtual void dragLeaveEvent(QGraphicsSceneDragDropEvent* event) Q_DECL_OVERRIDE;
-    virtual void dropEvent(QGraphicsSceneDragDropEvent* event) Q_DECL_OVERRIDE;
+    bool event(QEvent* event) override;
+    void mousePressEvent(QGraphicsSceneMouseEvent* event) override;
+    void mouseMoveEvent(QGraphicsSceneMouseEvent* event) override;
+    void dragEnterEvent(QGraphicsSceneDragDropEvent* event) override;
+    void dragMoveEvent(QGraphicsSceneDragDropEvent* event) override;
+    void dragLeaveEvent(QGraphicsSceneDragDropEvent* event) override;
+    void dropEvent(QGraphicsSceneDragDropEvent* event) override;
 
     QList<KItemListWidget*> visibleItemListWidgets() const;
 
@@ -642,7 +643,7 @@ private:
 
     /**
      * Shows a drop-indicator between items dependent on the given
-     * cursor position. The cursor position is relative the the upper left
+     * cursor position. The cursor position is relative to the upper left
      * edge of the view.
      * @return Index of the item where the dropping is done. An index of -1
      *         indicates that the item has been dropped after the last item.
@@ -796,7 +797,7 @@ private:
 class DOLPHIN_EXPORT KItemListWidgetCreatorBase : public KItemListCreatorBase
 {
 public:
-    virtual ~KItemListWidgetCreatorBase();
+    ~KItemListWidgetCreatorBase() override;
 
     virtual KItemListWidget* create(KItemListView* view) = 0;
 
@@ -817,15 +818,15 @@ class KItemListWidgetCreator : public KItemListWidgetCreatorBase
 {
 public:
     KItemListWidgetCreator();
-    virtual ~KItemListWidgetCreator();
+    ~KItemListWidgetCreator() override;
 
-    virtual KItemListWidget* create(KItemListView* view);
+    KItemListWidget* create(KItemListView* view) override;
 
-    virtual void calculateItemSizeHints(QVector<qreal>& logicalHeightHints, qreal& logicalWidthHint, const KItemListView* view) const;
+    void calculateItemSizeHints(QVector<qreal>& logicalHeightHints, qreal& logicalWidthHint, const KItemListView* view) const override;
 
-    virtual qreal preferredRoleColumnWidth(const QByteArray& role,
+    qreal preferredRoleColumnWidth(const QByteArray& role,
                                            int index,
-                                           const KItemListView* view) const;
+                                           const KItemListView* view) const override;
 private:
     KItemListWidgetInformant* m_informant;
 };
@@ -878,7 +879,7 @@ qreal KItemListWidgetCreator<T>::preferredRoleColumnWidth(const QByteArray& role
 class DOLPHIN_EXPORT KItemListGroupHeaderCreatorBase : public KItemListCreatorBase
 {
 public:
-    virtual ~KItemListGroupHeaderCreatorBase();
+    ~KItemListGroupHeaderCreatorBase() override;
     virtual KItemListGroupHeader* create(KItemListView* view) = 0;
     virtual void recycle(KItemListGroupHeader* header);
 };
@@ -887,8 +888,8 @@ template <class T>
 class KItemListGroupHeaderCreator : public KItemListGroupHeaderCreatorBase
 {
 public:
-    virtual ~KItemListGroupHeaderCreator();
-    virtual KItemListGroupHeader* create(KItemListView* view);
+    ~KItemListGroupHeaderCreator() override;
+    KItemListGroupHeader* create(KItemListView* view) override;
 };
 
 template <class T>