find patches attached ;-)

Besides the split command patch, there is also another patch that slightly changes the splitting behavior: IMHO it's desirable to keep the split point in both segments for several reasons:

- there is no need for the user to consider the direction of the track
  and to remember in which segment the split point will end
- the sum of the length of both segments equals the length of the
  original track
- splitting at the first or last track point will not result in empty
  segments

Regards,
Michael

--
[email protected]:~ > ps -ef | grep msblast.exe
  502 25710 25707   0   0:00.01 ttys001    0:00.01 grep msblast.exe

Puh, that was lucky!
From 0af30c904412838df89a2cc2d64ea805b7e635c5 Mon Sep 17 00:00:00 2001
From: Michael Klein <[email protected]>
Date: Wed, 7 Mar 2012 21:51:23 +0100
Subject: [PATCH 1/4] fixed typo

---
 src/locale/qlandkartegt_de.ts |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/src/locale/qlandkartegt_de.ts b/src/locale/qlandkartegt_de.ts
index ffe9ca9..6addd1e 100644
--- a/src/locale/qlandkartegt_de.ts
+++ b/src/locale/qlandkartegt_de.ts
@@ -2865,7 +2865,7 @@ ist keine gültige Koordinatensystemdefinition
     <message>
         <location filename="../CGeoDB.cpp" line="219"/>
         <source>Add to database</source>
-        <translation>Zur Datanbank hinzufügen</translation>
+        <translation>Zur Datenbank hinzufügen</translation>
     </message>
     <message>
         <location filename="../CGeoDB.cpp" line="220"/>
-- 
1.7.9

From 219343925d2ea21a5db503f05987fa7857600c9b Mon Sep 17 00:00:00 2001
From: Michael Klein <[email protected]>
Date: Wed, 7 Mar 2012 21:53:24 +0100
Subject: [PATCH 3/4] add "Split Track" command to context menu

---
 src/CMouseMoveMap.cpp |    9 +++++++++
 src/CMouseMoveMap.h   |    3 ++-
 2 files changed, 11 insertions(+), 1 deletions(-)

diff --git a/src/CMouseMoveMap.cpp b/src/CMouseMoveMap.cpp
index 5ed54d2..9249597 100644
--- a/src/CMouseMoveMap.cpp
+++ b/src/CMouseMoveMap.cpp
@@ -221,6 +221,7 @@ void CMouseMoveMap::contextMenu(QMenu& menu)
         menu.addAction(QPixmap(":/icons/iconGoogleMaps16x16.png"),tr("Open 
Pos. with Google Maps"),this,SLOT(slotOpenGoogleMaps())); //TODO: Google Maps 
right click
         menu.addAction(QPixmap(":/icons/iconClipboard16x16.png"),tr("Copy Pos. 
Trackpoint"),this,SLOT(slotCopyPositionTrack()));
         menu.addAction(QPixmap(":/icons/iconEdit16x16.png"),tr("Edit Track 
..."),this,SLOT(slotEditTrack()));
+        menu.addAction(QPixmap(":/icons/iconEditCut16x16.png"),tr("Split Track 
..."),this,SLOT(slotSplitTrack()));
     }
     menu.addSeparator();
 
@@ -469,6 +470,14 @@ void CMouseMoveMap::slotEditTrack()
     }
 }
 
+void CMouseMoveMap::slotSplitTrack()
+{
+    if(selTrkPt)
+    {
+        CTrackDB::self().splitTrack(selTrkPt->idx);
+    }
+}
+
 void CMouseMoveMap::slotOpenGoogleMaps()       //TODO: Open Google Maps
 {
     QString position;
diff --git a/src/CMouseMoveMap.h b/src/CMouseMoveMap.h
index ddb1ef5..32b1492 100644
--- a/src/CMouseMoveMap.h
+++ b/src/CMouseMoveMap.h
@@ -52,7 +52,8 @@ class CMouseMoveMap : public IMouse
         void slotAddWpt();
         void slotCopyPositionTrack();
         void slotEditTrack();
-                void slotOpenGoogleMaps();     //TODO: GOOGLE MAPS
+        void slotSplitTrack();
+        void slotOpenGoogleMaps();     //TODO: GOOGLE MAPS
 
         void slotCopyPosDegree();
         void slotCopyPosGrid();
-- 
1.7.9

From 3885a3767a81a6749d0e2e4501e8e1efc3ccc149 Mon Sep 17 00:00:00 2001
From: Michael Klein <[email protected]>
Date: Wed, 7 Mar 2012 21:51:38 +0100
Subject: [PATCH 2/4] when splitting a track, retain split point in both
 segments

---
 src/CTrackDB.cpp |   16 +++++++++-------
 1 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/src/CTrackDB.cpp b/src/CTrackDB.cpp
index 600c78f..9c5c05b 100644
--- a/src/CTrackDB.cpp
+++ b/src/CTrackDB.cpp
@@ -786,24 +786,26 @@ void CTrackDB::splitTrack(int idx)
     CTrack * theTrack = highlightedTrack();
     if(theTrack == 0) return;
 
-    int i;
-    QList<CTrack::pt_t>& track          = theTrack->getTrackPoints();
-    QList<CTrack::pt_t>::iterator trkpt = track.begin();
+    QList<CTrack::pt_t>& track = theTrack->getTrackPoints();
+    if(track.size() < idx - 1) return;
+
+    QList<CTrack::pt_t>::iterator trkpt, splitpt = track.begin() + idx;
 
     CTrack * track1 = new CTrack(this);
     track1->setName(theTrack->getName() + "_1");
     track1->setColor(theTrack->getColorIdx());
-    for(i = 0; (i <= idx) && (trkpt != track.end()); ++i)
+
+    for (trkpt = track.begin(); trkpt != splitpt + 1; ++trkpt)
     {
-        *track1 << *trkpt++;
+        *track1 << *trkpt;
     }
 
     CTrack * track2 = new CTrack(this);
     track2->setName(theTrack->getName() + "_2");
     track2->setColor(theTrack->getColorIdx());
-    for( ;(trkpt != track.end()); ++i)
+    for (trkpt = splitpt; trkpt != track.end(); ++trkpt)
     {
-        *track2 << *trkpt++;
+        *track2 << *trkpt;
     }
 
     addTrack(track1, true);
-- 
1.7.9

From 2c4d436664035cb92d4a923a5c18bb2e87c77bc5 Mon Sep 17 00:00:00 2001
From: Michael Klein <[email protected]>
Date: Wed, 7 Mar 2012 21:54:13 +0100
Subject: [PATCH 4/4] stop mouse tracking while the context menu is executing

this works around a race condition on (at least) OS X where mouse move
events were dispatched between clicking a context menu item and executing
the respective action slot.
---
 src/CCanvas.cpp |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/src/CCanvas.cpp b/src/CCanvas.cpp
index f4be4e4..84c84c2 100644
--- a/src/CCanvas.cpp
+++ b/src/CCanvas.cpp
@@ -806,7 +806,9 @@ void CCanvas::raiseContextMenu(const QPoint& pos)
     mouse->contextMenu(menu);
 
     QPoint p = mapToGlobal(pos);
+    setMouseTracking(false);
     menu.exec(p);
+    setMouseTracking(true);
 }
 
 
-- 
1.7.9

------------------------------------------------------------------------------
Virtualization & Cloud Management Using Capacity Planning
Cloud computing makes use of virtualization - but cloud computing 
also focuses on allowing computing to be delivered as a service.
http://www.accelacomm.com/jaw/sfnl/114/51521223/
_______________________________________________
Qlandkartegt-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/qlandkartegt-users

Reply via email to