From 50545e7f83fa44833b273eabc470a9ebad6b3564 Mon Sep 17 00:00:00 2001 From: WarmUpTill Date: Sat, 10 Oct 2020 01:57:59 +0200 Subject: [PATCH] audio delete --- src/headers/switch-audio.hpp | 2 ++ src/headers/switch-generic.hpp | 4 +-- src/switch-audio.cpp | 57 ++++++++++++---------------------- 3 files changed, 24 insertions(+), 39 deletions(-) diff --git a/src/headers/switch-audio.hpp b/src/headers/switch-audio.hpp index df798420..ae15725d 100644 --- a/src/headers/switch-audio.hpp +++ b/src/headers/switch-audio.hpp @@ -19,6 +19,7 @@ struct AudioSwitch : virtual SceneSwitcherEntry { obs_volmeter_t *volmeter = nullptr; const char *getType() { return "audio"; } + bool initialized(); bool valid(); static void setVolumeLevel(void *data, const float magnitude[MAX_AUDIO_CHANNELS], @@ -48,6 +49,7 @@ class AudioSwitchWidget : public QWidget { public: AudioSwitchWidget(AudioSwitch *s); void UpdateVolmeterSource(); + AudioSwitch& getSwitchData(); private slots: void SceneChanged(const QString &text); diff --git a/src/headers/switch-generic.hpp b/src/headers/switch-generic.hpp index a124003b..f2e1adcb 100644 --- a/src/headers/switch-generic.hpp +++ b/src/headers/switch-generic.hpp @@ -7,14 +7,14 @@ struct SceneSwitcherEntry { OBSWeakSource transition = nullptr; bool usePreviousScene = false; + virtual const char *getType() = 0; + virtual bool initialized() { return scene && transition; } virtual bool valid() { return (usePreviousScene || WeakSourceValid(scene)) && WeakSourceValid(transition); } - virtual const char *getType() = 0; - // TODO //virtual bool checkMatch() = 0; diff --git a/src/switch-audio.cpp b/src/switch-audio.cpp index e369e5a3..e0633a6c 100644 --- a/src/switch-audio.cpp +++ b/src/switch-audio.cpp @@ -11,26 +11,6 @@ void SceneSwitcher::on_audioSwitches_currentRowChanged(int idx) if (idx == -1) return; - QListWidgetItem *item = ui->audioSwitches->item(idx); - - QString audioScenestr = item->data(Qt::UserRole).toString(); - - std::lock_guard lock(switcher->m); - for (auto &s : switcher->audioSwitches) { - if (audioScenestr.compare(s.audioSwitchStr.c_str()) == 0) { - QString sceneName = GetWeakSourceName(s.scene).c_str(); - QString audioSrouceName = - GetWeakSourceName(s.audioSource).c_str(); - QString transitionName = - GetWeakSourceName(s.transition).c_str(); - ui->audioScenes->setCurrentText(sceneName); - ui->audioTransitions->setCurrentText(transitionName); - ui->audioSources->setCurrentText(audioSrouceName); - ui->audioVolumeThreshold->setValue(s.volumeThreshold); - volMeter->GetSlider()->setValue(s.volumeThreshold); - break; - } - } } void SceneSwitcher::on_audioSources_currentTextChanged(const QString &text) @@ -81,12 +61,13 @@ int SceneSwitcher::audioFindByData(const QString &source, const int &volume) void SceneSwitcher::on_audioAdd_clicked() { std::lock_guard lock(switcher->m); - switcher->audioSwitches.emplace_back(AudioSwitch()); + switcher->audioSwitches.emplace_back(); QListWidgetItem *item; item = new QListWidgetItem(ui->audioSwitches); ui->audioSwitches->addItem(item); - AudioSwitchWidget *sw = new AudioSwitchWidget(&switcher->audioSwitches.back()); + AudioSwitchWidget *sw = + new AudioSwitchWidget(&switcher->audioSwitches.back()); item->setSizeHint(sw->minimumSizeHint()); ui->audioSwitches->setItemWidget(item, sw); } @@ -97,21 +78,11 @@ void SceneSwitcher::on_audioRemove_clicked() if (!item) return; - std::string text = - item->data(Qt::UserRole).toString().toUtf8().constData(); - { std::lock_guard lock(switcher->m); + int idx = ui->audioSwitches->currentRow(); auto &switches = switcher->audioSwitches; - - for (auto it = switches.begin(); it != switches.end(); ++it) { - auto &s = *it; - - if (s.audioSwitchStr == text) { - switches.erase(it); - break; - } - } + switches.erase(switches.begin() + idx); } delete item; @@ -301,10 +272,16 @@ void AudioSwitch::resetVolmeter() obs_source_release(as); } +bool AudioSwitch::initialized() +{ + return audioSource && SceneSwitcherEntry::initialized(); +} + bool AudioSwitch::valid() { - return (usePreviousScene || WeakSourceValid(scene)) && - WeakSourceValid(audioSource) && WeakSourceValid(transition); + return !initialized() || + ((usePreviousScene || WeakSourceValid(scene)) && + WeakSourceValid(audioSource) && WeakSourceValid(transition)); } inline AudioSwitch::AudioSwitch(OBSWeakSource scene_, OBSWeakSource transition_, @@ -471,6 +448,7 @@ AudioSwitchWidget::AudioSwitchWidget(AudioSwitch *s) void AudioSwitchWidget::SceneChanged(const QString &text) { + // WRONG SIGNAL! if (loading || !switchData) return; std::lock_guard lock(switcher->m); @@ -497,12 +475,17 @@ void AudioSwitchWidget::UpdateVolmeterSource() volMeter->GetSlider()->setValue(switchData->volumeThreshold); } +AudioSwitch &AudioSwitchWidget::getSwitchData() +{ + return *switchData; +} + void AudioSwitchWidget::TransitionChanged(const QString &text) { if (loading || !switchData) return; std::lock_guard lock(switcher->m); - switchData->transition = GetWeakSourceByQString(text); + switchData->transition = GetWeakTransitionByQString(text); } void AudioSwitchWidget::SourceChanged(const QString &text)