1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
#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);
}
|