#include "CompareItemData.h" /* 初始化 */ bool CompareItemDataManager::init() { if(m_logger == nullptr) { m_logger = spdlog::get("CompareItemData"); if(m_logger == nullptr) { fmt::print("CompareItemDataManager: 初始化日志失败"); return false; } } return true; } /* 添加一个对比项 */ bool CompareItemDataManager::addCompareItem(const CompareItemInfo_t& item) { if(item.nID <= 0) { SPDLOG_LOGGER_ERROR(m_logger, "对比项ID {} 无效,无法添加", item.nID); return false; } if(isCompareItemExist(item.nID)) { SPDLOG_LOGGER_WARN(m_logger, "对比项ID {} 已经存在,无法添加", item.nID); return false; } m_listCompareItems.append(item); return true; } /* 根据对比项ID删除一个对比项 */ bool CompareItemDataManager::removeCompareItem(int nID) { for(auto it = m_listCompareItems.begin(); it != m_listCompareItems.end(); ++it) { if(it->nID == nID) { m_listCompareItems.erase(it); return true; } } SPDLOG_LOGGER_WARN(m_logger, "对比项ID {} 不存在,无法删除", nID); return false; } /* 通过一个ID查找一个对比项 */ CompareItemInfo_t CompareItemDataManager::findCompareItemByID(int nID) const { for(const auto& compareItem : m_listCompareItems) { if(compareItem.nID == nID) { return compareItem; } } SPDLOG_LOGGER_WARN(m_logger, "对比项ID {} 不存在", nID); return CompareItemInfo_t(); // 返回一个默认构造的对比项 } /* 通过一个ID判断该对比项是否存在 */ bool CompareItemDataManager::isCompareItemExist(int nID) const { for(const auto& compareItem : m_listCompareItems) { if(compareItem.nID == nID) { return true; } } return false; } /* 修改一个对比项 */ bool CompareItemDataManager::modifyCompareItem(const CompareItemInfo_t& item) { for(auto& compareItem : m_listCompareItems) { if(compareItem.nID == item.nID) { compareItem = item; // 使用赋值运算符更新对比项 return true; } } SPDLOG_LOGGER_WARN(m_logger, "对比项ID {} 不存在,无法修改", item.nID); return false; } /** * @brief 获取一个未使用的对比项ID,直接从最新的对比项ID继续增加,以前用过的不用了 * * @return int */ int CompareItemDataManager::getUnusedCompareItemID() const { int nID = -1; for(const auto& compareItem : m_listCompareItems) { if(compareItem.nID > nID) { nID = compareItem.nID; // 找到最大的ID } } nID++; // 下一个未使用的ID if(nID <= 0) { nID = 1; // 如果没有对比项,则从1开始 } return nID; } /* 获取表格需要的对比项数据 */ QList CompareItemDataManager::getCompareItemTableData() const { QList result; int nSerialNum = 1; // 序号从1开始 for(const auto& compareItem : m_listCompareItems) { CompareItemTableItem_t tableItem; tableItem.nSerialNum = nSerialNum; tableItem.nID = compareItem.nID; tableItem.strName = compareItem.strName; tableItem.isEnable = compareItem.isEnable; tableItem.nChannelCount = compareItem.mapRoad.size(); // 通道数 // 添加到结果列表 result.append(tableItem); // 序号自增 nSerialNum++; } return result; } /* 设置对比项列表 */ void CompareItemDataManager::setCompareItemList(const QList& listItems) { m_listCompareItems = listItems; m_listSrcCompareItems = listItems; // 设置源数据为当前数据 SPDLOG_LOGGER_INFO(m_logger, "对比项列表已设置,当前对比项数量: {}", m_listCompareItems.size()); }