Files
qt-migration-legatus/qt6-after/qt6-migrated-legatus/Lts/Common/LtsWidgets/lts_base_layout_widget.h
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

348 lines
7.5 KiB
C++
Executable File

#pragma once
#include <QObject>
#include "lts_base.h"
#include "ltswidgets_export.h"
#include "lts_notification_box.h"
#include "qevent.h"
#include <memory>
#include <QMap>
#include <QPointer>
#include <QWidget>
class QButtonGroup;
class QPropertyAnimation;
class QPushButton;
class QTimer;
class QToolButton;
namespace Ui
{
class LtsBaseLayoutWidget;
}
namespace IDL
{
enum class PartitionType;
}
namespace LtsUtils { class Promise; }
namespace LtsWidgets
{
class LtsDragIcon;
class LtsProgressDialogHelper;
class LtsTabWidget;
class LtsToolBarArea;
class LtsToolBox;
struct ExerciseData
{
QString exName;
QString exDescription;
int phId = -1;
QString phName;
QString phDescription;
QString exStateString;
ExcState exState = ExerciseState::eUnknown;
QColor exStateCol;
QString partitionType;
bool operator==(const ExerciseData &o) const
{
return exName == o.exName &&
exDescription == o.exDescription &&
phId == o.phId &&
phName == o.phName &&
phDescription == o.phDescription &&
exStateString == o.exStateString &&
exState == o.exState &&
exStateCol == o.exStateCol &&
partitionType == o.partitionType;
}
bool operator!=(const ExerciseData &o) const
{
return !operator ==(o);
}
};
class LTSWIDGETS_EXPORT LtsBaseLayoutWidget : public QWidget
{
Q_OBJECT
public:
explicit LtsBaseLayoutWidget(QWidget *parent = nullptr, bool splitMenu = true);
~LtsBaseLayoutWidget();
void hideVisibleLayouts();
void resetLayoutVisibility();
void setMenuVisible(bool visible);
bool isMenuVisible() const;
bool isTopBarVisible() const;
void setTopBarVisible(bool visible);
bool isMenuCollapsed() const;
void collapseMenu(bool collapse = true);
void setSessionInfo(const int domainId, const IDL::PartitionType &partitionType, const int partitionId, const QString &workspaceId);
LtsDragIcon *addMenuAction(const PluginData &plData, bool isFirstRun = false);
bool removeMenuAction(const PluginData &plData);
bool removeMenuAction(LtsDragIcon *icon);
bool removeMenuAction(const QString &byIdentifier);
void clearMenuActions();
void setAppName(const QString &appName);
bool isDialogFocused(const LtsDialog *dialog) const;
void setCustomText(const QString &text);
const QString customText() const;
LtsTabWidget *getTabFromLayoutArea(LayoutArea area) const;
LtsDialog *getWidget(const QString &menuGroup, const QString &identifier, LayoutArea area = LayoutArea::eUnknown);
QWidget *getMenu() const;
LtsToolBarArea *getToolbar() const;
void setOperatorName(const QString &operatorName, bool showTerminalButton);
void setProfilePicture(const QPixmap &profilePicture);
void setExerciseData(const ExerciseData &data);
void initilizationFinished();
void addNotification(QToolButton *noti);
bool isWidgetsHidden() const;
bool notificationExists(const QString &identifier) const;
const QMap<LtsDragIcon *, PluginData> &mapButtons() const { return m_mapButtons; }
void setToolBarActions(const QStringList &actions);
QStringList toolBarActions() const;
void setFunctionKeys(const QMap<int, QString> &actions);
QMap<int, QString> functionKeys() const;
void setWorkspaceId(const QString &workspaceId) { m_workspaceId = workspaceId; }
void showMessage(const QString &title, const QString &text, LtsNotificationBox::MessageType type = LtsNotificationBox::MessageType::Info, const std::function<void(const QString &link)> &clickedLinkCallback = nullptr, bool closeOnLinkClicked = true, const QString &identifier = {});
bool messageIdentifierExists(const QString &identifier) const;
void executeAction(const QString &actionIdentifier);
bool isSecondaryWidget() const { return m_isSecondaryWidget; }
void setSecondaryWidget() { m_isSecondaryWidget = true; }
void removeQueuedMessage(const QString &messageIdentifier);
public slots:
bool slotClose();
void slotLogout();
void slotScreenCountChanged(int count);
void onMenuEntryClicked();
void onHideAnimated();
void onReShowAnimated();
bool addWidget(LtsWidgets::LtsDialog *dialog, const QString &menuGroup, const QString &identifier, LtsWidgets::LayoutArea area = LayoutArea::eUnknown, bool setClosable = true, bool focusNewTab = true);
bool addOrReplaceWidget(LtsDialog *dialog, const QString &menuGroup, const QString &identifier, LayoutArea area = LayoutArea::eUnknown, bool setClosable = true, bool focusNewTab = true );
bool focusTab(const QString &menuGroup, const QString &identifier, LtsWidgets::LayoutArea area);
void executeCreateInstantFunctions(const LtsWidgets::PluginData &plData);
void setExerciseTime(qint64 mSecsSinceEpoch);
bool haveUnsavedChanges();
bool notifyUnsavedChanges();
void setIrreplaceableOnce() { m_irreplaceableOnce = true; }
bool irreplaceableReset() { bool r = m_irreplaceableOnce; m_irreplaceableOnce = false; return r; }
bool isIrreplaceable() const { return m_irreplaceableOnce; }
void showWidgets();
void hideWidgets();
private slots:
void slotOperatorMenuClicked();
void setCurrentTime();
signals:
void signalClose();
void signalLogout();
void signalShowOperatorSettings();
void signalRetranslateActions();
void signalSwap();
void signalStapleTopicLockHandler(LtsWidgets::LtsDialog *widget);
void signalSuccessfullyPlaced();
void signalNotifyUnsavedChanges(bool &reject);
protected:
void closeEvent(QCloseEvent *event) override;
void showEvent(QShowEvent *event) override;
void changeEvent(QEvent *e) override;
private:
void addDebugMenu();
void retranslate();
void addTouchScroll(QWidget *widget);
LtsDragIcon *createButton(const PluginData &plData);
int getIndexOfTab(LtsTabWidget *tab);
LtsToolBox *getToolBox(const ExercisePart &exercisePart) const;
QPushButton *getExercisePartButton(const ExercisePart &exercisePart) const;
void checkExercisePartButtonVisibility();
void checkMenuGroup(const QString &menuGroup, const ExercisePart &exercisePart);
bool isDialogFocused(const LtsDialog *dialog, const LayoutArea &layoutArea) const;
bool isDialogFocused(const LtsDialog *dialog, const LtsTabWidget *tab) const;
void applyExerciseStateRestricition();
void executePluginData(const PluginData &plData);
void showNextQueuedMessage();
struct Message
{
public:
QString title;
QString text;
LtsNotificationBox::MessageType type;
std::function<void(const QString &link)> clickedLinkCallback;
bool closeOnLinkClicked;
QString identifier;
};
ExerciseData m_exerciseData;
QMap<LtsDragIcon *, PluginData> m_mapButtons;
QList<int> m_mainSplitterSizes;
QList<int> m_menuSplitterSizes;
bool m_isHidden;
QPropertyAnimation *m_currentAnimation{nullptr};
Ui::LtsBaseLayoutWidget *m_ui{nullptr};
IDL::PartitionType m_partitionType;
int m_domainId;
int m_partitionId;
QString m_operatorName;
bool m_firstShow;
bool m_showTerminalButton;
qint64 m_exerciseTime;
QTimer *m_setCurrentTimeTimer{nullptr};
bool m_irreplaceableOnce;
QButtonGroup *m_bg{nullptr};
QString m_workspaceId;
int m_screenCount;
bool m_menuCollapsed;
QMap<QPointer<LtsWidgets::LtsTabWidget>, bool> m_oldLayoutVisibilityStates;
LtsNotificationBox *m_notiBox{nullptr};
QStringList m_notFoundYet;
bool m_isSecondaryWidget { false };
QVector<Message> m_currentMessage;
QVector<Message> m_messageQueue;
};
}