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>
This commit is contained in:
Dirk Hohndel 2021-01-22 17:09:18 -08:00
parent faafcd0cfc
commit 64dea827bd
5 changed files with 31 additions and 1 deletions

View file

@ -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)) {

View file

@ -37,7 +37,7 @@ public:
bool hasLocationsSource();
QString currentPosition();
void setLogCallBack(void (*showMsgCB)(const char *msg));
QString getFixString();
QMap<qint64, gpsTracker> currentGPSInfo() const;
private:

View file

@ -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")

View file

@ -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";

View file

@ -217,6 +217,7 @@ public slots:
void clearGpsData();
QString getCombinedLogs();
void copyAppLogToClipboard();
void copyGpsFixesToClipboard();
bool createSupportEmail();
void finishSetup();
QString getNumber(const QString& diveId);