TransmitterSwitchInfo.h 6.9 KB

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