/** * @RDE_HEADER@ * Helper class for SoundAreas. * $Id$ * $HeadURL$ * $Author$ * Created by Filip Biedziak, NLE, 2020-08-10 */ #include "efm_sound_area_helper.h" #include "../logger.h" #include #include namespace EffectManagement { //============================================================================================================================= // SOUNDMANAGEMENTHELPER //============================================================================================================================= SoundAreaHelper::SoundAreaHelper(SoundAreaHelper *helper) : m_ismDtc(helper->ismDtc()) , m_somDtc(helper->somDtc()) , m_logger(getLogger("Plugins.Gui.SoundArea.Helper")) { QMap assets = m_ismDtc->instrumentationAssets(); for (const auto &asset : qAsConst(assets)) if (asset.mountingPointTypeId() == InfrastructureManagement::MountingPointType_def::EffectGenerationControlUnit) m_egcuNames.insert(asset.id(), QString::fromStdString(asset.name())); SoundManagement::Sounds sounds = m_somDtc->sounds(); for (const auto &sound : qAsConst(sounds.sounds())) m_soundDuration.insert(SoundKey(sound.category().underlying(), sound.soundId()), sound.duration()); } SoundAreaHelper::SoundAreaHelper(std::shared_ptr &ismDtc, std::shared_ptr &somDtc) : m_ismDtc(ismDtc) , m_somDtc(somDtc) , m_logger(getLogger("Plugins.Gui.SoundArea.Helper")) { QMap assets = m_ismDtc->instrumentationAssets(); for (const auto &asset : qAsConst(assets)) if (asset.mountingPointTypeId() == InfrastructureManagement::MountingPointType_def::EffectGenerationControlUnit) m_egcuNames.insert(asset.id(), QString::fromStdString(asset.name())); SoundManagement::Sounds sounds = m_somDtc->sounds(); for (const auto &sound : qAsConst(sounds.sounds())) m_soundDuration.insert(SoundKey(sound.category().underlying(), sound.soundId()), sound.duration()); } //----------------------------------------------------------------------------------------------------------------------------- // PUBLIC MEMBER FUNCTIONS //----------------------------------------------------------------------------------------------------------------------------- QVector SoundAreaHelper::soundCategories() { QVector categories = QVector { SoundManagement::SoundCategory_def::Aircraft, SoundManagement::SoundCategory_def::Battlefield, SoundManagement::SoundCategory_def::Boat, SoundManagement::SoundCategory_def::Explosion, SoundManagement::SoundCategory_def::Helicopter, SoundManagement::SoundCategory_def::MotorsAndUrbanTraffic, SoundManagement::SoundCategory_def::Vehicle, SoundManagement::SoundCategory_def::InsideBuilding }; return categories; } QString SoundAreaHelper::categoryName(SoundManagement::SoundCategory category) { switch (category.underlying()) { case SoundManagement::SoundCategory_def::Aircraft: return QStringLiteral("Aircraft"); case SoundManagement::SoundCategory_def::Battlefield: return QStringLiteral("Battlefield"); case SoundManagement::SoundCategory_def::Boat: return QStringLiteral("Boat"); case SoundManagement::SoundCategory_def::Explosion: return QStringLiteral("Explosion"); case SoundManagement::SoundCategory_def::Helicopter: return QStringLiteral("Helicopter"); case SoundManagement::SoundCategory_def::MotorsAndUrbanTraffic: return QStringLiteral("MotorsAndUrbanTraffic"); case SoundManagement::SoundCategory_def::Vehicle: return QStringLiteral("Vehicle"); case SoundManagement::SoundCategory_def::InsideBuilding: return QStringLiteral("InsideBuilding"); case SoundManagement::SoundCategory_def::Unknown: return QStringLiteral("Unknown"); default: return QString(); } // switch } QString SoundAreaHelper::categoryName(const int32_t &category) { return categoryName(soundCategory(category)); } QString SoundAreaHelper::soundName(SoundManagement::SoundCategory category, const int &id) { switch (category.underlying()) { case SoundManagement::SoundCategory_def::Aircraft: switch (id) { case 1: return QStringLiteral("Jet_Pass_by_Military"); case 2: return QStringLiteral("Military_Aircraft_Fires"); case 3: return QStringLiteral("Military_Aircraft_Fly_By"); case 4: return QStringLiteral("Military_Airplane_Drops"); default: return QStringLiteral("Error"); } // switch case SoundManagement::SoundCategory_def::Battlefield: switch (id) { case 1: return QStringLiteral("Battlefield_Ambience_Noise"); case 2: return QStringLiteral("Battlefield_Ambience_Tank"); case 3: return QStringLiteral("Battlefield_Ambience_War"); case 4: return QStringLiteral("Explosions_Battlefield"); case 5: return QStringLiteral("Explosions_Battlefield_1"); case 6: return QStringLiteral("Ground_Battle_with_Machine_Guns"); case 7: return QStringLiteral("Modern_Battlefield"); default: return QStringLiteral("Error"); } // switch case SoundManagement::SoundCategory_def::Boat: switch (id) { default: return QStringLiteral("Error"); } // switch case SoundManagement::SoundCategory_def::Explosion: switch (id) { case 1: return QStringLiteral("Explosion_Building_Crash"); default: return QStringLiteral("Error"); } // switch case SoundManagement::SoundCategory_def::Helicopter: switch (id) { case 1: return QStringLiteral("Helicopter_Crash"); case 2: return QStringLiteral("Helicopter_Fly_Overhead"); case 3: return QStringLiteral("Helicopter_Landing"); case 4: return QStringLiteral("Helicopter_Pass_by_Military"); case 5: return QStringLiteral("Helicopter_Take_off"); default: return QStringLiteral("Error"); } // switch case SoundManagement::SoundCategory_def::MotorsAndUrbanTraffic: switch (id) { case 1: return QStringLiteral("Big_City_Street_Traffic"); case 2: return QStringLiteral("City_Crossroads_Traffic"); case 3: return QStringLiteral("City_Street_Heavy_Traffic"); case 4: return QStringLiteral("City_Street_Noisy_Walking"); case 5: return QStringLiteral("Construction_Building_Ambient"); case 6: return QStringLiteral("Demonstration_and_Rioting"); case 7: return QStringLiteral("Noisy_City_Street"); case 8: return QStringLiteral("Stadium_Crowd_Ambient"); case 9: return QStringLiteral("Stadium_Crowd_Applause"); case 10: return QStringLiteral("Traffic_from_Car"); case 11: return QStringLiteral("Muezzincalling"); default: return QStringLiteral("Error"); } // switch case SoundManagement::SoundCategory_def::Vehicle: switch (id) { case 1: return QStringLiteral("Tank_Starting_and_Stopping"); default: return QStringLiteral("Error"); } // switch case SoundManagement::SoundCategory_def::InsideBuilding: switch (id) { case 1: return QStringLiteral("Fire_quietly"); case 2: return QStringLiteral("Fire_a_little_louder"); case 3: return QStringLiteral("Fire_louder"); case 4: return QStringLiteral("Fire_loud"); case 5: return QStringLiteral("Extinguishing_Noise"); case 7: return QStringLiteral("This_Room_is_Destroyed"); case 8: return QStringLiteral("This_Building_is_Destroyed"); default: return QStringLiteral("Error"); } // switch case SoundManagement::SoundCategory_def::Unknown: switch(id) { default: return QStringLiteral("Error"); } // switch default: return QStringLiteral("Error"); } // switch } QString SoundAreaHelper::soundName(const int &category, const int &id) { return soundName(soundCategory(category), id); } int SoundAreaHelper::soundDuration(SoundManagement::SoundCategory category, const int &id) const { return soundDuration(static_cast(category.underlying()), id); } int SoundAreaHelper::soundDuration(const int &category, const int &id) const { SoundKey key{category, id}; return m_soundDuration.contains(key) ? m_soundDuration.value(key) : 0; } QString SoundAreaHelper::egcuName(const int &id) const { return m_egcuNames.contains(id) ? m_egcuNames.value(id) : QString(); } QColor SoundAreaHelper::soundCategoryTextColor(const int32_t &category) { switch (category) { case SoundManagement::SoundCategory_def::Aircraft: return {Qt::white}; case SoundManagement::SoundCategory_def::Battlefield: return {Qt::white}; case SoundManagement::SoundCategory_def::Boat: return {Qt::black}; case SoundManagement::SoundCategory_def::Explosion: return {Qt::white}; case SoundManagement::SoundCategory_def::Helicopter: return {Qt::white}; case SoundManagement::SoundCategory_def::MotorsAndUrbanTraffic: return {Qt::white}; case SoundManagement::SoundCategory_def::Vehicle: return {Qt::black}; case SoundManagement::SoundCategory_def::InsideBuilding: return {Qt::black}; case SoundManagement::SoundCategory_def::Unknown: return {Qt::white}; default: return {Qt::black}; } // switch } QColor SoundAreaHelper::soundCategoryBackgroundColor(const int32_t &category) { switch (category) { case SoundManagement::SoundCategory_def::Aircraft: return QColor::fromRgb( 25, 25, 112); case SoundManagement::SoundCategory_def::Battlefield: return QColor::fromRgb(160, 82, 45); case SoundManagement::SoundCategory_def::Boat: return QColor::fromRgb(127, 255, 212); case SoundManagement::SoundCategory_def::Explosion: return QColor::fromRgb(255, 0, 0); case SoundManagement::SoundCategory_def::Helicopter: return QColor::fromRgb(153, 50, 204); case SoundManagement::SoundCategory_def::MotorsAndUrbanTraffic: return QColor::fromRgb( 85, 107, 47); case SoundManagement::SoundCategory_def::Vehicle: return QColor::fromRgb(255, 255, 0); case SoundManagement::SoundCategory_def::InsideBuilding: return QColor::fromRgb(255, 160, 122); case SoundManagement::SoundCategory_def::Unknown: return QColor::fromRgb(119, 136, 153); default: return {Qt::white}; } // switch } SoundManagement::SoundCategory SoundAreaHelper::soundCategory(const int &i) { switch (i) { case 1: return SoundManagement::SoundCategory_def::Aircraft; case 2: return SoundManagement::SoundCategory_def::Battlefield; case 3: return SoundManagement::SoundCategory_def::Boat; case 4: return SoundManagement::SoundCategory_def::Explosion; case 5: return SoundManagement::SoundCategory_def::Helicopter; case 6: return SoundManagement::SoundCategory_def::MotorsAndUrbanTraffic; case 7: return SoundManagement::SoundCategory_def::Vehicle; case 8: return SoundManagement::SoundCategory_def::InsideBuilding; case 9: default: return SoundManagement::SoundCategory_def::Unknown; } // switch } } // namespace EffectManagement