160 lines
4.7 KiB
C++
Executable File
160 lines
4.7 KiB
C++
Executable File
/**
|
|
* @RDE_HEADER@
|
|
* AudioVideoManagement - Static Meteo Data Edit Dialog
|
|
* $Id$
|
|
* $HeadURL$
|
|
* $Author$
|
|
* Created by hjl, SLSE, 2016-10-17
|
|
*/
|
|
|
|
#include "avm_menu_edit.h"
|
|
#include "ui_avm_menu_edit.h"
|
|
#include <AudioVideoManagement/avm_dtc.h>
|
|
|
|
namespace AudioVideoManagement
|
|
{
|
|
|
|
MenuEdit::MenuEdit(QWidget *parent)
|
|
: LtsWidgets::LtsDialog(parent, LtsWidgets::ButtonCombination::OkApplyCancel)
|
|
, m_ftc(nullptr)
|
|
, m_ui(new Ui::MenuEdit)
|
|
, m_availStreamsModel(nullptr)
|
|
, m_usedStreamsModel(nullptr)
|
|
, m_isAudio(false)
|
|
, m_logger(getLogger("AudioVideoManagementEdit"))
|
|
, m_requestHelper(new LtsUtils::RequestHelper(this))
|
|
{
|
|
m_ui->setupUi(this);
|
|
|
|
} // end of ctor()
|
|
//-----------------------------------------------------------------------------
|
|
|
|
MenuEdit::~MenuEdit()
|
|
{
|
|
delete m_ui;
|
|
} // end of dtor()
|
|
//-----------------------------------------------------------------------------
|
|
|
|
|
|
void MenuEdit::retranslate()
|
|
{
|
|
if (m_isAudio)
|
|
translate(m_ui, tr("Edit Audio Menu: %1").arg(m_name));
|
|
else
|
|
translate(m_ui, tr("Edit Video Menu: %1").arg(m_name));
|
|
} // end of retranslate()
|
|
//-----------------------------------------------------------------------------
|
|
|
|
|
|
bool MenuEdit::init(LtsSession::LtsSession *session,
|
|
const std::shared_ptr<AudioVideoManagement::Interface::Dtc> &dtc,
|
|
const std::shared_ptr<AudioVideoManagement::Interface::Ftc> &ftc,
|
|
const std::shared_ptr<InfrastructureManagement::Interface::Dtc> &ismDtc,
|
|
StreamNameMapping *streamNameMapping,
|
|
const MenuStruct &ms)
|
|
{
|
|
DEBUG_LOG(m_logger) << "MenuEdit::init()";
|
|
|
|
if (!ftc || !dtc)
|
|
{
|
|
ERROR_LOG(m_logger) << "MenuEdit::init() Invalid shared_ptr!";
|
|
return false;
|
|
}
|
|
|
|
m_ftc = ftc;
|
|
m_isAudio = ms.isAudio();
|
|
m_name = QString::fromStdString(ms.name());
|
|
|
|
m_availStreamsModel = new AvailableStreamsModel(dtc, ismDtc, session, streamNameMapping, this, m_isAudio);
|
|
m_ui->availTreeView->setModel(m_availStreamsModel);
|
|
|
|
m_usedStreamsModel = new UsedStreamsModel(dtc, ismDtc, ms, streamNameMapping, this);
|
|
m_ui->menuTreeView->setModel(m_usedStreamsModel);
|
|
m_ui->menuTreeView->expandAll();
|
|
|
|
connect(m_ui->menuTreeView, &QTreeView::clicked,
|
|
this, &MenuEdit::onStreamSelected);
|
|
connect(m_usedStreamsModel, &UsedStreamsModel::modelDataChanged,
|
|
this, &MenuEdit::slotChangesMade);
|
|
|
|
connect(m_usedStreamsModel, &UsedStreamsModel::modelDataChanged,
|
|
this, &MenuEdit::onModelDataChanged);
|
|
|
|
m_buttonBox->setButtonVisible(LtsWidgets::DialogButton::Remove);
|
|
connect(m_buttonBox->getButton(LtsWidgets::DialogButton::Remove), &QPushButton::clicked,
|
|
this, &MenuEdit::onRemove);
|
|
|
|
onStreamSelected(QModelIndex());
|
|
|
|
// Z. Zt. keine Aufloesung nach Add/Edit verfuegbar
|
|
if (m_isAudio)
|
|
setOnlineHelpFilename(QStringLiteral("Situation-Audio_Menu"));
|
|
else
|
|
setOnlineHelpFilename(QStringLiteral("Situation-Video_Menu"));
|
|
|
|
if (ms.id() <= 0)
|
|
m_buttonBox->setButtonVisible(LtsWidgets::DialogButton::Apply, false);
|
|
|
|
return true;
|
|
} // end of init()
|
|
//-----------------------------------------------------------------------------
|
|
|
|
bool MenuEdit::apply()
|
|
{
|
|
MenuStruct ms = m_usedStreamsModel->getMenuStruct();
|
|
ms.isAudio(m_isAudio);
|
|
|
|
bool ret = m_requestHelper->startSingleRequest([this, ms]()
|
|
{
|
|
// Send modified data via FTC call
|
|
return m_ftc->modifyMenuStructRequest(ms, this);
|
|
});
|
|
|
|
return ret;
|
|
} // end of accept()
|
|
//-----------------------------------------------------------------------------
|
|
|
|
void MenuEdit::onRemove()
|
|
{
|
|
|
|
|
|
if (0 == m_ui->menuTreeView->selectionModel()->selectedIndexes().size())
|
|
{
|
|
|
|
QModelIndex index = m_ui->menuTreeView->currentIndex();
|
|
if (!index.isValid())
|
|
return;
|
|
slotChangesMade();
|
|
|
|
DEBUG_LOG(m_logger) << "index row: " << index.row();
|
|
m_usedStreamsModel->removeRow(index.row(), index.parent()); // TODO: muss hier nicht auch etwas aus dem dds geloescht werden? (mw)
|
|
}
|
|
else
|
|
{
|
|
while (m_ui->menuTreeView->selectionModel()->selectedIndexes().size() > 0)
|
|
{
|
|
QModelIndex index = m_ui->menuTreeView->selectionModel()->selectedIndexes().front();
|
|
if (!index.isValid())
|
|
return;
|
|
slotChangesMade();
|
|
|
|
DEBUG_LOG(m_logger) << "index row: " << index.row();
|
|
m_usedStreamsModel->removeRow(index.row(), index.parent()); // TODO: muss hier nicht auch etwas aus dem dds geloescht werden? (mw)
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
void MenuEdit::onModelDataChanged()
|
|
{
|
|
INFO_LOG(m_logger) << "onModelDataChanged";
|
|
m_ui->menuTreeView->expandAll();
|
|
}
|
|
|
|
void MenuEdit::onStreamSelected(const QModelIndex &idx)
|
|
{
|
|
m_buttonBox->setButtonEnabled(LtsWidgets::DialogButton::Remove, idx.isValid());
|
|
}
|
|
|
|
} // namespace AudioVideoManagement
|