summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2019-11-09 10:14:15 -0800
committerGravatar Dirk Hohndel <dirk@hohndel.org>2019-11-10 21:59:32 +0100
commit4f0d437f1e5bde5f4e193eb81914a87d34c13eba (patch)
tree99da72d8b78cadf9fd0523a4f4651e5db7d12146
parent80f123ce2aacc8f3180b0b7a56a027e4804ae498 (diff)
downloadsubsurface-4f0d437f1e5bde5f4e193eb81914a87d34c13eba.tar.gz
Mobile: add ability to directly open support email
This is even easier and more obvious than copying the logs on the About page and then manually creating an email and pasting those logs. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r--mobile-widgets/qml/main.qml30
-rw-r--r--mobile-widgets/qmlmanager.cpp29
-rw-r--r--mobile-widgets/qmlmanager.h2
3 files changed, 44 insertions, 17 deletions
diff --git a/mobile-widgets/qml/main.qml b/mobile-widgets/qml/main.qml
index 47b3d8f50..3a88ad91b 100644
--- a/mobile-widgets/qml/main.qml
+++ b/mobile-widgets/qml/main.qml
@@ -436,6 +436,27 @@ if you have network connectivity and want to sync your data to cloud storage."),
},
Kirigami.Action {
icon {
+ name: ":/icons/ic_help_outline.svg"
+ }
+ text: qsTr("Help")
+ onTriggered: {
+ Qt.openUrlExternally("https://subsurface-divelog.org/documentation/subsurface-mobile-v2-user-manual/")
+ }
+ },
+ Kirigami.Action {
+ icon {
+ name: ":/icons/ic_help_outline.svg"
+ }
+ text: qsTr("Ask for support")
+ onTriggered: {
+ if (!manager.createSupportEmail()) {
+ manager.copyAppLogToClipboard()
+ showPassiveNotification(qsTr("failed to open email client, please manually create support email to support@subsurface-divelog.org - the logs have been copied to the clipboard and can be pasted into that email."), 6000)
+ }
+ }
+ },
+ Kirigami.Action {
+ icon {
name: ":/icons/ic_adb.svg"
}
text: qsTr("Developer")
@@ -477,15 +498,6 @@ if you have network connectivity and want to sync your data to cloud storage."),
pageStack.push(themetest)
}
}
- },
- Kirigami.Action {
- icon {
- name: ":/icons/ic_help_outline.svg"
- }
- text: qsTr("Help")
- onTriggered: {
- Qt.openUrlExternally("https://subsurface-divelog.org/documentation/subsurface-mobile-v2-user-manual/")
- }
}
] // end actions
Image {
diff --git a/mobile-widgets/qmlmanager.cpp b/mobile-widgets/qmlmanager.cpp
index c27e2ca23..015e72626 100644
--- a/mobile-widgets/qmlmanager.cpp
+++ b/mobile-widgets/qmlmanager.cpp
@@ -375,13 +375,28 @@ void QMLManager::mergeLocalRepo()
void QMLManager::copyAppLogToClipboard()
{
- /*
- * The user clicked the button, so copy the log file
- * to the clipboard for easy access
- */
+ // The About page offers a button to copy logs so they can be pasted elsewhere
+ QApplication::clipboard()->setText(getCombinedLogs(), QClipboard::Clipboard);
+}
+bool QMLManager::createSupportEmail()
+{
+ QString mailToLink = "mailto:in-app-support@subsurface-divelog.org?subject=Subsurface-mobile support request";
+ mailToLink += "&body=Please describe your issue here and keep the logs below:\n\n\n\n";
+ mailToLink += getCombinedLogs();
+ if (QDesktopServices::openUrl(QUrl(mailToLink))) {
+ appendTextToLog("OS accepted support email");
+ return true;
+ }
+ appendTextToLog("failed to create support email");
+ return false;
+}
+
+// useful for support requests
+QString QMLManager::getCombinedLogs()
+{
// Add heading and append subsurface.log
- QString copyString = "---------- subsurface.log ----------\n";
+ QString copyString = "\n---------- subsurface.log ----------\n";
copyString += MessageHandlerModel::self()->logAsString();
// Add heading and append libdivecomputer.log
@@ -408,9 +423,7 @@ void QMLManager::copyAppLogToClipboard()
copyString += "\n\n---------- truncated ----------\n";
}
#endif
-
- // and copy to clipboard
- QApplication::clipboard()->setText(copyString, QClipboard::Clipboard);
+ return copyString;
}
void QMLManager::finishSetup()
diff --git a/mobile-widgets/qmlmanager.h b/mobile-widgets/qmlmanager.h
index 782cc6d22..4faf823b8 100644
--- a/mobile-widgets/qmlmanager.h
+++ b/mobile-widgets/qmlmanager.h
@@ -185,7 +185,9 @@ public slots:
void populateGpsData();
void cancelDownloadDC();
void clearGpsData();
+ QString getCombinedLogs();
void copyAppLogToClipboard();
+ bool createSupportEmail();
void finishSetup();
void openLocalThenRemote(QString url);
void mergeLocalRepo();