aboutsummaryrefslogtreecommitdiff
path: root/src/main.cpp
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2024-08-07 00:21:32 +0200
committerdec05eba <dec05eba@protonmail.com>2024-08-07 00:21:35 +0200
commita3e479d5b289166ff651fac4ff046656cf78cda0 (patch)
tree2ba345228acfe45acf9863bb122e163ed38db7db /src/main.cpp
parentb229b060add5f66bd5532698c4a790285095e98a (diff)
Add radio button with simple/advanced view, add widget visibility
Diffstat (limited to 'src/main.cpp')
-rw-r--r--src/main.cpp30
1 files changed, 29 insertions, 1 deletions
diff --git a/src/main.cpp b/src/main.cpp
index f2281ec..3a6ffd6 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -3,6 +3,7 @@
#include "../include/gui/ScrollablePage.hpp"
#include "../include/gui/DropdownButton.hpp"
#include "../include/gui/Button.hpp"
+#include "../include/gui/RadioButton.hpp"
#include "../include/gui/Entry.hpp"
#include "../include/gui/CheckBox.hpp"
#include "../include/gui/ComboBox.hpp"
@@ -214,8 +215,18 @@ static void add_widgets_to_settings_page(mgl::vec2i window_size, mgl::vec2f sett
settings_page->add_widget(std::move(back_button));
auto settings_list = std::make_unique<gsr::List>(gsr::List::Orientation::VERTICAL);
- settings_list->set_position(mgl::vec2f(0.02f * gsr::get_theme().window_height, 0.02f * gsr::get_theme().window_height).floor());
{
+ auto view_radio_button = std::make_unique<gsr::RadioButton>(&gsr::get_theme().body_font);
+ view_radio_button->add_item("Simple view", "simple");
+ view_radio_button->add_item("Advanced view", "advanced");
+ view_radio_button->set_horizontal_alignment(gsr::Widget::Alignment::CENTER);
+ gsr::RadioButton *view_radio_button_ptr = view_radio_button.get();
+ settings_list->add_widget(std::move(view_radio_button));
+
+ gsr::Widget *color_range_list_ptr = nullptr;
+ gsr::Widget *codec_list_ptr = nullptr;
+ gsr::Widget *framerate_mode_list_ptr = nullptr;
+
auto record_area_list = std::make_unique<gsr::List>(gsr::List::Orientation::VERTICAL);
{
record_area_list->add_widget(std::make_unique<gsr::Label>(&gsr::get_theme().body_font, "Record area:", gsr::get_theme().text_color));
@@ -302,6 +313,7 @@ static void add_widgets_to_settings_page(mgl::vec2i window_size, mgl::vec2f sett
color_range_box->add_item("Full", "full");
color_range_list->add_widget(std::move(color_range_box));
}
+ color_range_list_ptr = color_range_list.get();
quality_list->add_widget(std::move(color_range_list));
}
settings_list->add_widget(std::move(quality_list));
@@ -341,6 +353,7 @@ static void add_widgets_to_settings_page(mgl::vec2i window_size, mgl::vec2f sett
}
codec_list->add_widget(std::move(audio_codec_list));
}
+ codec_list_ptr = codec_list.get();
settings_list->add_widget(std::move(codec_list));
auto framerate_info_list = std::make_unique<gsr::List>(gsr::List::Orientation::HORIZONTAL);
@@ -363,6 +376,7 @@ static void add_widgets_to_settings_page(mgl::vec2i window_size, mgl::vec2f sett
framerate_mode_box->add_item("Variable", "vfr");
framerate_mode_list->add_widget(std::move(framerate_mode_box));
}
+ framerate_mode_list_ptr = framerate_mode_list.get();
framerate_info_list->add_widget(std::move(framerate_mode_list));
}
settings_list->add_widget(std::move(framerate_info_list));
@@ -397,6 +411,16 @@ static void add_widgets_to_settings_page(mgl::vec2i window_size, mgl::vec2f sett
settings_list->add_widget(std::make_unique<gsr::CheckBox>(&gsr::get_theme().body_font, "Show recording started notification"));
//settings_list->add_widget(std::make_unique<gsr::CheckBox>(&gsr::get_theme().body_font, "Show recording stopped notification"));
settings_list->add_widget(std::make_unique<gsr::CheckBox>(&gsr::get_theme().body_font, "Show video saved notification"));
+
+ view_radio_button_ptr->on_selection_changed = [=](const std::string &text, const std::string &id) {
+ (void)text;
+ const bool advanced_view = id == "advanced";
+ color_range_list_ptr->set_visible(advanced_view);
+ codec_list_ptr->set_visible(advanced_view);
+ framerate_mode_list_ptr->set_visible(advanced_view);
+ };
+
+ view_radio_button_ptr->on_selection_changed("Simple", "simple");
}
settings_content_page->add_widget(std::move(settings_list));
}
@@ -515,18 +539,22 @@ int main(int argc, char **argv) {
const mgl::vec2f settings_page_size(window_size.x * 0.3333f, window_size.y * 0.7f);
const mgl::vec2f settings_page_position = (window_size.to_vec2f() * 0.5f - settings_page_size * 0.5f).floor();
+ const float settings_body_margin = 0.02f;
auto replay_settings_content = std::make_unique<gsr::ScrollablePage>(settings_page_size);
gsr::ScrollablePage *replay_settings_content_ptr = replay_settings_content.get();
replay_settings_content->set_position(settings_page_position);
+ replay_settings_content->set_margins(settings_body_margin, settings_body_margin, settings_body_margin, settings_body_margin);
auto record_settings_content = std::make_unique<gsr::ScrollablePage>(settings_page_size);
gsr::ScrollablePage *record_settings_content_ptr = record_settings_content.get();
record_settings_content->set_position(settings_page_position);
+ record_settings_content->set_margins(settings_body_margin, settings_body_margin, settings_body_margin, settings_body_margin);
auto stream_settings_content = std::make_unique<gsr::ScrollablePage>(settings_page_size);
gsr::ScrollablePage *stream_settings_content_ptr = stream_settings_content.get();
stream_settings_content->set_position(settings_page_position);
+ stream_settings_content->set_margins(settings_body_margin, settings_body_margin, settings_body_margin, settings_body_margin);
gsr::StaticPage replay_settings_page(window_size.to_vec2f());
replay_settings_page.add_widget(std::move(replay_settings_content));