DYTSrouce/src/ui/ModelBrowser/PresetModelPanel.h
2025-11-01 21:30:25 +08:00

71 lines
1.5 KiB
C++

#pragma once
#include <QWidget>
#include <QToolBox>
#include <QListWidget>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QLabel>
#include <QPushButton>
#include <QMimeData>
#include <QDrag>
#include <QMouseEvent>
#include <QEvent>
#include <QStyledItemDelegate>
#include <QPainter>
#include <QApplication>
#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_;
};