You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

64 lines
2.0 KiB
C++

#ifndef COMMON_H
#define COMMON_H
#include <QObject>
#include "utils/Singleton.h"
#include <QString>
#include <QMap>
#include "utils/interface.h"
#include "nlohmann/json.hpp"
#include "EasySpdLog.h"
class Common : public QObject, public Singleton<Common>
{
Q_OBJECT
friend class Singleton<Common>;
public:
// 加载Config文件
bool loadConfig(const QString& filePath);
// 保存到Config文件
bool saveConfig(const QMap<int, ProductConfig> &productsCfg, const QMap<int, ModeConfig> &workmodeCfg);
// 更新产品配置文件
bool updateProductsConfig(const QMap<int, ProductConfig> &productsCfg);
// 获取IP地址
QString getIPAddr() const;
// 获取端口号
int getSrcPort() const;
int getDstPort() const;
// 获取产品配置
QMap<int, ProductConfig> getProductConfigs();
// 设置产品配置
void setProductConfig(const QMap<int, ProductConfig>& productsCfg);
// 获取工作模式
QMap<int, ModeConfig> getWorkModeConfigs();
// 设置工作模式
void setWorkModeConfigs(const QMap<int, ModeConfig>& workmodeCfg);
// 获取已选择的工作模式
const QMap<QString, Mode>& getSelectedProducts() const;
// 获取当前工作模式
int getCurrentWorkMode() const;
// 设置当前工作模式
void setCurrentWorkMode(const int workMode);
signals:
private:
Common();
bool saveConfig();
void FilterSelectedProducts();
private:
QString m_configFilePath{}; // 配置文件路径
nlohmann::json m_configJson{};
QString m_currentWorkPath{}; // 当前工作路径
std::atomic<int> m_currentMode{ -1 }; // 当前正在进行的工作模式
QString m_ipAddr{};
int m_dstPort{};
int m_srcPort{};
QMap<int, ModeConfig> m_modeConfigs{}; // 模式配置
QMap<int, ProductConfig> m_productConfigs{}; // 产品配置
QMap<QString, Mode> m_selectedProduct{}; // 选择的产品
};
#endif // COMMON_H