Browse Source

V2.3.4
1、修复了一个频率清空后不会同步的问题

Apple 2 weeks ago
parent
commit
dadbc67856

+ 6 - 0
TransmitterSwitch/ExecPlanData/PlanData.cpp

@@ -88,6 +88,12 @@ PlanCard* PlanData::findPlanCard(int channelID)
     return nullptr;
 }
 
+/* 获取当前所有频率 */
+QList<int> PlanData::getAllFrequency() const
+{
+    return m_mapPlanCard.keys();
+}
+
 /* 新增一个计划 */
 void PlanData::addPlanItem(int channelID, const PlanInfo& info)
 {

+ 4 - 3
TransmitterSwitch/ExecPlanData/PlanData.h

@@ -33,13 +33,14 @@ public:
     void clearAllPlanItem();
     /* 清空所有卡片选中状态 */
     void clearAllSelectedCard();
-    
 
     /* 查找卡片 */
     PlanCard* findPlanCard(int channelID);
     /* 获取当前选中的卡片 */
     PlanCard* getCurrentPlanCard() { return findPlanCard(m_currentFrequencyID); }
-    
+    /* 获取当前所有频率 */
+    QList<int> getAllFrequency() const;
+
     /* 新增一个计划 */
     void addPlanItem(int channelID, const PlanInfo& info);
 
@@ -52,7 +53,7 @@ private slots:
     void do_clickedCard(int channelID);
 
 private:
-    QMap<int, PlanCard*> m_mapPlanCard;    /* 计划卡片 */
+    QMap<int, PlanCard*> m_mapPlanCard;    /* 计划卡片, int是频率ID */
 
     int m_currentFrequencyID = 0;          /* 当前频率ID */
 };

+ 10 - 6
TransmitterSwitch/transmitterswitch.cpp

@@ -307,16 +307,20 @@ void TransmitterSwitch::getExecPlanFromEQM()
     /* 判断是单频率还是多频率 */
     if(!GInfo.isOneFrequency())
     {
-        /* 所有频率 */
+        /* 这里使用所有频率,如果获取的数据库中该频率没有数据,则会在下面遍历的时候清空数据 */
+        auto allFrequency = PData.getAllFrequency();
         QMap<int, QList<OnePlanItemInfo>> mapPlan;
+        for(auto frequency : allFrequency)
+        {
+            mapPlan.insert(frequency, QList<OnePlanItemInfo>());
+        }
+        
         if(m_fromWebAPI->getExecPlanData(mapPlan))
         {
-            /* 先清空所有的计划 */
-            // PData.clearAllPlanItem();
             /* 遍历所有的频率 */
-            for(auto begin = mapPlan.begin(), end = mapPlan.end(); begin != end; begin++)
+            for(auto it = mapPlan.begin(), end = mapPlan.end(); it != end; it++)
             {
-                auto pCard = PData.findPlanCard(begin.key());
+                auto pCard = PData.findPlanCard(it.key());
                 if(pCard != nullptr)
                 {
                     if(isFrequencyInCountdown(pCard->getChannelInfo().ChannelID))
@@ -325,7 +329,7 @@ void TransmitterSwitch::getExecPlanFromEQM()
                         continue;
                     }
                     pCard->clearPlanItem(); /* 清空当前频率的计划 */
-                    pCard->setPlanList(begin.value());
+                    pCard->setPlanList(it.value());
                 }
             }
             TipWidget::display(TipWidget::OPERATOR_OK, "获取计划成功", this);