summaryrefslogtreecommitdiff
path: root/noncore/net/wellenreiter/gui/gps.cpp
Side-by-side diff
Diffstat (limited to 'noncore/net/wellenreiter/gui/gps.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/wellenreiter/gui/gps.cpp66
1 files changed, 64 insertions, 2 deletions
diff --git a/noncore/net/wellenreiter/gui/gps.cpp b/noncore/net/wellenreiter/gui/gps.cpp
index 288afee..31f95ce 100644
--- a/noncore/net/wellenreiter/gui/gps.cpp
+++ b/noncore/net/wellenreiter/gui/gps.cpp
@@ -16,6 +16,10 @@
#include "gps.h"
-#include <unistd.h>
+/* QT */
#include <qtextstream.h>
+/* STD */
+#include <stdlib.h>
+#include <unistd.h>
+
GPS::GPS( QObject* parent, const char * name )
@@ -66,4 +70,62 @@ GpsLocation GPS::position() const
}
- return GpsLocation( -1.0, -1.0 );
+ return GpsLocation( -111.111, -111.111 );
}
+
+QString GpsLocation::dmsPosition() const
+{
+ if ( _latitude == -111.111 || _longitude == -111.11 )
+ return "N/A";
+ if ( _latitude == 0.0 && _longitude == 0.0 )
+ return "NULL";
+
+ /* compute latitude */
+
+ QString dms = "N";
+ if ( _latitude >= 0 ) dms.append( "+" );
+
+ int trunc = int( _latitude );
+ float rest = _latitude - trunc;
+
+ float minf = rest * 60;
+ int minutes = int( minf );
+
+ rest = minf - minutes;
+ int seconds = int( rest * 60 );
+
+ dms.append( QString::number( trunc ) );
+ dms.append( "° " );
+ dms.append( QString::number( ::abs( minutes ) ) );
+ dms.append( "' " );
+ dms.append( QString::number( ::abs( seconds ) ) );
+ dms.append( "'' " );
+
+ /* compute longitude */
+
+ dms.append( " | W" );
+ if ( _longitude > 0 ) dms.append( "+" );
+
+ trunc = int( _longitude );
+ rest = _longitude - trunc;
+
+ minf = rest * 60;
+ minutes = int( minf );
+
+ rest = minf - minutes;
+ seconds = int( rest * 60 );
+
+ dms.append( QString::number( trunc ) );
+ dms.append( "° " );
+ dms.append( QString::number( ::abs( minutes ) ) );
+ dms.append( "' " );
+ dms.append( QString::number( ::abs( seconds ) ) );
+ dms.append( "'' " );
+
+ return dms;
+}
+
+
+
+
+
+