summaryrefslogtreecommitdiffstats
path: root/src/core/frontend
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/core/frontend/applets/general_frontend.cpp99
-rw-r--r--src/core/frontend/applets/general_frontend.h84
-rw-r--r--src/core/frontend/applets/web_browser.cpp6
-rw-r--r--src/core/frontend/applets/web_browser.h8
4 files changed, 189 insertions, 8 deletions
diff --git a/src/core/frontend/applets/general_frontend.cpp b/src/core/frontend/applets/general_frontend.cpp
index b974f2289..c30b36de7 100644
--- a/src/core/frontend/applets/general_frontend.cpp
+++ b/src/core/frontend/applets/general_frontend.cpp
@@ -7,9 +7,38 @@
namespace Core::Frontend {
+ParentalControlsApplet::~ParentalControlsApplet() = default;
+
+DefaultParentalControlsApplet::~DefaultParentalControlsApplet() = default;
+
+void DefaultParentalControlsApplet::VerifyPIN(std::function<void(bool)> finished,
+ bool suspend_future_verification_temporarily) {
+ LOG_INFO(Service_AM,
+ "Application requested frontend to verify PIN (normal), "
+ "suspend_future_verification_temporarily={}, verifying as correct.",
+ suspend_future_verification_temporarily);
+ finished(true);
+}
+
+void DefaultParentalControlsApplet::VerifyPINForSettings(std::function<void(bool)> finished) {
+ LOG_INFO(Service_AM,
+ "Application requested frontend to verify PIN (settings), verifying as correct.");
+ finished(true);
+}
+
+void DefaultParentalControlsApplet::RegisterPIN(std::function<void()> finished) {
+ LOG_INFO(Service_AM, "Application requested frontend to register new PIN");
+ finished();
+}
+
+void DefaultParentalControlsApplet::ChangePIN(std::function<void()> finished) {
+ LOG_INFO(Service_AM, "Application requested frontend to change PIN to new value");
+ finished();
+}
+
PhotoViewerApplet::~PhotoViewerApplet() = default;
-DefaultPhotoViewerApplet::~DefaultPhotoViewerApplet() {}
+DefaultPhotoViewerApplet::~DefaultPhotoViewerApplet() = default;
void DefaultPhotoViewerApplet::ShowPhotosForApplication(u64 title_id,
std::function<void()> finished) const {
@@ -24,4 +53,72 @@ void DefaultPhotoViewerApplet::ShowAllPhotos(std::function<void()> finished) con
finished();
}
+ECommerceApplet::~ECommerceApplet() = default;
+
+DefaultECommerceApplet::~DefaultECommerceApplet() = default;
+
+void DefaultECommerceApplet::ShowApplicationInformation(
+ std::function<void()> finished, u64 title_id, std::optional<u128> user_id,
+ std::optional<bool> full_display, std::optional<std::string> extra_parameter) {
+ const auto value = user_id.value_or(u128{});
+ LOG_INFO(Service_AM,
+ "Application requested frontend show application information for EShop, "
+ "title_id={:016X}, user_id={:016X}{:016X}, full_display={}, extra_parameter={}",
+ title_id, value[1], value[0],
+ full_display.has_value() ? fmt::format("{}", *full_display) : "null",
+ extra_parameter.value_or("null"));
+ finished();
+}
+
+void DefaultECommerceApplet::ShowAddOnContentList(std::function<void()> finished, u64 title_id,
+ std::optional<u128> user_id,
+ std::optional<bool> full_display) {
+ const auto value = user_id.value_or(u128{});
+ LOG_INFO(Service_AM,
+ "Application requested frontend show add on content list for EShop, "
+ "title_id={:016X}, user_id={:016X}{:016X}, full_display={}",
+ title_id, value[1], value[0],
+ full_display.has_value() ? fmt::format("{}", *full_display) : "null");
+ finished();
+}
+
+void DefaultECommerceApplet::ShowSubscriptionList(std::function<void()> finished, u64 title_id,
+ std::optional<u128> user_id) {
+ const auto value = user_id.value_or(u128{});
+ LOG_INFO(Service_AM,
+ "Application requested frontend show subscription list for EShop, title_id={:016X}, "
+ "user_id={:016X}{:016X}",
+ title_id, value[1], value[0]);
+ finished();
+}
+
+void DefaultECommerceApplet::ShowConsumableItemList(std::function<void()> finished, u64 title_id,
+ std::optional<u128> user_id) {
+ const auto value = user_id.value_or(u128{});
+ LOG_INFO(
+ Service_AM,
+ "Application requested frontend show consumable item list for EShop, title_id={:016X}, "
+ "user_id={:016X}{:016X}",
+ title_id, value[1], value[0]);
+ finished();
+}
+
+void DefaultECommerceApplet::ShowShopHome(std::function<void()> finished, u128 user_id,
+ bool full_display) {
+ LOG_INFO(Service_AM,
+ "Application requested frontend show home menu for EShop, user_id={:016X}{:016X}, "
+ "full_display={}",
+ user_id[1], user_id[0], full_display);
+ finished();
+}
+
+void DefaultECommerceApplet::ShowSettings(std::function<void()> finished, u128 user_id,
+ bool full_display) {
+ LOG_INFO(Service_AM,
+ "Application requested frontend show settings menu for EShop, user_id={:016X}{:016X}, "
+ "full_display={}",
+ user_id[1], user_id[0], full_display);
+ finished();
+}
+
} // namespace Core::Frontend
diff --git a/src/core/frontend/applets/general_frontend.h b/src/core/frontend/applets/general_frontend.h
index d4506c999..4b63f828e 100644
--- a/src/core/frontend/applets/general_frontend.h
+++ b/src/core/frontend/applets/general_frontend.h
@@ -5,10 +5,43 @@
#pragma once
#include <functional>
+#include <optional>
#include "common/common_types.h"
namespace Core::Frontend {
+class ParentalControlsApplet {
+public:
+ virtual ~ParentalControlsApplet();
+
+ // Prompts the user to enter a PIN and calls the callback with whether or not it matches the
+ // correct PIN. If the bool is passed, and the PIN was recently entered correctly, the frontend
+ // should not prompt and simply return true.
+ virtual void VerifyPIN(std::function<void(bool)> finished,
+ bool suspend_future_verification_temporarily) = 0;
+
+ // Prompts the user to enter a PIN and calls the callback for correctness. Frontends can
+ // optionally alert the user that this is to change parental controls settings.
+ virtual void VerifyPINForSettings(std::function<void(bool)> finished) = 0;
+
+ // Prompts the user to create a new PIN for pctl and stores it with the service.
+ virtual void RegisterPIN(std::function<void()> finished) = 0;
+
+ // Prompts the user to verify the current PIN and then store a new one into pctl.
+ virtual void ChangePIN(std::function<void()> finished) = 0;
+};
+
+class DefaultParentalControlsApplet final : public ParentalControlsApplet {
+public:
+ ~DefaultParentalControlsApplet() override;
+
+ void VerifyPIN(std::function<void(bool)> finished,
+ bool suspend_future_verification_temporarily) override;
+ void VerifyPINForSettings(std::function<void(bool)> finished) override;
+ void RegisterPIN(std::function<void()> finished) override;
+ void ChangePIN(std::function<void()> finished) override;
+};
+
class PhotoViewerApplet {
public:
virtual ~PhotoViewerApplet();
@@ -25,4 +58,55 @@ public:
void ShowAllPhotos(std::function<void()> finished) const override;
};
+class ECommerceApplet {
+public:
+ virtual ~ECommerceApplet();
+
+ // Shows a page with application icons, description, name, and price.
+ virtual void ShowApplicationInformation(std::function<void()> finished, u64 title_id,
+ std::optional<u128> user_id = {},
+ std::optional<bool> full_display = {},
+ std::optional<std::string> extra_parameter = {}) = 0;
+
+ // Shows a page with all of the add on content available for a game, with name, description, and
+ // price.
+ virtual void ShowAddOnContentList(std::function<void()> finished, u64 title_id,
+ std::optional<u128> user_id = {},
+ std::optional<bool> full_display = {}) = 0;
+
+ // Shows a page with all of the subscriptions (recurring payments) for a game, with name,
+ // description, price, and renewal period.
+ virtual void ShowSubscriptionList(std::function<void()> finished, u64 title_id,
+ std::optional<u128> user_id = {}) = 0;
+
+ // Shows a page with a list of any additional game related purchasable items (DLC,
+ // subscriptions, etc) for a particular game, with name, description, type, and price.
+ virtual void ShowConsumableItemList(std::function<void()> finished, u64 title_id,
+ std::optional<u128> user_id = {}) = 0;
+
+ // Shows the home page of the shop.
+ virtual void ShowShopHome(std::function<void()> finished, u128 user_id, bool full_display) = 0;
+
+ // Shows the user settings page of the shop.
+ virtual void ShowSettings(std::function<void()> finished, u128 user_id, bool full_display) = 0;
+};
+
+class DefaultECommerceApplet : public ECommerceApplet {
+public:
+ ~DefaultECommerceApplet() override;
+
+ void ShowApplicationInformation(std::function<void()> finished, u64 title_id,
+ std::optional<u128> user_id, std::optional<bool> full_display,
+ std::optional<std::string> extra_parameter) override;
+ void ShowAddOnContentList(std::function<void()> finished, u64 title_id,
+ std::optional<u128> user_id,
+ std::optional<bool> full_display) override;
+ void ShowSubscriptionList(std::function<void()> finished, u64 title_id,
+ std::optional<u128> user_id) override;
+ void ShowConsumableItemList(std::function<void()> finished, u64 title_id,
+ std::optional<u128> user_id) override;
+ void ShowShopHome(std::function<void()> finished, u128 user_id, bool full_display) override;
+ void ShowSettings(std::function<void()> finished, u128 user_id, bool full_display) override;
+};
+
} // namespace Core::Frontend
diff --git a/src/core/frontend/applets/web_browser.cpp b/src/core/frontend/applets/web_browser.cpp
index 3a3d3d0bf..528295ffc 100644
--- a/src/core/frontend/applets/web_browser.cpp
+++ b/src/core/frontend/applets/web_browser.cpp
@@ -11,9 +11,9 @@ WebBrowserApplet::~WebBrowserApplet() = default;
DefaultWebBrowserApplet::~DefaultWebBrowserApplet() = default;
-void DefaultWebBrowserApplet::OpenPage(std::string_view filename,
- std::function<void()> unpack_romfs_callback,
- std::function<void()> finished_callback) {
+void DefaultWebBrowserApplet::OpenPageLocal(std::string_view filename,
+ std::function<void()> unpack_romfs_callback,
+ std::function<void()> finished_callback) {
LOG_INFO(Service_AM,
"(STUBBED) called - No suitable web browser implementation found to open website page "
"at '{}'!",
diff --git a/src/core/frontend/applets/web_browser.h b/src/core/frontend/applets/web_browser.h
index f952856af..110e33bc4 100644
--- a/src/core/frontend/applets/web_browser.h
+++ b/src/core/frontend/applets/web_browser.h
@@ -13,16 +13,16 @@ class WebBrowserApplet {
public:
virtual ~WebBrowserApplet();
- virtual void OpenPage(std::string_view url, std::function<void()> unpack_romfs_callback,
- std::function<void()> finished_callback) = 0;
+ virtual void OpenPageLocal(std::string_view url, std::function<void()> unpack_romfs_callback,
+ std::function<void()> finished_callback) = 0;
};
class DefaultWebBrowserApplet final : public WebBrowserApplet {
public:
~DefaultWebBrowserApplet() override;
- void OpenPage(std::string_view url, std::function<void()> unpack_romfs_callback,
- std::function<void()> finished_callback) override;
+ void OpenPageLocal(std::string_view url, std::function<void()> unpack_romfs_callback,
+ std::function<void()> finished_callback) override;
};
} // namespace Core::Frontend