Add hotkeys for replay and streaming, finish everything

This commit is contained in:
dec05eba
2024-10-27 13:09:06 +01:00
parent 28c437e90a
commit 59dfd87c21
12 changed files with 579 additions and 170 deletions

View File

@@ -7,6 +7,8 @@
#include <optional>
namespace gsr {
struct GsrInfo;
struct ConfigHotkey {
int64_t keysym = 0;
uint32_t modifiers = 0;
@@ -86,7 +88,7 @@ namespace gsr {
};
struct Config {
Config();
Config(const GsrInfo &gsr_info);
MainConfig main_config;
StreamingConfig streaming_config;
@@ -94,6 +96,6 @@ namespace gsr {
ReplayConfig replay_config;
};
std::optional<Config> read_config();
std::optional<Config> read_config(const GsrInfo &gsr_info);
void save_config(Config &config);
}

View File

@@ -45,6 +45,9 @@ namespace gsr {
void toggle_show();
void toggle_record();
void toggle_pause();
void toggle_stream();
void toggle_replay();
void save_replay();
void show_notification(const char *str, double timeout_seconds, mgl::Color icon_color, mgl::Color bg_color, NotificationType notification_type);
bool is_open() const;
private:
@@ -59,9 +62,16 @@ namespace gsr {
void update_ui_recording_started();
void update_ui_recording_stopped();
void on_press_start_replay(const std::string &id);
void on_press_start_record(const std::string &id);
void on_press_start_stream(const std::string &id);
void update_ui_streaming_started();
void update_ui_streaming_stopped();
void update_ui_replay_started();
void update_ui_replay_stopped();
void on_press_save_replay();
void on_press_start_replay();
void on_press_start_record();
void on_press_start_stream();
bool update_compositor_texture(const mgl_monitor *monitor);
private:
using KeyBindingCallback = std::function<void()>;
@@ -92,7 +102,7 @@ namespace gsr {
uint64_t default_cursor = 0;
pid_t gpu_screen_recorder_process = -1;
pid_t notification_process = -1;
std::optional<Config> config;
Config config;
DropdownButton *replay_dropdown_button_ptr = nullptr;
DropdownButton *record_dropdown_button_ptr = nullptr;
DropdownButton *stream_dropdown_button_ptr = nullptr;

View File

@@ -42,6 +42,7 @@ namespace gsr {
mgl::Texture play_texture;
mgl::Texture stop_texture;
mgl::Texture pause_texture;
mgl::Texture save_texture;
double double_click_timeout_seconds = 0.4;

View File

@@ -23,7 +23,7 @@ namespace gsr {
STREAM
};
SettingsPage(Type type, const GsrInfo &gsr_info, std::vector<AudioDevice> audio_devices, std::optional<Config> &config, PageStack *page_stack);
SettingsPage(Type type, const GsrInfo &gsr_info, std::vector<AudioDevice> audio_devices, Config &config, PageStack *page_stack);
SettingsPage(const SettingsPage&) = delete;
SettingsPage& operator=(const SettingsPage&) = delete;
@@ -104,7 +104,7 @@ namespace gsr {
void save_stream();
private:
Type type;
std::optional<Config> &config;
Config &config;
std::vector<AudioDevice> audio_devices;
GsrPage *content_page_ptr = nullptr;