1 // Copyright 2019 yuzu emulator team 2 // Licensed under GPLv2 or any later version 3 // Refer to the license.txt file included. 4 5 #pragma once 6 7 #include "core/hle/service/am/applets/applets.h" 8 9 namespace Core { 10 class System; 11 } 12 13 namespace Service::AM::Applets { 14 15 enum class AuthAppletType : u32 { 16 ShowParentalAuthentication, 17 RegisterParentalPasscode, 18 ChangeParentalPasscode, 19 }; 20 21 class Auth final : public Applet { 22 public: 23 explicit Auth(Core::System& system_, Core::Frontend::ParentalControlsApplet& frontend_); 24 ~Auth() override; 25 26 void Initialize() override; 27 bool TransactionComplete() const override; 28 ResultCode GetStatus() const override; 29 void ExecuteInteractive() override; 30 void Execute() override; 31 32 void AuthFinished(bool is_successful = true); 33 34 private: 35 Core::Frontend::ParentalControlsApplet& frontend; 36 Core::System& system; 37 bool complete = false; 38 bool successful = false; 39 40 AuthAppletType type = AuthAppletType::ShowParentalAuthentication; 41 u8 arg0 = 0; 42 u8 arg1 = 0; 43 u8 arg2 = 0; 44 }; 45 46 enum class PhotoViewerAppletMode : u8 { 47 CurrentApp = 0, 48 AllApps = 1, 49 }; 50 51 class PhotoViewer final : public Applet { 52 public: 53 explicit PhotoViewer(Core::System& system_, const Core::Frontend::PhotoViewerApplet& frontend_); 54 ~PhotoViewer() override; 55 56 void Initialize() override; 57 bool TransactionComplete() const override; 58 ResultCode GetStatus() const override; 59 void ExecuteInteractive() override; 60 void Execute() override; 61 62 void ViewFinished(); 63 64 private: 65 const Core::Frontend::PhotoViewerApplet& frontend; 66 bool complete = false; 67 PhotoViewerAppletMode mode = PhotoViewerAppletMode::CurrentApp; 68 Core::System& system; 69 }; 70 71 class StubApplet final : public Applet { 72 public: 73 explicit StubApplet(Core::System& system_, AppletId id_); 74 ~StubApplet() override; 75 76 void Initialize() override; 77 78 bool TransactionComplete() const override; 79 ResultCode GetStatus() const override; 80 void ExecuteInteractive() override; 81 void Execute() override; 82 83 private: 84 AppletId id; 85 Core::System& system; 86 }; 87 88 } // namespace Service::AM::Applets 89