#pragma once #include "StaticPage.hpp" #include "List.hpp" #include "ComboBox.hpp" #include "Entry.hpp" #include "RadioButton.hpp" #include "CheckBox.hpp" #include "Button.hpp" #include "../GsrInfo.hpp" #include "../Config.hpp" namespace gsr { class GsrPage; class PageStack; class ScrollablePage; class SettingsPage : public StaticPage { public: enum class Type { REPLAY, RECORD, STREAM }; SettingsPage(Type type, const GsrInfo &gsr_info, std::vector audio_devices, std::optional &config, PageStack *page_stack); SettingsPage(const SettingsPage&) = delete; SettingsPage& operator=(const SettingsPage&) = delete; void load(); void save(); void on_navigate_away_from_page() override; private: std::unique_ptr create_view_radio_button(); std::unique_ptr create_record_area_box(const GsrInfo &gsr_info); std::unique_ptr create_record_area(const GsrInfo &gsr_info); std::unique_ptr create_select_window(); std::unique_ptr create_area_width_entry(); std::unique_ptr create_area_height_entry(); std::unique_ptr create_area_size(); std::unique_ptr create_area_size_section(); std::unique_ptr create_restore_portal_session_checkbox(); std::unique_ptr create_restore_portal_session_section(); std::unique_ptr create_capture_target(const GsrInfo &gsr_info); std::unique_ptr create_audio_track_selection_checkbox(); std::unique_ptr