/
githubmirror
/
obs-studio
Обзор
Документация
Войти
/
githubmirror
/
obs-studio
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
32.1.1
frontend/components/DeviceCaptureToolbar.cpp
58 строк
1 KB
PatTheMav
frontend: Split Qt UI component into single file per C++ class
08 янв 2025, 17:36
08 янв 2025, 17:36
f4fe30a
Код
Авторство
О чём код?
#include "DeviceCaptureToolbar.hpp" #include "ui_device-select-toolbar.h" #include "moc_DeviceCaptureToolbar.cpp" DeviceCaptureToolbar::DeviceCaptureToolbar(QWidget *parent, OBSSource source) : QWidget(parent), weakSource(OBSGetWeakRef(source)), ui(new Ui_DeviceSelectToolbar) { ui->setupUi(this); delete ui->deviceLabel; delete ui->device; ui->deviceLabel = nullptr; ui->device = nullptr; OBSDataAutoRelease settings = obs_source_get_settings(source); active = obs_data_get_bool(settings, "active"); obs_module_t *mod = obs_get_module("win-dshow"); if (!mod) return; activateText = obs_module_get_locale_text(mod, "Activate"); deactivateText = obs_module_get_locale_text(mod, "Deactivate"); ui->activateButton->setText(active ? deactivateText : activateText); } DeviceCaptureToolbar::~DeviceCaptureToolbar() {} void DeviceCaptureToolbar::on_activateButton_clicked() { OBSSource source = OBSGetStrongRef(weakSource); if (!source) { return; } OBSDataAutoRelease settings = obs_source_get_settings(source); bool now_active = obs_data_get_bool(settings, "active"); bool desyncedSetting = now_active != active; active = !active; const char *text = active ? deactivateText : activateText; ui->activateButton->setText(text); if (desyncedSetting) { return; } calldata_t cd = {}; calldata_set_bool(&cd, "active", active); proc_handler_t *ph = obs_source_get_proc_handler(source); proc_handler_call(ph, "activate", &cd); calldata_free(&cd); }