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