[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