phonesettings/cpphonesettingsplugins/divertplugin/src/cpdivertplugingroup.cpp
changeset 77 2be0b271d017
parent 72 c76a0b1755b9
child 76 cfea66083b62
--- a/phonesettings/cpphonesettingsplugins/divertplugin/src/cpdivertplugingroup.cpp	Fri Sep 17 08:29:19 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/divertplugin/src/cpdivertplugingroup.cpp	Mon Oct 04 00:16:48 2010 +0300
@@ -345,14 +345,17 @@
     CpDivertRequestQueueItem i;
     i.request = request;
     i.item = &item;
-    m_divertRequestQueue.enqueue(i);
-
-    if (m_divertRequestQueue.count() == 1) {
-        // Process if first item was added, process other later
-		disableDivertItems();
-        processDivertingRequestQueue();
+    
+    if(!m_divertRequestQueue.contains(i)){
+        m_divertRequestQueue.enqueue(i);
+    
+        if (m_divertRequestQueue.count() == 1) {
+            // Process if first item was added, process other later
+		    disableDivertItems();
+            processDivertingRequestQueue();
+        }
     }
-
+    
     DPRINT << ": OUT";
 }
 
@@ -682,6 +685,9 @@
         event = DeactivateDivert;
     }
     
+    m_serviceGroup = 
+            qvariant_cast<PsServiceGroup>(item.property("serviceGroup"));
+        
     addToDivertingRequestQueue(event, item);
     DPRINT << ": OUT";
 }
@@ -890,39 +896,50 @@
     DPRINT << ": IN";
     
     // all calls divert activation deactivates automatically other diverts
-    QVariant itemState = m_DataItemVoiceAllCalls->contentWidgetData("checkState");
-    if ((itemState.isValid()) && 
-        (itemState.toInt() == Qt::Checked) &&
-        (m_DataItemVoiceAllCalls->contentWidgetData("text") != "")) {
-        deactivateDependentDivertOption(m_DataItemVoiceIfBusy);
-        deactivateDependentDivertOption(m_DataItemVoiceIfNotAnswered);
-        deactivateDependentDivertOption(m_DataItemVoiceIfOutOfReach);
-    } else {
-        // Must query data for diverts depending on all calls divert, because 
-        // data may have been lost for registered diverts, which were 
-        // automatically deactivated due to the activation of all calls divert.
-        activateDependentDivertOption(m_DataItemVoiceIfBusy, fetchFromNetwork);
-        activateDependentDivertOption(m_DataItemVoiceIfNotAnswered, fetchFromNetwork);
-        activateDependentDivertOption(m_DataItemVoiceIfOutOfReach, fetchFromNetwork);
+    QVariant itemState = 
+        m_DataItemVoiceAllCalls->contentWidgetData("checkState");
+    if(ServiceGroupVoice & m_serviceGroup){   
+        if ((itemState.isValid()) && 
+            (itemState.toInt() == Qt::Checked) &&
+                (m_DataItemVoiceAllCalls->contentWidgetData("text") != "")) {
+            deactivateDependentDivertOption(m_DataItemVoiceIfBusy);
+            deactivateDependentDivertOption(m_DataItemVoiceIfNotAnswered);
+            deactivateDependentDivertOption(m_DataItemVoiceIfOutOfReach);
+        } else {
+            // Must query data for diverts depending on all calls divert,  
+            // because data may have been lost for registered diverts,  
+            // which were automatically deactivated due to the activation 
+            // of all calls divert.
+            activateDependentDivertOption(
+                    m_DataItemVoiceIfBusy, fetchFromNetwork);
+            activateDependentDivertOption(
+                    m_DataItemVoiceIfNotAnswered, fetchFromNetwork);
+            activateDependentDivertOption(
+                    m_DataItemVoiceIfOutOfReach, fetchFromNetwork);
+        }
     }
-    
-    // all calls divert activation deactivates automatically other diverts
-    itemState = m_DataItemVideoAllCalls->contentWidgetData("checkState");
-    if ((itemState.isValid()) && 
-        (itemState.toInt() == Qt::Checked) &&
-        (m_DataItemVideoAllCalls->contentWidgetData("text") != "")) {
-        deactivateDependentDivertOption(m_DataItemVideoIfBusy);
-        deactivateDependentDivertOption(m_DataItemVideoIfNotAnswered);
-        deactivateDependentDivertOption(m_DataItemVideoIfOutOfReach);
-    } else {
-        // Must query data for diverts depending on all calls divert, because 
-        // data may have been lost for registered diverts, which were 
-        // automatically deactivated due to the activation of all calls divert.
-        activateDependentDivertOption(m_DataItemVideoIfBusy, fetchFromNetwork);
-        activateDependentDivertOption(m_DataItemVideoIfNotAnswered, fetchFromNetwork);
-        activateDependentDivertOption(m_DataItemVideoIfOutOfReach, fetchFromNetwork);
+    if (ServiceGroupData & m_serviceGroup){
+        // all calls divert activation deactivates automatically other diverts
+        itemState = m_DataItemVideoAllCalls->contentWidgetData("checkState");
+        if ((itemState.isValid()) && 
+            (itemState.toInt() == Qt::Checked) &&
+            (m_DataItemVideoAllCalls->contentWidgetData("text") != "")) {
+            deactivateDependentDivertOption(m_DataItemVideoIfBusy);
+            deactivateDependentDivertOption(m_DataItemVideoIfNotAnswered);
+            deactivateDependentDivertOption(m_DataItemVideoIfOutOfReach);
+        } else {
+            // Must query data for diverts depending on all calls divert,  
+            // because data may have been lost for registered diverts,  
+            // which were automatically deactivated due to the activation 
+            // of all calls divert.
+            activateDependentDivertOption(
+                    m_DataItemVideoIfBusy, fetchFromNetwork);
+            activateDependentDivertOption(
+                    m_DataItemVideoIfNotAnswered, fetchFromNetwork);
+            activateDependentDivertOption(
+                    m_DataItemVideoIfOutOfReach, fetchFromNetwork);
+        }
     }
-    
     // update not available divert option
     updateNotAvailableDivertOption();