Files
T
torstenandCopilot b774f4035c Qt6 Migration: DDS-Stubs, Logger-Fixes, Export-Header Korrekturen
- NGL_ADD_LIBRARY2: 87 CMakeLists.txt konvertiert für Export-Header Generierung
- 44 Export-Header Include-Pfade korrigiert (_export.h)
- 81 DDS-Stub-Header generiert (*_dtc.h, *_fts.h, *_dts.h, *_ftc.h)
- INGLLogger: Duplikat gelöscht, m_logger Member entfernt, variadische Makros
- Q_FUNC_INFO Redefinition behoben (Qt6 definiert bereits)
- FATAL_LOG Makro hinzugefügt
- InfrastructureManagement DDS-Stubs (ism.hpp, ism_enums.hpp, ism_ftc.h)
- FilterManagement DDS-Stubs (flt_ftc.h, flt_dts.h)
- AreaEffectSimulation DDS-Stubs (aes.hpp, aes_enums.hpp)
- SymbolAppearance Klasse vollständig definiert mit content() Methode
- BuildingComponentFilter Klasse definiert mit Copy-Konstruktor
- Ftc Factory: nullptr Return (abstract class)
- AesFilter Klasse in aes.hpp hinzugefügt
- Dtc Klasse in ppm.hpp mit participantChanged Signal
- AesType Enum: alle 15 At* Werte definiert
- AesEffectState_def: EsReceived hinzugefügt
- DataModification Enum: eAdded/eModified/eRemoved
- function_reply_object.h → core_types.h Include-Pfad (72 Dateien)
- Enum-Class-Streaming Template-Operator in INGLLogger.h
- ism_mounting_point.h: QImage → QtGui/QImage, QGuiApplication/QScreen
- ism_data_plugin_interface.h: QSet Include, Include-Reihenfolge
- QRegExp → QRegularExpression in tpm_js_parser.cpp
- .underlying() Aufrufe zu direktem Enum-Vergleich korrigiert
- Include-Pfade: aes.hpp in symbol_appearance_settings_impl.h und aes_display_filter_impl.h

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-08-19 06:06:24 +02:00

273 lines
9.6 KiB
C++
Executable File

