From 4ea5ada9050d22fcb7eed67a72358bce11c9b3df Mon Sep 17 00:00:00 2001 From: dec05eba Date: Sat, 10 Aug 2024 00:45:36 +0200 Subject: Settings page save settings, refactor --- src/gui/SettingsPage.cpp | 628 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 628 insertions(+) create mode 100644 src/gui/SettingsPage.cpp (limited to 'src/gui/SettingsPage.cpp') diff --git a/src/gui/SettingsPage.cpp b/src/gui/SettingsPage.cpp new file mode 100644 index 0000000..277bc3b --- /dev/null +++ b/src/gui/SettingsPage.cpp @@ -0,0 +1,628 @@ +#include "../../include/gui/SettingsPage.hpp" +#include "../../include/gui/ScrollablePage.hpp" +#include "../../include/gui/Label.hpp" +#include "../../include/Theme.hpp" +#include "../../include/GsrInfo.hpp" + +#include +#include +#include +#include + +namespace gsr { + SettingsPage::SettingsPage(Type type, const GsrInfo &gsr_info, const std::vector &audio_devices, std::optional &config) : + StaticPage(mgl::vec2f(get_theme().window_width, get_theme().window_height).floor()), + type(type), + config(config), + settings_title_text("Settings", get_theme().title_font) + { + const mgl::vec2f window_size = mgl::vec2f(get_theme().window_width, get_theme().window_height).floor(); + const mgl::vec2f content_page_size = (window_size * mgl::vec2f(0.3333f, 0.7f)).floor(); + const mgl::vec2f content_page_position = mgl::vec2f(window_size * 0.5f - content_page_size * 0.5f).floor(); + const float settings_body_margin = 0.02f; + + auto content_page = std::make_unique(content_page_size); + content_page->set_position(content_page_position); + content_page->set_margins(settings_body_margin, settings_body_margin, settings_body_margin, settings_body_margin); + content_page_ptr = content_page.get(); + add_widget(std::move(content_page)); + + add_widgets(gsr_info, audio_devices); + add_page_specific_widgets(); + } + + std::unique_ptr