From 25d2d91cbe0e9e468ceeb1a9d4668f6fec27448d Mon Sep 17 00:00:00 2001 From: FalsinSoft Date: Sun, 13 Jan 2019 18:26:24 +0100 Subject: [PATCH] Changed the way permission results are passed to main app --- QtAndroidTools/QAndroidApkExpansionFiles.h | 6 +-- QtAndroidTools/QAndroidAppPermissions.cpp | 46 +++++++++++++++------- QtAndroidTools/QAndroidAppPermissions.h | 4 +- 3 files changed, 38 insertions(+), 18 deletions(-) diff --git a/QtAndroidTools/QAndroidApkExpansionFiles.h b/QtAndroidTools/QAndroidApkExpansionFiles.h index 29b735f..0ce199b 100644 --- a/QtAndroidTools/QAndroidApkExpansionFiles.h +++ b/QtAndroidTools/QAndroidApkExpansionFiles.h @@ -158,9 +158,9 @@ private: enum APP_STATE { APP_STATE_CREATE = 0, - APP_STATE_START = 1, - APP_STATE_STOP = 2, - APP_STATE_DESTROY = 3 + APP_STATE_START, + APP_STATE_STOP, + APP_STATE_DESTROY }; void SetNewAppState(APP_STATE NewState); }; diff --git a/QtAndroidTools/QAndroidAppPermissions.cpp b/QtAndroidTools/QAndroidAppPermissions.cpp index 2363777..1087f22 100644 --- a/QtAndroidTools/QAndroidAppPermissions.cpp +++ b/QtAndroidTools/QAndroidAppPermissions.cpp @@ -37,6 +37,8 @@ QObject* QAndroidAppPermissions::qmlInstance(QQmlEngine *engine, QJSEngine *scri void QAndroidAppPermissions::requestPermissions(const QStringList &permissionsNameList) { + QtAndroid::PermissionResultMap ResultMap; + if(QtAndroid::androidSdkVersion() >= 23) { QStringList PermissionsNotGrantedList; @@ -49,7 +51,7 @@ void QAndroidAppPermissions::requestPermissions(const QStringList &permissionsNa } else { - emit requestPermissionsResults(permissionsNameList[i], true); + ResultMap[permissionsNameList[i]] = QtAndroid::PermissionResult::Granted; } } @@ -62,9 +64,14 @@ void QAndroidAppPermissions::requestPermissions(const QStringList &permissionsNa { for(int i = 0; i < permissionsNameList.count(); i++) { - emit requestPermissionsResults(permissionsNameList[i], true); + ResultMap[permissionsNameList[i]] = QtAndroid::PermissionResult::Granted; } } + + if(ResultMap.size() > 0) + { + emit requestPermissionsResults(ConvertToVariantList(ResultMap)); + } } void QAndroidAppPermissions::requestPermission(const QString &permissionName) @@ -75,7 +82,9 @@ void QAndroidAppPermissions::requestPermission(const QString &permissionName) } else { - emit requestPermissionsResults(permissionName, true); + QtAndroid::PermissionResultMap ResultMap; + ResultMap[permissionName] = QtAndroid::PermissionResult::Granted; + emit requestPermissionsResults(ConvertToVariantList(ResultMap)); } } @@ -91,15 +100,24 @@ bool QAndroidAppPermissions::shouldShowRequestPermissionInfo(const QString &perm void QAndroidAppPermissions::RequestPermissionResults(const QtAndroid::PermissionResultMap &ResultMap) { - if(ResultMap.count() > 0) - { - QtAndroid::PermissionResultMap::const_iterator PermissionItem = ResultMap.constBegin(); - - while(PermissionItem != ResultMap.constEnd()) - { - const bool Granted = (PermissionItem.value() == QtAndroid::PermissionResult::Granted) ? true : false; - emit requestPermissionsResults(PermissionItem.key(), Granted); - ++PermissionItem; - } - } + emit requestPermissionsResults(ConvertToVariantList(ResultMap)); +} + +QVariantList QAndroidAppPermissions::ConvertToVariantList(const QtAndroid::PermissionResultMap &ResultMap) +{ + QtAndroid::PermissionResultMap::const_iterator PermissionItem = ResultMap.constBegin(); + QVariantList PermissionsList; + + while(PermissionItem != ResultMap.constEnd()) + { + QVariantMap PermissionResult; + + PermissionResult["name"] = PermissionItem.key(); + PermissionResult["granted"] = (PermissionItem.value() == QtAndroid::PermissionResult::Granted) ? true : false; + PermissionsList << PermissionResult; + + ++PermissionItem; + } + + return PermissionsList; } diff --git a/QtAndroidTools/QAndroidAppPermissions.h b/QtAndroidTools/QAndroidAppPermissions.h index 9bd355e..6e9228f 100644 --- a/QtAndroidTools/QAndroidAppPermissions.h +++ b/QtAndroidTools/QAndroidAppPermissions.h @@ -25,6 +25,7 @@ #include #include +#include class QAndroidAppPermissions : public QObject { @@ -40,8 +41,9 @@ public: Q_INVOKABLE bool shouldShowRequestPermissionInfo(const QString &permissionName); signals: - void requestPermissionsResults(const QString &permissionName, bool granted); + void requestPermissionsResults(const QVariantList &results); private: void RequestPermissionResults(const QtAndroid::PermissionResultMap &ResultMap); + QVariantList ConvertToVariantList(const QtAndroid::PermissionResultMap &ResultMap); };