diff options
author | Dirk Hohndel <dirk@hohndel.org> | 2020-03-15 12:27:10 -0700 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2020-03-16 07:58:20 -0700 |
commit | 0b72495413e8b060b58b96aa6d6a0ce96baa168c (patch) | |
tree | 6517fa914d2ffd9ba1317e100e8f92f419990430 /mobile-widgets/qmlmanager.cpp | |
parent | 4619b4932eb2f75f8026b79e8a810ddf5f5fd7e9 (diff) | |
download | subsurface-0b72495413e8b060b58b96aa6d6a0ce96baa168c.tar.gz |
android/usb: simply restart the download after receiving permission
If the user tries to download from a device that he hasn't given the app
permission to read from, Android will pop up a dialogue asking for that
permission. With this after giving the permission we continue (well,
technically, restart) the download which is likely the expected behavior.
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'mobile-widgets/qmlmanager.cpp')
-rw-r--r-- | mobile-widgets/qmlmanager.cpp | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/mobile-widgets/qmlmanager.cpp b/mobile-widgets/qmlmanager.cpp index b271af6ea..184ce023f 100644 --- a/mobile-widgets/qmlmanager.cpp +++ b/mobile-widgets/qmlmanager.cpp @@ -2120,9 +2120,8 @@ void QMLManager::androidUsbPopoulateConnections() void QMLManager::showDownloadPage(QAndroidJniObject usbDevice) { if (!usbDevice.isValid()) { - // this happens if we get called by the permission granted intent - // if that happens, just make sure the DownloadPage is reopened - m_pluggedInDeviceName = QString("reopen"); + // this really shouldn't happen anymore, but just in case... + m_pluggedInDeviceName = ""; } else { // repopulate the connection list rescanConnections(); @@ -2135,6 +2134,25 @@ void QMLManager::showDownloadPage(QAndroidJniObject usbDevice) } emit pluggedInDeviceNameChanged(); } + +void QMLManager::restartDownload(QAndroidJniObject usbDevice) +{ + // this gets called if we received a permission intent after + // already trying to download from USB + if (!usbDevice.isValid()) { + appendTextToLog("permission intent with invalid UsbDevice - ignoring"); + } else { + // inform that QML code that it should retry downloading + // we get the usbDevice again and could verify that this is + // still the same - but I don't see how this could change while we are waiting + // for permission + android_usb_serial_device_descriptor usbDeviceDescriptor = getDescriptor(usbDevice); + appendTextToLog(QString("got permission from Android, restarting download for %1") + .arg(QString::fromStdString(usbDeviceDescriptor.uiRepresentation))); + emit restartDownloadSignal(); + } +} + #endif void QMLManager::setFilter(const QString filterText, int index) |