[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdeedu/marble/src/lib/routing
From:       Dennis Nienhüser <earthwings () gentoo ! org>
Date:       2010-05-01 19:06:17
Message-ID: 20100501190617.0B747AC8AA () svn ! kde ! org
[Download RAW message or body]

SVN commit 1121574 by nienhueser:

Via points can be created from instruction points as well. Add a minimum drag \
distance that must be exceeded to create via points to avoid accidential creations by \
mouse clicks.

 M  +29 -19    RoutingLayer.cpp  


--- trunk/KDE/kdeedu/marble/src/lib/routing/RoutingLayer.cpp #1121573:1121574
@@ -71,9 +71,9 @@
 
     QRect m_movingIndexDirtyRect;
 
-    QPoint m_insertStopOver;
+    QPoint m_dropStopOver;
 
-    bool m_dragStopOver;
+    QPoint m_dragStopOver;
 
     bool m_pointSelection;
 
@@ -138,7 +138,7 @@
 
 RoutingLayerPrivate::RoutingLayerPrivate( RoutingLayer *parent, MarbleWidget *widget \
                ) :
         q( parent ), m_proxyModel( 0 ), m_movingIndex( -1 ), m_marbleWidget( widget \
                ), m_targetPixmap( ":/data/bitmaps/routing_pick.png" ),
-        m_viaPixmap( ":/data/bitmaps/routing_via.png" ), m_dragStopOver( false ), \
m_pointSelection( false ), +        m_viaPixmap( ":/data/bitmaps/routing_via.png" ), \
                m_pointSelection( false ),
         m_routingModel( 0 ), m_placemarkModel( 0 ), m_selectionModel( 0 ), \
m_routeDirty( false ), m_pixmapSize( 22, 22 ),  m_routeSkeleton( 0 ), \
m_activeMenuIndex( -1 )  {
@@ -210,10 +210,10 @@
     painter->setPen( bluePen );
     painter->setBrush( QBrush( QColor::fromRgb( 136, 138, 133, 200 ) ) ); // gray, \
oxygen palette  
-    if ( !m_insertStopOver.isNull() ) {
+    if ( !m_dropStopOver.isNull() ) {
         int dx = 1 + m_pixmapSize.width() / 2;
         int dy = 1 + m_pixmapSize.height() / 2;
-        QPoint center = m_insertStopOver - QPoint( dx, dy );
+        QPoint center = m_dropStopOver - QPoint( dx, dy );
         painter->drawPixmap( center, m_targetPixmap );
     }
 
@@ -269,8 +269,8 @@
         if ( region.region.contains( e->pos() ) ) {
             if ( e->button() == Qt::LeftButton ) {
                 m_movingIndex = region.index;
-                m_insertStopOver = QPoint();
-                m_dragStopOver = false;
+                m_dropStopOver = QPoint();
+                m_dragStopOver = QPoint();
                 return true;
             } else if ( e->button() == Qt::RightButton ) {
                 m_removeViaPointAction->setEnabled( true );
@@ -291,8 +291,8 @@
                     command = QItemSelectionModel::Clear;
                 }
                 m_selectionModel->select( index, command );
-                m_insertStopOver = QPoint();
-                m_dragStopOver = false;
+                m_dropStopOver = e->pos();
+                m_dragStopOver = e->pos();
                 return true;
             } else if ( e->button() == Qt::RightButton ) {
                 m_removeViaPointAction->setEnabled( false );
@@ -306,8 +306,8 @@
     if ( m_routeRegion.contains( e->pos() ) ) {
         if ( e->button() == Qt::LeftButton ) {
             /** @todo: Determine the neighbored via points and insert in order */
-            m_insertStopOver = e->pos();
-            m_dragStopOver = true;
+            m_dropStopOver = e->pos();
+            m_dragStopOver = e->pos();
             return true;
         } else if ( e->button() == Qt::RightButton ) {
             m_removeViaPointAction->setEnabled( false );
@@ -357,9 +357,14 @@
         return true;
     }
 
-    if ( !m_insertStopOver.isNull() ) {
+    if ( !m_dropStopOver.isNull() && !m_dragStopOver.isNull() ) {
+        QPoint moved = e->pos() - m_dragStopOver;
+        if ( moved.manhattanLength() < 10 ) {
+            return false;
+        }
+
         qreal lon( 0.0 ), lat( 0.0 );
-        if ( m_marbleWidget->geoCoordinates( m_insertStopOver.x(), \
m_insertStopOver.y(), lon, lat, GeoDataCoordinates::Radian ) ) { +        if ( \
m_marbleWidget->geoCoordinates( m_dropStopOver.x(), m_dropStopOver.y(), lon, lat, \
GeoDataCoordinates::Radian ) ) {  GeoDataCoordinates position( lon, lat );
             m_routeSkeleton->addVia( position );
             clearStopOver();
@@ -390,16 +395,21 @@
             GeoDataCoordinates moved( lon, lat );
             m_routeSkeleton->setPosition( m_movingIndex, moved );
             m_marbleWidget->setCursor( Qt::ArrowCursor );
-        } else if ( m_dragStopOver ) {
-            m_insertStopOver = e->pos();
+        } else if ( !m_dragStopOver.isNull() ) {
+            if ( e->buttons() & Qt::LeftButton ) {
+                m_dropStopOver = e->pos();
+            } else {
+                m_dragStopOver = QPoint();
+                m_dropStopOver = QPoint();
+            }
             m_marbleWidget->setCursor( Qt::ArrowCursor );
         } else if ( isInfoPoint( e->pos() ) ) {
             clearStopOver();
             m_marbleWidget->setCursor( Qt::ArrowCursor );
         } else if ( m_routeRegion.contains( e->pos() ) ) {
-            m_insertStopOver = e->pos();
+            m_dropStopOver = e->pos();
             m_marbleWidget->setCursor( Qt::ArrowCursor );
-        } else if ( !m_insertStopOver.isNull() ) {
+        } else if ( !m_dropStopOver.isNull() ) {
             clearStopOver();
         } else {
             return false;
@@ -453,8 +463,8 @@
 
 void RoutingLayerPrivate::clearStopOver()
 {
-    m_insertStopOver = QPoint();
-    m_dragStopOver = false;
+    m_dropStopOver = QPoint();
+    m_dragStopOver = QPoint();
     m_marbleWidget->repaint( m_movingIndexDirtyRect );
 }
 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic