equal
deleted
inserted
replaced
25 #include "Kinetics/KineticScroller.h" |
25 #include "Kinetics/KineticScroller.h" |
26 |
26 |
27 #include <QGraphicsScene> |
27 #include <QGraphicsScene> |
28 #include <QGraphicsSceneMouseEvent> |
28 #include <QGraphicsSceneMouseEvent> |
29 #include <QPointF> |
29 #include <QPointF> |
30 |
30 #include <QApplication> |
31 namespace GVA { |
31 namespace GVA { |
32 |
32 |
33 ScrollableViewBase::ScrollableViewBase(QGraphicsItem* parent, Qt::WindowFlags wFlags) |
33 ScrollableViewBase::ScrollableViewBase(QGraphicsItem* parent, Qt::WindowFlags wFlags) |
34 : QGraphicsWidget(parent, wFlags) |
34 : QGraphicsWidget(parent, wFlags) |
35 , m_scrollWidget(0) |
35 , m_scrollWidget(0) |
39 |
39 |
40 //To disable childrens painting outside the ViewportItem's rect. |
40 //To disable childrens painting outside the ViewportItem's rect. |
41 setFlag(QGraphicsItem::ItemClipsChildrenToShape, true); |
41 setFlag(QGraphicsItem::ItemClipsChildrenToShape, true); |
42 |
42 |
43 //To speed up painting. |
43 //To speed up painting. |
44 setFlag(QGraphicsItem::ItemHasNoContents, true); |
44 //setFlag(QGraphicsItem::ItemHasNoContents, true); |
45 setAttribute(Qt::WA_OpaquePaintEvent, true); |
45 setAttribute(Qt::WA_OpaquePaintEvent, true); |
46 |
46 |
47 m_kineticScroller = new KineticScroller(this); |
47 m_kineticScroller = new KineticScroller(this); |
48 |
48 |
49 //Event filter on all children of the viewport, so that all mouse |
49 //Event filter on all children of the viewport, so that all mouse |
74 return size().toSize(); |
74 return size().toSize(); |
75 } |
75 } |
76 |
76 |
77 QPoint ScrollableViewBase::maximumScrollPosition() const |
77 QPoint ScrollableViewBase::maximumScrollPosition() const |
78 { |
78 { |
79 QSizeF contentsSize = m_scrollWidget->size(); |
79 QSizeF contentsSize = m_scrollWidget->size() * m_scrollWidget->scale();; |
80 QSizeF viewportSize = size(); |
80 QSizeF viewportSize = size(); |
81 QSize maxScrollSize = (contentsSize - viewportSize).toSize(); |
81 QSize maxScrollSize = (contentsSize - viewportSize).toSize(); |
82 |
82 |
83 return QPoint(qMax(0, maxScrollSize.width()), qMax(0, maxScrollSize.height())); |
83 return QPoint(qMax(0, maxScrollSize.width()), qMax(0, maxScrollSize.height())); |
84 } |
84 } |
88 return (-scrollWidgetPos()).toPoint(); |
88 return (-scrollWidgetPos()).toPoint(); |
89 } |
89 } |
90 |
90 |
91 void ScrollableViewBase::setScrollPosition(const QPoint& pos, const QPoint& overShoot) |
91 void ScrollableViewBase::setScrollPosition(const QPoint& pos, const QPoint& overShoot) |
92 { |
92 { |
|
93 QPoint p = scrollPosition(); |
|
94 QPoint d = pos - p; |
|
95 |
93 m_overShoot = overShoot; |
96 m_overShoot = overShoot; |
94 setScrollWidgetPos(-pos); |
97 setScrollWidgetPos(-pos + m_overShoot); |
|
98 //QApplication::sendPostedEvents(); |
|
99 |
|
100 emit viewScrolled(p, d); |
95 } |
101 } |
96 |
102 |
97 void ScrollableViewBase::stateChanged(KineticScrollable::State oldState |
103 void ScrollableViewBase::stateChanged(KineticScrollable::State oldState |
98 , KineticScrollable::State newState) |
104 , KineticScrollable::State newState) |
99 { |
105 { |
100 Q_UNUSED(oldState); |
106 Q_UNUSED(oldState); |
101 Q_UNUSED(newState); |
107 Q_UNUSED(newState); |
102 } |
108 } |
103 |
109 /* |
104 void ScrollableViewBase::setScrollWidgetGeometry(const QRectF& geom) |
110 void ScrollableViewBase::setScrollWidgetGeometry(const QRectF& geom) |
105 { |
111 { |
106 scrollWidget()->setGeometry(adjustScrollWidgetRect(geom)); |
112 scrollWidget()->setGeometry(adjustScrollWidgetRect(geom)); |
107 } |
113 } |
108 |
114 |
142 } |
148 } |
143 //newRect.translate(m_extraPos); |
149 //newRect.translate(m_extraPos); |
144 newRect.translate(m_overShoot); |
150 newRect.translate(m_overShoot); |
145 return newRect; |
151 return newRect; |
146 } |
152 } |
147 |
153 */ |
148 void ScrollableViewBase::setScrollWidgetPos(const QPointF& pos) |
154 void ScrollableViewBase::setScrollWidgetPos(const QPointF& pos) |
149 { |
155 { |
150 setScrollWidgetGeometry(QRectF(pos, scrollWidget()->size())); |
156 scrollWidget()->setPos(pos); |
151 } |
157 } |
152 |
158 |
153 QPointF ScrollableViewBase::scrollWidgetPos() const |
159 QPointF ScrollableViewBase::scrollWidgetPos() const |
154 { |
160 { |
155 return scrollWidget()->pos() /*- m_extraPos*/ - m_overShoot; |
161 return scrollWidget()->pos() /*- m_extraPos*/ - m_overShoot; |