summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2021-01-22 17:09:18 -0800
committerGravatar Dirk Hohndel <dirk@hohndel.org>2021-01-23 13:19:11 -0800
commit64dea827bdeddf6b6c2e59295bd7bd69c9a147e4 (patch)
treee1e868e3c570f5d54d265dcbcfca24aef1e81823
parentfaafcd0cfc2301fd77ba2deb68619fec099ad6fd (diff)
downloadsubsurface-64dea827bdeddf6b6c2e59295bd7bd69c9a147e4.tar.gz
mobile/debugging: copy GPS fixes to clipboard
The goal is to enable a user experiencing crashes when applying GPS data to their dive log to make all necessary data available to the developers. Hopefully the clipboard is large enough to hold all the data. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r--core/gpslocation.cpp10
-rw-r--r--core/gpslocation.h2
-rw-r--r--mobile-widgets/qml/main.qml9
-rw-r--r--mobile-widgets/qmlmanager.cpp10
-rw-r--r--mobile-widgets/qmlmanager.h1
5 files changed, 31 insertions, 1 deletions
diff --git a/core/gpslocation.cpp b/core/gpslocation.cpp
index 012b24403..72f0bb557 100644
--- a/core/gpslocation.cpp
+++ b/core/gpslocation.cpp
@@ -321,6 +321,16 @@ void GpsLocation::loadFromStorage()
}
}
+QString GpsLocation::getFixString()
+{
+ // only used for debugging
+ QString res;
+ struct gpsTracker gpsEntry;
+ foreach (gpsEntry, m_trackers.values())
+ res += QString("%1: %2; %3 ; \"%4\"\n").arg(gpsEntry.when).arg(gpsEntry.location.lat.udeg).arg(gpsEntry.location.lon.udeg).arg(gpsEntry.name);
+ return res;
+}
+
void GpsLocation::replaceFixToStorage(gpsTracker &gt)
{
if (!m_trackers.keys().contains(gt.when)) {
diff --git a/core/gpslocation.h b/core/gpslocation.h
index ea3373d3b..eb61fe7ef 100644
--- a/core/gpslocation.h
+++ b/core/gpslocation.h
@@ -37,7 +37,7 @@ public:
bool hasLocationsSource();
QString currentPosition();
void setLogCallBack(void (*showMsgCB)(const char *msg));
-
+ QString getFixString();
QMap<qint64, gpsTracker> currentGPSInfo() const;
private:
diff --git a/mobile-widgets/qml/main.qml b/mobile-widgets/qml/main.qml
index 2ef9a4332..3dc6cbd85 100644
--- a/mobile-widgets/qml/main.qml
+++ b/mobile-widgets/qml/main.qml
@@ -605,6 +605,15 @@ if you have network connectivity and want to sync your data to cloud storage."),
}
}
+ Kirigami.Action {
+ text: qsTr("Copy GPS to clipboard")
+ onTriggered: {
+ globalDrawer.close()
+ manager.copyGpsFixesToClipboard()
+ }
+
+ }
+
/* disable for now
Kirigami.Action {
text: qsTr("Dive planner")
diff --git a/mobile-widgets/qmlmanager.cpp b/mobile-widgets/qmlmanager.cpp
index fddc61d3a..878d4618c 100644
--- a/mobile-widgets/qmlmanager.cpp
+++ b/mobile-widgets/qmlmanager.cpp
@@ -492,6 +492,16 @@ void QMLManager::copyAppLogToClipboard()
QApplication::clipboard()->setText(getCombinedLogs(), QClipboard::Clipboard);
}
+void QMLManager::copyGpsFixesToClipboard()
+{
+ // This of course creates a potential privacy issue, so let's be clear about that
+ QString gpsWarning("Sending these GPS data to someone exposes your location history; ");
+ gpsWarning += "they can, however, be helpful when debugging problems with the app. ";
+ gpsWarning += "Please consider carefully where you are seninding these data.\n\n";
+ gpsWarning += GpsLocation::instance()->getFixString();
+ QApplication::clipboard()->setText(gpsWarning, QClipboard::Clipboard);
+}
+
bool QMLManager::createSupportEmail()
{
QString mailToLink = "mailto:in-app-support@subsurface-divelog.org?subject=Subsurface-mobile support request";
diff --git a/mobile-widgets/qmlmanager.h b/mobile-widgets/qmlmanager.h
index 9db2f991c..e403a6f46 100644
--- a/mobile-widgets/qmlmanager.h
+++ b/mobile-widgets/qmlmanager.h
@@ -217,6 +217,7 @@ public slots:
void clearGpsData();
QString getCombinedLogs();
void copyAppLogToClipboard();
+ void copyGpsFixesToClipboard();
bool createSupportEmail();
void finishSetup();
QString getNumber(const QString& diveId);