#include "PlanData.h" #include "LHQLogAPI.h" PlanData::PlanData() { /* 初始化计划卡片 */ m_mapPlanCard.clear(); } /* 新增一个卡片 */ PlanCard* PlanData::createOneCard(const ChannelInfo& chnInfo) { /* 先查找有没有这个频率的卡片 */ auto pCard = findPlanCard(chnInfo.ChannelID); if(pCard != nullptr) { /* 已经存在了,直接返回 */ return pCard; } pCard = new PlanCard(); pCard->setChannelInfo(chnInfo); connect(pCard, &PlanCard::signal_clickedCard, this, &PlanData::do_clickedCard); m_mapPlanCard.insert(chnInfo.ChannelID, pCard); return pCard; } /* 删除一个卡片 */ void PlanData::deleteOneCard(int channelID) { if(m_mapPlanCard.contains(channelID)) { auto pCard = m_mapPlanCard[channelID]; delete pCard; m_mapPlanCard.remove(channelID); } } /* 删除所有的卡片 */ void PlanData::deleteAllCard() { for(auto& it : m_mapPlanCard) { delete it; } m_mapPlanCard.clear(); } /* 清空一个卡片的计划 */ void PlanData::clearOnePlanItem(int channelID) { auto pCard = findPlanCard(channelID); if(pCard != nullptr) { pCard->clearPlanItem(); }else { LH_WRITE_ERROR(QString("没有找到频率ID为%1的卡片").arg(channelID)); } } /* 清空所有的计划 */ void PlanData::clearAllPlanItem() { for(auto& it : m_mapPlanCard) { it->clearPlanItem(); } } /* 清空所有卡片选中状态 */ void PlanData::clearAllSelectedCard() { for(auto& it : m_mapPlanCard) { it->setSelected(false); } m_currentFrequencyID = 0; } /* 查找卡片 */ PlanCard* PlanData::findPlanCard(int channelID) { if(m_mapPlanCard.contains(channelID)) { return m_mapPlanCard[channelID]; } return nullptr; } /* 新增一个计划 */ void PlanData::addPlanItem(int channelID, const PlanInfo& info) { auto pCard = findPlanCard(channelID); if(pCard != nullptr) { pCard->addPlanItem(info); }else { LH_WRITE_ERROR(QString("没有找到频率ID为%1的卡片").arg(channelID)); } } /* 设置每个卡片的大小 */ void PlanData::setCardSize(int width, int height) { for(auto& it : m_mapPlanCard) { it->setFixedSize(width, height); } // LH_WRITE_LOG_DEBUG(QString("卡片的实际大小:%1*%2").arg(m_mapPlanCard.first()->width()).arg(m_mapPlanCard.first()->height())); } /* 点击了一个卡片 */ void PlanData::do_clickedCard(int channelID) { // LH_WRITE_LOG_DEBUG(QString("点击了频率ID为%1的卡片").arg(channelID)); /* 先取消所有的选中效果 */ for(auto& it : m_mapPlanCard) { it->setSelected(false); } /* 设置选中效果 */ m_currentFrequencyID = channelID; auto pCard = findPlanCard(channelID); if(pCard != nullptr) { pCard->setSelected(true); } }