From 15740faf9fe9fe4be08965098bbf2947e096aeeb Mon Sep 17 00:00:00 2001 From: chai Date: Wed, 14 Aug 2019 22:50:43 +0800 Subject: +Unity Runtime code --- Runtime/Utilities/UserAuthorizationManager.h | 47 ++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 Runtime/Utilities/UserAuthorizationManager.h (limited to 'Runtime/Utilities/UserAuthorizationManager.h') diff --git a/Runtime/Utilities/UserAuthorizationManager.h b/Runtime/Utilities/UserAuthorizationManager.h new file mode 100644 index 0000000..386a22c --- /dev/null +++ b/Runtime/Utilities/UserAuthorizationManager.h @@ -0,0 +1,47 @@ +#ifndef USERAUTHORIZATIONMANAGER_H +#define USERAUTHORIZATIONMANAGER_H + +#include "Runtime/Mono/MonoBehaviour.h" +#include "Runtime/Misc/AsyncOperation.h" + +class UserAuthorizationManager; + +UserAuthorizationManager &GetUserAuthorizationManager(); + +class UserAuthorizationManager { +public: + UserAuthorizationManager (); + + enum Mode { + kNone = 0, + kWebCam = 1 << 0, + kMicrophone = 1 << 1 + }; + + void Reset (); + AsyncOperation *RequestUserAuthorization (int mode); + void ReplyToUserAuthorizationRequest (bool reply, bool remember = false); + bool HasUserAuthorization (int mode) const { return (m_AuthorizationMode & mode) == mode; } + + int GetAuthorizationRequest() const { return m_AuthorizationRequest; } + + MonoBehaviour *GetAuthorizationDialog (); +private: + class UserAuthorizationManagerOperation : public AsyncOperation + { + virtual float GetProgress () { return 0.0f; } + virtual bool IsDone () { return GetUserAuthorizationManager().m_AuthorizationRequest == 0; } + }; + + class UserAuthorizationManagerErrorOperation : public AsyncOperation + { + virtual float GetProgress () { return 0.0f; } + virtual bool IsDone () { return true; } + }; + + int m_AuthorizationMode; + int m_AuthorizationRequest; + UserAuthorizationManagerOperation *m_AuthorizationOperation; + PPtr m_AuthorizationDialog; +}; +#endif \ No newline at end of file -- cgit v1.1-26-g67d0