Rename QPermission namespace to QApplicationPermission
Pick-to: 6.2 Task-number: QTBUG-94407 Change-Id: Ie9c05dbe498cd372c015b5125e6cb8d59ca96b59 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
This commit is contained in:
parent
b612014ae7
commit
07d4ecd734
@ -58,8 +58,9 @@ int main(int argc, char *argv[])
|
|||||||
{
|
{
|
||||||
QApplication app(argc, argv);
|
QApplication app(argc, argv);
|
||||||
|
|
||||||
auto permission = QPermission::WriteStorage;
|
auto permission = QApplicationPermission::WriteStorage;
|
||||||
if (QCoreApplication::requestPermission(permission).result() != QPermission::Authorized) {
|
if (QCoreApplication::requestPermission(permission).result()
|
||||||
|
!= QApplicationPermission::Authorized) {
|
||||||
qWarning() << "Couldn't get 'WriteStorage' permission!";
|
qWarning() << "Couldn't get 'WriteStorage' permission!";
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -119,7 +119,7 @@ qt_internal_add_module(Core
|
|||||||
kernel/qobjectcleanuphandler.cpp kernel/qobjectcleanuphandler.h
|
kernel/qobjectcleanuphandler.cpp kernel/qobjectcleanuphandler.h
|
||||||
kernel/qobjectdefs.h
|
kernel/qobjectdefs.h
|
||||||
kernel/qobjectdefs_impl.h
|
kernel/qobjectdefs_impl.h
|
||||||
kernel/qpermission.h
|
kernel/qapplicationpermission.h
|
||||||
kernel/qpointer.cpp kernel/qpointer.h
|
kernel/qpointer.cpp kernel/qpointer.h
|
||||||
kernel/qproperty.cpp kernel/qproperty.h kernel/qproperty_p.h
|
kernel/qproperty.cpp kernel/qproperty.h kernel/qproperty_p.h
|
||||||
kernel/qpropertyprivate.h
|
kernel/qpropertyprivate.h
|
||||||
|
@ -58,8 +58,8 @@ void requestCameraPermissionAndroid()
|
|||||||
{
|
{
|
||||||
//! [Request camera permission on Android]
|
//! [Request camera permission on Android]
|
||||||
QCoreApplication::requestPermission(QStringLiteral("android.permission.CAMERA"))
|
QCoreApplication::requestPermission(QStringLiteral("android.permission.CAMERA"))
|
||||||
.then([=](QPermission::PermissionResult result) {
|
.then([=](QApplicationPermission::PermissionResult result) {
|
||||||
if (result == QPermission::Authorized)
|
if (result == QApplicationPermission::Authorized)
|
||||||
takeSelfie();
|
takeSelfie();
|
||||||
});
|
});
|
||||||
//! [Request camera permission on Android]
|
//! [Request camera permission on Android]
|
||||||
@ -68,9 +68,9 @@ void requestCameraPermissionAndroid()
|
|||||||
void requestCameraPermission()
|
void requestCameraPermission()
|
||||||
{
|
{
|
||||||
//! [Request camera permission]
|
//! [Request camera permission]
|
||||||
QCoreApplication::requestPermission(QPermission::Camera)
|
QCoreApplication::requestPermission(QApplicationPermission::Camera)
|
||||||
.then([=](QPermission::PermissionResult result) {
|
.then([=](QApplicationPermission::PermissionResult result) {
|
||||||
if (result == QPermission::Authorized)
|
if (result == QApplicationPermission::Authorized)
|
||||||
takeSelfie();
|
takeSelfie();
|
||||||
});
|
});
|
||||||
//! [Request camera permission]
|
//! [Request camera permission]
|
||||||
@ -81,7 +81,7 @@ void requestCameraPermissionSyncAndroid()
|
|||||||
//! [Request camera permission sync on Android]
|
//! [Request camera permission sync on Android]
|
||||||
auto future = QCoreApplication::requestPermission(QStringLiteral("android.permission.CAMERA"));
|
auto future = QCoreApplication::requestPermission(QStringLiteral("android.permission.CAMERA"));
|
||||||
auto result = future.result(); // blocks and waits for the result to be ready
|
auto result = future.result(); // blocks and waits for the result to be ready
|
||||||
if (result == QPermission::Authorized)
|
if (result == QApplicationPermission::Authorized)
|
||||||
takeSelfie();
|
takeSelfie();
|
||||||
//! [Request camera permission sync on Android]
|
//! [Request camera permission sync on Android]
|
||||||
}
|
}
|
||||||
@ -89,9 +89,9 @@ void requestCameraPermissionSyncAndroid()
|
|||||||
void requestCameraPermissionSync()
|
void requestCameraPermissionSync()
|
||||||
{
|
{
|
||||||
//! [Request camera permission sync]
|
//! [Request camera permission sync]
|
||||||
auto future = QCoreApplication::requestPermission(QPermission::Camera);
|
auto future = QCoreApplication::requestPermission(QApplicationPermission::Camera);
|
||||||
auto result = future.result(); // blocks and waits for the result to be ready
|
auto result = future.result(); // blocks and waits for the result to be ready
|
||||||
if (result == QPermission::Authorized)
|
if (result == QApplicationPermission::Authorized)
|
||||||
takeSelfie();
|
takeSelfie();
|
||||||
//! [Request camera permission sync]
|
//! [Request camera permission sync]
|
||||||
}
|
}
|
||||||
@ -100,8 +100,8 @@ void checkCameraPermissionAndroid()
|
|||||||
{
|
{
|
||||||
//! [Check camera permission on Android]
|
//! [Check camera permission on Android]
|
||||||
QCoreApplication::checkPermission(QStringLiteral("android.permission.CAMERA"))
|
QCoreApplication::checkPermission(QStringLiteral("android.permission.CAMERA"))
|
||||||
.then([=](QPermission::PermissionResult result) {
|
.then([=](QApplicationPermission::PermissionResult result) {
|
||||||
if (result == QPermission::Authorized)
|
if (result == QApplicationPermission::Authorized)
|
||||||
takeSelfie();
|
takeSelfie();
|
||||||
});
|
});
|
||||||
//! [Check camera permission on Android]
|
//! [Check camera permission on Android]
|
||||||
@ -110,9 +110,9 @@ void checkCameraPermissionAndroid()
|
|||||||
void checkCameraPermission()
|
void checkCameraPermission()
|
||||||
{
|
{
|
||||||
//! [Check camera permission]
|
//! [Check camera permission]
|
||||||
QCoreApplication::checkPermission(QPermission::Camera)
|
QCoreApplication::checkPermission(QApplicationPermission::Camera)
|
||||||
.then([=](QPermission::PermissionResult result) {
|
.then([=](QApplicationPermission::PermissionResult result) {
|
||||||
if (result == QPermission::Authorized)
|
if (result == QApplicationPermission::Authorized)
|
||||||
takeSelfie();
|
takeSelfie();
|
||||||
});
|
});
|
||||||
//! [Check camera permission]
|
//! [Check camera permission]
|
||||||
@ -124,7 +124,7 @@ void checkCameraPermissionAndroidSync()
|
|||||||
auto future = QCoreApplication::checkPermission(QStringLiteral("android.permission.CAMERA"));
|
auto future = QCoreApplication::checkPermission(QStringLiteral("android.permission.CAMERA"));
|
||||||
// may block and wait for the result to be ready on some platforms
|
// may block and wait for the result to be ready on some platforms
|
||||||
auto result = future.result();
|
auto result = future.result();
|
||||||
if (result == QPermission::Authorized)
|
if (result == QApplicationPermission::Authorized)
|
||||||
takeSelfie();
|
takeSelfie();
|
||||||
//! [Check camera permission sync on Android]
|
//! [Check camera permission sync on Android]
|
||||||
}
|
}
|
||||||
@ -132,10 +132,10 @@ void checkCameraPermissionAndroidSync()
|
|||||||
void checkCameraPermissionSync()
|
void checkCameraPermissionSync()
|
||||||
{
|
{
|
||||||
//! [Check camera permission sync]
|
//! [Check camera permission sync]
|
||||||
auto future = QCoreApplication::checkPermission(QPermission::Camera);
|
auto future = QCoreApplication::checkPermission(QApplicationPermission::Camera);
|
||||||
// may block and wait for the result to be ready on some platforms
|
// may block and wait for the result to be ready on some platforms
|
||||||
auto result = future.result();
|
auto result = future.result();
|
||||||
if (result == QPermission::Authorized)
|
if (result == QApplicationPermission::Authorized)
|
||||||
takeSelfie();
|
takeSelfie();
|
||||||
//! [Check camera permission sync]
|
//! [Check camera permission sync]
|
||||||
}
|
}
|
||||||
|
@ -37,14 +37,14 @@
|
|||||||
**
|
**
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#ifndef QPERMISSION_H
|
#ifndef QAPPLICATIONPERMISSION_H
|
||||||
#define QPERMISSION_H
|
#define QAPPLICATIONPERMISSION_H
|
||||||
|
|
||||||
#include <QtCore/qglobal.h>
|
#include <QtCore/qglobal.h>
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
namespace QPermission
|
namespace QApplicationPermission
|
||||||
{
|
{
|
||||||
|
|
||||||
enum PermissionType {
|
enum PermissionType {
|
||||||
@ -71,8 +71,11 @@ enum PermissionResult {
|
|||||||
Restricted,
|
Restricted,
|
||||||
Undetermined
|
Undetermined
|
||||||
};
|
};
|
||||||
} // QPermission
|
} // QApplicationPermission
|
||||||
|
|
||||||
|
// TODO: remove after usages in other modules are renamed.
|
||||||
|
namespace QPermission = QApplicationPermission;
|
||||||
|
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
#endif // QPERMISSION_H
|
#endif // QAPPLICATIONPERMISSION_H
|
@ -26,16 +26,17 @@
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\namespace QPermission
|
\namespace QApplicationPermission
|
||||||
|
|
||||||
\brief The QPermission namespace contains enums for app permission types and results.
|
\brief The QApplicationPermission namespace contains enums for app permission
|
||||||
|
types and results.
|
||||||
|
|
||||||
This namespace's enums are used by \l {QCoreApplication::requestPermission()} and
|
This namespace's enums are used by \l {QCoreApplication::requestPermission()} and
|
||||||
\l {QCoreApplication::checkPermission()}.
|
\l {QCoreApplication::checkPermission()}.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\enum QPermission::PermissionType
|
\enum QApplicationPermission::PermissionType
|
||||||
|
|
||||||
Predefined sets of permission values.
|
Predefined sets of permission values.
|
||||||
|
|
||||||
@ -87,7 +88,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\enum QPermission::PermissionResult
|
\enum QApplicationPermission::PermissionResult
|
||||||
|
|
||||||
The result values for a permission check or request.
|
The result values for a permission check or request.
|
||||||
|
|
@ -3086,42 +3086,42 @@ void QCoreApplication::setEventDispatcher(QAbstractEventDispatcher *eventDispatc
|
|||||||
#if QT_CONFIG(future) && !defined(QT_NO_QOBJECT)
|
#if QT_CONFIG(future) && !defined(QT_NO_QOBJECT)
|
||||||
#if !defined(Q_OS_ANDROID)
|
#if !defined(Q_OS_ANDROID)
|
||||||
|
|
||||||
QFuture<QPermission::PermissionResult> defaultPermissionFuture()
|
QFuture<QApplicationPermission::PermissionResult> defaultPermissionFuture()
|
||||||
{
|
{
|
||||||
QPromise<QPermission::PermissionResult> promise;
|
QPromise<QApplicationPermission::PermissionResult> promise;
|
||||||
QFuture<QPermission::PermissionResult> future = promise.future();
|
QFuture<QApplicationPermission::PermissionResult> future = promise.future();
|
||||||
promise.start();
|
promise.start();
|
||||||
#if defined(QT_DEBUG)
|
#if defined(QT_DEBUG)
|
||||||
qWarning() << "This platform doesn't have an implementation"
|
qWarning() << "This platform doesn't have an implementation"
|
||||||
<< "for the application permissions API.";
|
<< "for the application permissions API.";
|
||||||
#endif
|
#endif
|
||||||
promise.addResult(QPermission::Authorized);
|
promise.addResult(QApplicationPermission::Authorized);
|
||||||
promise.finish();
|
promise.finish();
|
||||||
return future;
|
return future;
|
||||||
}
|
}
|
||||||
|
|
||||||
QFuture<QPermission::PermissionResult>
|
QFuture<QApplicationPermission::PermissionResult>
|
||||||
QCoreApplicationPrivate::requestPermission(QPermission::PermissionType permission)
|
QCoreApplicationPrivate::requestPermission(QApplicationPermission::PermissionType permission)
|
||||||
{
|
{
|
||||||
Q_UNUSED(permission)
|
Q_UNUSED(permission)
|
||||||
return defaultPermissionFuture();
|
return defaultPermissionFuture();
|
||||||
}
|
}
|
||||||
|
|
||||||
QFuture<QPermission::PermissionResult>
|
QFuture<QApplicationPermission::PermissionResult>
|
||||||
QCoreApplicationPrivate::requestPermission(const QString &permission)
|
QCoreApplicationPrivate::requestPermission(const QString &permission)
|
||||||
{
|
{
|
||||||
Q_UNUSED(permission)
|
Q_UNUSED(permission)
|
||||||
return defaultPermissionFuture();
|
return defaultPermissionFuture();
|
||||||
}
|
}
|
||||||
|
|
||||||
QFuture<QPermission::PermissionResult>
|
QFuture<QApplicationPermission::PermissionResult>
|
||||||
QCoreApplicationPrivate::checkPermission(QPermission::PermissionType permission)
|
QCoreApplicationPrivate::checkPermission(QApplicationPermission::PermissionType permission)
|
||||||
{
|
{
|
||||||
Q_UNUSED(permission)
|
Q_UNUSED(permission)
|
||||||
return defaultPermissionFuture();
|
return defaultPermissionFuture();
|
||||||
}
|
}
|
||||||
|
|
||||||
QFuture<QPermission::PermissionResult>
|
QFuture<QApplicationPermission::PermissionResult>
|
||||||
QCoreApplicationPrivate::checkPermission(const QString &permission)
|
QCoreApplicationPrivate::checkPermission(const QString &permission)
|
||||||
{
|
{
|
||||||
Q_UNUSED(permission)
|
Q_UNUSED(permission)
|
||||||
@ -3148,14 +3148,14 @@ void QCoreApplication::setEventDispatcher(QAbstractEventDispatcher *eventDispatc
|
|||||||
\snippet permissions/permissions.cpp Request camera permission sync
|
\snippet permissions/permissions.cpp Request camera permission sync
|
||||||
|
|
||||||
\note Any platform that doesn't have an implementation for this API,
|
\note Any platform that doesn't have an implementation for this API,
|
||||||
returns QPermission::Authorized by default. Currently, only Android
|
returns QApplicationPermission::Authorized by default. Currently, only Android
|
||||||
has an implemtation for this API.
|
has an implemtation for this API.
|
||||||
|
|
||||||
\since 6.2
|
\since 6.2
|
||||||
\sa checkPermission()
|
\sa checkPermission()
|
||||||
*/
|
*/
|
||||||
QFuture<QPermission::PermissionResult>
|
QFuture<QApplicationPermission::PermissionResult>
|
||||||
QCoreApplication::requestPermission(QPermission::PermissionType permission)
|
QCoreApplication::requestPermission(QApplicationPermission::PermissionType permission)
|
||||||
{
|
{
|
||||||
return QCoreApplicationPrivate::requestPermission(permission);
|
return QCoreApplicationPrivate::requestPermission(permission);
|
||||||
}
|
}
|
||||||
@ -3180,13 +3180,13 @@ QCoreApplication::requestPermission(QPermission::PermissionType permission)
|
|||||||
\snippet permissions/permissions.cpp Request camera permission sync on Android
|
\snippet permissions/permissions.cpp Request camera permission sync on Android
|
||||||
|
|
||||||
\note Any platform that doesn't have an implementation for this API,
|
\note Any platform that doesn't have an implementation for this API,
|
||||||
returns QPermission::Authorized by default. Currently, only Android
|
returns QApplicationPermission::Authorized by default. Currently, only Android
|
||||||
has an implemtation for this API.
|
has an implemtation for this API.
|
||||||
|
|
||||||
\since 6.2
|
\since 6.2
|
||||||
\sa checkPermission()
|
\sa checkPermission()
|
||||||
*/
|
*/
|
||||||
QFuture<QPermission::PermissionResult>
|
QFuture<QApplicationPermission::PermissionResult>
|
||||||
QCoreApplication::requestPermission(const QString &permission)
|
QCoreApplication::requestPermission(const QString &permission)
|
||||||
{
|
{
|
||||||
return QCoreApplicationPrivate::requestPermission(permission);
|
return QCoreApplicationPrivate::requestPermission(permission);
|
||||||
@ -3206,14 +3206,14 @@ QCoreApplication::requestPermission(const QString &permission)
|
|||||||
\snippet permissions/permissions.cpp Check camera permission sync
|
\snippet permissions/permissions.cpp Check camera permission sync
|
||||||
|
|
||||||
\note Any platform that doesn't have an implementation for this API,
|
\note Any platform that doesn't have an implementation for this API,
|
||||||
returns QPermission::Authorized by default. Currently, only Android
|
returns QApplicationPermission::Authorized by default. Currently, only Android
|
||||||
has an implemtation for this API.
|
has an implemtation for this API.
|
||||||
|
|
||||||
\since 6.2
|
\since 6.2
|
||||||
\sa requestPermission()
|
\sa requestPermission()
|
||||||
*/
|
*/
|
||||||
QFuture<QPermission::PermissionResult>
|
QFuture<QApplicationPermission::PermissionResult>
|
||||||
QCoreApplication::checkPermission(QPermission::PermissionType permission)
|
QCoreApplication::checkPermission(QApplicationPermission::PermissionType permission)
|
||||||
{
|
{
|
||||||
return QCoreApplicationPrivate::checkPermission(permission);
|
return QCoreApplicationPrivate::checkPermission(permission);
|
||||||
}
|
}
|
||||||
@ -3233,13 +3233,13 @@ QCoreApplication::checkPermission(QPermission::PermissionType permission)
|
|||||||
\snippet permissions/permissions.cpp Check camera permission sync on Android
|
\snippet permissions/permissions.cpp Check camera permission sync on Android
|
||||||
|
|
||||||
\note Any platform that doesn't have an implementation for this API,
|
\note Any platform that doesn't have an implementation for this API,
|
||||||
returns QPermission::Authorized by default. Currently, only Android
|
returns QApplicationPermission::Authorized by default. Currently, only Android
|
||||||
has an implemtation for this API.
|
has an implemtation for this API.
|
||||||
|
|
||||||
\since 6.2
|
\since 6.2
|
||||||
\sa requestPermission()
|
\sa requestPermission()
|
||||||
*/
|
*/
|
||||||
QFuture<QPermission::PermissionResult>
|
QFuture<QApplicationPermission::PermissionResult>
|
||||||
QCoreApplication::checkPermission(const QString &permission)
|
QCoreApplication::checkPermission(const QString &permission)
|
||||||
{
|
{
|
||||||
return QCoreApplicationPrivate::checkPermission(permission);
|
return QCoreApplicationPrivate::checkPermission(permission);
|
||||||
|
@ -47,7 +47,7 @@
|
|||||||
#include <QtCore/qeventloop.h>
|
#include <QtCore/qeventloop.h>
|
||||||
#if QT_CONFIG(future)
|
#if QT_CONFIG(future)
|
||||||
#include <QtCore/qfuture.h>
|
#include <QtCore/qfuture.h>
|
||||||
#include <QtCore/qpermission.h>
|
#include <QtCore/qapplicationpermission.h>
|
||||||
#endif
|
#endif
|
||||||
#include <QtCore/qobject.h>
|
#include <QtCore/qobject.h>
|
||||||
#else
|
#else
|
||||||
@ -168,13 +168,15 @@ public:
|
|||||||
|
|
||||||
#ifndef QT_NO_QOBJECT
|
#ifndef QT_NO_QOBJECT
|
||||||
#if QT_CONFIG(future)
|
#if QT_CONFIG(future)
|
||||||
static QFuture<QPermission::PermissionResult> requestPermission(
|
static QFuture<QApplicationPermission::PermissionResult>
|
||||||
QPermission::PermissionType permission);
|
requestPermission(QApplicationPermission::PermissionType permission);
|
||||||
static QFuture<QPermission::PermissionResult> requestPermission(const QString &permission);
|
static QFuture<QApplicationPermission::PermissionResult>
|
||||||
|
requestPermission(const QString &permission);
|
||||||
|
|
||||||
static QFuture<QPermission::PermissionResult> checkPermission(
|
static QFuture<QApplicationPermission::PermissionResult>
|
||||||
QPermission::PermissionType permission);
|
checkPermission(QApplicationPermission::PermissionType permission);
|
||||||
static QFuture<QPermission::PermissionResult> checkPermission(const QString &permission);
|
static QFuture<QApplicationPermission::PermissionResult>
|
||||||
|
checkPermission(const QString &permission);
|
||||||
#endif
|
#endif
|
||||||
void installNativeEventFilter(QAbstractNativeEventFilter *filterObj);
|
void installNativeEventFilter(QAbstractNativeEventFilter *filterObj);
|
||||||
void removeNativeEventFilter(QAbstractNativeEventFilter *filterObj);
|
void removeNativeEventFilter(QAbstractNativeEventFilter *filterObj);
|
||||||
|
@ -59,13 +59,13 @@ static const char invalidNativePermissionExcept[] =
|
|||||||
"Coudn't convert the provided permission type to a native Android permission string.";
|
"Coudn't convert the provided permission type to a native Android permission string.";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
QPermission::PermissionResult resultFromAndroid(jint value)
|
QApplicationPermission::PermissionResult resultFromAndroid(jint value)
|
||||||
{
|
{
|
||||||
return value == 0 ? QPermission::Authorized : QPermission::Denied;
|
return value == 0 ? QApplicationPermission::Authorized : QApplicationPermission::Denied;
|
||||||
}
|
}
|
||||||
|
|
||||||
using PendingPermissionRequestsHash
|
using PendingPermissionRequestsHash
|
||||||
= QHash<int, QSharedPointer<QPromise<QPermission::PermissionResult>>>;
|
= QHash<int, QSharedPointer<QPromise<QApplicationPermission::PermissionResult>>>;
|
||||||
Q_GLOBAL_STATIC(PendingPermissionRequestsHash, g_pendingPermissionRequests);
|
Q_GLOBAL_STATIC(PendingPermissionRequestsHash, g_pendingPermissionRequests);
|
||||||
static QBasicMutex g_pendingPermissionRequestsMutex;
|
static QBasicMutex g_pendingPermissionRequestsMutex;
|
||||||
|
|
||||||
@ -75,7 +75,7 @@ static int nextRequestCode()
|
|||||||
return counter.fetchAndAddRelaxed(1);
|
return counter.fetchAndAddRelaxed(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
static QStringList nativeStringsFromPermission(QPermission::PermissionType permission)
|
static QStringList nativeStringsFromPermission(QApplicationPermission::PermissionType permission)
|
||||||
{
|
{
|
||||||
static const auto precisePerm = QStringLiteral("android.permission.ACCESS_FINE_LOCATION");
|
static const auto precisePerm = QStringLiteral("android.permission.ACCESS_FINE_LOCATION");
|
||||||
static const auto coarsePerm = QStringLiteral("android.permission.ACCESS_COARSE_LOCATION");
|
static const auto coarsePerm = QStringLiteral("android.permission.ACCESS_COARSE_LOCATION");
|
||||||
@ -83,39 +83,39 @@ static QStringList nativeStringsFromPermission(QPermission::PermissionType permi
|
|||||||
QStringLiteral("android.permission.ACCESS_BACKGROUND_LOCATION");
|
QStringLiteral("android.permission.ACCESS_BACKGROUND_LOCATION");
|
||||||
|
|
||||||
switch (permission) {
|
switch (permission) {
|
||||||
case QPermission::CoarseLocation:
|
case QApplicationPermission::CoarseLocation:
|
||||||
return {coarsePerm};
|
return {coarsePerm};
|
||||||
case QPermission::PreciseLocation:
|
case QApplicationPermission::PreciseLocation:
|
||||||
return {precisePerm};
|
return {precisePerm};
|
||||||
case QPermission::CoarseBackgroundLocation:
|
case QApplicationPermission::CoarseBackgroundLocation:
|
||||||
// Keep the background permission first to be able to use .first()
|
// Keep the background permission first to be able to use .first()
|
||||||
// in checkPermission because it takes single permission
|
// in checkPermission because it takes single permission
|
||||||
if (QtAndroidPrivate::androidSdkVersion() >= 29)
|
if (QtAndroidPrivate::androidSdkVersion() >= 29)
|
||||||
return {backgroundPerm, coarsePerm};
|
return {backgroundPerm, coarsePerm};
|
||||||
return {coarsePerm};
|
return {coarsePerm};
|
||||||
case QPermission::PreciseBackgroundLocation:
|
case QApplicationPermission::PreciseBackgroundLocation:
|
||||||
if (QtAndroidPrivate::androidSdkVersion() >= 29)
|
if (QtAndroidPrivate::androidSdkVersion() >= 29)
|
||||||
return {backgroundPerm, precisePerm};
|
return {backgroundPerm, precisePerm};
|
||||||
return {precisePerm};
|
return {precisePerm};
|
||||||
case QPermission::Camera:
|
case QApplicationPermission::Camera:
|
||||||
return {QStringLiteral("android.permission.CAMERA")};
|
return {QStringLiteral("android.permission.CAMERA")};
|
||||||
case QPermission::Microphone:
|
case QApplicationPermission::Microphone:
|
||||||
return {QStringLiteral("android.permission.RECORD_AUDIO")};
|
return {QStringLiteral("android.permission.RECORD_AUDIO")};
|
||||||
case QPermission::BodySensors:
|
case QApplicationPermission::BodySensors:
|
||||||
return {QStringLiteral("android.permission.BODY_SENSORS")};
|
return {QStringLiteral("android.permission.BODY_SENSORS")};
|
||||||
case QPermission::PhysicalActivity:
|
case QApplicationPermission::PhysicalActivity:
|
||||||
return {QStringLiteral("android.permission.ACTIVITY_RECOGNITION")};
|
return {QStringLiteral("android.permission.ACTIVITY_RECOGNITION")};
|
||||||
case QPermission::ReadContacts:
|
case QApplicationPermission::ReadContacts:
|
||||||
return {QStringLiteral("android.permission.READ_CONTACTS")};
|
return {QStringLiteral("android.permission.READ_CONTACTS")};
|
||||||
case QPermission::WriteContacts:
|
case QApplicationPermission::WriteContacts:
|
||||||
return {QStringLiteral("android.permission.WRITE_CONTACTS")};
|
return {QStringLiteral("android.permission.WRITE_CONTACTS")};
|
||||||
case QPermission::ReadStorage:
|
case QApplicationPermission::ReadStorage:
|
||||||
return {QStringLiteral("android.permission.READ_EXTERNAL_STORAGE")};
|
return {QStringLiteral("android.permission.READ_EXTERNAL_STORAGE")};
|
||||||
case QPermission::WriteStorage:
|
case QApplicationPermission::WriteStorage:
|
||||||
return {QStringLiteral("android.permission.WRITE_EXTERNAL_STORAGE")};
|
return {QStringLiteral("android.permission.WRITE_EXTERNAL_STORAGE")};
|
||||||
case QPermission::ReadCalendar:
|
case QApplicationPermission::ReadCalendar:
|
||||||
return {QStringLiteral("android.permission.READ_CALENDAR")};
|
return {QStringLiteral("android.permission.READ_CALENDAR")};
|
||||||
case QPermission::WriteCalendar:
|
case QApplicationPermission::WriteCalendar:
|
||||||
return {QStringLiteral("android.permission.WRITE_CALENDAR")};
|
return {QStringLiteral("android.permission.WRITE_CALENDAR")};
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@ -151,18 +151,18 @@ static void sendRequestPermissionsResult(JNIEnv *env, jobject *obj, jint request
|
|||||||
env->GetIntArrayRegion(grantResults, 0, size, results.get());
|
env->GetIntArrayRegion(grantResults, 0, size, results.get());
|
||||||
|
|
||||||
for (int i = 0 ; i < size; ++i) {
|
for (int i = 0 ; i < size; ++i) {
|
||||||
QPermission::PermissionResult result = resultFromAndroid(results[i]);
|
QApplicationPermission::PermissionResult result = resultFromAndroid(results[i]);
|
||||||
request->addResult(result, i);
|
request->addResult(result, i);
|
||||||
}
|
}
|
||||||
|
|
||||||
request->finish();
|
request->finish();
|
||||||
}
|
}
|
||||||
|
|
||||||
QFuture<QPermission::PermissionResult> requestPermissionsInternal(const QStringList &permissions)
|
QFuture<QApplicationPermission::PermissionResult> requestPermissionsInternal(const QStringList &permissions)
|
||||||
{
|
{
|
||||||
QSharedPointer<QPromise<QPermission::PermissionResult>> promise;
|
QSharedPointer<QPromise<QApplicationPermission::PermissionResult>> promise;
|
||||||
promise.reset(new QPromise<QPermission::PermissionResult>());
|
promise.reset(new QPromise<QApplicationPermission::PermissionResult>());
|
||||||
QFuture<QPermission::PermissionResult> future = promise->future();
|
QFuture<QApplicationPermission::PermissionResult> future = promise->future();
|
||||||
promise->start();
|
promise->start();
|
||||||
|
|
||||||
// No mechanism to request permission for SDK version below 23, because
|
// No mechanism to request permission for SDK version below 23, because
|
||||||
@ -197,70 +197,70 @@ QFuture<QPermission::PermissionResult> requestPermissionsInternal(const QStringL
|
|||||||
return future;
|
return future;
|
||||||
}
|
}
|
||||||
|
|
||||||
QFuture<QPermission::PermissionResult>
|
QFuture<QApplicationPermission::PermissionResult>
|
||||||
QCoreApplicationPrivate::requestPermission(const QString &permission)
|
QCoreApplicationPrivate::requestPermission(const QString &permission)
|
||||||
{
|
{
|
||||||
// avoid the uneccessary call and response to an empty permission string
|
// avoid the uneccessary call and response to an empty permission string
|
||||||
if (permission.size() > 0)
|
if (permission.size() > 0)
|
||||||
return requestPermissionsInternal({permission});
|
return requestPermissionsInternal({permission});
|
||||||
|
|
||||||
QPromise<QPermission::PermissionResult> promise;
|
QPromise<QApplicationPermission::PermissionResult> promise;
|
||||||
QFuture<QPermission::PermissionResult> future = promise.future();
|
QFuture<QApplicationPermission::PermissionResult> future = promise.future();
|
||||||
promise.start();
|
promise.start();
|
||||||
#ifndef QT_NO_EXCEPTIONS
|
#ifndef QT_NO_EXCEPTIONS
|
||||||
promise.setException(std::make_exception_ptr(std::runtime_error(emptyPermissionExcept)));
|
promise.setException(std::make_exception_ptr(std::runtime_error(emptyPermissionExcept)));
|
||||||
#else
|
#else
|
||||||
promise.addResult(QPermission::Denied);
|
promise.addResult(QApplicationPermission::Denied);
|
||||||
#endif
|
#endif
|
||||||
promise.finish();
|
promise.finish();
|
||||||
return future;
|
return future;
|
||||||
}
|
}
|
||||||
|
|
||||||
QFuture<QPermission::PermissionResult> groupRequestToSingleResult(const QStringList &permissions)
|
QFuture<QApplicationPermission::PermissionResult> groupRequestToSingleResult(const QStringList &permissions)
|
||||||
{
|
{
|
||||||
QSharedPointer<QPromise<QPermission::PermissionResult>> promise;
|
QSharedPointer<QPromise<QApplicationPermission::PermissionResult>> promise;
|
||||||
promise.reset(new QPromise<QPermission::PermissionResult>());
|
promise.reset(new QPromise<QApplicationPermission::PermissionResult>());
|
||||||
QFuture<QPermission::PermissionResult> future = promise->future();
|
QFuture<QApplicationPermission::PermissionResult> future = promise->future();
|
||||||
promise->start();
|
promise->start();
|
||||||
requestPermissionsInternal(permissions).then(
|
requestPermissionsInternal(permissions).then(
|
||||||
[promise](QFuture<QPermission::PermissionResult> future) {
|
[promise](QFuture<QApplicationPermission::PermissionResult> future) {
|
||||||
auto results = future.results();
|
auto results = future.results();
|
||||||
if (results.count(QPermission::Authorized) == results.count())
|
if (results.count(QApplicationPermission::Authorized) == results.count())
|
||||||
promise->addResult(QPermission::Authorized, 0);
|
promise->addResult(QApplicationPermission::Authorized, 0);
|
||||||
else
|
else
|
||||||
promise->addResult(QPermission::Denied, 0);
|
promise->addResult(QApplicationPermission::Denied, 0);
|
||||||
promise->finish();
|
promise->finish();
|
||||||
});
|
});
|
||||||
|
|
||||||
return future;
|
return future;
|
||||||
}
|
}
|
||||||
|
|
||||||
QFuture<QPermission::PermissionResult>
|
QFuture<QApplicationPermission::PermissionResult>
|
||||||
QCoreApplicationPrivate::requestPermission(QPermission::PermissionType permission)
|
QCoreApplicationPrivate::requestPermission(QApplicationPermission::PermissionType permission)
|
||||||
{
|
{
|
||||||
const auto nativePermissions = nativeStringsFromPermission(permission);
|
const auto nativePermissions = nativeStringsFromPermission(permission);
|
||||||
|
|
||||||
if (nativePermissions.size() > 0)
|
if (nativePermissions.size() > 0)
|
||||||
return groupRequestToSingleResult(nativePermissions);
|
return groupRequestToSingleResult(nativePermissions);
|
||||||
|
|
||||||
QPromise<QPermission::PermissionResult> promise;
|
QPromise<QApplicationPermission::PermissionResult> promise;
|
||||||
QFuture<QPermission::PermissionResult> future = promise.future();
|
QFuture<QApplicationPermission::PermissionResult> future = promise.future();
|
||||||
promise.start();
|
promise.start();
|
||||||
#ifndef QT_NO_EXCEPTIONS
|
#ifndef QT_NO_EXCEPTIONS
|
||||||
promise.setException(std::make_exception_ptr(
|
promise.setException(std::make_exception_ptr(
|
||||||
std::runtime_error(invalidNativePermissionExcept)));
|
std::runtime_error(invalidNativePermissionExcept)));
|
||||||
#else
|
#else
|
||||||
promise.addResult(QPermission::Denied);
|
promise.addResult(QApplicationPermission::Denied);
|
||||||
#endif
|
#endif
|
||||||
promise.finish();
|
promise.finish();
|
||||||
return future;
|
return future;
|
||||||
}
|
}
|
||||||
|
|
||||||
QFuture<QPermission::PermissionResult>
|
QFuture<QApplicationPermission::PermissionResult>
|
||||||
QCoreApplicationPrivate::checkPermission(const QString &permission)
|
QCoreApplicationPrivate::checkPermission(const QString &permission)
|
||||||
{
|
{
|
||||||
QPromise<QPermission::PermissionResult> promise;
|
QPromise<QApplicationPermission::PermissionResult> promise;
|
||||||
QFuture<QPermission::PermissionResult> future = promise.future();
|
QFuture<QApplicationPermission::PermissionResult> future = promise.future();
|
||||||
promise.start();
|
promise.start();
|
||||||
|
|
||||||
if (permission.size() > 0) {
|
if (permission.size() > 0) {
|
||||||
@ -273,7 +273,7 @@ QCoreApplicationPrivate::checkPermission(const QString &permission)
|
|||||||
#ifndef QT_NO_EXCEPTIONS
|
#ifndef QT_NO_EXCEPTIONS
|
||||||
promise.setException(std::make_exception_ptr(std::runtime_error(emptyPermissionExcept)));
|
promise.setException(std::make_exception_ptr(std::runtime_error(emptyPermissionExcept)));
|
||||||
#else
|
#else
|
||||||
promise.addResult(QPermission::Denied);
|
promise.addResult(QApplicationPermission::Denied);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -281,22 +281,22 @@ QCoreApplicationPrivate::checkPermission(const QString &permission)
|
|||||||
return future;
|
return future;
|
||||||
}
|
}
|
||||||
|
|
||||||
QFuture<QPermission::PermissionResult>
|
QFuture<QApplicationPermission::PermissionResult>
|
||||||
QCoreApplicationPrivate::checkPermission(QPermission::PermissionType permission)
|
QCoreApplicationPrivate::checkPermission(QApplicationPermission::PermissionType permission)
|
||||||
{
|
{
|
||||||
const auto nativePermissions = nativeStringsFromPermission(permission);
|
const auto nativePermissions = nativeStringsFromPermission(permission);
|
||||||
|
|
||||||
if (nativePermissions.size() > 0)
|
if (nativePermissions.size() > 0)
|
||||||
return checkPermission(nativePermissions.first());
|
return checkPermission(nativePermissions.first());
|
||||||
|
|
||||||
QPromise<QPermission::PermissionResult> promise;
|
QPromise<QApplicationPermission::PermissionResult> promise;
|
||||||
QFuture<QPermission::PermissionResult> future = promise.future();
|
QFuture<QApplicationPermission::PermissionResult> future = promise.future();
|
||||||
promise.start();
|
promise.start();
|
||||||
#ifndef QT_NO_EXCEPTIONS
|
#ifndef QT_NO_EXCEPTIONS
|
||||||
promise.setException(std::make_exception_ptr(
|
promise.setException(std::make_exception_ptr(
|
||||||
std::runtime_error(invalidNativePermissionExcept)));
|
std::runtime_error(invalidNativePermissionExcept)));
|
||||||
#else
|
#else
|
||||||
promise.addResult(QPermission::Denied);
|
promise.addResult(QApplicationPermission::Denied);
|
||||||
#endif
|
#endif
|
||||||
promise.finish();
|
promise.finish();
|
||||||
return future;
|
return future;
|
||||||
|
@ -63,7 +63,7 @@
|
|||||||
#include "private/qobject_p.h"
|
#include "private/qobject_p.h"
|
||||||
#include "private/qlocking_p.h"
|
#include "private/qlocking_p.h"
|
||||||
#if QT_CONFIG(future)
|
#if QT_CONFIG(future)
|
||||||
#include <QtCore/qpermission.h>
|
#include <QtCore/qapplicationpermission.h>
|
||||||
#include <QtCore/qfuture.h>
|
#include <QtCore/qfuture.h>
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
@ -204,13 +204,15 @@ public:
|
|||||||
QString qmljs_debug_arguments; // a string containing arguments for js/qml debugging.
|
QString qmljs_debug_arguments; // a string containing arguments for js/qml debugging.
|
||||||
inline QString qmljsDebugArgumentsString() const { return qmljs_debug_arguments; }
|
inline QString qmljsDebugArgumentsString() const { return qmljs_debug_arguments; }
|
||||||
#if QT_CONFIG(future) && !defined QT_NO_QOBJECT
|
#if QT_CONFIG(future) && !defined QT_NO_QOBJECT
|
||||||
static QFuture<QPermission::PermissionResult> requestPermission(
|
static QFuture<QApplicationPermission::PermissionResult>
|
||||||
QPermission::PermissionType permission);
|
requestPermission(QApplicationPermission::PermissionType permission);
|
||||||
static QFuture<QPermission::PermissionResult> requestPermission(const QString &permission);
|
static QFuture<QApplicationPermission::PermissionResult>
|
||||||
|
requestPermission(const QString &permission);
|
||||||
|
|
||||||
static QFuture<QPermission::PermissionResult> checkPermission(
|
static QFuture<QApplicationPermission::PermissionResult>
|
||||||
QPermission::PermissionType permission);
|
checkPermission(QApplicationPermission::PermissionType permission);
|
||||||
static QFuture<QPermission::PermissionResult> checkPermission(const QString &permission);
|
static QFuture<QApplicationPermission::PermissionResult>
|
||||||
|
checkPermission(const QString &permission);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef QT_NO_QOBJECT
|
#ifdef QT_NO_QOBJECT
|
||||||
|
Loading…
x
Reference in New Issue
Block a user