diff -r f27aebe284bb -r c5af8598d22c logsui/logsengine/src/logscall.cpp --- a/logsui/logsengine/src/logscall.cpp Wed Aug 18 09:49:12 2010 +0300 +++ b/logsui/logsengine/src/logscall.cpp Thu Sep 02 20:27:05 2010 +0300 @@ -26,19 +26,24 @@ #include #include #include +#include // ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- // LogsCall::LogsCall(LogsEvent& event) - : QObject(), mDefaultCall( TypeLogsCallNotAvailable ) + : QObject(), mDefaultCall( TypeLogsCallNotAvailable ), mServiceId(0), mContactId(0) { if ( event.logsEventData() ) { mServiceId = event.logsEventData()->serviceId(); } - if (event.eventType() == LogsEvent::TypeVoIPCall ) { + mNumber = event.getNumberForCalling(); + bool communicationPossible = !mNumber.isEmpty(); + if ( !communicationPossible ){ + LOGS_QDEBUG( "logs [ENG] <-> LogsCall::LogsCall(), communication not possible" ) + } else if (event.eventType() == LogsEvent::TypeVoIPCall ) { mCalls.append(LogsCall::TypeLogsVoIPCall); if ( event.logsEventData() && event.logsEventData()->isCsCompatible()){ mCalls.append(LogsCall::TypeLogsVoiceCall); @@ -50,14 +55,16 @@ mCalls.append(LogsCall::TypeLogsVideoCall); } - if (event.eventType() == LogsEvent::TypeVoiceCall){ + if ( !communicationPossible ){ + mDefaultCall = TypeLogsCallNotAvailable; + } else if (event.eventType() == LogsEvent::TypeVoiceCall){ mDefaultCall = TypeLogsVoiceCall; } else if (event.eventType() == LogsEvent::TypeVideoCall) { mDefaultCall = TypeLogsVideoCall; } else if (event.eventType() == LogsEvent::TypeVoIPCall) { mDefaultCall = TypeLogsVoIPCall; } - mNumber = event.getNumberForCalling(); + } // ----------------------------------------------------------------------------- @@ -65,7 +72,7 @@ // ----------------------------------------------------------------------------- // LogsCall::LogsCall(unsigned int contactId, const QString& number) - : QObject(), mDefaultCall( TypeLogsCallNotAvailable ), mServiceId(0) + : QObject(), mDefaultCall( TypeLogsCallNotAvailable ), mServiceId(0), mContactId(contactId) { Q_UNUSED(contactId); mNumber = number; @@ -123,14 +130,24 @@ // ---------------------------------------------------------------------------- // void LogsCall::callToNumber(LogsCall::CallType callType, const QString& number, - unsigned int serviceId) + unsigned int serviceId, unsigned int contactId) { LOGS_QDEBUG_2( "logs [ENG] -> LogsCall::callToNumber(), type", callType ) + QString service("phoneui.com.nokia.symbian.ICallDial"); - if (callType == TypeLogsVoiceCall) { - createcall("com.nokia.symbian.ICallDial", "dial(QString)", number, false); + if ( number.isEmpty() || callType == TypeLogsCallNotAvailable ){ + LOGS_QDEBUG( "logs [ENG] Calling not possible!" ) + if ( contactId ){ + HbNotificationDialog::launchDialog( + hbTrId("txt_dial_dpopinfo_no_saved_number_for_this_contact")); + } else { + // Will fail but intention is to get error notification from phone + createcall(service, "dial(QString)", number, false); + } + } else if (callType == TypeLogsVoiceCall) { + createcall(service, "dial(QString)", number, false); } else if (callType == TypeLogsVideoCall) { - createcall("com.nokia.symbian.ICallDial", "dialVideo(QString)", number, false); + createcall(service, "dialVideo(QString)", number, false); } else if (callType == TypeLogsVoIPCall){ if ( serviceId ){ @@ -140,7 +157,7 @@ // also contact must be passed if available if change service is // provided (no point change service and try to call service specific // uri with another service)? - createCallWithService("com.nokia.symbian.ICallDial", + createCallWithService(service, "dialVoipService(QString,int)", number, false, serviceId); } else { @@ -148,8 +165,7 @@ // offer any kind of service selection. Normally voip call // should always have service id set but if it's missing // for some reason, then this provides call failure UI. - createcall("com.nokia.symbian.ICallDial", - "dialVoip(QString)", number, false); + createcall(service, "dialVoip(QString)", number, false); } } LOGS_QDEBUG( "logs [ENG] <- LogsCall::callToNumber()" ) @@ -163,7 +179,7 @@ { LOGS_QDEBUG_2( "logs [ENG] -> LogsCall::call(), type", callType ) - callToNumber(callType, mNumber, mServiceId); + callToNumber(callType, mNumber, mServiceId, mContactId); LOGS_QDEBUG( "logs [ENG] <- LogsCall::call()" ) } @@ -176,9 +192,8 @@ { LOGS_QDEBUG( "logs [ENG] -> LogsCall::initiateCallback()" ) - if (mDefaultCall != TypeLogsCallNotAvailable ){ - call(mDefaultCall); - } + call(mDefaultCall); + LOGS_QDEBUG( "logs [ENG] <- LogsCall::initiateCallback()" ) }