#ifndef KITEMLISTCONTAINER_H
#define KITEMLISTCONTAINER_H
-#include <libdolphin_export.h>
+#include "dolphin_export.h"
#include <QAbstractScrollArea>
class KItemListController;
+class KItemListSmoothScroller;
class KItemListView;
class KItemModelBase;
-class QPropertyAnimation;
/**
* @brief Provides a QWidget based scrolling view for a KItemListController.
*
+ * The model and view are maintained by the KItemListController.
+ *
* @see KItemListController
*/
-class LIBDOLPHINPRIVATE_EXPORT KItemListContainer : public QAbstractScrollArea
+class DOLPHIN_EXPORT KItemListContainer : public QAbstractScrollArea
{
Q_OBJECT
public:
+ /**
+ * @param controller Controller that maintains the model and the view.
+ * The KItemListContainer takes ownership of the controller
+ * (the parent will be set to the KItemListContainer).
+ * @param parent Optional parent widget.
+ */
explicit KItemListContainer(KItemListController* controller, QWidget* parent = 0);
- KItemListContainer(QWidget* parent = 0);
virtual ~KItemListContainer();
-
KItemListController* controller() const;
+ void setEnabledFrame(bool enable);
+ bool enabledFrame() const;
+
protected:
- virtual void keyPressEvent(QKeyEvent* event);
- virtual void showEvent(QShowEvent* event);
- virtual void resizeEvent(QResizeEvent* event);
- virtual void scrollContentsBy(int dx, int dy);
- virtual bool eventFilter(QObject* obj, QEvent* event);
- virtual void wheelEvent(QWheelEvent* event);
+ virtual void keyPressEvent(QKeyEvent* event) Q_DECL_OVERRIDE;
+ virtual void showEvent(QShowEvent* event) Q_DECL_OVERRIDE;
+ virtual void resizeEvent(QResizeEvent* event) Q_DECL_OVERRIDE;
+ virtual void scrollContentsBy(int dx, int dy) Q_DECL_OVERRIDE;
+ virtual void wheelEvent(QWheelEvent* event) Q_DECL_OVERRIDE;
private slots:
+ void slotScrollOrientationChanged(Qt::Orientation current, Qt::Orientation previous);
void slotModelChanged(KItemModelBase* current, KItemModelBase* previous);
void slotViewChanged(KItemListView* current, KItemListView* previous);
- void updateScrollBars();
+ void scrollTo(qreal offset);
+ void updateScrollOffsetScrollBar();
+ void updateItemOffsetScrollBar();
private:
- void initialize();
void updateGeometries();
+ void updateSmoothScrollers(Qt::Orientation orientation);
+
+ /**
+ * Helper method for updateScrollOffsetScrollBar(). Updates the scrollbar-policy
+ * to Qt::ScrollBarAlwaysOn for cases where turning off the scrollbar might lead
+ * to an endless layout loop (see bug #293318).
+ */
+ void updateScrollOffsetScrollBarPolicy();
private:
KItemListController* m_controller;
- bool m_sliderMovedByUser;
- QPropertyAnimation* m_viewOffsetAnimation;
+ KItemListSmoothScroller* m_horizontalSmoothScroller;
+ KItemListSmoothScroller* m_verticalSmoothScroller;
};
#endif