mirror of
https://repo.dec05eba.com/gpu-screen-recorder-ui
synced 2026-03-31 09:17:04 +09:00
Move settings ui to SettingsPage class, show different widgets for different settings page, show different widgets depending on combobox selections
This commit is contained in:
37
include/SettingsPage.hpp
Normal file
37
include/SettingsPage.hpp
Normal file
@@ -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;
|
||||
};
|
||||
}
|
||||
@@ -15,6 +15,7 @@ namespace gsr {
|
||||
Theme(const Theme&) = delete;
|
||||
Theme& operator=(const Theme&) = delete;
|
||||
|
||||
float window_width = 0.0f;
|
||||
float window_height = 0.0f;
|
||||
|
||||
mgl::Color tint_color = mgl::Color(118, 185, 0);
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
#include "Widget.hpp"
|
||||
#include <mglpp/graphics/Text.hpp>
|
||||
#include <mglpp/graphics/Sprite.hpp>
|
||||
|
||||
#include <functional>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
@@ -17,9 +19,11 @@ namespace gsr {
|
||||
void draw(mgl::Window &window, mgl::vec2f offset) override;
|
||||
|
||||
void add_item(const std::string &text, const std::string &id);
|
||||
void set_selected_item(const std::string &id);
|
||||
void set_selected_item(const std::string &id, bool trigger_event = true);
|
||||
|
||||
mgl::vec2f get_size() override;
|
||||
|
||||
std::function<void(const std::string &text, const std::string &id)> on_selection_changed;
|
||||
private:
|
||||
void update_if_dirty();
|
||||
float get_dropdown_arrow_height() const;
|
||||
|
||||
@@ -17,7 +17,7 @@ namespace gsr {
|
||||
void draw(mgl::Window &window, mgl::vec2f offset) override;
|
||||
|
||||
void add_item(const std::string &text, const std::string &id);
|
||||
void set_selected_item(const std::string &id);
|
||||
void set_selected_item(const std::string &id, bool trigger_event = true);
|
||||
|
||||
mgl::vec2f get_size() override;
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@ namespace gsr {
|
||||
void draw(mgl::Window &window, mgl::vec2f offset) override;
|
||||
|
||||
mgl::vec2f get_size() override;
|
||||
mgl::vec2f get_inner_size() override;
|
||||
|
||||
void set_margins(float top, float bottom, float left, float right);
|
||||
private:
|
||||
|
||||
@@ -34,6 +34,8 @@ namespace gsr {
|
||||
|
||||
virtual mgl::vec2f get_position() const;
|
||||
virtual mgl::vec2f get_size() = 0;
|
||||
// This can be different from get_size, for example with ScrollablePage this excludes the margins
|
||||
virtual mgl::vec2f get_inner_size() { return get_size(); }
|
||||
|
||||
void set_horizontal_alignment(Alignment alignment);
|
||||
void set_vertical_alignment(Alignment alignment);
|
||||
|
||||
Reference in New Issue
Block a user