From 17f4277f9de2ff98395396bfc2e24b4a81184ac3 Mon Sep 17 00:00:00 2001 From: cg2121 Date: Fri, 2 Feb 2024 12:24:59 -0600 Subject: [PATCH] Rename SoundData to MediaData --- CMakeLists.txt | 4 +-- src/media-data.cpp | 72 ++++++++++++++++++++++++++++++++++++++++++++++ src/media-data.hpp | 31 ++++++++++++++++++++ src/sound-data.cpp | 71 --------------------------------------------- src/sound-data.hpp | 31 -------------------- src/soundboard.cpp | 58 ++++++++++++++++++------------------- 6 files changed, 134 insertions(+), 133 deletions(-) create mode 100644 src/media-data.cpp create mode 100644 src/media-data.hpp delete mode 100644 src/sound-data.cpp delete mode 100644 src/sound-data.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 19666d7..ed71872 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -39,8 +39,8 @@ target_sources( src/soundboard.cpp src/soundboard.hpp src/Soundboard.ui - src/sound-data.cpp - src/sound-data.hpp + src/media-data.cpp + src/media-data.hpp src/SoundEdit.ui src/volume-control.cpp src/volume-control.hpp) diff --git a/src/media-data.cpp b/src/media-data.cpp new file mode 100644 index 0000000..f43e2fa --- /dev/null +++ b/src/media-data.cpp @@ -0,0 +1,72 @@ +#include "media-data.hpp" + +std::vector MediaData::mediaItems; + +MediaData::MediaData(const QString &name_, const QString &path_, bool loop_) + : name(name_), path(path_), loop(loop_) +{ + mediaItems.emplace_back(this); +} + +MediaData::~MediaData() +{ + obs_hotkey_unregister(hotkey); + mediaItems.erase(std::remove(mediaItems.begin(), mediaItems.end(), + this), + mediaItems.end()); +} + +QString MediaData::GetName(const MediaData &media) +{ + return media.name; +} + +QString MediaData::GetPath(const MediaData &media) +{ + return media.path; +} + +obs_hotkey_id MediaData::GetHotkey(const MediaData &media) +{ + return media.hotkey; +} + +void MediaData::SetName(MediaData &media, const QString &newName) +{ + media.name = newName; +} + +void MediaData::SetPath(MediaData &media, const QString &newPath) +{ + media.path = newPath; +} + +void MediaData::SetHotkey(MediaData &media, const obs_hotkey_id &hotkey) +{ + media.hotkey = hotkey; +} + +MediaData *MediaData::FindMediaByName(const QString &name) +{ + for (auto &media : mediaItems) { + if (media->name == name) + return media; + } + + return nullptr; +} + +void MediaData::SetLoopingEnabled(MediaData &media, bool loop) +{ + media.loop = loop; +} + +bool MediaData::LoopingEnabled(const MediaData &media) +{ + return media.loop; +} + +std::vector MediaData::GetMedia() +{ + return mediaItems; +} diff --git a/src/media-data.hpp b/src/media-data.hpp new file mode 100644 index 0000000..f860f3e --- /dev/null +++ b/src/media-data.hpp @@ -0,0 +1,31 @@ +#pragma once + +#include "obs.hpp" +#include +#include + +class MediaData { +private: + static std::vector mediaItems; + QString name = ""; + QString path = ""; + obs_hotkey_id hotkey = OBS_INVALID_HOTKEY_ID; + bool loop = false; + +public: + MediaData(const QString &name_, const QString &path_, bool loop_); + ~MediaData(); + + static void SetName(MediaData &media, const QString &newName); + static void SetPath(MediaData &media, const QString &newPath); + static void SetHotkey(MediaData &media, const obs_hotkey_id &hotkey); + + static QString GetName(const MediaData &media); + static QString GetPath(const MediaData &media); + static obs_hotkey_id GetHotkey(const MediaData &media); + static MediaData *FindMediaByName(const QString &name); + + static void SetLoopingEnabled(MediaData &media, bool loop); + static bool LoopingEnabled(const MediaData &media); + static std::vector GetMedia(); +}; diff --git a/src/sound-data.cpp b/src/sound-data.cpp deleted file mode 100644 index 9c5cac0..0000000 --- a/src/sound-data.cpp +++ /dev/null @@ -1,71 +0,0 @@ -#include "sound-data.hpp" - -std::vector SoundData::sounds; - -SoundData::SoundData(const QString &name_, const QString &path_, bool loop_) - : name(name_), path(path_), loop(loop_) -{ - sounds.emplace_back(this); -} - -SoundData::~SoundData() -{ - obs_hotkey_unregister(hotkey); - sounds.erase(std::remove(sounds.begin(), sounds.end(), this), - sounds.end()); -} - -QString SoundData::GetName(const SoundData &sound) -{ - return sound.name; -} - -QString SoundData::GetPath(const SoundData &sound) -{ - return sound.path; -} - -obs_hotkey_id SoundData::GetHotkey(const SoundData &sound) -{ - return sound.hotkey; -} - -void SoundData::SetName(SoundData &sound, const QString &newName) -{ - sound.name = newName; -} - -void SoundData::SetPath(SoundData &sound, const QString &newPath) -{ - sound.path = newPath; -} - -void SoundData::SetHotkey(SoundData &sound, const obs_hotkey_id &hotkey) -{ - sound.hotkey = hotkey; -} - -SoundData *SoundData::FindSoundByName(const QString &name) -{ - for (auto &sound : sounds) { - if (sound->name == name) - return sound; - } - - return nullptr; -} - -void SoundData::SetLoopingEnabled(SoundData &sound, bool loop) -{ - sound.loop = loop; -} - -bool SoundData::LoopingEnabled(const SoundData &sound) -{ - return sound.loop; -} - -std::vector SoundData::GetSounds() -{ - return sounds; -} diff --git a/src/sound-data.hpp b/src/sound-data.hpp deleted file mode 100644 index 8c8d27c..0000000 --- a/src/sound-data.hpp +++ /dev/null @@ -1,31 +0,0 @@ -#pragma once - -#include "obs.hpp" -#include -#include - -class SoundData { -private: - static std::vector sounds; - QString name = ""; - QString path = ""; - obs_hotkey_id hotkey = OBS_INVALID_HOTKEY_ID; - bool loop = false; - -public: - SoundData(const QString &name_, const QString &path_, bool loop_); - ~SoundData(); - - static void SetName(SoundData &sound, const QString &newName); - static void SetPath(SoundData &sound, const QString &newPath); - static void SetHotkey(SoundData &sound, const obs_hotkey_id &hotkey); - - static QString GetName(const SoundData &sound); - static QString GetPath(const SoundData &sound); - static obs_hotkey_id GetHotkey(const SoundData &sound); - static SoundData *FindSoundByName(const QString &name); - - static void SetLoopingEnabled(SoundData &sound, bool loop); - static bool LoopingEnabled(const SoundData &sound); - static std::vector GetSounds(); -}; diff --git a/src/soundboard.cpp b/src/soundboard.cpp index 1e3f816..dd0df86 100644 --- a/src/soundboard.cpp +++ b/src/soundboard.cpp @@ -20,7 +20,7 @@ #include #include -#include +#include #define QT_UTF8(str) QString::fromUtf8(str, -1) #define QT_TO_UTF8(str) str.toUtf8().constData() @@ -53,7 +53,7 @@ void SoundEdit::on_browseButton_clicked() static bool NameExists(const QString &name) { - if (SoundData::FindSoundByName(name)) + if (MediaData::FindMediaByName(name)) return true; return false; @@ -293,17 +293,17 @@ obs_data_array_t *Soundboard::SaveSounds() for (int i = 0; i < ui->soundList->count(); i++) { QListWidgetItem *item = ui->soundList->item(i); - SoundData *sound = SoundData::FindSoundByName(item->text()); + MediaData *sound = MediaData::FindMediaByName(item->text()); OBSDataAutoRelease d = obs_data_create(); obs_data_set_string(d, "name", - QT_TO_UTF8(SoundData::GetName(*sound))); + QT_TO_UTF8(MediaData::GetName(*sound))); obs_data_set_string(d, "path", - QT_TO_UTF8(SoundData::GetPath(*sound))); - obs_data_set_bool(d, "loop", SoundData::LoopingEnabled(*sound)); + QT_TO_UTF8(MediaData::GetPath(*sound))); + obs_data_set_bool(d, "loop", MediaData::LoopingEnabled(*sound)); OBSDataArrayAutoRelease hotkeyArray = - obs_hotkey_save(SoundData::GetHotkey(*sound)); + obs_hotkey_save(MediaData::GetHotkey(*sound)); obs_data_set_array(d, "sound_hotkey", hotkeyArray); obs_data_array_push_back(soundArray, d); @@ -492,7 +492,7 @@ void Soundboard::ClearSoundboard() item = nullptr; } - std::vector sounds = SoundData::GetSounds(); + std::vector sounds = MediaData::GetMedia(); for (auto &sound : sounds) { delete sound; @@ -514,17 +514,17 @@ void Soundboard::PlaySound(const QString &name) return; } - SoundData *sound = SoundData::FindSoundByName(name); + MediaData *sound = MediaData::FindMediaByName(name); if (!sound) return; QListWidgetItem *item = FindItem(ui->soundList, name); - QString path = SoundData::GetPath(*sound); + QString path = MediaData::GetPath(*sound); OBSDataAutoRelease settings = obs_data_create(); obs_data_set_bool(settings, "looping", - SoundData::LoopingEnabled(*sound)); + MediaData::LoopingEnabled(*sound)); obs_data_set_string(settings, "local_file", QT_TO_UTF8(path)); obs_data_set_bool(settings, "is_local_file", true); obs_source_update(source, settings); @@ -535,7 +535,7 @@ void Soundboard::PlaySound(const QString &name) static void PlaySoundHotkey(void *data, obs_hotkey_id, obs_hotkey_t *, bool pressed) { - SoundData *sound = static_cast(data); + MediaData *sound = static_cast(data); QMainWindow *window = (QMainWindow *)obs_frontend_get_main_window(); Soundboard *sb = window->findChild("Soundboard"); @@ -543,7 +543,7 @@ static void PlaySoundHotkey(void *data, obs_hotkey_id, obs_hotkey_t *, if (pressed) QMetaObject::invokeMethod(sb, "PlaySound", Qt::AutoConnection, Q_ARG(QString, - SoundData::GetName(*sound))); + MediaData::GetName(*sound))); } void Soundboard::AddSound(const QString &name, const QString &path, bool loop, @@ -554,18 +554,18 @@ void Soundboard::AddSound(const QString &name, const QString &path, bool loop, QListWidgetItem *item = new QListWidgetItem(name); - SoundData *sound = new SoundData(name, path, loop); + MediaData *sound = new MediaData(name, path, loop); QString hotkeyName = QTStr("SoundHotkey").arg(name); obs_hotkey_id hotkey = obs_hotkey_register_frontend( QT_TO_UTF8(hotkeyName), QT_TO_UTF8(hotkeyName), PlaySoundHotkey, sound); - SoundData::SetHotkey(*sound, hotkey); + MediaData::SetHotkey(*sound, hotkey); if (settings) { OBSDataArrayAutoRelease hotkeyArray = obs_data_get_array(settings, "sound_hotkey"); - obs_hotkey_load(SoundData::GetHotkey(*sound), hotkeyArray); + obs_hotkey_load(MediaData::GetHotkey(*sound), hotkeyArray); } ui->soundList->addItem(item); @@ -583,16 +583,16 @@ void Soundboard::EditSound(const QString &newName, const QString &newPath, if (!si) return; - SoundData *sound = SoundData::FindSoundByName(si->text()); + MediaData *sound = MediaData::FindMediaByName(si->text()); - SoundData::SetPath(*sound, newPath); - SoundData::SetName(*sound, newName); - SoundData::SetLoopingEnabled(*sound, loop); + MediaData::SetPath(*sound, newPath); + MediaData::SetName(*sound, newName); + MediaData::SetLoopingEnabled(*sound, loop); si->setText(newName); QString hotkeyName = QTStr("SoundHotkey").arg(newName); - obs_hotkey_id hotkey = SoundData::GetHotkey(*sound); + obs_hotkey_id hotkey = MediaData::GetHotkey(*sound); obs_hotkey_set_name(hotkey, QT_TO_UTF8(hotkeyName)); obs_hotkey_set_description(hotkey, QT_TO_UTF8(hotkeyName)); PlaySound(""); @@ -640,10 +640,10 @@ void Soundboard::on_actionEditSound_triggered() edit.ui->advAudioLayout->addWidget(&advAudio); edit.editMode = true; - SoundData *sound = SoundData::FindSoundByName(si->text()); - edit.ui->nameEdit->setText(SoundData::GetName(*sound)); - edit.ui->fileEdit->setText(SoundData::GetPath(*sound)); - edit.ui->loop->setChecked(SoundData::LoopingEnabled(*sound)); + MediaData *sound = MediaData::FindMediaByName(si->text()); + edit.ui->nameEdit->setText(MediaData::GetName(*sound)); + edit.ui->fileEdit->setText(MediaData::GetPath(*sound)); + edit.ui->loop->setChecked(MediaData::LoopingEnabled(*sound)); edit.adjustSize(); edit.exec(); @@ -676,7 +676,7 @@ void Soundboard::on_actionRemoveSound_triggered() if (reply == QMessageBox::No) return; - SoundData *sound = SoundData::FindSoundByName(si->text()); + MediaData *sound = MediaData::FindMediaByName(si->text()); if (!sound) return; @@ -723,9 +723,9 @@ void Soundboard::DuplicateSound() if (!si) return; - SoundData *sound = SoundData::FindSoundByName(si->text()); - AddSound(GetDefaultString(SoundData::GetName(*sound)), - SoundData::GetPath(*sound), SoundData::LoopingEnabled(*sound)); + MediaData *sound = MediaData::FindMediaByName(si->text()); + AddSound(GetDefaultString(MediaData::GetName(*sound)), + MediaData::GetPath(*sound), MediaData::LoopingEnabled(*sound)); } void Soundboard::on_soundList_customContextMenuRequested(const QPoint &pos)