TransmitterSwitchInfo.h 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  1. #ifndef TRANSMITTERSWITCHINFO_H
  2. #define TRANSMITTERSWITCHINFO_H
  3. #include <QDate>
  4. #include <QString>
  5. #include <QMap>
  6. #include <QObject>
  7. #include "nlohmann/json.hpp"
  8. #define nJson nlohmann::json
  9. /**
  10. * @brief 支持的发射机类型
  11. *
  12. */
  13. const QMap<int, QString> g_DevTypeInfo = {
  14. {955, "衢州台发射机"}
  15. };
  16. /* EQM数据库中的主备 */
  17. enum class enum_DeviceMB : int
  18. {
  19. Dev_Main = 0, /* 主设备 */
  20. Dev_Backup = 1, /* 备设备 */
  21. Dev_Contingency = 2 /* 应急设备 */
  22. };
  23. enum class enum_Action : int
  24. {
  25. Act_ON = 1, /* 开机 */
  26. Act_OFF = 2, /* 关机 */
  27. };
  28. /**
  29. * @brief UI样式
  30. *
  31. */
  32. enum class enum_UIStyle
  33. {
  34. UI_Light = 0, /* 亮色 */
  35. UI_Dark = 1 /* 暗色 */
  36. };
  37. struct InitData
  38. {
  39. QString url; /* WebAPI地址 */
  40. QString serverID; /* 服务器ID */
  41. QString serverKey; /* 服务器Key */
  42. InitData& operator=(const InitData& data)
  43. {
  44. url = data.url;
  45. serverID = data.serverID;
  46. serverKey = data.serverKey;
  47. return *this;
  48. }
  49. };
  50. /**
  51. * @brief 执行计划条目信息
  52. *
  53. */
  54. struct ExecPlanItemInfo
  55. {
  56. int ExecType; /* 执行类型,0按时刻,1按天 */
  57. int WeekDay; /* 周几,数据库里是1-7一周,周8是特殊日 */
  58. QDate date; /* 日期 */
  59. QTime execTime; /* 执行时间 */
  60. QString devName; /* 设备名称 */
  61. int actionID; /* 动作ID */
  62. QString actionName; /* 执行的动作 */
  63. ExecPlanItemInfo();
  64. ExecPlanItemInfo(const ExecPlanItemInfo& item);
  65. ExecPlanItemInfo& operator=(const ExecPlanItemInfo& item);
  66. };
  67. /**
  68. * @brief 存储一个设备类型及端口参数,即这个设备支持哪些端口,在配置页面选择设备的时候使用
  69. * 如:“衢州台发射机”支持哪些端口
  70. */
  71. struct DevTypeInfo
  72. {
  73. DevTypeInfo();
  74. ~DevTypeInfo() {}
  75. DevTypeInfo& operator=(const DevTypeInfo& devInfo);
  76. QString devTypeName; /* 设备类型名称,如:衢州台发射机,非必须的 */
  77. QMap<int, QString> devAction; /* 设备支持的动作,如开机、关机等 */
  78. QMap<enum_DeviceMB, QString> devType_MB; /* 同一中设备允许存在的个数,如主/备或其他标记方式,这里用不到 */
  79. int PTTypeCode; /* 设备类型编号,在EQM数据库中的类型,如发射机是955 */
  80. };
  81. /**
  82. * @brief 软件支持的设备类型信息
  83. *
  84. */
  85. class MapDevType
  86. {
  87. MapDevType();
  88. MapDevType(const MapDevType& devType) = delete;
  89. MapDevType& operator=(const MapDevType& devType) = delete;
  90. public:
  91. ~MapDevType() {}
  92. static MapDevType& getInstance()
  93. {
  94. static MapDevType instance;
  95. return instance;
  96. }
  97. /* 添加支持的设备类型 */
  98. void initDevType();
  99. /* 获取某一个发射机类型 */
  100. DevTypeInfo getDevType(int PTTypeCode);
  101. /* 获取设备类型信息 */
  102. QMap<int, DevTypeInfo>& getMapDevType() { return m_mapDevType; }
  103. private:
  104. QMap<int, DevTypeInfo> m_mapDevType; /* 设备类型信息,int是发射机的PTTypeCode */
  105. };
  106. #define DevTypeContainer MapDevType::getInstance()
  107. /**
  108. * @brief 配置完成后的信息,给一个类型的设备创建了名字,并存储了设备类型和参数信息
  109. */
  110. struct DeviceInfo
  111. {
  112. DeviceInfo();
  113. ~DeviceInfo() {}
  114. DeviceInfo(const DeviceInfo& devInfo);
  115. DeviceInfo& operator=(const DeviceInfo& devInfo);
  116. QString devName; /* 自定义的设备名称 */
  117. DevTypeInfo DevType; /* 该设备的类型 */
  118. // QPair<enum_DeviceMB, QString> devTypeMB; /* 该设备是主设备还是备用设备 */
  119. int DID; /* 设备ID */
  120. int DTID; /* 设备类型ID */
  121. int MPID; /* 监测点ID */
  122. int PTTypeCode; /* 端口类型编码 */
  123. int ChannelID; /* 通道ID */
  124. };
  125. class MapDevice
  126. {
  127. MapDevice();
  128. MapDevice(const MapDevice& dev) = delete;
  129. MapDevice& operator=(const MapDevice& dev) = delete;
  130. public:
  131. ~MapDevice() {}
  132. static MapDevice& getInstance()
  133. {
  134. static MapDevice instance;
  135. return instance;
  136. }
  137. /* 添加一个设备 */
  138. void addDevice(const DeviceInfo& devInfo);
  139. /* 获取一个设备 */
  140. DeviceInfo getDevice(const QString& devName);
  141. /* 查找一个设备 */
  142. bool findDevice(const QString& devName);
  143. /* 根据设备名称获取设备动作 */
  144. bool getDevAction(const QString& devName, QMap<int, QString>& devAction);
  145. /* 删除一个设备 */
  146. void deleteDevice(const QString& devName);
  147. /* 获取容器 */
  148. QMap<QString, DeviceInfo>& getMapDevice() { return m_mapDevice; }
  149. private:
  150. QMap<QString, DeviceInfo> m_mapDevice; /* 设备信息,key是设备名称 */
  151. };
  152. #define DeviceContainer MapDevice::getInstance()
  153. /**
  154. * @brief 执行计划页面的全局配置信息
  155. *
  156. */
  157. class ExecPlanGlobalConfig : public QObject
  158. {
  159. Q_OBJECT
  160. ExecPlanGlobalConfig();
  161. ExecPlanGlobalConfig(const ExecPlanGlobalConfig& config) = delete;
  162. ExecPlanGlobalConfig& operator=(const ExecPlanGlobalConfig& config) = delete;
  163. public:
  164. ~ExecPlanGlobalConfig() {}
  165. static ExecPlanGlobalConfig& getInstance()
  166. {
  167. static ExecPlanGlobalConfig config;
  168. return config;
  169. }
  170. /* 设置样式表路径 */
  171. // void setQSSPath(const QString& qssPath);
  172. /* 获取样式表路径 */
  173. QString getQSSPath();
  174. /* 换肤,修改样式表 */
  175. void setUIStyle(enum_UIStyle style);
  176. /* 获取当前UI风格 */
  177. enum_UIStyle getUIStyle() { return m_UIStyle; }
  178. signals:
  179. /* 样式表改变了 */
  180. void signal_qssChanged();
  181. /* OneIten样式表改变了 */
  182. void signal_oneItemQssChanged(const QString& qssPath);
  183. private:
  184. QString m_qssPath; /* 样式表路径 */
  185. const QString m_lightQSS = "/white"; /* 亮色样式表路径 */
  186. const QString m_darkQSS = "/black"; /* 暗色样式表路径 */
  187. enum_UIStyle m_UIStyle; /* 当前UI样式 */
  188. };
  189. #define EPConfig ExecPlanGlobalConfig::getInstance()
  190. #endif /* TRANSMITTERSWITCHINFO_H */