phoneengine/phoneservices/src/dialservice.cpp
branchGCC_SURGE
changeset 51 f39ed5e045e0
parent 30 ebdbd102c78a
parent 46 bc5a64e5bc3c
equal deleted inserted replaced
40:bab96b7ed1a4 51:f39ed5e045e0
    16 */
    16 */
    17 
    17 
    18 #include <xqserviceutil.h>
    18 #include <xqserviceutil.h>
    19 #include <e32base.h>
    19 #include <e32base.h>
    20 #include <qregexp.h>
    20 #include <qregexp.h>
       
    21 #include <featmgr.h>
       
    22 #include <settingsinternalcrkeys.h>
       
    23 #include <xqsettingsmanager.h>
    21 #include "dialservice.h"
    24 #include "dialservice.h"
    22 #include "qtphonelog.h"
    25 #include "qtphonelog.h"
    23 
    26 
       
    27 // CONSTANTS
       
    28 const int MaxPrefixStringLength = 10;
       
    29 const XQSettingsKey dialPrefixMode(XQSettingsKey::TargetCentralRepository, KCRUidNetworkSettings.iUid, KSettingsDialPrefixChangeMode);
       
    30 const XQSettingsKey dialPrefixString(XQSettingsKey::TargetCentralRepository, KCRUidNetworkSettings.iUid, KSettingsDialPrefixText);
    24 
    31 
    25 DialService::DialService(MPECallControlIF &call, MPECallSettersIF &parameters, QObject* parent) : 
    32 DialService::DialService(MPECallControlIF &call, MPECallSettersIF &parameters, QObject* parent) : 
    26     XQServiceProvider(QLatin1String("com.nokia.symbian.ICallDial"), parent), m_call (call), m_parameters (parameters)
    33     XQServiceProvider(QLatin1String("com.nokia.symbian.ICallDial"), parent), m_call (call), m_parameters (parameters), m_settingsManager(0)
    27 {
    34 {
    28     publishAll();
    35     publishAll();
       
    36     m_settingsManager = new XQSettingsManager(this);
       
    37     Q_ASSERT(m_settingsManager != 0);
    29 }
    38 }
    30 
    39 
    31 DialService::~DialService()
    40 DialService::~DialService()
    32 {
    41 {
    33 }
    42 }
    34 
    43 
    35 int DialService::dial(const QString& number)
    44 int DialService::dial(const QString& number)
    36 {
    45 {
    37     PHONE_DEBUG2("DialService::dial number:", number);
    46     PHONE_DEBUG2("DialService::dial number:", number);
    38     QString simplifiedNumber = simplified(number);
    47     QString phoneNumber = modifyPhoneNumber(number);
    39     TPtrC16 numberPtr(reinterpret_cast<const TUint16*>(simplifiedNumber.utf16()));
    48     TPtrC16 numberPtr(reinterpret_cast<const TUint16*>(phoneNumber.utf16()));
    40     m_parameters.SetPhoneNumber (numberPtr);
    49     m_parameters.SetPhoneNumber (numberPtr);
    41     m_parameters.SetCallTypeCommand (EPECallTypeCSVoice);
    50     m_parameters.SetCallTypeCommand (EPECallTypeCSVoice);
    42     return m_call.HandleDialServiceCall ();
    51     return m_call.HandleDialServiceCall ();
    43 }
    52 }
    44 
    53 
    45 int DialService::dial(const QString& number, int contactId)
    54 int DialService::dial(const QString& number, int contactId)
    46 {
    55 {
    47     PHONE_DEBUG4("DialService::dial number:", number, "contactId:", contactId);
    56     PHONE_DEBUG4("DialService::dial number:", number, "contactId:", contactId);
    48     QString simplifiedNumber = simplified(number);
    57     QString phoneNumber = modifyPhoneNumber(number);
    49     TPtrC16 numberPtr (reinterpret_cast<const TUint16*>(simplifiedNumber.utf16()));
    58     TPtrC16 numberPtr (reinterpret_cast<const TUint16*>(phoneNumber.utf16()));
    50     m_parameters.SetPhoneNumber (numberPtr);
    59     m_parameters.SetPhoneNumber (numberPtr);
    51     m_parameters.SetCallTypeCommand (EPECallTypeCSVoice);
    60     m_parameters.SetCallTypeCommand (EPECallTypeCSVoice);
    52     m_parameters.SetContactId2 (contactId);
    61     m_parameters.SetContactId2 (contactId);
    53     return m_call.HandleDialServiceCall (); 
    62     return m_call.HandleDialServiceCall (); 
    54 }
    63 }
    55 
    64 
    56 void DialService::dialVideo(const QString& number)
    65 void DialService::dialVideo(const QString& number)
    57 {
    66 {
    58     PHONE_DEBUG2("DialService::dialVideo number:", number);
    67     PHONE_DEBUG2("DialService::dialVideo number:", number);
    59     QString simplifiedNumber = simplified(number);
    68     QString phoneNumber = modifyPhoneNumber(number);
    60     TPtrC16 numberPtr(reinterpret_cast<const TUint16*>(simplifiedNumber.utf16()));
    69     TPtrC16 numberPtr(reinterpret_cast<const TUint16*>(phoneNumber.utf16()));
    61     m_parameters.SetPhoneNumber (numberPtr);
    70     m_parameters.SetPhoneNumber (numberPtr);
    62     m_parameters.SetCallTypeCommand (EPECallTypeVideo);
    71     m_parameters.SetCallTypeCommand (EPECallTypeVideo);
    63     m_call.HandleDialServiceCall ();
    72     m_call.HandleDialServiceCall ();
    64 }
    73 }
    65 
    74 
    66 void DialService::dialVideo(const QString& number, int contactId)
    75 void DialService::dialVideo(const QString& number, int contactId)
    67 {
    76 {
    68     PHONE_DEBUG4("DialService::dialVideo number:", number, "contactId:", contactId);
    77     PHONE_DEBUG4("DialService::dialVideo number:", number, "contactId:", contactId);
    69     QString simplifiedNumber = simplified(number);
    78     QString phoneNumber = modifyPhoneNumber(number);
    70     TPtrC16 numberPtr (reinterpret_cast<const TUint16*>(simplifiedNumber.utf16()));
    79     TPtrC16 numberPtr (reinterpret_cast<const TUint16*>(phoneNumber.utf16()));
    71     m_parameters.SetPhoneNumber (numberPtr);
    80     m_parameters.SetPhoneNumber (numberPtr);
    72     m_parameters.SetCallTypeCommand (EPECallTypeVideo);
    81     m_parameters.SetCallTypeCommand (EPECallTypeVideo);
    73     m_parameters.SetContactId2 (contactId);
    82     m_parameters.SetContactId2 (contactId);
    74     m_call.HandleDialServiceCall ();    
    83     m_call.HandleDialServiceCall ();    
    75 }
    84 }
   115     m_parameters.SetServiceIdCommand(serviceId);
   124     m_parameters.SetServiceIdCommand(serviceId);
   116     m_parameters.SetContactId2(contactId);
   125     m_parameters.SetContactId2(contactId);
   117     m_call.HandleDialServiceCall();    
   126     m_call.HandleDialServiceCall();    
   118 }
   127 }
   119 
   128 
       
   129 QString DialService::modifyPhoneNumber(const QString &number)
       
   130 {
       
   131     QString modifiedNumber = simplified(number);
       
   132     modifiedNumber = japanPrefixModifications(modifiedNumber);
       
   133 
       
   134     return modifiedNumber;
       
   135 }
       
   136 
   120 QString DialService::simplified(const QString &number)
   137 QString DialService::simplified(const QString &number)
   121 {
   138 {
   122     QString simplifiedNumber = number;
   139     QString simplifiedNumber = number;
   123     QRegExp rx(QString("[\\s,.\\[\\]\\(\\)\\-]"));
   140     QRegExp rx(QString("[\\s,.\\[\\]\\(\\)\\-]"));
   124     simplifiedNumber.remove(rx);
   141     simplifiedNumber.remove(rx);
   125     return simplifiedNumber;
   142     return simplifiedNumber;
   126 }
   143 }
       
   144 
       
   145 QString DialService::japanPrefixModifications(const QString &number)
       
   146 {    
       
   147     bool checkPrefix = FeatureManager::FeatureSupported(KFeatureIdJapanPrefixChange);
       
   148     if(checkPrefix == false) {
       
   149     	  // prefix change setting is off so don't play with the number
       
   150         return number;
       
   151     }
       
   152     
       
   153     QString modifiedNumber = number;
       
   154     
       
   155     int prefixMode = m_settingsManager->readItemValue(dialPrefixMode, XQSettingsManager::TypeInt).toInt();
       
   156     if((m_settingsManager->error() == XQSettingsManager::NoError) && (prefixMode > 0)) {
       
   157         // No error fetching value and setting is on
       
   158         QString prefixString = m_settingsManager->readItemValue(dialPrefixString, XQSettingsManager::TypeString).toString();
       
   159 
       
   160         if(m_settingsManager->error() == XQSettingsManager::NoError) {
       
   161             if(modifiedNumber.startsWith("+")) {
       
   162                 modifiedNumber = modifiedNumber.replace(0, prefixString.length(), prefixString);
       
   163             }        	
       
   164         }
       
   165     }
       
   166                 	
       
   167     return modifiedNumber;
       
   168 }