diff -r c76a0b1755b9 -r 2be0b271d017 phonesettings/cpphonesettingsplugins/divertplugin/src/cpdivertplugingroup.cpp --- 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(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();