Initial commit
This commit is contained in:
commit
b7d90b9afe
16245 files changed
+3396666
No files matched your search
@@ -0,0 +1,145 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* The MvsModel provices data for TrainingVoiceCommunicationDialog
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
* Created by Hannes Baeuerle, SLSE, 2017-07-24
|
||||
*/
|
||||
|
||||
#include "avm_mvs_dialog.h"
|
||||
#include <FileManagement/flm_translation.h>
|
||||
|
||||
#include <QJsonArray>
|
||||
#include <QJsonObject>
|
||||
#include <QJsonDocument>
|
||||
|
||||
namespace AudioVideoManagement
|
||||
{
|
||||
|
||||
MvsModel::MvsModel(QObject *parent)
|
||||
: LtsAbstractTableModel<AudioVideoManagement::VideoTeam>(
|
||||
{
|
||||
tr("Video Team Name"),
|
||||
tr("Stream Name")
|
||||
}, parent)
|
||||
, m_exerciseId(-1)
|
||||
, m_logger(getLogger("MvsModel"))
|
||||
{}
|
||||
|
||||
QVariant MvsModel::data(const QModelIndex &index, int role) const
|
||||
{
|
||||
if (role != Qt::DisplayRole || !indexIsValid(index))
|
||||
return QVariant();
|
||||
|
||||
const AudioVideoManagement::VideoTeam &config = m_vecData.at(index.row());
|
||||
|
||||
switch (index.column())
|
||||
{
|
||||
case CHANNEL:
|
||||
return QString::fromStdString(m_videoTeams.value(config.id()).name());
|
||||
case STREAM_NAME:
|
||||
return QString::fromStdString(config.streamName());
|
||||
}
|
||||
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
bool MvsModel::init(int32_t exerciseId, const std::shared_ptr<AudioVideoManagement::Interface::Dtc> &avmDtc)
|
||||
{
|
||||
m_avmDtc = avmDtc;
|
||||
m_exerciseId = exerciseId;
|
||||
|
||||
m_videoTeams = avmDtc->videoTeams();
|
||||
|
||||
connect(m_avmDtc.get(), &AudioVideoManagement::Interface::Dtc::videoTeamChanged,
|
||||
this, [this](const AudioVideoManagement::VideoTeam & data, DataModification modType)
|
||||
{
|
||||
Q_UNUSED(modType);
|
||||
|
||||
if (data.exerciseId() == m_exerciseId)
|
||||
onDataChanged(data, DataModification::eAdded);
|
||||
else
|
||||
onDataChanged(data, DataModification::eRemoved);
|
||||
}
|
||||
);
|
||||
|
||||
QVector<AudioVideoManagement::VideoTeam> configs;
|
||||
const QMap<int, AudioVideoManagement::VideoTeam> configMap = m_avmDtc->videoTeams();
|
||||
for (auto it = configMap.begin(); it != configMap.end(); ++it)
|
||||
{
|
||||
if (it.value().exerciseId() == m_exerciseId)
|
||||
configs.append(it.value());
|
||||
}
|
||||
setData(configs);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
QByteArray MvsModel::modelToJson()
|
||||
{
|
||||
QJsonObject obj;
|
||||
QJsonArray arr;
|
||||
obj[QStringLiteral("XmlType")] = FileManagement::toString(FileManagement::XmlType::AVMMvsDialog);
|
||||
|
||||
for (int row = 0; row < rowCount(); row++)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << "row =" << ": " << row;
|
||||
QJsonObject inner;
|
||||
const VideoTeam &config = m_vecData.at(row);
|
||||
inner[QStringLiteral("id")] = config.id();
|
||||
inner[QStringLiteral("exerciseId")] = config.exerciseId();
|
||||
inner[QStringLiteral("name")] = QString::fromStdString(config.name());
|
||||
inner[QStringLiteral("streamName")] = QString::fromStdString(config.streamName());
|
||||
arr += inner;
|
||||
}
|
||||
|
||||
obj[QStringLiteral("videoTeams")] = arr;
|
||||
QJsonDocument doc(obj);
|
||||
return doc.toJson(QJsonDocument::Compact);
|
||||
}
|
||||
|
||||
QVector<VideoTeamModifyRequest> MvsModel::jsonToVideoTeamVector(const QByteArray &content)
|
||||
{
|
||||
// already checked that content is not empty, parseable and contains proper XmlType (AVMMvsDialog)
|
||||
QVector<VideoTeamModifyRequest> result;
|
||||
const QJsonDocument doc(QJsonDocument::fromJson(content));
|
||||
const QJsonObject obj(doc.object());
|
||||
const QJsonArray arr(obj.value(QStringLiteral("videoTeams")).toArray());
|
||||
for (const auto &ele : arr)
|
||||
{
|
||||
const QJsonObject obj(ele.toObject());
|
||||
int id = obj[QStringLiteral("id")].toInt(); //TODO Library: check id = 0?
|
||||
if (id <= 0)
|
||||
return QVector<VideoTeamModifyRequest>();
|
||||
|
||||
const VideoTeam team = m_avmDtc->videoTeam(id);
|
||||
if (!m_avmDtc->isFreeVideoTeam(m_exerciseId, id))
|
||||
continue;
|
||||
|
||||
VideoTeamModifyRequest config;
|
||||
config.id(id);
|
||||
config.name(team.name());
|
||||
config.ssrc(team.ssrc());
|
||||
config.vtPort(team.vtPort());
|
||||
config.exerciseId(m_exerciseId);
|
||||
config.streamName(obj[QStringLiteral("streamName")].toString().toStdString());
|
||||
|
||||
INFO_LOG(m_logger) << "insertRow: " << config.name()
|
||||
<< " VideoTeamId=" << config.id();
|
||||
result.append(std::move(config));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
bool MvsModel::isFiltered(const VideoTeam &data, DataModification modType) const
|
||||
{
|
||||
|
||||
Q_UNUSED(modType)
|
||||
if (data.exerciseId() != m_exerciseId)
|
||||
return true;
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
} //namespace AudioVideoManagement
|
||||
Reference in new issue
Block a user