summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar jan Iversen <jani@libreoffice.org>2018-05-16 16:50:17 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2018-05-18 12:43:15 -0700
commita181020b193f0ae44c49a1ac095713cd2fa10213 (patch)
tree23fc996d739439fee789f6835216e17ed53646c0
parent2a0ee09cb2cf1c3cb7ee020d5c6b58bcc50123ca (diff)
downloadsubsurface-a181020b193f0ae44c49a1ac095713cd2fa10213.tar.gz
mobile: add "Copy log to clipboard" button
on iOS it is practically impossible to copy the App log to e.g. a mail! in iOS 11 the log file is stored within the subsurface container and you first need to copy (actually using the clipboard) out from there to the "normal" document shared space, before it can be used. At least iOS users (and I believe Android users) are not really used to work with files, so the process is not easy to document in an understandable way. The alternative is to provide a button, which simply puts the log on the general clipboard, allowing it to be pasted in a multitud of applications. Signed-off-by: Jan Iversen <jani@apache.org>
-rw-r--r--mobile-widgets/qml/About.qml9
-rw-r--r--mobile-widgets/qmlmanager.cpp12
-rw-r--r--mobile-widgets/qmlmanager.h1
-rw-r--r--qt-models/messagehandlermodel.cpp9
-rw-r--r--qt-models/messagehandlermodel.h1
5 files changed, 32 insertions, 0 deletions
diff --git a/mobile-widgets/qml/About.qml b/mobile-widgets/qml/About.qml
index 212ff5c6b..6d3bb28a3 100644
--- a/mobile-widgets/qml/About.qml
+++ b/mobile-widgets/qml/About.qml
@@ -56,5 +56,14 @@ Kirigami.ScrollablePage {
anchors.horizontalCenter: parent.Center
horizontalAlignment: Text.AlignHCenter
}
+ SsrfButton {
+ id: copyAppLogToClipboard
+ Layout.alignment: Qt.AlignHCenter
+ text: qsTr("Copy app log to clipboard")
+ onClicked: {
+ manager.copyAppLogToClipboard()
+ rootItem.returnTopPage()
+ }
+ }
}
}
diff --git a/mobile-widgets/qmlmanager.cpp b/mobile-widgets/qmlmanager.cpp
index fba9efb92..2b2d4cbbe 100644
--- a/mobile-widgets/qmlmanager.cpp
+++ b/mobile-widgets/qmlmanager.cpp
@@ -12,12 +12,14 @@
#include <QElapsedTimer>
#include <QTimer>
#include <QDateTime>
+#include <QClipboard>
#include <QBluetoothLocalDevice>
#include "qt-models/divelistmodel.h"
#include "qt-models/gpslistmodel.h"
#include "qt-models/completionmodels.h"
+#include "qt-models/messagehandlermodel.h"
#include "core/divelist.h"
#include "core/device.h"
#include "core/pref.h"
@@ -332,6 +334,16 @@ void QMLManager::cancelCredentialsPinSetup()
setShowPin(false);
}
+void QMLManager::copyAppLogToClipboard()
+{
+ /*
+ * The user clicked the button, so copy the log file
+ * to the clipboard for easy access
+ */
+ QString copyString = MessageHandlerModel::self()->logAsString();
+ QApplication::clipboard()->setText(copyString, QClipboard::Clipboard);
+}
+
void QMLManager::finishSetup()
{
// Initialize cloud credentials.
diff --git a/mobile-widgets/qmlmanager.h b/mobile-widgets/qmlmanager.h
index b158e43ee..1a7166b65 100644
--- a/mobile-widgets/qmlmanager.h
+++ b/mobile-widgets/qmlmanager.h
@@ -178,6 +178,7 @@ public slots:
void clearGpsData();
void clearCredentials();
void cancelCredentialsPinSetup();
+ void copyAppLogToClipboard();
void finishSetup();
void openLocalThenRemote(QString url);
void mergeLocalRepo();
diff --git a/qt-models/messagehandlermodel.cpp b/qt-models/messagehandlermodel.cpp
index be077a1a3..78497f5bc 100644
--- a/qt-models/messagehandlermodel.cpp
+++ b/qt-models/messagehandlermodel.cpp
@@ -51,6 +51,15 @@ void MessageHandlerModel::addLog(QtMsgType type, const QString& message)
#endif
}
+const QString MessageHandlerModel::logAsString()
+{
+ QString copyString;
+
+ // Loop through m_data and build big string to be put on the clipboard
+ for(const MessageData &data: m_data)
+ copyString += data.message + "\n";
+ return copyString;
+}
QVariant MessageHandlerModel::data(const QModelIndex& idx, int role) const
{
switch(role) {
diff --git a/qt-models/messagehandlermodel.h b/qt-models/messagehandlermodel.h
index b59a4eca3..3addee95f 100644
--- a/qt-models/messagehandlermodel.h
+++ b/qt-models/messagehandlermodel.h
@@ -14,6 +14,7 @@ public:
QVariant data(const QModelIndex& idx, int role) const override;
QHash<int, QByteArray> roleNames() const override;
void addLog(QtMsgType type, const QString& message);
+ const QString logAsString();
/* call this to clear the debug data */
Q_INVOKABLE void reset();