TSI_Config/config_mgr.h

62 lines
1.5 KiB
C
Raw Normal View History

2025-03-29 18:05:12 +08:00
#ifndef CONFIG_MGR_H
#define CONFIG_MGR_H
#include <memory>
#include <vector>
#include "cardbase.h"
2025-04-19 16:25:33 +08:00
#include <QDrag>
#include <QMimeData>
#include <QDragEnterEvent>
#include <QDebug>
#include <QListWidget>
2025-03-29 18:05:12 +08:00
2025-04-19 16:25:33 +08:00
class DraggableListWidget : public QListWidget {
public:
DraggableListWidget(QWidget *parent = nullptr) : QListWidget(parent) {
setDragEnabled(true);
}
protected:
void startDrag(Qt::DropActions supportedActions) override {
QListWidgetItem *item = currentItem();
if (!item) return;
QMimeData *mimeData = new QMimeData;
QString customData = item->data(Qt::UserRole).toString();
mimeData->setData("application/x-custom", customData.toUtf8());
QDrag *drag = new QDrag(this);
drag->setMimeData(mimeData);
drag->exec(Qt::CopyAction);
}
};
2025-03-29 18:05:12 +08:00
class ConfigMgr {
private:
static ConfigMgr *instance;
ConfigMgr() {
for (int i = 0; i < SLOT_NUM; ++i) {
card_type_[i] = kCardNone;
}
}
public:
int card_type_[15];
2025-03-29 18:05:12 +08:00
static ConfigMgr *Instance() {
if (instance == nullptr) {
instance = new ConfigMgr();
}
return instance;
}
~ConfigMgr();
2025-04-17 14:06:21 +08:00
void Save(QString & file_path);
2025-03-29 18:05:12 +08:00
void Load(QString filename);
2025-04-21 20:30:12 +08:00
std::shared_ptr<CardBase> GetSlotPtr(int slot);//1-15
2025-04-01 15:03:59 +08:00
void AddCard(std::shared_ptr<CardBase> ptr);
2025-04-21 20:30:12 +08:00
void RemoveCard(std::shared_ptr<CardBase> ptr);
2025-03-29 18:05:12 +08:00
private:
2025-04-01 15:03:59 +08:00
QString filename_;
2025-03-29 18:05:12 +08:00
std::vector<std::shared_ptr<CardBase>> cards_;
};
#endif // CONFIG_MGR_H