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

List:       kde-commits
Subject:    [libkgeomap] libkgeomap: Give each loaded track a unique track id.
From:       Michael Georg Hansen <mike () mghansen ! de>
Date:       2014-06-09 15:51:21
Message-ID: E1Wu1qz-0005i2-5w () scm ! kde ! org
[Download RAW message or body]

Git commit 0eb9bd798d19e9aa622a39152f8464e17a5601d5 by Michael Georg Hansen.
Committed on 09/06/2014 at 14:29.
Pushed by mghansen into branch 'master'.

Give each loaded track a unique track id.

M  +29   -2    libkgeomap/tracks.cpp
M  +6    -1    libkgeomap/tracks.h

http://commits.kde.org/libkgeomap/0eb9bd798d19e9aa622a39152f8464e17a5601d5

diff --git a/libkgeomap/tracks.cpp b/libkgeomap/tracks.cpp
index 6e4a261..1d7d9f5 100644
--- a/libkgeomap/tracks.cpp
+++ b/libkgeomap/tracks.cpp
@@ -61,7 +61,8 @@ public:
       : trackLoadFutureWatcher(0),
         trackLoadFuture(),
         trackList(),
-        loadErrorFiles()
+        loadErrorFiles(),
+        nextTrackId(1)
     {
 
     }
@@ -70,6 +71,9 @@ public:
     QFuture<TrackReader::TrackReadResult> trackLoadFuture;
     TrackManager::Track::List trackList;
     QList<QPair<KUrl, QString> > loadErrorFiles;
+
+    // We assume here that we will never load more than uint64_max tracks.
+    quint64 nextTrackId;
 };
 
 TrackManager::TrackManager(QObject* const parent)
@@ -120,7 +124,9 @@ void TrackManager::slotTrackFilesReadyAt(int beginIndex, int endIndex)
 
         if (nextFile.isValid)
         {
-            d->trackList << nextFile.track;
+            Track nextTrack = nextFile.track;
+            nextTrack.id = getNextFreeTrackId();
+            d->trackList << nextTrack;
         }
         else
         {
@@ -157,4 +163,25 @@ QList<QPair<KUrl, QString> > TrackManager::readLoadErrors()
     return result;
 }
 
+quint64 TrackManager::getNextFreeTrackId()
+{
+    const quint64 nextId = d->nextTrackId;
+    ++(d->nextTrackId);
+
+    return nextId;
+}
+
+TrackManager::Track TrackManager::getTrackById(const quint64 trackId) const
+{
+    Q_FOREACH(const Track& track, d->trackList)
+    {
+        if (track.id == trackId)
+        {
+            return track;
+        }
+    }
+
+    return TrackManager::Track();
+}
+
 } // namespace KGeoMap
diff --git a/libkgeomap/tracks.h b/libkgeomap/tracks.h
index 6dfa01f..4d7e455 100644
--- a/libkgeomap/tracks.h
+++ b/libkgeomap/tracks.h
@@ -89,12 +89,15 @@ public:
 
         Track()
         : url(),
-          points()
+          points(),
+          id(0)
         {
         }
 
         KUrl url;
         QList<TrackPoint> points;
+        /// 0 means no track id assigned yet
+        quint64 id;
 
         typedef QList<Track> List;
     };
@@ -110,6 +113,8 @@ public:
     const Track& getTrack(const int index) const;
     Track::List getTrackList() const;
     int trackCount() const;
+    quint64 getNextFreeTrackId();
+    Track getTrackById(const quint64 trackId) const;
 
 Q_SIGNALS:
 

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

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