diff --git a/qt6-after/qt6-migrated-legatus/Lts/Plugins/AdvancedSymbology/CMakeLists.txt b/qt6-after/qt6-migrated-legatus/Lts/Plugins/AdvancedSymbology/CMakeLists.txt index 84ab7ae9f..92d0ecc10 100755 --- a/qt6-after/qt6-migrated-legatus/Lts/Plugins/AdvancedSymbology/CMakeLists.txt +++ b/qt6-after/qt6-migrated-legatus/Lts/Plugins/AdvancedSymbology/CMakeLists.txt @@ -15,8 +15,6 @@ ADD_SUBDIRECTORY(Helper) ADD_INTERFACE_LIBRARY(AsbDataPluginInterface ${CMAKE_CURRENT_SOURCE_DIR}/asb_data_plugin_interface.h ${CMAKE_CURRENT_SOURCE_DIR}/.. - ${CMAKE_CURRENT_SOURCE_DIR}/../../Viewer/SituationMap - ${CMAKE_CURRENT_SOURCE_DIR}/../../Viewer/SituationMap/Symbology DataPluginInterface advancedSymbology Qt6::Gui diff --git a/qt6-after/qt6-migrated-legatus/Lts/Plugins/InfrastructureManagement/Shared/ism_mounting_point.cpp b/qt6-after/qt6-migrated-legatus/Lts/Plugins/InfrastructureManagement/Shared/ism_mounting_point.cpp index 78e3defcf..b77534dc3 100644 --- a/qt6-after/qt6-migrated-legatus/Lts/Plugins/InfrastructureManagement/Shared/ism_mounting_point.cpp +++ b/qt6-after/qt6-migrated-legatus/Lts/Plugins/InfrastructureManagement/Shared/ism_mounting_point.cpp @@ -146,66 +146,9 @@ void MountingPoint::setHasAssociatedAssetDefect(bool hasDefect) { m_hasAssociatedAssetDefect = hasDefect; } -MountingPointState MountingPoint::getNextMountingPointState(MountingPointState currState) const { +MountingPointState MountingPoint::getNextMountingPointState(MountingPointState currState) { Q_UNUSED(currState); return MountingPointState(); } -const StructureElement &MountingPoint::data() const { - return m_data; -} - -void MountingPoint::updateData(const StructureElement &data, int floorId) { - m_data = data; - m_floor = floorId; -} - -int32_t MountingPoint::associatedAssetId() const { - return m_associatedAssetId; -} - -bool MountingPoint::hasAssociatedAsset() const { - return m_associatedAssetId >= 0; -} - -bool MountingPoint::hasAssociatedAssetDefect() const { - return m_hasAssociatedAssetDefect; -} - -MountingPointState MountingPoint::aimState() const { - return m_aimState; -} - -void MountingPoint::setAimState(const MountingPointState &mps) { - m_aimState = mps; -} - -bool MountingPoint::isValid() const { - return m_isValid; -} - -Core::RelativePosition MountingPoint::relPosition() const { - return m_data.relPosition(); -} - -int32_t MountingPoint::buildingId() const { - return m_data.mainStructureElementId(); -} - -int MountingPoint::floor() const { - return m_floor; -} - -void MountingPoint::setFloor(int floor) { - m_floor = floor; -} - -QByteArray MountingPoint::properties() const { - return QByteArray::fromStdString(m_data.properties()); -} - -QString MountingPoint::type() const { - return QString::number(static_cast(m_data.mountingPointTypeId())); -} - } // namespace InfrastructureManagement \ No newline at end of file diff --git a/qt6-after/qt6-migrated-legatus/Lts/Viewer/LtsFileDialog/lts_dialog_model_file.cpp b/qt6-after/qt6-migrated-legatus/Lts/Viewer/LtsFileDialog/lts_dialog_model_file.cpp index de8942f04..003e59f7a 100755 --- a/qt6-after/qt6-migrated-legatus/Lts/Viewer/LtsFileDialog/lts_dialog_model_file.cpp +++ b/qt6-after/qt6-migrated-legatus/Lts/Viewer/LtsFileDialog/lts_dialog_model_file.cpp @@ -88,7 +88,7 @@ QVariant DialogModelFile::data(const QModelIndex &index, int role) const switch (index.column()) { case NAME: - return QString::fromStdString(fl.name()); + return fl.name(); case ISTEMPLATE: return fl.isTemplate() ? tr("Yes") : tr("No"); case FOLDER: @@ -110,7 +110,7 @@ QVariant DialogModelFile::data(const QModelIndex &index, int role) const case USES: return QString::fromStdString(fl.usedBy()); case LASTMODIFIED: - return DTG::toStringMSec(fl.lastModified()); + return DTG::toStringMSec(fl.lastModified().toMSecsSinceEpoch()); case PROPERTIES: return QString::fromStdString(fl.properties()); default: @@ -136,7 +136,7 @@ int DialogModelFile::findFileIdFromName(const QString &fileName) const for (int row = 0; row < rc; ++row) { const FileManagement::FileContent &fl = this->getRowData(row); - if (QString::fromStdString(fl.name()) == fileName) + if (fl.name() == fileName) { return fl.id(); } diff --git a/qt6-after/qt6-migrated-legatus/Lts/Viewer/LtsFileDialog/lts_dialog_model_folder.cpp b/qt6-after/qt6-migrated-legatus/Lts/Viewer/LtsFileDialog/lts_dialog_model_folder.cpp index dc71d42b3..86def4226 100755 --- a/qt6-after/qt6-migrated-legatus/Lts/Viewer/LtsFileDialog/lts_dialog_model_folder.cpp +++ b/qt6-after/qt6-migrated-legatus/Lts/Viewer/LtsFileDialog/lts_dialog_model_folder.cpp @@ -152,7 +152,7 @@ bool DialogModelFolder::initModel(int exerciseId, const QVector(data.path()[0]); - //qCritical() << "Folder = " << QString::fromStdString(data.name()) << ", mainFolder = " << mainFolder.underlying(); + //qCritical() << "Folder = " << data.name() << ", mainFolder = " << mainFolder.underlying(); if (!mainFolders.contains(mainFolder)) { // qCritical() << "Excluded id = " << data.id(); @@ -243,7 +243,7 @@ bool DialogModelFolder::onDeleteRow(const QModelIndex &idx, bool isFirstItem) { NGLTreeItem *item = privateData(idx); FileManagement::Folder data = item->data().value(); - data.isDeleted(true); + data.setDeleted(true); } removeRow(idx.row(), idx.parent()); @@ -289,9 +289,9 @@ bool DialogModelProxyFolder::lessThan(const QModelIndex &source_left, const QMod return FileManagement::toInt(folderLeft.mainFolder()) < FileManagement::toInt(folderRight.mainFolder()); } - if (QString::fromStdString(folderLeft.name()) != QString::fromStdString(folderRight.name())) + if (folderLeft.name() != folderRight.name()) { - return (QString::fromStdString(folderLeft.name()) < QString::fromStdString(folderRight.name())); + return (folderLeft.name() < folderRight.name()); } return folderLeft.id() < folderRight.id(); diff --git a/qt6-after/qt6-migrated-legatus/Lts/Viewer/LtsFileDialog/lts_file_dialog_widget.cpp b/qt6-after/qt6-migrated-legatus/Lts/Viewer/LtsFileDialog/lts_file_dialog_widget.cpp index 450e9476b..9a237653c 100755 --- a/qt6-after/qt6-migrated-legatus/Lts/Viewer/LtsFileDialog/lts_file_dialog_widget.cpp +++ b/qt6-after/qt6-migrated-legatus/Lts/Viewer/LtsFileDialog/lts_file_dialog_widget.cpp @@ -314,7 +314,7 @@ void LtsFileDialogWidget::enaDisa() if (idxFile.isValid()) { m_selectedFileContent = m_modelFile->getRowData(m_ui->widgetFiles->currentIndex().row()); - m_fileName = QString::fromStdString(m_selectedFileContent.name()); + m_fileName = m_selectedFileContent.name(); m_ui->leFile->setText(m_fileName); } else @@ -352,7 +352,7 @@ bool LtsFileDialogWidget::showFile(const FileManagement::FileContent &fc, const const auto &fldPath = fld.path(); // filter in USER DOCUMENTS folder and subfolders - if (LtsUtils::isInVector(fldPath, FileManagement::MainFolder::UserDocuments)) + if (LtsUtils::isInVector(fldPath, static_cast(FileManagement::MainFolder::UserDocuments))) { const int operatorId = LtsSessionData::LtsSessionData::getInstance()->getOperatorId(); // filter on User Category and OperatorId @@ -362,7 +362,7 @@ bool LtsFileDialogWidget::showFile(const FileManagement::FileContent &fc, const } // filter in EXERCISE DOCUMENTS folder and subfolders - if (LtsUtils::isInVector(fldPath, FileManagement::MainFolder::ExerciseDocuments)) + if (LtsUtils::isInVector(fldPath, static_cast(FileManagement::MainFolder::ExerciseDocuments))) { // filter on Category = Exercise if (fc.fileCategory() != FileManagement::FileCategory::Exercise) diff --git a/qt6-after/qt6-migrated-legatus/include/ExerciseManagement/exm_data_plugin_interface.h b/qt6-after/qt6-migrated-legatus/include/ExerciseManagement/exm_data_plugin_interface.h new file mode 100644 index 000000000..791898f71 --- /dev/null +++ b/qt6-after/qt6-migrated-legatus/include/ExerciseManagement/exm_data_plugin_interface.h @@ -0,0 +1,27 @@ +/** + * @RDE_HEADER@ + * HMI Plugin for Exercisemanagemt (Interface for access from other Plugins) + */ + +#pragma once + +#include +#include +#include +#include + +namespace ExerciseManagement +{ +/** + * @brief The DataInterface class provides the Topics Clients only for the GUI Plugins + */ +class DataInterface : public DataPluginBase::Interface +{ +public: + using DataPluginBase::Interface::Interface; + + virtual std::shared_ptr getDtc() = 0; + virtual std::shared_ptr getFtc() = 0; +}; + +} // namespace ExerciseManagement \ No newline at end of file diff --git a/qt6-after/qt6-migrated-legatus/include/ExerciseManagement/exm_ftc.h b/qt6-after/qt6-migrated-legatus/include/ExerciseManagement/exm_ftc.h new file mode 100644 index 000000000..6ddc80050 --- /dev/null +++ b/qt6-after/qt6-migrated-legatus/include/ExerciseManagement/exm_ftc.h @@ -0,0 +1,110 @@ +/** + * ExerciseManagement Function Topic Client interface + * STUB-HEADER: Diese Datei wird normalerweise von DDS generiert + * Für die Migration erstellen wir minimale Implementierungen + */ + +#pragma once + +#include +#include +#include + +namespace DDSConnector +{ +class DdsConnector; +} + +namespace ExerciseManagement +{ +namespace Interface +{ + +// Forward declaration +class Ftc; + +// Reply Handler stub classes for Function Topics +// These are normally generated from DDS IDL definitions + +class GetExerciseDataReplyHandler +{ +public: + GetExerciseDataReplyHandler() = default; + virtual ~GetExerciseDataReplyHandler() = default; + virtual void onGetExerciseData(const void* /*reply*/) {} +}; + +class ModifyExerciseDataReplyHandler +{ +public: + ModifyExerciseDataReplyHandler() = default; + virtual ~ModifyExerciseDataReplyHandler() = default; + virtual void onModifyExerciseData(const void* /*reply*/) {} +}; + +class GetExercisePhaseDataReplyHandler +{ +public: + GetExercisePhaseDataReplyHandler() = default; + virtual ~GetExercisePhaseDataReplyHandler() = default; + virtual void onGetExercisePhaseData(const void* /*reply*/) {} +}; + +// Ftc - Function Topic Client interface for ExerciseManagement +class Ftc : public QObject +{ + Q_OBJECT + +public: + virtual ~Ftc() = default; + + /** + * Create a new instance for ExerciseManagement::Interface::Ftc. + * STUB: Returns nullptr - actual implementation would require DDS + */ + static std::shared_ptr create(const std::shared_ptr& /*ddsConnector*/, bool /*forceCreate*/ = false) + { + return nullptr; + } + + /** + * A unique identifier for this FTC + */ + static inline const char* identifier() { return "ExerciseManagement.Interface.Ftc"; } + + /** + * Initialize this Ftc instance with all function topic clients + */ + virtual bool enableAll(bool /*enable*/ = true) { return false; } + + /** + * Enable/disable specific function topic clients + */ + virtual bool enableGetExerciseData(bool /*enable*/ = true) { return false; } + virtual bool isGetExerciseDataEnabled() const { return false; } + + virtual bool enableModifyExerciseData(bool /*enable*/ = true) { return false; } + virtual bool isModifyExerciseDataEnabled() const { return false; } + + virtual bool enableGetExercisePhaseData(bool /*enable*/ = true) { return false; } + virtual bool isGetExercisePhaseDataEnabled() const { return false; } + + /** + * Request methods with reply handlers + * STUB: Return -1 to indicate no request was sent + */ + virtual int64_t requestGetExerciseData(const void* /*request*/, GetExerciseDataReplyHandler* /*handler*/) { return -1; } + virtual int64_t requestGetExerciseData(const void* /*request*/, const std::function& /*cb*/) { return -1; } + virtual int64_t lastGetExerciseDataUniqueId() const { return -1; } + + virtual int64_t requestModifyExerciseData(const void* /*request*/, ModifyExerciseDataReplyHandler* /*handler*/) { return -1; } + virtual int64_t requestModifyExerciseData(const void* /*request*/, const std::function& /*cb*/) { return -1; } + virtual int64_t lastModifyExerciseDataUniqueId() const { return -1; } + + virtual int64_t requestGetExercisePhaseData(const void* /*request*/, GetExercisePhaseDataReplyHandler* /*handler*/) { return -1; } + virtual int64_t requestGetExercisePhaseData(const void* /*request*/, const std::function& /*cb*/) { return -1; } + virtual int64_t lastGetExercisePhaseDataUniqueId() const { return -1; } +}; + +} // namespace Interface +} // namespace ExerciseManagement \ No newline at end of file diff --git a/qt6-after/qt6-migrated-legatus/include/FileManagement/CMakeLists.txt b/qt6-after/qt6-migrated-legatus/include/FileManagement/CMakeLists.txt new file mode 100644 index 000000000..10f9360d1 --- /dev/null +++ b/qt6-after/qt6-migrated-legatus/include/FileManagement/CMakeLists.txt @@ -0,0 +1,36 @@ +# Stub CMakeLists.txt für FileManagement Headers +# Diese Datei stellt eine leere Library bereit damit andere Module linken können +# ohne die vollständigen DDS-basierten Services zu benötigen + +# FileManagement Stub Library mit Dtc-Implementierung +add_library(FileManagement_Stub STATIC + flm_dtc.cpp +) +target_include_directories(FileManagement_Stub + PUBLIC + ${CMAKE_CURRENT_SOURCE_DIR} +) +target_link_libraries(FileManagement_Stub + PUBLIC + Qt6::Core +) +set_target_properties(FileManagement_Stub PROPERTIES + AUTOMOC ON +) + +# svcFlmCommon als ALIAS zu FileManagement_Stub für Kompatibilität +add_library(svcFlmCommon ALIAS FileManagement_Stub) + +# Leere Header-Only Library als Platzhalter für svcOpmCommon +add_library(svcOpmCommon INTERFACE) +target_include_directories(svcOpmCommon + INTERFACE + ${CMAKE_CURRENT_SOURCE_DIR}/../OperatorManagement/ +) + +# Leere Header-Only Library als Platzhalter für svcExmCommon +add_library(svcExmCommon INTERFACE) +target_include_directories(svcExmCommon + INTERFACE + ${CMAKE_CURRENT_SOURCE_DIR}/../ExerciseManagement/ +) diff --git a/qt6-after/qt6-migrated-legatus/include/FileManagement/flm_data_plugin_interface.h b/qt6-after/qt6-migrated-legatus/include/FileManagement/flm_data_plugin_interface.h new file mode 100755 index 000000000..a2e264418 --- /dev/null +++ b/qt6-after/qt6-migrated-legatus/include/FileManagement/flm_data_plugin_interface.h @@ -0,0 +1,30 @@ +/** + * @RDE_HEADER@ + * FileManagement Explorer Interface for access from other Plugins + * $Id$ + * $HeadURL$ + * $Author$ + * Created by Mike Wille, SLSE, 2017-03-31 + */ + +#pragma once + +#include +#include +#include + +namespace FileManagement +{ +/** + * @brief The DataInterface class provides the Topics Clients only for the GUI Plugins + */ +class DataInterface : public DataPluginBase::Interface +{ +public: + using DataPluginBase::Interface::Interface; + + virtual std::shared_ptr getDtc() = 0; + virtual std::shared_ptr getFtc() = 0; +}; + +} // namespace FileManagement diff --git a/qt6-after/qt6-migrated-legatus/include/FileManagement/flm_db.h b/qt6-after/qt6-migrated-legatus/include/FileManagement/flm_db.h new file mode 100644 index 000000000..3de373870 --- /dev/null +++ b/qt6-after/qt6-migrated-legatus/include/FileManagement/flm_db.h @@ -0,0 +1,181 @@ +#pragma once + +// STUB-HEADER: Diese Datei wird normalerweise von DDS/RTI Codegen generiert +// Für die Migration mit BUILD_RTI=OFF erstellen wir minimale Implementierungen + +#include "flm_enums.hpp" +#include +#include +#include +#include +#include +#include +#include + +namespace FileManagement +{ + +// Forward declarations +class Folder; +class FileContent; + +/** + * @brief Folder class - Stub für DDS-generierten Code + * + * Diese Klasse wird normalerweise von DDS aus flm_service.xml generiert. + * Für BUILD_RTI=OFF verwenden wir diese minimale Implementierung. + */ +class Folder +{ +public: + Folder() : m_id(0), m_parentId(0), m_mainFolder(MainFolder::None), m_operatorId(0) {} + + // Getter + int32_t id() const { return m_id; } + std::string name() const { return m_name.toStdString(); } + int32_t parentId() const { return m_parentId; } + std::vector path() const { return m_path; } + QDateTime created() const { return m_created; } + QDateTime modified() const { return m_modified; } + MainFolder mainFolder() const { return m_mainFolder; } + int32_t operatorId() const { return m_operatorId; } + bool isHidden() const { return m_hidden; } + bool isEditable() const { return m_editable; } + bool isDeleted() const { return m_deleted; } + + // Setter + void setId(int32_t id) { m_id = id; } + void setName(const QString& name) { m_name = name; } + void setName(const std::string& name) { m_name = QString::fromStdString(name); } + void setParentId(int32_t parentId) { m_parentId = parentId; } + void setPath(const std::vector& path) { m_path = path; } + void setCreated(const QDateTime& created) { m_created = created; } + void setModified(const QDateTime& modified) { m_modified = modified; } + void setMainFolder(MainFolder mainFolder) { m_mainFolder = mainFolder; } + void setOperatorId(int32_t operatorId) { m_operatorId = operatorId; } + void setHidden(bool hidden) { m_hidden = hidden; } + void setEditable(bool editable) { m_editable = editable; } + void setDeleted(bool deleted) { m_deleted = deleted; } + + // Utility + bool isValid() const { return m_id > 0; } + +private: + int32_t m_id; + QString m_name; + int32_t m_parentId; + std::vector m_path; + QDateTime m_created; + QDateTime m_modified; + MainFolder m_mainFolder; + int32_t m_operatorId; + bool m_hidden = false; + bool m_editable = true; + bool m_deleted = false; +}; + +/** + * @brief FileContent class - Stub für DDS-generierten Code + * + * Diese Klasse wird normalerweise von DDS aus flm_service.xml generiert. + * Für BUILD_RTI=OFF verwenden wir diese minimale Implementierung. + */ +class FileContent +{ +public: + FileContent() + : m_id(0) + , m_fileId(0) + , m_folderId(0) + , m_operatorId(0) + , m_exerciseId(std::nullopt) + , m_phaseId(std::nullopt) + , m_size(0) + , m_fileStatus(FileStatus::Valid) + , m_fileCategory(FileCategory::Global) + , m_fileType(FileType::Unknown) + , m_isTemplate(false) + , m_mainFolder(MainFolder::None) + , m_hidden(false) + , m_used(false) + { + } + + // Getter + int32_t id() const { return m_id; } + int32_t fileId() const { return m_fileId; } + int32_t folderId() const { return m_folderId; } + int32_t operatorId() const { return m_operatorId; } + std::optional exerciseId() const { return m_exerciseId; } + std::optional phaseId() const { return m_phaseId; } + QString name() const { return m_fileName; } + QString fileName() const { return m_fileName; } + QString mimeType() const { return m_mimeType; } + int64_t size() const { return m_size; } + QByteArray content() const { return m_content; } + std::string properties() const { return m_properties; } + QDateTime created() const { return m_created; } + QDateTime modified() const { return m_modified; } + QDateTime lastModified() const { return m_modified; } + FileStatus fileStatus() const { return m_fileStatus; } + FileCategory fileCategory() const { return m_fileCategory; } + FileType fileType() const { return m_fileType; } + bool isTemplate() const { return m_isTemplate; } + bool isDeleted() const { return m_fileStatus == FileStatus::Deleted; } + bool isHidden() const { return m_hidden; } + bool isUsedBy() const { return m_used; } + std::string usedBy() const { return m_usedBy; } + MainFolder mainFolder() const { return m_mainFolder; } + + // Setter + void setId(int32_t id) { m_id = id; } + void setFileId(int32_t fileId) { m_fileId = fileId; } + void setFolderId(int32_t folderId) { m_folderId = folderId; } + void setOperatorId(int32_t operatorId) { m_operatorId = operatorId; } + void setExerciseId(std::optional exerciseId) { m_exerciseId = exerciseId; } + void setPhaseId(std::optional phaseId) { m_phaseId = phaseId; } + void setName(const QString& fileName) { m_fileName = fileName; } + void setFileName(const QString& fileName) { m_fileName = fileName; } + void setMimeType(const QString& mimeType) { m_mimeType = mimeType; } + void setSize(int64_t size) { m_size = size; } + void setContent(const QByteArray& content) { m_content = content; } + void setProperties(const std::string& properties) { m_properties = properties; } + void setCreated(const QDateTime& created) { m_created = created; } + void setModified(const QDateTime& modified) { m_modified = modified; } + void setFileStatus(FileStatus status) { m_fileStatus = status; } + void setFileCategory(FileCategory category) { m_fileCategory = category; } + void setFileType(FileType type) { m_fileType = type; } + void setTemplate(bool isTemplate) { m_isTemplate = isTemplate; } + void setHidden(bool hidden) { m_hidden = hidden; } + void setUsedBy(bool used) { m_used = used; } + void setUsedBy(const std::string& usedBy) { m_usedBy = usedBy; m_used = !usedBy.empty(); } + void setMainFolder(MainFolder mainFolder) { m_mainFolder = mainFolder; } + + // Utility + bool isValid() const { return m_id > 0; } + +private: + int32_t m_id; + int32_t m_fileId; + int32_t m_folderId; + int32_t m_operatorId; + std::optional m_exerciseId; + std::optional m_phaseId; + QString m_fileName; + QString m_mimeType; + int64_t m_size; + QByteArray m_content; + std::string m_properties; + QDateTime m_created; + QDateTime m_modified; + FileStatus m_fileStatus; + FileCategory m_fileCategory; + FileType m_fileType; + bool m_isTemplate; + MainFolder m_mainFolder; + bool m_hidden; + bool m_used; + std::string m_usedBy; +}; + +} // namespace FileManagement \ No newline at end of file diff --git a/qt6-after/qt6-migrated-legatus/include/FileManagement/flm_enums.hpp b/qt6-after/qt6-migrated-legatus/include/FileManagement/flm_enums.hpp index 43f4f7385..aacdeac59 100644 --- a/qt6-after/qt6-migrated-legatus/include/FileManagement/flm_enums.hpp +++ b/qt6-after/qt6-migrated-legatus/include/FileManagement/flm_enums.hpp @@ -1,34 +1,152 @@ #pragma once // STUB-HEADER: Diese Datei wird normalerweise von ddsdtc generiert -// Für die Migration erstellen wir minimale Typ-Definitionen +// Für die Migration erstellen wir minimale Typ-Definitionen basierend auf flm_service.xml #include namespace FileManagement { -// Placeholder enums - werden durch echte DDS-Typen ersetzt -enum class SymbolAppearance : int { Solid = 0, Dashed = 1, Dotted = 2 }; +// Enums aus flm_service.xml +enum class FileStatus : int { Valid = 0, Deleted = 1 }; -enum class SymbolVisibility : int { Visible = 0, Hidden = 1 }; +enum class FileCategory : int { Global = 1, Exercise = 2, User = 3 }; -// STUB: FileType enum -enum class FileType : int { Unknown = 0, Image = 1, Video = 2, Audio = 3, Document = 4 }; - -// STUB: FileContent struct -struct FileContent -{ - int id = 0; - int fileId = 0; - FileType type = FileType::Unknown; - QString fileName; - QByteArray data; +enum class FileType : int { + Unknown = 0, + Text = 1, + Xml = 2, + Pdf = 3, + Jpg = 4, + Png = 5, + TacticalPlan = 6, + OperatorFavourite = 7, + OperatorDefinedSymbol = 8, + OpenOfficeDocument = 9, + OpenOfficeSpreadsheet = 10, + OpenOfficePresentation = 11, + MSOfficeDocument = 12, + MSOfficeDocument97 = 13, + MSOfficeSpreadsheet = 14, + MSOfficeSpreadsheet97 = 15, + MSOfficePresentation = 16, + MSOfficePresentation97 = 17, + Zip = 18, + Gif = 19, + Bmp = 20, + Tiff = 21, + Wmf = 22, + Emf = 23, + Rtf = 24, + Html = 25, + Hlp = 26, + Wps = 27, + Wpd = 28, + Wk3 = 29, + Wk4 = 30, + Wks = 31, + Wr1 = 32, + Wr3 = 33, + Wq1 = 34, + Wq2 = 35, + Dif = 36, + Dbf = 37, + Slk = 38, + Xlk = 39, + Doc = 40, + Dot = 41, + Xls = 42, + Xlt = 43, + Ppt = 44, + Pps = 45, + Pot = 46, + Accdb = 47, + Accde = 48, + Mwcd = 49, + Mwct = 50, + Mwcz = 51, + Mwcu = 52, + Ods = 53, + Odt = 54, + Odp = 55, + Odg = 56, + Odf = 57, + Odc = 58, + Odi = 59, + Odm = 60, + Otg = 61, + Oth = 62, + Ots = 63, + Ott = 64, + Oxt = 65, + Six = 66, + Msg = 67, + Vsd = 68, + Vdx = 69, + Vsx = 70, + Vtx = 71, + Vss = 72, + Vst = 73, + Vsw = 74, + VsdX = 75, + VssX = 76, + VstX = 77, + VdxX = 78, + VsxX = 79, + VtxX = 80, + Dwg = 81, + Dxf = 82, + Dgn = 83, + Cgm = 84, + Cal = 85, + Mil = 86, + Img = 87, + Grib = 88, + Grb2 = 89, + Wkt = 90, + Shp = 91, + Tab = 92, + Mif = 93, + E00 = 94, + Aml = 95, + Coverage = 96, + Tin = 97, + Grid = 98, + Lyr = 99, + Lrx = 100, + Pmf = 101, + Pmz = 102, + Sxd = 103, + Sxm = 104, + Sxg = 105, + Sxi = 106, + Sxc = 107, + Sxw = 108, + Stw = 109, + Sxv = 110, + Sxd2 = 111, + Sxm2 = 112, + Sxg2 = 113, + Sxi2 = 114, + Sxc2 = 115, + Sxw2 = 116, + Stw2 = 117, + Sxv2 = 118, + Video = 119, + Audio = 120, + Flash = 121, + Svg = 122, + Svgz = 123 }; -struct UnitSymbolPosition -{ - double x = 0.0; - double y = 0.0; - double z = 0.0; -}; +// MainFolder Enum +enum class MainFolder : int { None = 0, GlobalDocuments = 1, UserDocuments = 2, ExerciseDocuments = 3 }; + +// Helper-Funktion +inline int toInt(MainFolder folder) { return static_cast(folder); } + +// Forward declarations +class Folder; +class FileContent; +class Ftc; } // namespace FileManagement diff --git a/qt6-after/qt6-migrated-legatus/include/FileManagement/flm_ftc.h b/qt6-after/qt6-migrated-legatus/include/FileManagement/flm_ftc.h new file mode 100644 index 000000000..da7303e1c --- /dev/null +++ b/qt6-after/qt6-migrated-legatus/include/FileManagement/flm_ftc.h @@ -0,0 +1,20 @@ +/** + * @RDE_HEADER@ + * FileManagement Topic Client Stub (BUILD_RTI=OFF) + * Normally generated from flm_service.xml by DDS Code Generator + */ + +#pragma once + +#include + +namespace FileManagement +{ +namespace Interface +{ + +// Forward declaration - actual implementation provided by DDS when BUILD_RTI=ON +class Ftc; + +} // namespace Interface +} // namespace FileManagement \ No newline at end of file diff --git a/qt6-after/qt6-migrated-legatus/include/FileManagement/flm_translation.h b/qt6-after/qt6-migrated-legatus/include/FileManagement/flm_translation.h new file mode 100644 index 000000000..f1ae3da4b --- /dev/null +++ b/qt6-after/qt6-migrated-legatus/include/FileManagement/flm_translation.h @@ -0,0 +1,73 @@ +/** + * @RDE_HEADER@ + * Convert DSS enumerations to translatable strings + * $Id$ + * $HeadURL$ + * $Author$ + */ + +#pragma once + +// filename: flm_translation.h + +#include "flm_enums.hpp" +#include + +namespace FileManagement +{ +// Translatable enumerations: +inline QString toString(FileType state) +{ + switch (state) { + case FileType::Unknown: return QStringLiteral("Unknown"); + case FileType::Text: return QStringLiteral("Text"); + case FileType::Xml: return QStringLiteral("XML"); + case FileType::Pdf: return QStringLiteral("PDF"); + case FileType::Jpg: return QStringLiteral("Image"); + case FileType::Png: return QStringLiteral("Image"); + case FileType::Gif: return QStringLiteral("Image"); + case FileType::Bmp: return QStringLiteral("Image"); + case FileType::Tiff: return QStringLiteral("Image"); + case FileType::Video: return QStringLiteral("Video"); + case FileType::Audio: return QStringLiteral("Audio"); + case FileType::MSOfficeDocument: + case FileType::MSOfficeDocument97: + case FileType::OpenOfficeDocument: + case FileType::Doc: + case FileType::Odt: + case FileType::Ods: + case FileType::Odp: + return QStringLiteral("Document"); + case FileType::TacticalPlan: return QStringLiteral("TacticalPlan"); + case FileType::OperatorFavourite: return QStringLiteral("OperatorFavourite"); + case FileType::OperatorDefinedSymbol: return QStringLiteral("OperatorDefinedSymbol"); + default: return QStringLiteral("Unknown"); + } +} + +inline QString toString(FileCategory state) +{ + switch (state) { + case FileCategory::Global: return QStringLiteral("Global"); + case FileCategory::Exercise: return QStringLiteral("Exercise"); + case FileCategory::User: return QStringLiteral("User"); + default: return QStringLiteral("Unknown"); + } +} + +inline QString toString(FileStatus state) +{ + switch (state) { + case FileStatus::Valid: return QStringLiteral("Valid"); + case FileStatus::Deleted: return QStringLiteral("Deleted"); + default: return QStringLiteral("Unknown"); + } +} + +// Translatable struct members: +inline QString trFolderName(const QString &text) +{ + return text; +} + +} // namespace FileManagement \ No newline at end of file diff --git a/qt6-after/qt6-migrated-legatus/include/InfrastructureManagement/ism_mounting_point.h b/qt6-after/qt6-migrated-legatus/include/InfrastructureManagement/ism_mounting_point.h new file mode 100755 index 000000000..5d08f2e72 --- /dev/null +++ b/qt6-after/qt6-migrated-legatus/include/InfrastructureManagement/ism_mounting_point.h @@ -0,0 +1,145 @@ +/** + * @RDE_HEADER@ + * The MountingPoint class wraps all information from InfrastructureManagement which defines a mounting point + * $Id$ + * $HeadURL$ + * $Author$ + * Created by Hannes Baeuerle, SLSE, 2017-01-16 + */ + +#pragma once + +#include "ismshared_export.h" +#include "ism.hpp" +#include + + +namespace dds +{ +namespace core +{ +static inline uint qHash(const InfrastructureManagement::MountingPointType &mpt) +{ + return ::qHash(static_cast(mpt)); +} +} // namespace core +} // namespace dds + +namespace InfrastructureManagement +{ + +class ISMSHARED_EXPORT MountingPoint +{ +public: + explicit MountingPoint(); + explicit MountingPoint(const StructureElement &data, int floorId); + static void init(); + + const StructureElement &data() const { return m_data; } + void updateData(const StructureElement &data, int floorId) { m_data = data; m_floor = floorId; } + int32_t id() const { return m_data.id(); } + int32_t associatedAssetId() const { return m_associatedAssetId; } + bool hasAssociatedAsset() const { return m_associatedAssetId > 0; } + bool hasAssociatedAssetDefect() const { return m_hasAssociatedAssetDefect; } + + /*! \name aimState depends on the (loaded) plan/schedule!!! */ + //@{ + + //! \brief aimState of currently loaded schedule!!! + //! \return aimState + MountingPointState aimState() const { return m_aimState; } + void setAimState(const MountingPointState &mps) { m_aimState = mps;} + + //@} + + bool isValid() const { return m_isValid; } + Core::GeoPosition geoPosition() const { return m_data.geoPosition(); } + Core::RelativePosition relPosition() const { return m_data.relPosition(); } + MountingPointType type() const { return m_data.mountingPointTypeId(); } + int32_t buildingId() const { return m_data.mainStructureElementId(); } + QString name() const; + QString fileName() const; + QByteArray properties() const { return m_data.properties().c_str(); } + + QImage toImage(int32_t edgeLength = 100) const; + bool writeFile(int32_t edgeLength = 25) const; + int floor() const { return m_floor; } + void setFloor(int floor) { m_floor = floor; } + + void setAssociatedAssetId(int32_t id); + void setHasAssociatedAssetDefect(bool hasAssociatedAssetDefect); + MountingPointState getNextMountingPointState(const MountingPointState currState); + +private: // methods + +private: // attributes + StructureElement m_data; + int32_t m_associatedAssetId; + MountingPointState m_aimState; + bool m_hasAssociatedAssetDefect; + bool m_isValid; + int m_floor; + +public: + + enum class MpColor + { + GRAY, + BLUE, + RED, + GREEN, + ORANGE + }; + static QString mpColorToString(MpColor mpColor); + static QString mpColorToPostfix(MpColor mpColor); + + struct NameImagePair + { + NameImagePair(const QString &name = QString(), + const QImage &img = QImage()) + : m_name(name), m_img(img) + {} + QString m_name; // like announcement_BLUE + QImage m_img; + }; + struct MpNameImageData + { + NameImagePair nipGray; + NameImagePair nipBlue; + NameImagePair nipRed; + NameImagePair nipGreen; + NameImagePair nipOrange; + }; + + // + // Some methods regarding ImageTable: + // + static QMap &getImageTable(); // contains images in good quality (100*100px) + + static bool getImageAttributePlanActivity(const MountingPoint& mp, + QImage &imgOut, QString &attribNameOut); + static bool getImageAttributePlanDefinition(const MountingPoint& mp, + QImage &imgOut, QString &attribNameOut); + + static bool getImageAttribute(const MountingPoint& mp, MpColor mpColor, + QImage &img, QString &attribName); + +private: + static QMap &getImageTableInternal(); + static void insertHelper(MountingPointType_def::type type, + const QString &name, + const QString &colorCodeGray, + const QString &colorCodeGreen, + const QString &colorCodeRed, + const QString &colorCodeOrange, + const QString &defName = QString()); + + static QImage getImage(const MountingPoint &mp); + + static const MpNameImageData *getNameImageData(const MountingPoint&mp); + static const NameImagePair *getNameImagePair(const MountingPoint&mp); + + +}; // class MountingPoint + +} // namespace InfrastructureManagement diff --git a/qt6-after/qt6-migrated-legatus/include/OperatorManagement/opm_data_plugin_interface.h b/qt6-after/qt6-migrated-legatus/include/OperatorManagement/opm_data_plugin_interface.h new file mode 100644 index 000000000..9b8bf7a25 --- /dev/null +++ b/qt6-after/qt6-migrated-legatus/include/OperatorManagement/opm_data_plugin_interface.h @@ -0,0 +1,43 @@ +/** + * @RDE_HEADER@ + * Data Plugin Interface for OperatorManagement (Interface for access from other Plugins) + */ + +#pragma once + +#include +#include +#include +#include + +namespace OperatorManagement +{ +class ForeignDataInterface; + +/** + * @brief The DataInterface class provides the Topics Clients only for the GUI Plugins + */ +class DataInterface : public DataPluginBase::Interface +{ +public: + using DataPluginBase::Interface::Interface; + + virtual std::shared_ptr getDtc() = 0; + virtual std::shared_ptr getFtc() = 0; + virtual std::shared_ptr getForeignDataInterface() = 0; +}; + +/** + * @brief The ForeignInterface class provides methods and signals for foreign plugins, that need + * access to the data of this DataPlugin + */ +class ForeignDataInterface +{ +public: + ForeignDataInterface() = default; + virtual ~ForeignDataInterface() = default; + + virtual void onSendKeepAlive() = 0; +}; + +} // namespace OperatorManagement \ No newline at end of file