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
{
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);
};

View File

@ -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)
emit requestPermissionsResults(ConvertToVariantList(ResultMap));
}
QVariantList QAndroidAppPermissions::ConvertToVariantList(const QtAndroid::PermissionResultMap &ResultMap)
{
QtAndroid::PermissionResultMap::const_iterator PermissionItem = ResultMap.constBegin();
QVariantList PermissionsList;
while(PermissionItem != ResultMap.constEnd())
{
const bool Granted = (PermissionItem.value() == QtAndroid::PermissionResult::Granted) ? true : false;
emit requestPermissionsResults(PermissionItem.key(), Granted);
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 <QQmlEngine>
#include <QVariant>
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);
};