Files
qt5-legatus-legacy/Lts/Plugins/AudioVideoManagement/Gui/AVMenuEdit/avm_choose_menu.cpp
T
2026-08-13 18:33:10 +02:00

129 lines
3.1 KiB
C++
Executable File

/**
* @RDE_HEADER@
* AudioVideoManagement - Menu Struct Edit Dialog
* $Id$
* $HeadURL$
* $Author$
* Created by hjl, SLSE, 2016-10-17
*/
#include "avm_choose_menu.h"
#include "ui_avm_choose_menu.h"
#include <AudioVideoManagement/avm_dtc.h>
#include <AudioVideoManagement/avm.hpp>
#include <AudioVideoManagement/avs_menus.h>
#include <LtsUtilsCore/data_modification_enum.h>
#include <LtsSession/lts_session.h>
namespace AudioVideoManagement
{
ChooseMenu::ChooseMenu(Interface::Dtc *dtc, AvsMenus *avsMenus, QWidget *parent)
: LtsWidgets::LtsDialog(parent, LtsWidgets::ButtonCombination::OkApplyCancel)
, m_dtc(dtc)
, m_avsMenus(avsMenus)
, m_ui(new Ui::ChooseMenuStruct)
, m_logger(getLogger("ChooseMenu"))
{
Q_ASSERT(dtc);
Q_ASSERT(avsMenus);
m_ui->setupUi(this);
connect(dtc, &Interface::Dtc::menuStructChanged, this, &ChooseMenu::onMenuStructChanged);
m_dtc->menuStructs([this](const MenuStruct & menu) { onMenuStructChanged(menu, DataModification::eAdded);});
selectCurrent();
connect(m_ui->cbAudio, &QComboBox::currentTextChanged, this, &ChooseMenu::slotChangesMade);
connect(m_ui->cbVideo, &QComboBox::currentTextChanged, this, &ChooseMenu::slotChangesMade);
setOnlineHelpFilename(QStringLiteral("Situation-Choose_AV_Menu"));
}
//-----------------------------------------------------------------------------
ChooseMenu::~ChooseMenu()
{
delete m_ui;
}
void ChooseMenu::retranslate()
{
translate(m_ui, tr("Choose AV Menu"));
}
//-----------------------------------------------------------------------------
void ChooseMenu::onMenuStructChanged(const MenuStruct &data, DataModification modType)
{
switch (modType)
{
case DataModification::eAdded:
{
if (data.isAudio())
m_ui->cbAudio->addItem(QString::fromStdString(data.name()), data.id());
else
m_ui->cbVideo->addItem(QString::fromStdString(data.name()), data.id());
break;
}
case DataModification::eRemoved:
{
if (data.isAudio())
{
int index = m_ui->cbAudio->findData(data.id());
m_ui->cbAudio->removeItem(index);
}
else
{
int index = m_ui->cbVideo->findData(data.id());
m_ui->cbVideo->removeItem(index);
}
break;
}
case DataModification::eModified:
break;
}
}
//-----------------------------------------------------------------------------
bool ChooseMenu::apply()
{
int menuId = m_ui->cbAudio->currentData().toInt();
INFO_LOG(m_logger) << "MenuId Audio: " << menuId;
m_avsMenus->setAnnouncementMenu(menuId);
menuId = m_ui->cbVideo->currentData().toInt();
INFO_LOG(m_logger) << "MenuId Video: " << menuId;
m_avsMenus->setVideoMenu(menuId);
return true;
}
void ChooseMenu::selectCurrent()
{
selectMenu(m_avsMenus->currentAnnouncementMenu(), m_ui->cbAudio);
selectMenu(m_avsMenus->currentVideoMenu(), m_ui->cbVideo);
}
void ChooseMenu::selectMenu(int menuId, QComboBox *cb)
{
Q_ASSERT(cb);
if (menuId < 0)
return;
int index = cb->findData(menuId);
if (index < 0)
return;
cb->setCurrentIndex(index);
}
//-----------------------------------------------------------------------------
} // namespace AudioVideoManagement