From 25a335dc3c07faae34d306749adabf753a89e1a6 Mon Sep 17 00:00:00 2001 From: Christopher P Yarger Date: Tue, 2 Mar 2021 18:32:17 -0500 Subject: [PATCH] UI: Add Frontend API function to get value of T-bar Also add a Frontend API event for when the T-bar's value changes. --- UI/api-interface.cpp | 5 +++++ UI/obs-frontend-api/obs-frontend-api.cpp | 5 +++++ UI/obs-frontend-api/obs-frontend-api.h | 3 +++ UI/obs-frontend-api/obs-frontend-internal.hpp | 1 + UI/window-basic-main-transitions.cpp | 15 +++++++++++++++ UI/window-basic-main.hpp | 2 ++ 6 files changed, 31 insertions(+) diff --git a/UI/api-interface.cpp b/UI/api-interface.cpp index 3b1e0e19b..218ae8d69 100644 --- a/UI/api-interface.cpp +++ b/UI/api-interface.cpp @@ -166,6 +166,11 @@ struct OBSStudioAPI : obs_frontend_callbacks { Q_ARG(int, position)); } + int obs_frontend_get_tbar_position(void) override + { + return main->tBar->value(); + } + void obs_frontend_get_scene_collections( std::vector &strings) override { diff --git a/UI/obs-frontend-api/obs-frontend-api.cpp b/UI/obs-frontend-api/obs-frontend-api.cpp index 311d99212..486d66654 100644 --- a/UI/obs-frontend-api/obs-frontend-api.cpp +++ b/UI/obs-frontend-api/obs-frontend-api.cpp @@ -154,6 +154,11 @@ void obs_frontend_set_tbar_position(int position) c->obs_frontend_set_tbar_position(position); } +int obs_frontend_get_tbar_position(void) +{ + return !!callbacks_valid() ? c->obs_frontend_get_tbar_position() : 0; +} + char **obs_frontend_get_scene_collections(void) { if (!callbacks_valid()) diff --git a/UI/obs-frontend-api/obs-frontend-api.h b/UI/obs-frontend-api/obs-frontend-api.h index a336b6e18..d153cffcf 100644 --- a/UI/obs-frontend-api/obs-frontend-api.h +++ b/UI/obs-frontend-api/obs-frontend-api.h @@ -53,6 +53,8 @@ enum obs_frontend_event { OBS_FRONTEND_EVENT_VIRTUALCAM_STARTED, OBS_FRONTEND_EVENT_VIRTUALCAM_STOPPED, + + OBS_FRONTEND_EVENT_TBAR_VALUE_CHANGED, }; /* ------------------------------------------------------------------------- */ @@ -106,6 +108,7 @@ EXPORT int obs_frontend_get_transition_duration(void); EXPORT void obs_frontend_set_transition_duration(int duration); EXPORT void obs_frontend_release_tbar(void); EXPORT void obs_frontend_set_tbar_position(int position); +EXPORT int obs_frontend_get_tbar_position(void); EXPORT char **obs_frontend_get_scene_collections(void); EXPORT char *obs_frontend_get_current_scene_collection(void); diff --git a/UI/obs-frontend-api/obs-frontend-internal.hpp b/UI/obs-frontend-api/obs-frontend-internal.hpp index 3b141375a..6f29747e8 100644 --- a/UI/obs-frontend-api/obs-frontend-internal.hpp +++ b/UI/obs-frontend-api/obs-frontend-internal.hpp @@ -25,6 +25,7 @@ struct obs_frontend_callbacks { virtual void obs_frontend_set_transition_duration(int duration) = 0; virtual void obs_frontend_release_tbar(void) = 0; virtual void obs_frontend_set_tbar_position(int position) = 0; + virtual int obs_frontend_get_tbar_position(void) = 0; virtual void obs_frontend_get_scene_collections( std::vector &strings) = 0; diff --git a/UI/window-basic-main-transitions.cpp b/UI/window-basic-main-transitions.cpp index 15a987312..8069858ac 100644 --- a/UI/window-basic-main-transitions.cpp +++ b/UI/window-basic-main-transitions.cpp @@ -840,6 +840,8 @@ void OBSBasic::CreateProgramOptions() tBar->setProperty("themeID", "tBarSlider"); connect(tBar, SIGNAL(sliderMoved(int)), this, SLOT(TBarChanged(int))); + connect(tBar, SIGNAL(valueChanged(int)), this, + SLOT(on_tbar_position_valueChanged(int))); connect(tBar, SIGNAL(sliderReleased()), this, SLOT(TBarReleased())); layout->addStretch(0); @@ -993,6 +995,19 @@ void OBSBasic::TBarChanged(int value) (float)value / T_BAR_PRECISION_F); } +int OBSBasic::GetTbarPosition() +{ + return tBar->value(); +} + +void OBSBasic::on_tbar_position_valueChanged(int value) +{ + if (api) { + api->on_event(OBS_FRONTEND_EVENT_TBAR_VALUE_CHANGED); + } + + UNUSED_PARAMETER(value); +} void OBSBasic::on_modeSwitch_clicked() { SetPreviewProgramMode(!IsPreviewProgramMode()); diff --git a/UI/window-basic-main.hpp b/UI/window-basic-main.hpp index b9a378c73..0ee5ec96b 100644 --- a/UI/window-basic-main.hpp +++ b/UI/window-basic-main.hpp @@ -755,6 +755,7 @@ public: void SetService(obs_service_t *service); int GetTransitionDuration(); + int GetTbarPosition(); inline bool IsPreviewProgramMode() const { @@ -955,6 +956,7 @@ private slots: void RemoveTransitionClicked(); void on_transitionProps_clicked(); void on_transitionDuration_valueChanged(int value); + void on_tbar_position_valueChanged(int value); void on_modeSwitch_clicked();