core/frontend/applets/web_browser: Make OpenPage() non-const

This is a function that definitely doesn't always have a non-modifying
behavior across all implementations, so this should be made non-const.

This gets rid of the need to mark data members as mutable to work around
the fact mutating data members needs to occur.
This commit is contained in:
Lioncash 2019-01-17 11:19:44 -05:00
parent 66978a772d
commit a661025637
7 changed files with 25 additions and 20 deletions

View File

@ -443,27 +443,31 @@ std::shared_ptr<FileSys::VfsFilesystem> System::GetFilesystem() const {
return impl->virtual_filesystem; return impl->virtual_filesystem;
} }
void System::SetProfileSelector(std::unique_ptr<Core::Frontend::ProfileSelectApplet> applet) { void System::SetProfileSelector(std::unique_ptr<Frontend::ProfileSelectApplet> applet) {
impl->profile_selector = std::move(applet); impl->profile_selector = std::move(applet);
} }
const Core::Frontend::ProfileSelectApplet& System::GetProfileSelector() const { const Frontend::ProfileSelectApplet& System::GetProfileSelector() const {
return *impl->profile_selector; return *impl->profile_selector;
} }
void System::SetSoftwareKeyboard(std::unique_ptr<Core::Frontend::SoftwareKeyboardApplet> applet) { void System::SetSoftwareKeyboard(std::unique_ptr<Frontend::SoftwareKeyboardApplet> applet) {
impl->software_keyboard = std::move(applet); impl->software_keyboard = std::move(applet);
} }
const Core::Frontend::SoftwareKeyboardApplet& System::GetSoftwareKeyboard() const { const Frontend::SoftwareKeyboardApplet& System::GetSoftwareKeyboard() const {
return *impl->software_keyboard; return *impl->software_keyboard;
} }
void System::SetWebBrowser(std::unique_ptr<Core::Frontend::WebBrowserApplet> applet) { void System::SetWebBrowser(std::unique_ptr<Frontend::WebBrowserApplet> applet) {
impl->web_browser = std::move(applet); impl->web_browser = std::move(applet);
} }
const Core::Frontend::WebBrowserApplet& System::GetWebBrowser() const { Frontend::WebBrowserApplet& System::GetWebBrowser() {
return *impl->web_browser;
}
const Frontend::WebBrowserApplet& System::GetWebBrowser() const {
return *impl->web_browser; return *impl->web_browser;
} }

View File

@ -243,17 +243,18 @@ public:
std::shared_ptr<FileSys::VfsFilesystem> GetFilesystem() const; std::shared_ptr<FileSys::VfsFilesystem> GetFilesystem() const;
void SetProfileSelector(std::unique_ptr<Core::Frontend::ProfileSelectApplet> applet); void SetProfileSelector(std::unique_ptr<Frontend::ProfileSelectApplet> applet);
const Core::Frontend::ProfileSelectApplet& GetProfileSelector() const; const Frontend::ProfileSelectApplet& GetProfileSelector() const;
void SetSoftwareKeyboard(std::unique_ptr<Core::Frontend::SoftwareKeyboardApplet> applet); void SetSoftwareKeyboard(std::unique_ptr<Frontend::SoftwareKeyboardApplet> applet);
const Core::Frontend::SoftwareKeyboardApplet& GetSoftwareKeyboard() const; const Frontend::SoftwareKeyboardApplet& GetSoftwareKeyboard() const;
void SetWebBrowser(std::unique_ptr<Core::Frontend::WebBrowserApplet> applet); void SetWebBrowser(std::unique_ptr<Frontend::WebBrowserApplet> applet);
const Core::Frontend::WebBrowserApplet& GetWebBrowser() const; Frontend::WebBrowserApplet& GetWebBrowser();
const Frontend::WebBrowserApplet& GetWebBrowser() const;
private: private:
System(); System();

View File

@ -13,7 +13,7 @@ DefaultWebBrowserApplet::~DefaultWebBrowserApplet() = default;
void DefaultWebBrowserApplet::OpenPage(std::string_view filename, void DefaultWebBrowserApplet::OpenPage(std::string_view filename,
std::function<void()> unpack_romfs_callback, std::function<void()> unpack_romfs_callback,
std::function<void()> finished_callback) const { std::function<void()> finished_callback) {
LOG_INFO(Service_AM, LOG_INFO(Service_AM,
"(STUBBED) called - No suitable web browser implementation found to open website page " "(STUBBED) called - No suitable web browser implementation found to open website page "
"at '{}'!", "at '{}'!",

View File

@ -14,7 +14,7 @@ public:
virtual ~WebBrowserApplet(); virtual ~WebBrowserApplet();
virtual void OpenPage(std::string_view url, std::function<void()> unpack_romfs_callback, virtual void OpenPage(std::string_view url, std::function<void()> unpack_romfs_callback,
std::function<void()> finished_callback) const = 0; std::function<void()> finished_callback) = 0;
}; };
class DefaultWebBrowserApplet final : public WebBrowserApplet { class DefaultWebBrowserApplet final : public WebBrowserApplet {
@ -22,7 +22,7 @@ public:
~DefaultWebBrowserApplet() override; ~DefaultWebBrowserApplet() override;
void OpenPage(std::string_view url, std::function<void()> unpack_romfs_callback, void OpenPage(std::string_view url, std::function<void()> unpack_romfs_callback,
std::function<void()> finished_callback) const override; std::function<void()> finished_callback) override;
}; };
} // namespace Core::Frontend } // namespace Core::Frontend

View File

@ -146,7 +146,7 @@ void WebBrowser::Execute() {
return; return;
} }
const auto& frontend{Core::System::GetInstance().GetWebBrowser()}; auto& frontend{Core::System::GetInstance().GetWebBrowser()};
frontend.OpenPage(filename, [this] { UnpackRomFS(); }, [this] { Finalize(); }); frontend.OpenPage(filename, [this] { UnpackRomFS(); }, [this] { Finalize(); });
} }

View File

@ -86,7 +86,7 @@ QtWebBrowser::QtWebBrowser(GMainWindow& main_window) {
QtWebBrowser::~QtWebBrowser() = default; QtWebBrowser::~QtWebBrowser() = default;
void QtWebBrowser::OpenPage(std::string_view url, std::function<void()> unpack_romfs_callback, void QtWebBrowser::OpenPage(std::string_view url, std::function<void()> unpack_romfs_callback,
std::function<void()> finished_callback) const { std::function<void()> finished_callback) {
this->unpack_romfs_callback = std::move(unpack_romfs_callback); this->unpack_romfs_callback = std::move(unpack_romfs_callback);
this->finished_callback = std::move(finished_callback); this->finished_callback = std::move(finished_callback);

View File

@ -38,7 +38,7 @@ public:
~QtWebBrowser() override; ~QtWebBrowser() override;
void OpenPage(std::string_view url, std::function<void()> unpack_romfs_callback, void OpenPage(std::string_view url, std::function<void()> unpack_romfs_callback,
std::function<void()> finished_callback) const override; std::function<void()> finished_callback) override;
signals: signals:
void MainWindowOpenPage(std::string_view filename, std::string_view additional_args) const; void MainWindowOpenPage(std::string_view filename, std::string_view additional_args) const;
@ -47,6 +47,6 @@ private:
void MainWindowUnpackRomFS(); void MainWindowUnpackRomFS();
void MainWindowFinishedBrowsing(); void MainWindowFinishedBrowsing();
mutable std::function<void()> unpack_romfs_callback; std::function<void()> unpack_romfs_callback;
mutable std::function<void()> finished_callback; std::function<void()> finished_callback;
}; };