diff options
author | dec05eba <dec05eba@protonmail.com> | 2024-08-07 20:32:59 +0200 |
---|---|---|
committer | dec05eba <dec05eba@protonmail.com> | 2024-08-07 20:32:59 +0200 |
commit | b709805cfac4d1fe1bfe28e497a3e48e224372a8 (patch) | |
tree | 82f4bb638805dd58017d933fafd2143eb8019637 /include/SettingsPage.hpp | |
parent | 2ea32e11093a4d057338c02abbff4807446ff8de (diff) |
Move settings ui to SettingsPage class, show different widgets for different settings page, show different widgets depending on combobox selections
Diffstat (limited to 'include/SettingsPage.hpp')
-rw-r--r-- | include/SettingsPage.hpp | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/include/SettingsPage.hpp b/include/SettingsPage.hpp new file mode 100644 index 0000000..aec7bed --- /dev/null +++ b/include/SettingsPage.hpp @@ -0,0 +1,37 @@ +#pragma once + +#include "gui/StaticPage.hpp" +#include "GsrInfo.hpp" + +#include <functional> + +namespace gsr { + class ScrollablePage; + class List; + + class SettingsPage { + public: + enum class Type { + REPLAY, + RECORD, + STREAM + }; + + SettingsPage(Type type, const GsrInfo &gsr_info, const std::vector<AudioDevice> &audio_devices, std::function<void()> back_button_callback); + SettingsPage(const SettingsPage&) = delete; + SettingsPage& operator=(const SettingsPage&) = delete; + + Page& get_page(); + private: + void add_widgets(const gsr::GsrInfo &gsr_info, const std::vector<gsr::AudioDevice> &audio_devices, std::function<void()> back_button_callback); + void add_page_specific_widgets(); + void add_replay_widgets(); + void add_record_widgets(); + void add_stream_widgets(); + private: + StaticPage page; + ScrollablePage *content_page_ptr = nullptr; + List *settings_list_ptr = nullptr; + Type type; + }; +}
\ No newline at end of file |