#include "pre_dialog.h"
#include "ui_pre_dialog.h"
#include <Plugins/PresentationManagement/Gui/Common/pre_edit_dialog.h>
#include <Plugins/PresentationManagement/Gui/Common/pre_model.h>
#include <LtsUtilsGuiDds/request_helper.h>
#include <LtsSession/lts_session_data.h>
#include <LtsWidgets/lts_base_layout_widget.h>
#include <QDateTime>
namespace PresentationManagement
{
PresentationManagementDialog::PresentationManagementDialog(QWidget *parent)
: LtsWidgets::LtsDialog(parent, LtsWidgets::ButtonCombination::CloseOnly)
, m_model(new PresentationManagementDialogModel(this))
, m_ui(new Ui::PresentationManagementDialog)
, m_dtc(nullptr)
, m_ftc(nullptr)
, m_requestHelper(new LtsUtils::RequestHelper(this))
{
DEBUG_LOG() << "PresentationManagementDialog ctor";
m_ui->setupUi(this);
}
PresentationManagementDialog::~PresentationManagementDialog()
{
delete m_ui;
}
void PresentationManagementDialog::retranslate()
{
switch (m_modeDialog)
{
case ScriptsDialogMode::modeAdmin:
translate(m_ui, tr("Admin Scripts"));
break;
case ScriptsDialogMode::modeEdit:
translate(m_ui, tr("Edit Scripts"));
break;
case ScriptsDialogMode::modeView:
translate(m_ui, tr("View Scripts"));
break;
}
}
void PresentationManagementDialog::enaDisa()
{
int selected = m_ui->widget->selectedRows().size();
Presentation pre = m_model->getRowData(m_ui->widget->currentIndex().row());
m_buttonBox->setButtonVisible(LtsWidgets::DialogButton::Add, false);
m_buttonBox->setButtonVisible(LtsWidgets::DialogButton::Edit, false);
m_buttonBox->setButtonVisible(LtsWidgets::DialogButton::Remove, false);
m_buttonBox->setButtonVisible(LtsWidgets::DialogButton::Load, false);
m_buttonBox->setButtonVisible(LtsWidgets::DialogButton::Save, false);
if (m_modeDialog == ScriptsDialogMode::modeAdmin)
{
m_buttonBox->setButtonVisible(LtsWidgets::DialogButton::Add, true);
m_buttonBox->setButtonVisible(LtsWidgets::DialogButton::Edit, true);
m_buttonBox->setButtonVisible(LtsWidgets::DialogButton::Remove, true);
m_buttonBox->setButtonVisible(LtsWidgets::DialogButton::Load, true);
m_buttonBox->setButtonVisible(LtsWidgets::DialogButton::Save, true);
}
else if (m_modeDialog == ScriptsDialogMode::modeEdit)
{
m_buttonBox->setButtonVisible(LtsWidgets::DialogButton::Add, true);
m_buttonBox->setButtonVisible(LtsWidgets::DialogButton::Edit, true);
m_buttonBox->setButtonVisible(LtsWidgets::DialogButton::Remove, false);
m_buttonBox->setButtonVisible(LtsWidgets::DialogButton::Load, true);
m_buttonBox->setButtonVisible(LtsWidgets::DialogButton::Save, false);
}
m_buttonBox->setButtonEnabled(LtsWidgets::DialogButton::Add, true);
m_buttonBox->setButtonEnabled(LtsWidgets::DialogButton::Edit, (selected == 1));
m_buttonBox->setButtonEnabled(LtsWidgets::DialogButton::Remove, (selected == 1 && pre.id() != m_loadedScriptId));
m_buttonBox->setButtonEnabled(LtsWidgets::DialogButton::Load, (selected == 1 && pre.id() != m_loadedScriptId && pre.fileStatus() == FileStatus::Valid) );
m_buttonBox->setButtonEnabled(LtsWidgets::DialogButton::Save, (selected == 1 && pre.fileStatus() == FileStatus::Deleted));
}
void PresentationManagementDialog::slotAdd()
{
DEBUG_LOG() << "PresentationManagementDialog::slotAdd";
PresentationEditDialog *dialog = new PresentationEditDialog(this);
if (!dialog->init(-1 , m_dtc, m_ftc, m_opmDtc))
{
dialog->deleteLater();
return;
}
dialog->setAttribute(Qt::WA_DeleteOnClose);
QObject::connect(dialog, &PresentationEditDialog::rejected, dialog, &PresentationEditDialog::deleteLater);
dialog->show();
}
void PresentationManagementDialog::slotEdit()
{
DEBUG_LOG() << "PresentationManagementDialog::slotEdit";
PresentationEditDialog *dialog = new PresentationEditDialog(this);
if (!dialog->init(m_model->getRowData(m_ui->widget->currentIndex().row()).id() , m_dtc, m_ftc, m_opmDtc))
{
dialog->deleteLater();
return;
}
dialog->setAttribute(Qt::WA_DeleteOnClose);
QObject::connect(dialog, &PresentationEditDialog::newScript, this, [this](int scriptId)
{
m_loadedScriptId = scriptId;
QString scriptName = QString::fromStdString(m_dtc->presentation(scriptId).name());
m_session->baseLayout()->setCustomText(tr("Script: %1").arg(scriptName));
});
QObject::connect(dialog, &PresentationEditDialog::rejected, dialog, &PresentationEditDialog::deleteLater);
dialog->show();
}
void PresentationManagementDialog::slotRemove()
{
DEBUG_LOG() << "PresentationManagementDialog::slotRemove";
QModelIndex selIndex = m_ui->widget->currentIndex();
if (!selIndex.isValid())
return;
Core::RemoveElementRequest req(m_model->getRowData(selIndex.row()).id());
DEBUG_LOG() << "Removing presentation id = " << req.id();
m_requestHelper->startSingleRequest([req, this]()
{
return m_ftc->presentationRemoveRequest(req, this);
});
if (m_requestHelper->failed())
ERROR_LOG() << "Failed to remove presentation";
}
void PresentationManagementDialog::slotDelete()
{
DEBUG_LOG() << "PresentationManagementDialog::slotDelete";
changeStatus(FileStatus::Deleted);
}
void PresentationManagementDialog::slotRestore()
{
DEBUG_LOG() << "PresentationManagementDialog::slotRestore";
changeStatus(FileStatus::Valid);
}
void PresentationManagementDialog::changeStatus(const FileStatus &fs)
{
QModelIndex selIndex = m_ui->widget->currentIndex();
if (!selIndex.isValid())
return;
Presentation pre = m_model->getRowData(m_ui->widget->currentIndex().row());
if (pre.fileStatus() == fs)
return;
PresentationChangeStatusRequest req;
req.id(pre.id());
req.fileStatus(fs);
req.operatorId(LtsSessionData::LtsSessionData::getInstance()->getOperatorId());
req.lastModified(QDateTime::currentMSecsSinceEpoch());
DEBUG_LOG() << "Changing status for presentation id = " << pre.id();
m_requestHelper->startSingleRequest([this, req]()
{
return m_ftc->presentationChangeStatusRequest(PresentationChangeStatusRequest(req), this);
});
if (m_requestHelper->failed())
ERROR_LOG() << "Failed to change status for presentation";
}
void PresentationManagementDialog::tableColumnOrganiserSetting()
{
m_ui->widget->setColumnsOrganiserEnabled(identifier(), true);
}
bool PresentationManagementDialog::init(const ScriptsDialogMode &dlgMode,
const std::shared_ptr<Interface::Dtc> &dtc,
const std::shared_ptr<Interface::Ftc> &ftc,
const std::shared_ptr<OperatorManagement::Interface::Dtc> &opmDtc,
LtsSession::LtsSession *session)
{
DEBUG_LOG() << "PresentationManagementDialog::init";
m_modeDialog = dlgMode;
m_dtc = dtc;
m_ftc = ftc;
m_opmDtc = opmDtc;
m_session = session;
m_model = new PresentationManagementDialogModel(this);
auto predicate = [](const PresentationManagement::Presentation & p)
{
return (!p.isDeleted());
};
m_model->initModel(dtc, opmDtc, predicate);
m_proxyModel = new PresentationManagementDialogProxyModel(this);
m_proxyModel->setSourceModel(m_model);
m_ui->widget->setModel(m_proxyModel);
#ifndef LTS_DEBUG
m_ui->widget->hideColumn(PresentationManagementDialogModel::Id);
#endif
m_ui->widget->setSortIndicator(PresentationManagementDialogModel::Name, Qt::AscendingOrder);
const QMap<qint32, PresentationManagement::Presentation> presentations = dtc->presentations();
for (const auto &p : presentations)
DEBUG_LOG() << "Presentation: id = " << p.id() << ", name = " << p.name().c_str() << ", desc = " << p.description().c_str();
connect(m_ui->widget, &LtsDataView::LtsDataView::signalSelectionChanged, this, &PresentationManagementDialog::enaDisa, Qt::UniqueConnection);
m_loadedScriptId = m_session->getSavegame()[QStringLiteral("ScriptId")].toInt();
ERROR_LOG() << "Loaded script id = " << m_loadedScriptId;
if (m_modeDialog != ScriptsDialogMode::modeView)
{
m_buttonBox->connectButton(LtsWidgets::DialogButton::Add, this, &PresentationManagementDialog::slotAdd, Qt::UniqueConnection);
m_buttonBox->connectButton(LtsWidgets::DialogButton::Edit, this, &PresentationManagementDialog::slotEdit, Qt::UniqueConnection);
m_buttonBox->connectButton(LtsWidgets::DialogButton::Remove, this, &PresentationManagementDialog::slotRemove, Qt::UniqueConnection);
m_buttonBox->getButton(LtsWidgets::DialogButton::Remove)->setText(tr("Remove"));
m_buttonBox->connectButton(LtsWidgets::DialogButton::Load, this, &PresentationManagementDialog::slotDelete, Qt::UniqueConnection);
m_buttonBox->getButton(LtsWidgets::DialogButton::Load)->setText(tr("Delete"));
m_buttonBox->connectButton(LtsWidgets::DialogButton::Save, this, &PresentationManagementDialog::slotRestore, Qt::UniqueConnection);
m_buttonBox->getButton(LtsWidgets::DialogButton::Save)->setText(tr("Restore"));
connect(m_ui->widget, &LtsDataView::LtsDataView::signalDoubleClicked, this, &PresentationManagementDialog::slotEdit, Qt::UniqueConnection);
}
enaDisa();
switch (m_modeDialog)
{
case ScriptsDialogMode::modeAdmin:
setOnlineHelpFilename(QStringLiteral("Script_Editor-Administrator_Scripts"));
break;
case ScriptsDialogMode::modeEdit:
setOnlineHelpFilename(QStringLiteral("Script_Editor-Edit_Scripts"));
break;
case ScriptsDialogMode::modeView:
setOnlineHelpFilename(QStringLiteral("Script_Editor-View_Scripts"));
break;
}
return true;
}
void PresentationManagementDialog::slotSetScriptName(int scriptId)
{
m_loadedScriptId = scriptId;
QString scriptName = QString::fromStdString(m_dtc->presentation(scriptId).name());
m_session->baseLayout()->setCustomText(tr("Script: %1").arg(scriptName));
}
}