PlanData.cpp 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. #include "PlanData.h"
  2. #include "LHQLogAPI.h"
  3. PlanData::PlanData()
  4. {
  5. /* 初始化计划卡片 */
  6. m_mapPlanCard.clear();
  7. }
  8. /* 新增一个卡片 */
  9. PlanCard* PlanData::createOneCard(const ChannelInfo& chnInfo)
  10. {
  11. /* 先查找有没有这个频率的卡片 */
  12. auto pCard = findPlanCard(chnInfo.ChannelID);
  13. if(pCard != nullptr)
  14. {
  15. /* 已经存在了,直接返回 */
  16. return pCard;
  17. }
  18. pCard = new PlanCard();
  19. pCard->setChannelInfo(chnInfo);
  20. connect(pCard, &PlanCard::signal_clickedCard, this, &PlanData::do_clickedCard);
  21. m_mapPlanCard.insert(chnInfo.ChannelID, pCard);
  22. return pCard;
  23. }
  24. /* 删除一个卡片 */
  25. void PlanData::deleteOneCard(int channelID)
  26. {
  27. if(m_mapPlanCard.contains(channelID))
  28. {
  29. auto pCard = m_mapPlanCard[channelID];
  30. delete pCard;
  31. m_mapPlanCard.remove(channelID);
  32. }
  33. }
  34. /* 清空一个卡片的计划 */
  35. void PlanData::clearOnePlanItem(int channelID)
  36. {
  37. auto pCard = findPlanCard(channelID);
  38. if(pCard != nullptr)
  39. {
  40. pCard->clearPlanItem();
  41. }else {
  42. LH_WRITE_ERROR(QString("没有找到频率ID为%1的卡片").arg(channelID));
  43. }
  44. }
  45. /* 清空所有的计划 */
  46. void PlanData::clearAllPlanItem()
  47. {
  48. for(auto& it : m_mapPlanCard)
  49. {
  50. it->clearPlanItem();
  51. }
  52. }
  53. /* 查找卡片 */
  54. PlanCard* PlanData::findPlanCard(int channelID)
  55. {
  56. if(m_mapPlanCard.contains(channelID))
  57. {
  58. return m_mapPlanCard[channelID];
  59. }
  60. return nullptr;
  61. }
  62. /* 新增一个计划 */
  63. void PlanData::addPlanItem(int channelID, const PlanInfo& info)
  64. {
  65. auto pCard = findPlanCard(channelID);
  66. if(pCard != nullptr)
  67. {
  68. pCard->addPlanItem(info);
  69. }else {
  70. LH_WRITE_ERROR(QString("没有找到频率ID为%1的卡片").arg(channelID));
  71. }
  72. }
  73. /* 设置每个卡片的大小 */
  74. void PlanData::setCardSize(int width, int height)
  75. {
  76. for(auto& it : m_mapPlanCard)
  77. {
  78. it->setFixedSize(width, height);
  79. }
  80. // LH_WRITE_LOG_DEBUG(QString("卡片的实际大小:%1*%2").arg(m_mapPlanCard.first()->width()).arg(m_mapPlanCard.first()->height()));
  81. }
  82. /* 点击了一个卡片 */
  83. void PlanData::do_clickedCard(int channelID)
  84. {
  85. // LH_WRITE_LOG_DEBUG(QString("点击了频率ID为%1的卡片").arg(channelID));
  86. /* 先取消所有的选中效果 */
  87. for(auto& it : m_mapPlanCard)
  88. {
  89. it->setSelected(false);
  90. }
  91. /* 设置选中效果 */
  92. m_currentFrequencyID = channelID;
  93. auto pCard = findPlanCard(channelID);
  94. if(pCard != nullptr)
  95. {
  96. pCard->setSelected(true);
  97. }
  98. }