]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/kitemviews/kitemlistview.h
Merge branch 'master' into frameworks
[dolphin.git] / src / kitemviews / kitemlistview.h
index 6467b8c915cc252c56bfafbdd46b3534d91d33d7..f201802893db75b50598e211f1a9902936b9ce35 100644 (file)
@@ -23,7 +23,7 @@
 #ifndef KITEMLISTVIEW_H
 #define KITEMLISTVIEW_H
 
-#include <libdolphin_export.h>
+#include "dolphin_export.h"
 
 #include <kitemviews/kstandarditemlistgroupheader.h>
 #include <kitemviews/kitemliststyleoption.h>
@@ -44,7 +44,6 @@ class KItemListViewLayouter;
 class KItemListWidget;
 class KItemListWidgetInformant;
 class KItemListWidgetCreatorBase;
-class KItemListViewCreatorBase;
 class QTimer;
 
 /**
@@ -60,7 +59,7 @@ class QTimer;
  * @see KItemListWidget
  * @see KItemModelBase
  */
-class LIBDOLPHINPRIVATE_EXPORT KItemListView : public QGraphicsWidget
+class DOLPHIN_EXPORT KItemListView : public QGraphicsWidget
 {
     Q_OBJECT
 
@@ -161,8 +160,7 @@ public:
 
     const KItemListStyleOption& styleOption() const;
 
-    /** @reimp */
-    virtual void setGeometry(const QRectF& rect);
+    virtual void setGeometry(const QRectF& rect) Q_DECL_OVERRIDE;
 
     /**
      * @return The page step which should be used by the vertical scroll bar.
@@ -194,12 +192,14 @@ public:
     int lastVisibleIndex() const;
 
     /**
-     * @return Required size for the item with the index \p index.
-     *         The returned value might be larger than KItemListView::itemSize().
+     * @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!
      */
-    QSizeF itemSizeHint(int index) const;
+    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
@@ -271,17 +271,14 @@ public:
      * @return Pixmap that is used for a drag operation based on the
      *         items given by \a indexes.
      */
-    virtual QPixmap createDragPixmap(const QSet<int>& indexes) const;
+    virtual QPixmap createDragPixmap(const KItemSet& indexes) const;
 
     /**
      * Lets the user edit the role \a role for item with the index \a index.
      */
     void editRole(int index, const QByteArray& role);
 
-    /**
-     * @reimp
-     */
-    virtual void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget = 0);
+    virtual void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget = 0) Q_DECL_OVERRIDE;
 
 signals:
     void scrollOrientationChanged(Qt::Orientation current, Qt::Orientation previous);
@@ -321,7 +318,7 @@ signals:
     void roleEditingFinished(int index, const QByteArray& role, const QVariant& value);
 
 protected:
-    virtual QVariant itemChange(GraphicsItemChange change, const QVariant &value);
+    virtual QVariant itemChange(GraphicsItemChange change, const QVariant &value) Q_DECL_OVERRIDE;
     void setItemSize(const QSizeF& size);
     void setStyleOption(const KItemListStyleOption& option);
 
@@ -378,28 +375,32 @@ protected:
     virtual void onTransactionBegin();
     virtual void onTransactionEnd();
 
-    virtual bool event(QEvent* event);
-    virtual void mousePressEvent(QGraphicsSceneMouseEvent* event);
-    virtual void mouseMoveEvent(QGraphicsSceneMouseEvent* event);
-    virtual void dragEnterEvent(QGraphicsSceneDragDropEvent* event);
-    virtual void dragMoveEvent(QGraphicsSceneDragDropEvent* event);
-    virtual void dragLeaveEvent(QGraphicsSceneDragDropEvent* event);
-    virtual void dropEvent(QGraphicsSceneDragDropEvent* event);
+    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;
 
     QList<KItemListWidget*> visibleItemListWidgets() const;
 
+    virtual void updateFont();
+    virtual void updatePalette();
+
 protected slots:
     virtual void slotItemsInserted(const KItemRangeList& itemRanges);
     virtual void slotItemsRemoved(const KItemRangeList& itemRanges);
     virtual void slotItemsMoved(const KItemRange& itemRange, const QList<int>& movedToIndexes);
     virtual void slotItemsChanged(const KItemRangeList& itemRanges,
                                   const QSet<QByteArray>& roles);
+    virtual void slotGroupsChanged();
 
     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 slotCurrentChanged(int current, int previous);
-    virtual void slotSelectionChanged(const QSet<int>& current, const QSet<int>& previous);
+    virtual void slotSelectionChanged(const KItemSet& current, const KItemSet& previous);
 
 private slots:
     void slotAnimationFinished(QGraphicsWidget* widget,
@@ -768,7 +769,7 @@ private:
  * KItemListWidgetCreatorBase and KItemListGroupHeaderCreatorBase.
  * @internal
  */
-class LIBDOLPHINPRIVATE_EXPORT KItemListCreatorBase
+class DOLPHIN_EXPORT KItemListCreatorBase
 {
 public:
     virtual ~KItemListCreatorBase();
@@ -792,7 +793,7 @@ private:
  * expensive instantiations and deletions of KItemListWidgets by recycling existing widget
  * instances.
  */
-class LIBDOLPHINPRIVATE_EXPORT KItemListWidgetCreatorBase : public KItemListCreatorBase
+class DOLPHIN_EXPORT KItemListWidgetCreatorBase : public KItemListCreatorBase
 {
 public:
     virtual ~KItemListWidgetCreatorBase();
@@ -801,7 +802,7 @@ public:
 
     virtual void recycle(KItemListWidget* widget);
 
-    virtual QSizeF itemSizeHint(int index, const KItemListView* view) const = 0;
+    virtual void calculateItemSizeHints(QVector<qreal>& logicalHeightHints, qreal& logicalWidthHint, const KItemListView* view) const = 0;
 
     virtual qreal preferredRoleColumnWidth(const QByteArray& role,
                                            int index,
@@ -820,7 +821,7 @@ public:
 
     virtual KItemListWidget* create(KItemListView* view);
 
-    virtual QSizeF itemSizeHint(int index, const KItemListView* view) const;
+    virtual void calculateItemSizeHints(QVector<qreal>& logicalHeightHints, qreal& logicalWidthHint, const KItemListView* view) const;
 
     virtual qreal preferredRoleColumnWidth(const QByteArray& role,
                                            int index,
@@ -853,9 +854,9 @@ KItemListWidget* KItemListWidgetCreator<T>::create(KItemListView* view)
 }
 
 template<class T>
-QSizeF KItemListWidgetCreator<T>::itemSizeHint(int index, const KItemListView* view) const
+void KItemListWidgetCreator<T>::calculateItemSizeHints(QVector<qreal>& logicalHeightHints, qreal& logicalWidthHint, const KItemListView* view) const
 {
-    return m_informant->itemSizeHint(index, view);
+    return m_informant->calculateItemSizeHints(logicalHeightHints, logicalWidthHint, view);
 }
 
 template<class T>
@@ -874,7 +875,7 @@ qreal KItemListWidgetCreator<T>::preferredRoleColumnWidth(const QByteArray& role
  * The intention of the group-header creator is to prevent repetitive and expensive instantiations and
  * deletions of KItemListGroupHeaders by recycling existing header instances.
  */
-class LIBDOLPHINPRIVATE_EXPORT KItemListGroupHeaderCreatorBase : public KItemListCreatorBase
+class DOLPHIN_EXPORT KItemListGroupHeaderCreatorBase : public KItemListCreatorBase
 {
 public:
     virtual ~KItemListGroupHeaderCreatorBase();