#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" #include namespace gsr { class GsrPage; class PageStack; class ScrollablePage; class Label; class LineSeparator; class Subsection; enum class AudioDeviceType { OUTPUT, INPUT }; enum class WebcamBoxResizeCorner { NONE, //TOP_LEFT, //TOP_RIGHT, //BOTTOM_LEFT, BOTTOM_RIGHT }; class SettingsPage : public StaticPage { public: enum class Type { REPLAY, RECORD, STREAM }; SettingsPage(Type type, const GsrInfo *gsr_info, Config &config, PageStack *page_stack); SettingsPage(const SettingsPage&) = delete; SettingsPage& operator=(const SettingsPage&) = delete; void load(); void save(); void on_navigate_away_from_page() override; std::function on_config_changed; private: std::unique_ptr create_view_radio_button(); std::unique_ptr create_record_area_box(); std::unique_ptr create_record_area(); 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_video_width_entry(); std::unique_ptr create_video_height_entry(); std::unique_ptr create_video_resolution(); std::unique_ptr create_video_resolution_section(); std::unique_ptr create_restore_portal_session_checkbox(); std::unique_ptr create_restore_portal_session_section(); std::unique_ptr create_change_video_resolution_section(); std::unique_ptr create_capture_target_section(); std::unique_ptr create_webcam_sources(); std::unique_ptr create_webcam_video_format(); std::unique_ptr create_webcam_location_widget(); std::unique_ptr create_flip_camera_checkbox(); std::unique_ptr create_webcam_body(); std::unique_ptr create_webcam_section(); std::unique_ptr create_audio_device_selection_combobox(AudioDeviceType device_type); std::unique_ptr