7#include "ScreenGraphicsItem.h"
8#include "ScreenGraphicsItem_p.h"
11#include "MarbleDebug.h"
20ScreenGraphicsItem::ScreenGraphicsItem( MarbleGraphicsItem *parent )
21 : MarbleGraphicsItem( new ScreenGraphicsItemPrivate( this, parent ) )
25ScreenGraphicsItem::ScreenGraphicsItem(ScreenGraphicsItemPrivate *dd)
26 : MarbleGraphicsItem(dd)
30ScreenGraphicsItem::~ScreenGraphicsItem()
34QPointF ScreenGraphicsItem::position()
const
36 Q_D(
const ScreenGraphicsItem);
40void ScreenGraphicsItem::setPosition(
const QPointF& position )
42 Q_D(ScreenGraphicsItem);
43 d->m_position = position;
46QPointF ScreenGraphicsItem::positivePosition()
const
48 Q_D(
const ScreenGraphicsItem);
49 return d->positivePosition();
54 Q_D(
const ScreenGraphicsItem);
55 return d->absolutePositions();
60 Q_D(
const ScreenGraphicsItem);
66 Q_D(ScreenGraphicsItem);
70bool ScreenGraphicsItem::eventFilter(
QObject *
object,
QEvent *e )
74 return MarbleGraphicsItem::eventFilter(
object, e );
77 Q_D(ScreenGraphicsItem);
78 if (!d->m_floatItemMoving) {
79 if ( MarbleGraphicsItem::eventFilter(
object, e ) ) {
83 if (!visible() || !d->isMovable()) {
97 if ( contains(
event->pos() ) ) {
99 d->m_floatItemMoveStartPos =
event->
pos();
100 d->m_floatItemMoving =
true;
118 size() +
QSize( 2, 2 ) );
121 const QPoint &point =
event->pos();
122 QPointF position = positivePosition();
123 qreal newX = qMax<qreal>(0, position.
x() + point.
x() - d->m_floatItemMoveStartPos.x());
124 qreal newY = qMax<qreal>(0, position.
y() + point.
y() - d->m_floatItemMoveStartPos.y());
127 const qreal dockArea = 60.0;
128 const qreal dockJump = 30.0;
129 if ( widget->
width()-size().width()-newX < dockArea ) {
130 newX = qMin( qreal( -1.0 ), size().width() + newX-widget->
width() );
131 if (d->m_floatItemMoveStartPos.x() <
event->pos().x()) {
133 newX = qMax( newX, -(dockArea-dockJump) );
136 if ( widget->
height()-size().height()-newY < dockArea ) {
137 newY = qMin( qreal( -1.0 ), size().height() + newY-widget->
height() );
138 if (d->m_floatItemMoveStartPos.y() <
event->pos().y()) {
140 newY = qMax( newY, -( dockArea - dockJump ) );
144 setPosition(
QPointF( newX,newY ) );
149 d->m_floatItemMoveStartPos =
event->pos();
151 dirtyRegion = dirtyRegion.united( newFloatItemRect );
154 widget->
update(dirtyRegion);
160 d->m_floatItemMoving =
false;
164 if (d->m_floatItemMoving) {
170 return MarbleGraphicsItem::eventFilter(
object, e );
AKONADI_CALENDAR_EXPORT KCalendarCore::Event::Ptr event(const Akonadi::Item &item)
Binds a QML item to a specific geodetic location in screen coordinates.
QRect toRect() const const