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:
dec05eba
2024-08-07 20:32:59 +02:00
parent 2ea32e1109
commit b709805cfa
14 changed files with 504 additions and 313 deletions

View File

@@ -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;

View File

@@ -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;

View File

@@ -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:

View File

@@ -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);