Skip to content

Commit

Permalink
Show tracking elapsed time instead of time when tracking started + fi…
Browse files Browse the repository at this point in the history
…x time formatting
  • Loading branch information
wonder-sk committed Apr 19, 2024
1 parent 2af68a0 commit fece655
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 10 deletions.
17 changes: 17 additions & 0 deletions app/position/tracking/positiontrackingmanager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
PositionTrackingManager::PositionTrackingManager( QObject *parent )
: QObject( parent )
{
connect( &mElapsedTimeTextTimer, &QTimer::timeout, this, &PositionTrackingManager::elapsedTimeTextChanged );
}

void PositionTrackingManager::addPoint( const QgsPoint &position )
Expand Down Expand Up @@ -208,6 +209,8 @@ void PositionTrackingManager::setup()
{
emit trackedGeometryChanged( mTrackedGeometry );
}

mElapsedTimeTextTimer.start( 1000 );
}

AbstractTrackingBackend *PositionTrackingManager::constructTrackingBackend( QgsProject *project, PositionKit *positionKit )
Expand Down Expand Up @@ -348,6 +351,20 @@ QDateTime PositionTrackingManager::startTime() const
return mTrackingStartTime;
}

QString PositionTrackingManager::elapsedTimeText() const
{
if ( !mIsTrackingPosition )
return QString();

qint64 totalSecs = mTrackingStartTime.secsTo( QDateTime::currentDateTime() );
int hours = totalSecs / 3600;
totalSecs = totalSecs % 3600;
int minutes = totalSecs / 60;
int seconds = totalSecs % 60;

return QString( "%1:%2:%3" ).arg( hours, 2, 10, QChar( '0' ) ).arg( minutes, 2, 10, QChar( '0' ) ).arg( seconds, 2, 10, QChar( '0' ) );
}

bool PositionTrackingManager::isTrackingPosition() const
{
return mIsTrackingPosition;
Expand Down
10 changes: 10 additions & 0 deletions app/position/tracking/positiontrackingmanager.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
#include <QObject>
#include <qglobal.h>
#include <QQmlEngine>
#include <QTimer>

#include "abstracttrackingbackend.h"

Expand All @@ -33,6 +34,7 @@ class PositionTrackingManager : public QObject
Q_PROPERTY( QDateTime startTime READ startTime NOTIFY startTimeChanged )
Q_PROPERTY( QgsGeometry trackedGeometry READ trackedGeometry NOTIFY trackedGeometryChanged )
Q_PROPERTY( bool isTrackingPosition READ isTrackingPosition NOTIFY isTrackingPositionChanged )
Q_PROPERTY( QString elapsedTimeText READ elapsedTimeText NOTIFY elapsedTimeTextChanged )

// properties to be set from QML
Q_PROPERTY( QgsProject *qgsProject READ qgsProject WRITE setQgsProject NOTIFY qgsProjectChanged )
Expand Down Expand Up @@ -73,6 +75,9 @@ class PositionTrackingManager : public QObject

QDateTime startTime() const;

//! How long we have been tracking, formatted as a text (empty if not tracking)
QString elapsedTimeText() const;

bool isTrackingPosition() const;

public slots:
Expand All @@ -99,6 +104,8 @@ class PositionTrackingManager : public QObject

void abort();

void elapsedTimeTextChanged();

private:
void setLayerId( QString newLayerId );
void setup();
Expand All @@ -114,6 +121,9 @@ class PositionTrackingManager : public QObject
QDateTime mTrackingStartTime;
QgsFeature mTrackedFeature;
bool mIsTrackingPosition = false;

// timer to make sure we are periodically updating tracking elapsed time
QTimer mElapsedTimeTextTimer;
};

#endif // POSITIONTRACKINGMANAGER_H
2 changes: 1 addition & 1 deletion app/qml/dialogs/MMPositionTrackingDialog.qml
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ MMComponents.MMDrawerDialog {
MMComponents.MMText {
width: parent.width

text: qsTr("Started at")
text: qsTr("Tracking time")
horizontalAlignment: Text.AlignRight
font: __style.p6
color: __style.nightColor
Expand Down
5 changes: 1 addition & 4 deletions app/qml/main.qml
Original file line number Diff line number Diff line change
Expand Up @@ -550,10 +550,7 @@ ApplicationWindow {
function getStartingTime() {
if ( map.isTrackingPosition )
{
let date = map.trackingManager?.startTime
if ( date ) {
return date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds()
}
return map.trackingManager?.elapsedTimeText
}
return qsTr( "not tracking" )
}
Expand Down
6 changes: 1 addition & 5 deletions app/qml/map/MMMapController.qml
Original file line number Diff line number Diff line change
Expand Up @@ -521,11 +521,7 @@ Item {

text: {
if (visible) {
// TODO make some merge with main.qml:trackingPrivate.getStartingTime()
let date = root.trackingManager?.startTime
if ( date ) {
return date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds()
}
return root.trackingManager?.elapsedTimeText
}
else
return ""
Expand Down

0 comments on commit fece655

Please sign in to comment.