diff -r d1c62c765e48 -r cfea66083b62 phoneapp/phoneuiqtviewadapter/src/phonecallheadermanager.cpp --- a/phoneapp/phoneuiqtviewadapter/src/phonecallheadermanager.cpp Fri Sep 17 17:09:12 2010 +0300 +++ b/phoneapp/phoneuiqtviewadapter/src/phonecallheadermanager.cpp Mon Oct 04 16:06:10 2010 +0300 @@ -31,6 +31,7 @@ #include "cphonemediatorfactory.h" #include "cphonemediatorsender.h" #include "phoneviewcommanddefinitions.h" +#include "qtphonelog.h" #include #include @@ -41,9 +42,9 @@ inline Qt::TextElideMode clipToElide( - TPhoneCmdParamCallHeaderData::TPhoneTextClippingDirection clip) + PhoneCallHeaderUtil::ClippingDirection clip) { - return clip == TPhoneCmdParamCallHeaderData::ELeft ? + return clip == PhoneCallHeaderUtil::ELeft ? Qt::ElideLeft : Qt::ElideRight; } @@ -73,20 +74,7 @@ void PhoneCallHeaderManager::createCallHeader( int callId) { - TPhoneCmdParamCallHeaderData data; - - if (isIncoming(callId)) { - callHeaderUtil()->SetIncomingCallHeaderParams( - callId, - isWaitingCall(callId), - isVideoCall(callId), - &data ); - } else { - callHeaderUtil()->SetOutgoingCallHeaderParams( - callId, - &data); - } - + PHONE_TRACE m_bubbleWrapper.bubbleManager().startChanges (); if (m_bubbleWrapper.bubbleManager().isConferenceExpanded()) @@ -95,25 +83,20 @@ } int bubble = m_bubbleWrapper.createCallHeader(callId); - m_bubbleWrapper.setState(callId, bubble, data.CallState ()); - m_bubbleWrapper.setCli(bubble, data.CLIText(), clipToElide(data.CLITextClippingDirection())); - m_bubbleWrapper.setServiceId(callId, data.ServiceId()); - m_bubbleWrapper.setSecondaryCli(bubble, data.CNAPText (), clipToElide(data.CNAPTextClippingDirection())); - m_bubbleWrapper.setLabel(bubble, data.LabelText ()); - m_bubbleWrapper.setCallType(bubble, data.CallType ()); - m_bubbleWrapper.setDivert(bubble, data.Diverted ()); - m_bubbleWrapper.setCiphering(bubble, data.CipheringIndicatorAllowed(), data.Ciphering()); + + setCommonCallHeaderData(callId, bubble); - if (data.Picture().Length()) { + const TDesC& callerImage(callHeaderUtil()->CallerImage(callId)); + if (callerImage.Length()) { QString imagePath = - QString::fromUtf16(data.Picture().Ptr(),data.Picture().Length()); + QString::fromUtf16(callerImage.Ptr(), callerImage.Length()); m_bubbleWrapper.bubbleManager().setCallObjectImage(bubble,imagePath); } else { m_bubbleWrapper.bubbleManager().setCallObjectFromTheme(bubble); } m_bubbleWrapper.bubbleManager().endChanges (); - CPhoneMediatorFactory::Instance()->Sender()->SendEvent(EPhoneViewCreateCallHeader, callId, data); + sendVideoCallData(callId); } void PhoneCallHeaderManager::createEmergencyCallHeader(int callId) @@ -123,7 +106,10 @@ m_bubbleWrapper.setLabel(bubble, callHeaderUtil()->AttemptingEmergencyText()); m_bubbleWrapper.setCli (bubble, callHeaderUtil()->EmergencyHeaderText(), Qt::ElideRight); m_bubbleWrapper.setState(callId, bubble, EPEStateDialing); - m_bubbleWrapper.setCiphering(bubble, m_engineInfo->SecureSpecified(), m_engineInfo->ServiceId(callId)); + m_bubbleWrapper.setCallType(bubble, callHeaderUtil()->CallType(callId)); + m_bubbleWrapper.setCiphering(bubble, callHeaderUtil()->SecureSpecified(), callHeaderUtil()->Ciphering(callId)); + m_bubbleWrapper.bubbleManager().setCallFlag(bubble, BubbleManagerIF::EmergencyCall, true); + m_bubbleWrapper.bubbleManager().setCallObjectFromTheme(bubble); m_bubbleWrapper.bubbleManager().endChanges (); } @@ -140,68 +126,19 @@ m_bubbleWrapper.bubbleManager().endChanges(); } -void PhoneCallHeaderManager::updateCallHeaderState(int callId) +void PhoneCallHeaderManager::updateCallHeader(int callId) { - int bubble = m_bubbleWrapper.bubbleId(callId); if ( -1 != bubble ) { m_bubbleWrapper.bubbleManager ().startChanges (); - m_bubbleWrapper.setState(callId, bubble, callHeaderUtil()->CallState(callId)); - m_bubbleWrapper.setLabel(bubble, callHeaderUtil()->LabelText(callId)); - m_bubbleWrapper.setDivert(bubble, m_engineInfo->IncomingCallForwarded(callId)); + setCommonCallHeaderData(callId, bubble); m_bubbleWrapper.bubbleManager().endChanges (); } } -void PhoneCallHeaderManager::updateCallHeaderRemoteInfo(int callId) -{ - - TPhoneCmdParamCallHeaderData data; - - int bubble = m_bubbleWrapper.bubbleId(callId); - if ( -1 != bubble ) { - callHeaderUtil()->UpdateCallHeaderInfo( - callId, - isWaitingCall(callId), - isVideoCall(callId), - &data ); - - m_bubbleWrapper.bubbleManager().startChanges(); - m_bubbleWrapper.setCli(bubble, data.CLIText(), - clipToElide(data.CLITextClippingDirection())); - m_bubbleWrapper.setSecondaryCli(bubble, data.CNAPText (), - clipToElide(data.CNAPTextClippingDirection())); - m_bubbleWrapper.setDivert(bubble, m_engineInfo->IncomingCallForwarded(callId)); - m_bubbleWrapper.bubbleManager().endChanges (); - } - -} - -void PhoneCallHeaderManager::updateCallHeaderRemoteInfoAndLabel (int callId) -{ - TPhoneCmdParamCallHeaderData data; - - int bubble = m_bubbleWrapper.bubbleId(callId); - if ( -1 != bubble ) { - callHeaderUtil()->UpdateCallHeaderInfo( - callId, - isWaitingCall(callId), - isVideoCall(callId), - &data ); - - m_bubbleWrapper.bubbleManager().startChanges (); - m_bubbleWrapper.setCli(bubble, data.CLIText (), - clipToElide(data.CLITextClippingDirection())); - m_bubbleWrapper.setSecondaryCli(bubble, data.CNAPText (), - clipToElide(data.CNAPTextClippingDirection())); - m_bubbleWrapper.setLabel(bubble, data.LabelText ()); - m_bubbleWrapper.setDivert(bubble, data.Diverted ()); - m_bubbleWrapper.bubbleManager().endChanges (); - } -} - void PhoneCallHeaderManager::handleCipheringInfoChange(int callId) { + PHONE_TRACE if (callId == KPEConferenceCallID) { bool secure(true); for (int i=0; i conferenceText( KNullDesC ); - callHeaderUtil()->LoadResource(conferenceText, EPhoneCLIConferenceCall); + + PhoneCallHeaderUtil::ClippingDirection clipping; + TBuf cliText; + callHeaderUtil()->GetCli(callId, cliText, clipping); int bubble = m_bubbleWrapper.createConferenceBubble( - callId, callHeaderUtil()->CallState(callId), callHeaderUtil()->LabelText(callId), conferenceText); + callId, + callHeaderUtil()->CallState(callId), + callHeaderUtil()->LabelText(callId), + cliText ); m_bubbleWrapper.setServiceId(callId, m_engineInfo->ServiceId(callId)); m_bubbleWrapper.setCiphering(bubble, m_engineInfo->SecureSpecified(), m_engineInfo->IsSecureCall(callId)); @@ -299,6 +241,7 @@ void PhoneCallHeaderManager::removeAllCallHeaders() { + PHONE_TRACE if (m_bubbleWrapper.conferenceCallList().size()) { removeConferenceBubble(); } @@ -322,56 +265,63 @@ // PhoneCallHeaderUtil::IsVoiceCall // --------------------------------------------------------------------------- // -bool PhoneCallHeaderManager::isVoiceCall(int callId) const +bool PhoneCallHeaderManager::isVoiceCall(int callId) { - if( callId < 0 ) - { - return ( m_engineInfo->CallTypeCommand() - == EPECallTypeCSVoice || - m_engineInfo->CallTypeCommand() - == EPECallTypeVoIP ); - } - - return ( m_engineInfo->CallType( callId ) - == EPECallTypeCSVoice || - m_engineInfo->CallType( callId ) - == EPECallTypeVoIP ); + return callHeaderUtil()->IsVoiceCall(callId); } -// --------------------------------------------------------------------------- -// PhoneCallHeaderUtil::IsVideoCall -// --------------------------------------------------------------------------- -// -bool PhoneCallHeaderManager::isVideoCall(int callId) const + +void PhoneCallHeaderManager::setCommonCallHeaderData(int callId, int bubble) { - if( callId < 0 ) - { - return ( m_engineInfo->CallTypeCommand() - == EPECallTypeVideo ); - } - return ( m_engineInfo->CallType( callId ) - == EPECallTypeVideo ); + m_bubbleWrapper.setState(callId, bubble, + callHeaderUtil()->CallState(callId)); + + PhoneCallHeaderUtil::ClippingDirection cliClip; + PhoneCallHeaderUtil::ClippingDirection secondaryCliClip; + TBuf cliText; + TBuf secondaryCliText; + + callHeaderUtil()->GetCliTexts(callId, cliText, + cliClip, secondaryCliText, secondaryCliClip ); + + m_bubbleWrapper.setCli(bubble, cliText, clipToElide(cliClip)); + m_bubbleWrapper.setSecondaryCli(bubble, + secondaryCliText, clipToElide(secondaryCliClip)); + + m_bubbleWrapper.setServiceId(callId, callHeaderUtil()->ServiceId(callId)); + m_bubbleWrapper.setLabel(bubble, callHeaderUtil()->LabelText(callId)); + m_bubbleWrapper.setCallType(bubble, callHeaderUtil()->CallType(callId)); + + m_bubbleWrapper.bubbleManager().setCallFlag( + bubble, BubbleManagerIF::EmergencyCall, callId == KEmergencyCallId); + + m_bubbleWrapper.setDivert(bubble, + callHeaderUtil()->IsCallForwarded(callId)); + m_bubbleWrapper.setCiphering(bubble, callHeaderUtil()->SecureSpecified(), + callHeaderUtil()->Ciphering(callId)); } -bool PhoneCallHeaderManager::isIncoming(int callId) const - { - return callId >= 0 && - m_engineInfo->CallState( callId ) == EPEStateRinging; - } - -bool PhoneCallHeaderManager::isWaitingCall(int callId) const +void PhoneCallHeaderManager::sendVideoCallData(int callId) { - bool waiting( EFalse ); - if ( callId >= 0 && - m_engineInfo->CallState( callId ) == EPEStateRinging ) - { - if( m_bubbleWrapper.activeCallCount() > 0 ) - { - waiting = ETrue; - } - } - return waiting; + TPhoneCmdParamCallHeaderData callHeaderParam; + + PhoneCallHeaderUtil::ClippingDirection clipping; + TBuf cliText; + callHeaderUtil()->GetCli(callId, cliText, clipping); + TPhoneCmdParamCallHeaderData::TPhoneTextClippingDirection clip = + clipping == PhoneCallHeaderUtil::ERight ? + TPhoneCmdParamCallHeaderData::ERight : + TPhoneCmdParamCallHeaderData::ELeft; + + callHeaderParam.SetCLIText(cliText, clip); + callHeaderParam.SetCallState(callHeaderUtil()->CallState(callId)); + callHeaderParam.SetCallType(callHeaderUtil()->CallType(callId)); + callHeaderParam.SetRemotePhoneNumber( + callHeaderUtil()->RemotePhoneNumber(callId)); + + CPhoneMediatorFactory::Instance()->Sender()-> + SendEvent(EPhoneViewCreateCallHeader, callId, callHeaderParam); } PhoneCallHeaderUtil *PhoneCallHeaderManager::callHeaderUtil()