CompareItemData.cpp 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. #include "CompareItemData.h"
  2. /* 初始化 */
  3. bool CompareItemDataManager::init()
  4. {
  5. if(m_logger == nullptr)
  6. {
  7. m_logger = spdlog::get("CompareItemData");
  8. if(m_logger == nullptr)
  9. {
  10. fmt::print("CompareItemDataManager: 初始化日志失败");
  11. return false;
  12. }
  13. }
  14. return true;
  15. }
  16. /* 添加一个对比项 */
  17. bool CompareItemDataManager::addCompareItem(const CompareItemInfo_t& item)
  18. {
  19. if(item.nID <= 0)
  20. {
  21. SPDLOG_LOGGER_ERROR(m_logger, "对比项ID {} 无效,无法添加", item.nID);
  22. return false;
  23. }
  24. if(isCompareItemExist(item.nID))
  25. {
  26. SPDLOG_LOGGER_WARN(m_logger, "对比项ID {} 已经存在,无法添加", item.nID);
  27. return false;
  28. }
  29. m_listCompareItems.append(item);
  30. return true;
  31. }
  32. /* 根据对比项ID删除一个对比项 */
  33. bool CompareItemDataManager::removeCompareItem(int nID)
  34. {
  35. for(auto it = m_listCompareItems.begin(); it != m_listCompareItems.end(); ++it)
  36. {
  37. if(it->nID == nID)
  38. {
  39. m_listCompareItems.erase(it);
  40. return true;
  41. }
  42. }
  43. SPDLOG_LOGGER_WARN(m_logger, "对比项ID {} 不存在,无法删除", nID);
  44. return false;
  45. }
  46. /* 通过一个ID查找一个对比项 */
  47. CompareItemInfo_t CompareItemDataManager::findCompareItemByID(int nID) const
  48. {
  49. for(const auto& compareItem : m_listCompareItems)
  50. {
  51. if(compareItem.nID == nID)
  52. {
  53. return compareItem;
  54. }
  55. }
  56. SPDLOG_LOGGER_WARN(m_logger, "对比项ID {} 不存在", nID);
  57. return CompareItemInfo_t(); // 返回一个默认构造的对比项
  58. }
  59. /* 通过一个ID判断该对比项是否存在 */
  60. bool CompareItemDataManager::isCompareItemExist(int nID) const
  61. {
  62. for(const auto& compareItem : m_listCompareItems)
  63. {
  64. if(compareItem.nID == nID)
  65. {
  66. return true;
  67. }
  68. }
  69. return false;
  70. }
  71. /* 修改一个对比项 */
  72. bool CompareItemDataManager::modifyCompareItem(const CompareItemInfo_t& item)
  73. {
  74. for(auto& compareItem : m_listCompareItems)
  75. {
  76. if(compareItem.nID == item.nID)
  77. {
  78. compareItem = item; // 使用赋值运算符更新对比项
  79. return true;
  80. }
  81. }
  82. SPDLOG_LOGGER_WARN(m_logger, "对比项ID {} 不存在,无法修改", item.nID);
  83. return false;
  84. }
  85. /* 获取一个未使用的对比项ID */
  86. int CompareItemDataManager::getUnusedCompareItemID() const
  87. {
  88. int nID = 1; // 从1开始
  89. while(isCompareItemExist(nID))
  90. {
  91. ++nID;
  92. }
  93. return nID;
  94. }
  95. /* 获取表格需要的对比项数据 */
  96. QList<CompareItemTableItem_t> CompareItemDataManager::getCompareItemTableData() const
  97. {
  98. QList<CompareItemTableItem_t> result;
  99. int nSerialNum = 1; // 序号从1开始
  100. for(const auto& compareItem : m_listCompareItems)
  101. {
  102. CompareItemTableItem_t tableItem;
  103. tableItem.nSerialNum = nSerialNum;
  104. tableItem.nID = compareItem.nID;
  105. tableItem.strName = compareItem.strName;
  106. tableItem.isEnable = compareItem.isEnable;
  107. tableItem.nChannelCount = compareItem.listRoads.size(); // 通道数
  108. // 添加到结果列表
  109. result.append(tableItem);
  110. // 序号自增
  111. nSerialNum++;
  112. }
  113. return result;
  114. }