Move notifications/led indicator to new section in the ui

This commit is contained in:
dec05eba
2025-11-07 23:21:17 +01:00
parent 4992185323
commit 0995e86e89
5 changed files with 20 additions and 8 deletions

2
TODO
View File

@@ -245,4 +245,4 @@ Show the currently recorded capture in the ui, to preview if everything looks ok
Show a question mark beside options. When hovering the question mark show a tooltip that explains the options. Show a question mark beside options. When hovering the question mark show a tooltip that explains the options.
Make led indicator work on wayland (set led with /sys/... blabla with root access). Make led indicator work on wayland (set led with /sys/... blabla with root access). Maybe add a command in gsr-global-hotkeys for that, set_led true/false <led name>. That should loop all input devices and set their led status for the led name.

View File

@@ -46,6 +46,7 @@ namespace gsr {
std::unique_ptr<Widget> create_notifications(); std::unique_ptr<Widget> create_notifications();
std::unique_ptr<Widget> create_led_indicator(); std::unique_ptr<Widget> create_led_indicator();
std::unique_ptr<Widget> create_general_section(); std::unique_ptr<Widget> create_general_section();
std::unique_ptr<Widget> create_screenshot_indicator_section();
std::unique_ptr<Widget> create_settings(); std::unique_ptr<Widget> create_settings();
void add_widgets(); void add_widgets();

View File

@@ -114,6 +114,7 @@ namespace gsr {
void update_estimated_record_file_size(); void update_estimated_record_file_size();
std::unique_ptr<CheckBox> create_led_indicator(const char *type); std::unique_ptr<CheckBox> create_led_indicator(const char *type);
std::unique_ptr<CheckBox> create_notifications(const char *type); std::unique_ptr<CheckBox> create_notifications(const char *type);
std::unique_ptr<List> create_indicator(const char *type);
void add_replay_widgets(); void add_replay_widgets();
void add_record_widgets(); void add_record_widgets();

View File

@@ -239,9 +239,14 @@ namespace gsr {
auto list = std::make_unique<List>(List::Orientation::VERTICAL); auto list = std::make_unique<List>(List::Orientation::VERTICAL);
list->add_widget(create_save_screenshot_in_game_folder()); list->add_widget(create_save_screenshot_in_game_folder());
list->add_widget(create_save_screenshot_to_clipboard()); list->add_widget(create_save_screenshot_to_clipboard());
return std::make_unique<Subsection>("General", std::move(list), mgl::vec2f(settings_scrollable_page_ptr->get_inner_size().x, 0.0f));
}
std::unique_ptr<Widget> ScreenshotSettingsPage::create_screenshot_indicator_section() {
auto list = std::make_unique<List>(List::Orientation::VERTICAL);
list->add_widget(create_notifications()); list->add_widget(create_notifications());
list->add_widget(create_led_indicator()); list->add_widget(create_led_indicator());
return std::make_unique<Subsection>("General", std::move(list), mgl::vec2f(settings_scrollable_page_ptr->get_inner_size().x, 0.0f)); return std::make_unique<Subsection>("Screenshot indicator", std::move(list), mgl::vec2f(settings_scrollable_page_ptr->get_inner_size().x, 0.0f));
} }
std::unique_ptr<Widget> ScreenshotSettingsPage::create_settings() { std::unique_ptr<Widget> ScreenshotSettingsPage::create_settings() {
@@ -257,6 +262,7 @@ namespace gsr {
settings_list->add_widget(create_image_section()); settings_list->add_widget(create_image_section());
settings_list->add_widget(create_file_info_section()); settings_list->add_widget(create_file_info_section());
settings_list->add_widget(create_general_section()); settings_list->add_widget(create_general_section());
settings_list->add_widget(create_screenshot_indicator_section());
settings_scrollable_page_ptr->add_widget(std::move(settings_list)); settings_scrollable_page_ptr->add_widget(std::move(settings_list));
return page_list; return page_list;
} }

View File

@@ -852,6 +852,13 @@ namespace gsr {
return checkbox; return checkbox;
} }
std::unique_ptr<List> SettingsPage::create_indicator(const char *type) {
auto list = std::make_unique<List>(List::Orientation::VERTICAL);
list->add_widget(create_notifications(type));
list->add_widget(create_led_indicator(type));
return list;
}
void SettingsPage::add_replay_widgets() { void SettingsPage::add_replay_widgets() {
auto file_info_list = std::make_unique<List>(List::Orientation::VERTICAL); auto file_info_list = std::make_unique<List>(List::Orientation::VERTICAL);
auto file_info_data_list = std::make_unique<List>(List::Orientation::HORIZONTAL); auto file_info_data_list = std::make_unique<List>(List::Orientation::HORIZONTAL);
@@ -867,10 +874,9 @@ namespace gsr {
general_list->add_widget(create_save_replay_in_game_folder()); general_list->add_widget(create_save_replay_in_game_folder());
if(gsr_info->system_info.gsr_version >= GsrVersion{5, 0, 3}) if(gsr_info->system_info.gsr_version >= GsrVersion{5, 0, 3})
general_list->add_widget(create_restart_replay_on_save()); general_list->add_widget(create_restart_replay_on_save());
general_list->add_widget(create_notifications("replay"));
general_list->add_widget(create_led_indicator("replay"));
settings_list_ptr->add_widget(std::make_unique<Subsection>("General", std::move(general_list), mgl::vec2f(settings_scrollable_page_ptr->get_inner_size().x, 0.0f))); settings_list_ptr->add_widget(std::make_unique<Subsection>("General", std::move(general_list), mgl::vec2f(settings_scrollable_page_ptr->get_inner_size().x, 0.0f)));
settings_list_ptr->add_widget(std::make_unique<Subsection>("Replay indicator", create_indicator("replay"), mgl::vec2f(settings_scrollable_page_ptr->get_inner_size().x, 0.0f)));
settings_list_ptr->add_widget(std::make_unique<Subsection>("Autostart", create_start_replay_automatically(), mgl::vec2f(settings_scrollable_page_ptr->get_inner_size().x, 0.0f))); settings_list_ptr->add_widget(std::make_unique<Subsection>("Autostart", create_start_replay_automatically(), mgl::vec2f(settings_scrollable_page_ptr->get_inner_size().x, 0.0f)));
view_radio_button_ptr->on_selection_changed = [this](const std::string&, const std::string &id) { view_radio_button_ptr->on_selection_changed = [this](const std::string&, const std::string &id) {
@@ -924,10 +930,9 @@ namespace gsr {
auto general_list = std::make_unique<List>(List::Orientation::VERTICAL); auto general_list = std::make_unique<List>(List::Orientation::VERTICAL);
general_list->add_widget(create_save_recording_in_game_folder()); general_list->add_widget(create_save_recording_in_game_folder());
general_list->add_widget(create_notifications("recording"));
general_list->add_widget(create_led_indicator("recording"));
settings_list_ptr->add_widget(std::make_unique<Subsection>("General", std::move(general_list), mgl::vec2f(settings_scrollable_page_ptr->get_inner_size().x, 0.0f))); settings_list_ptr->add_widget(std::make_unique<Subsection>("General", std::move(general_list), mgl::vec2f(settings_scrollable_page_ptr->get_inner_size().x, 0.0f)));
settings_list_ptr->add_widget(std::make_unique<Subsection>("Recording indicator", create_indicator("recording"), mgl::vec2f(settings_scrollable_page_ptr->get_inner_size().x, 0.0f)));
view_radio_button_ptr->on_selection_changed = [this](const std::string&, const std::string &id) { view_radio_button_ptr->on_selection_changed = [this](const std::string&, const std::string &id) {
view_changed(id == "advanced"); view_changed(id == "advanced");
@@ -1055,10 +1060,9 @@ namespace gsr {
auto general_list = std::make_unique<List>(List::Orientation::VERTICAL); auto general_list = std::make_unique<List>(List::Orientation::VERTICAL);
general_list->add_widget(create_save_recording_in_game_folder()); general_list->add_widget(create_save_recording_in_game_folder());
general_list->add_widget(create_notifications("streaming"));
general_list->add_widget(create_led_indicator("streaming"));
settings_list_ptr->add_widget(std::make_unique<Subsection>("General", std::move(general_list), mgl::vec2f(settings_scrollable_page_ptr->get_inner_size().x, 0.0f))); settings_list_ptr->add_widget(std::make_unique<Subsection>("General", std::move(general_list), mgl::vec2f(settings_scrollable_page_ptr->get_inner_size().x, 0.0f)));
settings_list_ptr->add_widget(std::make_unique<Subsection>("Streaming indicator", create_indicator("streaming"), mgl::vec2f(settings_scrollable_page_ptr->get_inner_size().x, 0.0f)));
streaming_service_box_ptr->on_selection_changed = [this](const std::string&, const std::string &id) { streaming_service_box_ptr->on_selection_changed = [this](const std::string&, const std::string &id) {
const bool twitch_option = id == "twitch"; const bool twitch_option = id == "twitch";