Changed the way permission results are passed to main app

This commit is contained in:
FalsinSoft 2019-01-13 18:26:24 +01:00
parent b926f059f4
commit 25d2d91cbe
3 changed files with 38 additions and 18 deletions

View File

@ -158,9 +158,9 @@ private:
enum APP_STATE enum APP_STATE
{ {
APP_STATE_CREATE = 0, APP_STATE_CREATE = 0,
APP_STATE_START = 1, APP_STATE_START,
APP_STATE_STOP = 2, APP_STATE_STOP,
APP_STATE_DESTROY = 3 APP_STATE_DESTROY
}; };
void SetNewAppState(APP_STATE NewState); void SetNewAppState(APP_STATE NewState);
}; };

View File

@ -37,6 +37,8 @@ QObject* QAndroidAppPermissions::qmlInstance(QQmlEngine *engine, QJSEngine *scri
void QAndroidAppPermissions::requestPermissions(const QStringList &permissionsNameList) void QAndroidAppPermissions::requestPermissions(const QStringList &permissionsNameList)
{ {
QtAndroid::PermissionResultMap ResultMap;
if(QtAndroid::androidSdkVersion() >= 23) if(QtAndroid::androidSdkVersion() >= 23)
{ {
QStringList PermissionsNotGrantedList; QStringList PermissionsNotGrantedList;
@ -49,7 +51,7 @@ void QAndroidAppPermissions::requestPermissions(const QStringList &permissionsNa
} }
else 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++) 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) void QAndroidAppPermissions::requestPermission(const QString &permissionName)
@ -75,7 +82,9 @@ void QAndroidAppPermissions::requestPermission(const QString &permissionName)
} }
else 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) void QAndroidAppPermissions::RequestPermissionResults(const QtAndroid::PermissionResultMap &ResultMap)
{ {
if(ResultMap.count() > 0) emit requestPermissionsResults(ConvertToVariantList(ResultMap));
{ }
QtAndroid::PermissionResultMap::const_iterator PermissionItem = ResultMap.constBegin();
QVariantList QAndroidAppPermissions::ConvertToVariantList(const QtAndroid::PermissionResultMap &ResultMap)
while(PermissionItem != ResultMap.constEnd()) {
{ QtAndroid::PermissionResultMap::const_iterator PermissionItem = ResultMap.constBegin();
const bool Granted = (PermissionItem.value() == QtAndroid::PermissionResult::Granted) ? true : false; QVariantList PermissionsList;
emit requestPermissionsResults(PermissionItem.key(), Granted);
++PermissionItem; while(PermissionItem != ResultMap.constEnd())
} {
} QVariantMap PermissionResult;
PermissionResult["name"] = PermissionItem.key();
PermissionResult["granted"] = (PermissionItem.value() == QtAndroid::PermissionResult::Granted) ? true : false;
PermissionsList << PermissionResult;
++PermissionItem;
}
return PermissionsList;
} }

View File

@ -25,6 +25,7 @@
#include <QtAndroidExtras> #include <QtAndroidExtras>
#include <QQmlEngine> #include <QQmlEngine>
#include <QVariant>
class QAndroidAppPermissions : public QObject class QAndroidAppPermissions : public QObject
{ {
@ -40,8 +41,9 @@ public:
Q_INVOKABLE bool shouldShowRequestPermissionInfo(const QString &permissionName); Q_INVOKABLE bool shouldShowRequestPermissionInfo(const QString &permissionName);
signals: signals:
void requestPermissionsResults(const QString &permissionName, bool granted); void requestPermissionsResults(const QVariantList &results);
private: private:
void RequestPermissionResults(const QtAndroid::PermissionResultMap &ResultMap); void RequestPermissionResults(const QtAndroid::PermissionResultMap &ResultMap);
QVariantList ConvertToVariantList(const QtAndroid::PermissionResultMap &ResultMap);
}; };