Files
qt5-legatus-legacy/Lts/Plugins/Timeline/Gui/EventTimeline/tln_utils.cpp
T
2026-08-13 18:33:10 +02:00

366 lines
11 KiB
C++
Executable File

#include "tln_utils.h"
#include "ProjectDataManagement/pdm_translation.h"
#include <QHash>
#include <QCoreApplication> // for translations
namespace Timeline
{
QString eventTypeString(EventType eventType)
{
switch (eventType)
{
case EventType::Hit:
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::Hit);
case EventType::WeaponAssignment:
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::WeaponAssignment);
case EventType::BiteMessage:
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::BiteMessage);
case EventType::FireEvent:
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::FireEvent);
case EventType::HitBuilding:
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::HitBuilding);
case EventType::Manipulation:
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::Manipulation);
case EventType::CameraVideo:
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::CameraVideo);
case EventType::RadioCnr:
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::RadioCnr);
case EventType::RadioTvc:
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::RadioTvc);
case EventType::HitEffectSimulation:
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::HitEffectSimulation);
case EventType::HitMine:
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::HitMine);
case EventType::HitN:
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::HitN);
case EventType::HitC:
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::HitC);
case EventType::EnterDangerArea:
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::EnterDangerArea);
case EventType::LeaveDangerArea:
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::LeaveDangerArea);
case EventType::EnterMineArea:
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::EnterMineArea);
case EventType::LeaveMineArea:
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::LeaveMineArea);
case EventType::CrossBorderline:
return QCoreApplication::translate("EventType", "CrossBorderline"); // NOTE: special since cross local and global borderline have been merged
case EventType::EnterFunctionalArea:
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::EnterFunctionalArea);
case EventType::LeaveFunctionalArea:
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::LeaveFunctionalArea);
case EventType::EnterNuclear:
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::EnterNuclear);
case EventType::LeaveNuclear:
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::LeaveNuclear);
case EventType::HitB:
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::HitB);
case EventType::FriendlyFire:
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::FriendlyFire);
case EventType::HitGasPipe:
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::HitGasPipe);
case EventType::MineArea:
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::MineArea);
case EventType::NContamination:
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::NContamination);
case EventType::BCContamination:
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::BCContamination);
case EventType::DangerArea:
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::DangerArea);
case EventType::FunctionalArea:
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::FunctionalArea);
case EventType::MineCorridor:
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::MineCorridor);
case EventType::Borderline:
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::Borderline);
case EventType::TechnicalArea:
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::TechnicalArea);
case EventType::GasPipe:
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::GasPipe);
case EventType::Sanitation:
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::Sanitation);
case EventType::EquipmentErrorReport:
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::EquipmentErrorReport);
case EventType::EmergencyCall:
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::EmergencyCall);
case EventType::Marker:
return QCoreApplication::translate("EventType", "Marker");
case EventType::Block:
return QCoreApplication::translate("EventType", "Block");
case EventType::Unknown:
default:
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::Unknown);
}
Q_UNREACHABLE();
}
EventType toEventType(int eventType)
{
switch (eventType)
{
case EventType::Hit:
return EventType::Hit;
case EventType::WeaponAssignment:
return EventType::WeaponAssignment;
case EventType::BiteMessage:
return EventType::BiteMessage;
case EventType::FireEvent:
return EventType::FireEvent;
case EventType::HitBuilding:
return EventType::HitBuilding;
case EventType::Manipulation:
return EventType::Manipulation;
case EventType::CameraVideo:
return EventType::CameraVideo;
case EventType::RadioCnr:
return EventType::RadioCnr;
case EventType::RadioTvc:
return EventType::RadioTvc;
case EventType::HitEffectSimulation:
return EventType::HitEffectSimulation;
case EventType::HitMine:
return EventType::HitMine;
case EventType::HitN:
return EventType::HitN;
case EventType::HitC:
return EventType::HitC;
case EventType::EnterDangerArea:
return EventType::EnterDangerArea;
case EventType::LeaveDangerArea:
return EventType::LeaveDangerArea;
case EventType::EnterMineArea:
return EventType::EnterMineArea;
case EventType::LeaveMineArea:
return EventType::LeaveMineArea;
case ProjectDataManagement::EventType_def::CrossLocalBorderline:
case ProjectDataManagement::EventType_def::CrossGlobalBorderline:
return EventType::CrossBorderline;
case EventType::EnterFunctionalArea:
return EventType::EnterFunctionalArea;
case EventType::LeaveFunctionalArea:
return EventType::LeaveFunctionalArea;
case EventType::EnterNuclear:
return EventType::EnterNuclear;
case EventType::LeaveNuclear:
return EventType::LeaveNuclear;
case EventType::HitB:
return EventType::HitB;
case EventType::FriendlyFire:
return EventType::FriendlyFire;
case EventType::HitGasPipe:
return EventType::HitGasPipe;
case EventType::MineArea:
return EventType::MineArea;
case EventType::NContamination:
return EventType::NContamination;
case EventType::BCContamination:
return EventType::BCContamination;
case EventType::DangerArea:
return EventType::DangerArea;
case EventType::FunctionalArea:
return EventType::FunctionalArea;
case EventType::MineCorridor:
return EventType::MineCorridor;
case EventType::Borderline:
return EventType::Borderline;
case EventType::TechnicalArea:
return EventType::TechnicalArea;
case EventType::GasPipe:
return EventType::GasPipe;
case EventType::Sanitation:
return EventType::Sanitation;
case EventType::EquipmentErrorReport:
return EventType::EquipmentErrorReport;
case EventType::EmergencyCall:
return EventType::EmergencyCall;
case EventType::Marker:
return EventType::Marker;
default:
return EventType::Unknown;
}
}
int eventTypeCategory(EventType eventType)
{
switch (eventType)
{
case EventType::Unknown:
case EventType::Marker:
case EventType::Block:
return 0;
case EventType::WeaponAssignment:
case EventType::BiteMessage:
case EventType::FriendlyFire:
case EventType::Manipulation:
case EventType::CrossBorderline:
return 1;
case EventType::FireEvent:
case EventType::Hit:
case EventType::HitBuilding:
case EventType::HitEffectSimulation:
case EventType::HitMine:
case EventType::HitN:
case EventType::HitB:
case EventType::HitC:
case EventType::HitGasPipe:
return 2;
case EventType::EnterDangerArea:
case EventType::LeaveDangerArea:
case EventType::EnterMineArea:
case EventType::LeaveMineArea:
case EventType::EnterFunctionalArea:
case EventType::LeaveFunctionalArea:
case EventType::EnterNuclear:
case EventType::LeaveNuclear:
case EventType::Sanitation:
return 3;
case EventType::CameraVideo:
case EventType::RadioCnr:
case EventType::RadioTvc:
return 5;
case EventType::MineArea:
case EventType::NContamination:
case EventType::BCContamination:
case EventType::DangerArea:
case EventType::FunctionalArea:
case EventType::MineCorridor:
case EventType::Borderline:
case EventType::GasPipe:
return 6;
case EventType::TechnicalArea:
case EventType::EquipmentErrorReport:
case EventType::EmergencyCall:
return 0;
}
Q_UNREACHABLE();
return 0;
}
EventTypes filterEventTypes()
{
static const EventTypes eventTypes = {
EventType::BiteMessage,
EventType::CameraVideo,
EventType::CrossBorderline,
EventType::FireEvent,
EventType::Hit,
EventType::HitBuilding,
EventType::HitEffectSimulation,
EventType::Manipulation,
EventType::Marker,
EventType::RadioCnr,
EventType::RadioTvc,
EventType::WeaponAssignment
};
return eventTypes;
}
bool isAudioEvent(EventType eventType)
{
return eventType == EventType::RadioCnr || eventType == EventType::RadioTvc;
}
bool isVideoEvent(EventType eventType)
{
return eventType == EventType::CameraVideo;
}
bool isAudioVideoEvent(EventType eventType)
{
return isAudioEvent(eventType) || isVideoEvent(eventType);
}
bool isHitEvent(EventType eventType)
{
return eventType == EventType::Hit || eventType == EventType::HitB || eventType == EventType::HitBuilding ||
eventType == EventType::HitC || eventType == EventType::HitGasPipe || eventType == EventType::HitEffectSimulation ||
eventType == EventType::HitMine || eventType == EventType::HitN;
}
bool isParticipantEvent(EventType eventType)
{
return (!isAudioVideoEvent(eventType) && eventType != EventType::HitBuilding);
}
}