Add donation link in settings

This commit is contained in:
dec05eba
2025-10-16 19:29:57 +02:00
parent bb320e97ed
commit 085f4d8bad
6 changed files with 27 additions and 3 deletions

View File

@@ -65,7 +65,7 @@ namespace gsr {
bool draw();
void show();
void hide();
void hide_next_frame();
void toggle_show();
void toggle_record();
void toggle_pause();
@@ -90,6 +90,8 @@ namespace gsr {
void set_notification_speed(NotificationSpeed notification_speed);
private:
void hide();
void handle_keyboard_mapping_event();
void on_event(mgl::Event &event);

View File

@@ -73,6 +73,7 @@ namespace gsr {
std::unique_ptr<List> create_notification_speed();
std::unique_ptr<Subsection> create_application_options_subsection(ScrollablePage *parent_page);
std::unique_ptr<Subsection> create_application_info_subsection(ScrollablePage *parent_page);
std::unique_ptr<Subsection> create_donate_subsection(ScrollablePage *parent_page);
void add_widgets();
Button* configure_hotkey_get_button_by_active_type();

View File

@@ -1446,6 +1446,10 @@ namespace gsr {
malloc_trim(0);
}
void Overlay::hide_next_frame() {
hide_ui = true;
}
void Overlay::toggle_show() {
if(visible) {
//hide();

View File

@@ -528,6 +528,22 @@ namespace gsr {
return std::make_unique<Subsection>("Application info", std::move(list), mgl::vec2f(parent_page->get_inner_size().x, 0.0f));
}
std::unique_ptr<Subsection> GlobalSettingsPage::create_donate_subsection(ScrollablePage *parent_page) {
auto list = std::make_unique<List>(List::Orientation::VERTICAL);
list->add_widget(std::make_unique<Label>(&get_theme().body_font, "If you would like to donate you can do so by donating at https://buymeacoffee.com/dec05eba:", get_color_theme().text_color));
auto donate_button = std::make_unique<Button>(&get_theme().body_font, "Donate", mgl::vec2f(0.0f, 0.0f), mgl::Color(0, 0, 0, 120));
donate_button->on_click = [this] {
const char *args[] = { "xdg-open", "https://buymeacoffee.com/dec05eba", nullptr };
exec_program_daemonized(args);
overlay->hide_next_frame();
};
list->add_widget(std::move(donate_button));
list->add_widget(std::make_unique<Label>(&get_theme().body_font, "All donations go toward developing software (including GPU Screen Recorder)\nand buying hardware to test the software.", get_color_theme().text_color));
return std::make_unique<Subsection>("Donate", std::move(list), mgl::vec2f(parent_page->get_inner_size().x, 0.0f));
}
void GlobalSettingsPage::add_widgets() {
auto scrollable_page = std::make_unique<ScrollablePage>(content_page_ptr->get_inner_size());
@@ -539,6 +555,7 @@ namespace gsr {
settings_list->add_widget(create_controller_hotkey_subsection(scrollable_page.get()));
settings_list->add_widget(create_application_options_subsection(scrollable_page.get()));
settings_list->add_widget(create_application_info_subsection(scrollable_page.get()));
settings_list->add_widget(create_donate_subsection(scrollable_page.get()));
scrollable_page->add_widget(std::move(settings_list));
content_page_ptr->add_widget(std::move(scrollable_page));

View File

@@ -40,7 +40,7 @@ namespace gsr {
if(capture_options.region)
record_area_box->add_item("Region", "region");
if(!capture_options.monitors.empty())
record_area_box->add_item(gsr_info->system_info.display_server == DisplayServer::WAYLAND ? "Focused monitor (Experimental on Wayland)" : "Focused monitor", "focused_monitor");
record_area_box->add_item("Focused monitor", "focused_monitor");
for(const auto &monitor : capture_options.monitors) {
char name[256];
snprintf(name, sizeof(name), "Monitor %s (%dx%d)", monitor.name.c_str(), monitor.size.x, monitor.size.y);

View File

@@ -73,7 +73,7 @@ namespace gsr {
if(capture_options.region)
record_area_box->add_item("Region", "region");
if(!capture_options.monitors.empty())
record_area_box->add_item(gsr_info->system_info.display_server == DisplayServer::WAYLAND ? "Focused monitor (Experimental on Wayland)" : "Focused monitor", "focused_monitor");
record_area_box->add_item("Focused monitor", "focused_monitor");
for(const auto &monitor : capture_options.monitors) {
char name[256];
snprintf(name, sizeof(name), "Monitor %s (%dx%d)", monitor.name.c_str(), monitor.size.x, monitor.size.y);