#pragma once #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "workspace/ModelInfo.h" #include "workspace/PresetModelConfigParser.h" namespace Ui { class PresetModelPanel; } class DockWidget; /** * @brief Preset model panel class * * Provides preset 3D models for users to drag into the 3D scene, including: * - Ships: Destroyer, Aircraft Carrier * - Satellites: Geostationary Satellites * - Missiles: Hypersonic Missiles * - Jammers: Passive Jammers, Active Jammers */ class PresetModelPanel : public QWidget { Q_OBJECT public: explicit PresetModelPanel(QWidget *parent = nullptr); ~PresetModelPanel() override; /** * @brief Attach to dock widget * @param dockWidget Dock widget pointer */ void AttachDock(DockWidget* dockWidget); private: /** * @brief Initialize user interface */ void InitUI(); /** * @brief Load models from configuration file */ void LoadModelsFromConfig(); /** * @brief Load default models when config is unavailable */ void LoadDefaultModels(); private: Ui::PresetModelPanel *ui; // Drag and drop support QPoint dragStartPosition_; QListWidget* dragSourceWidget_; };