PlanData.cpp 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  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::deleteAllCard()
  36. {
  37. for(auto& it : m_mapPlanCard)
  38. {
  39. delete it;
  40. }
  41. m_mapPlanCard.clear();
  42. }
  43. /* 清空一个卡片的计划 */
  44. void PlanData::clearOnePlanItem(int channelID)
  45. {
  46. auto pCard = findPlanCard(channelID);
  47. if(pCard != nullptr)
  48. {
  49. pCard->clearPlanItem();
  50. }else {
  51. LH_WRITE_ERROR(QString("没有找到频率ID为%1的卡片").arg(channelID));
  52. }
  53. }
  54. /* 清空所有的计划 */
  55. void PlanData::clearAllPlanItem()
  56. {
  57. for(auto& it : m_mapPlanCard)
  58. {
  59. it->clearPlanItem();
  60. }
  61. }
  62. /* 清空所有卡片选中状态 */
  63. void PlanData::clearAllSelectedCard()
  64. {
  65. for(auto& it : m_mapPlanCard)
  66. {
  67. it->setSelected(false);
  68. }
  69. m_currentFrequencyID = 0;
  70. }
  71. /* 查找卡片 */
  72. PlanCard* PlanData::findPlanCard(int channelID)
  73. {
  74. if(m_mapPlanCard.contains(channelID))
  75. {
  76. return m_mapPlanCard[channelID];
  77. }
  78. return nullptr;
  79. }
  80. /* 新增一个计划 */
  81. void PlanData::addPlanItem(int channelID, const PlanInfo& info)
  82. {
  83. auto pCard = findPlanCard(channelID);
  84. if(pCard != nullptr)
  85. {
  86. pCard->addPlanItem(info);
  87. }else {
  88. LH_WRITE_ERROR(QString("没有找到频率ID为%1的卡片").arg(channelID));
  89. }
  90. }
  91. /* 设置每个卡片的大小 */
  92. void PlanData::setCardSize(int width, int height)
  93. {
  94. for(auto& it : m_mapPlanCard)
  95. {
  96. it->setFixedSize(width, height);
  97. }
  98. // LH_WRITE_LOG_DEBUG(QString("卡片的实际大小:%1*%2").arg(m_mapPlanCard.first()->width()).arg(m_mapPlanCard.first()->height()));
  99. }
  100. /* 点击了一个卡片 */
  101. void PlanData::do_clickedCard(int channelID)
  102. {
  103. // LH_WRITE_LOG_DEBUG(QString("点击了频率ID为%1的卡片").arg(channelID));
  104. /* 先取消所有的选中效果 */
  105. for(auto& it : m_mapPlanCard)
  106. {
  107. it->setSelected(false);
  108. }
  109. /* 设置选中效果 */
  110. m_currentFrequencyID = channelID;
  111. auto pCard = findPlanCard(channelID);
  112. if(pCard != nullptr)
  113. {
  114. pCard->setSelected(true);
  115. }
  116. }