phonesettings/cpphonesettingsplugins/divertplugin/src/cpdivertplugingroup.cpp
changeset 77 2be0b271d017
parent 72 c76a0b1755b9
child 76 cfea66083b62
equal deleted inserted replaced
72:c76a0b1755b9 77:2be0b271d017
   343     DPRINT << ": IN";
   343     DPRINT << ": IN";
   344     
   344     
   345     CpDivertRequestQueueItem i;
   345     CpDivertRequestQueueItem i;
   346     i.request = request;
   346     i.request = request;
   347     i.item = &item;
   347     i.item = &item;
   348     m_divertRequestQueue.enqueue(i);
   348     
   349 
   349     if(!m_divertRequestQueue.contains(i)){
   350     if (m_divertRequestQueue.count() == 1) {
   350         m_divertRequestQueue.enqueue(i);
   351         // Process if first item was added, process other later
   351     
   352 		disableDivertItems();
   352         if (m_divertRequestQueue.count() == 1) {
   353         processDivertingRequestQueue();
   353             // Process if first item was added, process other later
   354     }
   354 		    disableDivertItems();
   355 
   355             processDivertingRequestQueue();
       
   356         }
       
   357     }
       
   358     
   356     DPRINT << ": OUT";
   359     DPRINT << ": OUT";
   357 }
   360 }
   358 
   361 
   359 /*!
   362 /*!
   360   CpDivertPluginGroup::divertRequestProcessed.
   363   CpDivertPluginGroup::divertRequestProcessed.
   680         event = ActivateDivert;
   683         event = ActivateDivert;
   681     } else {
   684     } else {
   682         event = DeactivateDivert;
   685         event = DeactivateDivert;
   683     }
   686     }
   684     
   687     
       
   688     m_serviceGroup = 
       
   689             qvariant_cast<PsServiceGroup>(item.property("serviceGroup"));
       
   690         
   685     addToDivertingRequestQueue(event, item);
   691     addToDivertingRequestQueue(event, item);
   686     DPRINT << ": OUT";
   692     DPRINT << ": OUT";
   687 }
   693 }
   688 
   694 
   689 /*!
   695 /*!
   888 void CpDivertPluginGroup::updateDependentDivertOptions(bool fetchFromNetwork)
   894 void CpDivertPluginGroup::updateDependentDivertOptions(bool fetchFromNetwork)
   889 {
   895 {
   890     DPRINT << ": IN";
   896     DPRINT << ": IN";
   891     
   897     
   892     // all calls divert activation deactivates automatically other diverts
   898     // all calls divert activation deactivates automatically other diverts
   893     QVariant itemState = m_DataItemVoiceAllCalls->contentWidgetData("checkState");
   899     QVariant itemState = 
   894     if ((itemState.isValid()) && 
   900         m_DataItemVoiceAllCalls->contentWidgetData("checkState");
   895         (itemState.toInt() == Qt::Checked) &&
   901     if(ServiceGroupVoice & m_serviceGroup){   
   896         (m_DataItemVoiceAllCalls->contentWidgetData("text") != "")) {
   902         if ((itemState.isValid()) && 
   897         deactivateDependentDivertOption(m_DataItemVoiceIfBusy);
   903             (itemState.toInt() == Qt::Checked) &&
   898         deactivateDependentDivertOption(m_DataItemVoiceIfNotAnswered);
   904                 (m_DataItemVoiceAllCalls->contentWidgetData("text") != "")) {
   899         deactivateDependentDivertOption(m_DataItemVoiceIfOutOfReach);
   905             deactivateDependentDivertOption(m_DataItemVoiceIfBusy);
   900     } else {
   906             deactivateDependentDivertOption(m_DataItemVoiceIfNotAnswered);
   901         // Must query data for diverts depending on all calls divert, because 
   907             deactivateDependentDivertOption(m_DataItemVoiceIfOutOfReach);
   902         // data may have been lost for registered diverts, which were 
   908         } else {
   903         // automatically deactivated due to the activation of all calls divert.
   909             // Must query data for diverts depending on all calls divert,  
   904         activateDependentDivertOption(m_DataItemVoiceIfBusy, fetchFromNetwork);
   910             // because data may have been lost for registered diverts,  
   905         activateDependentDivertOption(m_DataItemVoiceIfNotAnswered, fetchFromNetwork);
   911             // which were automatically deactivated due to the activation 
   906         activateDependentDivertOption(m_DataItemVoiceIfOutOfReach, fetchFromNetwork);
   912             // of all calls divert.
   907     }
   913             activateDependentDivertOption(
   908     
   914                     m_DataItemVoiceIfBusy, fetchFromNetwork);
   909     // all calls divert activation deactivates automatically other diverts
   915             activateDependentDivertOption(
   910     itemState = m_DataItemVideoAllCalls->contentWidgetData("checkState");
   916                     m_DataItemVoiceIfNotAnswered, fetchFromNetwork);
   911     if ((itemState.isValid()) && 
   917             activateDependentDivertOption(
   912         (itemState.toInt() == Qt::Checked) &&
   918                     m_DataItemVoiceIfOutOfReach, fetchFromNetwork);
   913         (m_DataItemVideoAllCalls->contentWidgetData("text") != "")) {
   919         }
   914         deactivateDependentDivertOption(m_DataItemVideoIfBusy);
   920     }
   915         deactivateDependentDivertOption(m_DataItemVideoIfNotAnswered);
   921     if (ServiceGroupData & m_serviceGroup){
   916         deactivateDependentDivertOption(m_DataItemVideoIfOutOfReach);
   922         // all calls divert activation deactivates automatically other diverts
   917     } else {
   923         itemState = m_DataItemVideoAllCalls->contentWidgetData("checkState");
   918         // Must query data for diverts depending on all calls divert, because 
   924         if ((itemState.isValid()) && 
   919         // data may have been lost for registered diverts, which were 
   925             (itemState.toInt() == Qt::Checked) &&
   920         // automatically deactivated due to the activation of all calls divert.
   926             (m_DataItemVideoAllCalls->contentWidgetData("text") != "")) {
   921         activateDependentDivertOption(m_DataItemVideoIfBusy, fetchFromNetwork);
   927             deactivateDependentDivertOption(m_DataItemVideoIfBusy);
   922         activateDependentDivertOption(m_DataItemVideoIfNotAnswered, fetchFromNetwork);
   928             deactivateDependentDivertOption(m_DataItemVideoIfNotAnswered);
   923         activateDependentDivertOption(m_DataItemVideoIfOutOfReach, fetchFromNetwork);
   929             deactivateDependentDivertOption(m_DataItemVideoIfOutOfReach);
   924     }
   930         } else {
   925     
   931             // Must query data for diverts depending on all calls divert,  
       
   932             // because data may have been lost for registered diverts,  
       
   933             // which were automatically deactivated due to the activation 
       
   934             // of all calls divert.
       
   935             activateDependentDivertOption(
       
   936                     m_DataItemVideoIfBusy, fetchFromNetwork);
       
   937             activateDependentDivertOption(
       
   938                     m_DataItemVideoIfNotAnswered, fetchFromNetwork);
       
   939             activateDependentDivertOption(
       
   940                     m_DataItemVideoIfOutOfReach, fetchFromNetwork);
       
   941         }
       
   942     }
   926     // update not available divert option
   943     // update not available divert option
   927     updateNotAvailableDivertOption();
   944     updateNotAvailableDivertOption();
   928     
   945     
   929     DPRINT << ": OUT";
   946     DPRINT << ": OUT";
   930 }
   947 }