phoneengine/engineinfo/src/cperemoteinfo.cpp
changeset 37 ba76fc04e6c2
child 51 f39ed5e045e0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneengine/engineinfo/src/cperemoteinfo.cpp	Fri Jun 04 10:19:18 2010 +0100
@@ -0,0 +1,401 @@
+/*
+* Copyright (c) 2006-2008 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  This file contains the implementation of the CPERemoteInfo object
+*
+*/
+
+#include <cphcntcontactid.h>
+#include "cperemoteinfo.h"
+#include "talogger.h"
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CPERemoteInfo::NewL
+// Two-phased constructor.
+// ---------------------------------------------------------------------------
+//
+CPERemoteInfo* CPERemoteInfo::NewL()
+    {
+    TEFLOGSTRING( KTAOBJECT, "CPERemoteInfo::NewL" );
+    CPERemoteInfo* remoteInfo = new ( ELeave ) CPERemoteInfo();
+    return remoteInfo;
+    }
+
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+//
+CPERemoteInfo::CPERemoteInfo()
+    {
+    TEFLOGSTRING( KTAOBJECT, "CPERemoteInfo::CPERemoteInfo" );
+    ResetRemoteInfo();
+    }
+
+// ---------------------------------------------------------------------------
+// Destructor
+// ---------------------------------------------------------------------------
+//
+CPERemoteInfo::~CPERemoteInfo()
+    {
+    TEFLOGSTRING( KTAOBJECT, "CPERemoteInfo::~CPERemoteInfo" );
+    delete iTextToSpeechText;
+    delete iCallerText;
+    delete iCallerImage;
+    delete iContactLink;
+    if ( iContactId )
+        {
+        if ( iContactId->IsValid() )
+            {
+            iContactId->Invalidate();
+            delete iContactId;
+            }
+        }
+    iGroupId.Reset();
+    delete iCallerThumbnail;
+    delete iPredefinedDtmfStrings;
+    }
+
+TInt CPERemoteInfo::CallId() const
+    {
+    TEFLOGSTRING2( KTAINT, "CPERemoteInfo::CallId, id: %d", iCallId );
+    return iCallId;
+    }
+
+const CPhCntContactId& CPERemoteInfo::ContactId() const
+    {
+    TEFLOGSTRING2( KTAINT, "CPERemoteInfo::ContactId, ptr: %x", iContactId );
+    return *iContactId;
+    }
+
+const TDesC8& CPERemoteInfo::ContactLink() const
+    {
+    if( iContactLink )
+        {
+        return *iContactLink;
+        }
+    else
+        {
+        return KNullDesC8;
+        }
+    }
+
+const TPEPhoneNumber& CPERemoteInfo::PhoneNumber() const
+    {
+    TEFLOGSTRING2( KTAINT, "CPERemoteInfo::PhoneNumber, number: '%S'", &iPhoneNumber );
+    return iPhoneNumber;
+    }
+
+const TPEPhoneNumber& CPERemoteInfo::ColpNumber() const
+    {
+    TEFLOGSTRING2( KTAINT, "CPERemoteInfo::ColpNumber, number: '%S'", &iColpNumber );
+    return iColpNumber;
+    }
+
+const TPEContactName& CPERemoteInfo::Name() const
+    {
+    TEFLOGSTRING2( KTAINT, "CPERemoteInfo::Name, name: '%S'", &iName );
+    return iName;
+    }
+
+const TPEContactCompany& CPERemoteInfo::CompanyName() const
+    {
+    TEFLOGSTRING2( KTAINT, "CPERemoteInfo::CompanyName, name: '%S'", &iCompanyName );
+    return iCompanyName;
+    }
+
+const TPEContactFileName& CPERemoteInfo::PersonalRingingTone() const
+    {
+    TEFLOGSTRING2( KTAINT, "CPERemoteInfo::PersonalRingingTone, path: '%S'", &iPersonalRingingTone );
+    return iPersonalRingingTone;
+    }
+
+const TPEPhoneNumberIdType& CPERemoteInfo::PhoneNumberType() const
+    {
+    TEFLOGSTRING2( KTAINT, "CPERemoteInfo::PhoneNumberType, type: %d", iPhoneNumberType );
+    return iPhoneNumberType;
+    }
+
+const TPtrC CPERemoteInfo::TextToSpeechText() const
+    {
+    if( iTextToSpeechText )
+        {
+        TEFLOGSTRING2( KTAINT, "CPERemoteInfo::TextToSpeechText, path: '%S'", iTextToSpeechText );
+        return *iTextToSpeechText;
+        }
+    else
+        {
+        return KNullDesC();
+        }
+    }
+
+const TArray< TContactItemId > CPERemoteInfo::ContactGroups() const
+    {
+    TEFLOGSTRING2( KTAINT, "CPERemoteInfo::ContactGroups, entries: %d", iGroupId.Count() );
+    return iGroupId.Array();
+    }
+
+const TPtrC CPERemoteInfo::CallerText() const
+    {
+    if( iCallerText )
+        {
+        TEFLOGSTRING2( KTAINT, "CPERemoteInfo::CallerText, path: '%S'", iCallerText );
+        return *iCallerText;
+        }
+    else
+        {
+        return KNullDesC();
+        }
+    }
+
+const TPtrC CPERemoteInfo::CallerImage() const
+    {
+    if( iCallerImage )
+        {
+        TEFLOGSTRING2( KTAINT, "CPERemoteInfo::CallerImage, path: %S", iCallerImage );
+        return *iCallerImage;
+        }
+    else
+        {
+        return KNullDesC();
+        }
+    }
+
+CFbsBitmap* CPERemoteInfo::CallerThumbnail() const
+    {
+    TEFLOGSTRING2( KTAINT, "CPERemoteInfo::CallerThumbnail, ptr: %x", iCallerThumbnail );
+    return iCallerThumbnail;
+    }
+
+TBool CPERemoteInfo::HasCallerThumbnail() const
+    {
+    return iHasCallerThumbnail;
+    }    
+
+void CPERemoteInfo::SetCallId( const TInt aCallId )
+    {
+    TEFLOGSTRING2( KTAINT, "CPERemoteInfo::SetCallId, id: %d", iCallId );
+    iCallId = aCallId;
+    }
+
+void CPERemoteInfo::SetContactId( CPhCntContactId* aContactId )
+    {
+    TEFLOGSTRING2( KTAINT, "CPERemoteInfo::SetContactId, ptr: %x", iContactId );
+    iContactId = aContactId;
+    
+    delete iContactLink;
+    iContactLink = NULL;
+    TRAP_IGNORE( iContactLink = iContactId->PackLC();
+        CleanupStack::Pop( iContactLink ); );
+
+    }
+
+void CPERemoteInfo::SetPhoneNumber( const TPEPhoneNumber& aPhoneNumber )
+    {
+    iPhoneNumber = aPhoneNumber;
+    TEFLOGSTRING2( KTAINT, "CPERemoteInfo::SetPhoneNumber, number: '%S'", &iPhoneNumber );
+    }
+
+void CPERemoteInfo::SetColpNumber( const TPEPhoneNumber& aColpNumber )
+    {
+    iColpNumber = aColpNumber;
+    TEFLOGSTRING2( KTAINT, "CPERemoteInfo::SetColpNumber, number: '%S'", &iColpNumber );
+    }
+
+void CPERemoteInfo::SetName( const TPEContactName& aContactName )
+    {
+    iName = aContactName;
+    TEFLOGSTRING2( KTAINT, "CPERemoteInfo::SetName, name: '%S'", &iName );
+    }
+
+void CPERemoteInfo::SetCompanyName( const TPEContactName& aCompanyName )
+    {
+    iCompanyName = aCompanyName;
+    TEFLOGSTRING2( KTAINT, "CPERemoteInfo::SetCompanyName, company name: '%S'", &iCompanyName );
+    }
+
+void CPERemoteInfo::SetPersonalRingingTone(
+        const TPEContactFileName& aPersonalRingingTone )
+    {
+    iPersonalRingingTone = aPersonalRingingTone;
+    TEFLOGSTRING2( KTAINT, "CPERemoteInfo::SetPersonalRingingTone, path: '%S'", &iPersonalRingingTone );
+    }
+
+void CPERemoteInfo::SetPhoneNumberType( const TPEPhoneNumberIdType aPhoneNumberType )
+    {
+    iPhoneNumberType = aPhoneNumberType;
+    TEFLOGSTRING2( KTAINT, "CPERemoteInfo::SetPhoneNumberType, type: %d", iPhoneNumberType );
+    }
+
+void CPERemoteInfo::SetTextToSpeechText( HBufC* aText )
+    {
+    iTextToSpeechText = aText;
+    TEFLOGSTRING2( KTAINT, "CPERemoteInfo::SetTextToSpeechText, path: '%S'", &iTextToSpeechText );
+    }
+
+void CPERemoteInfo::SetContactGroups(
+        const TArray< TContactItemId >& aGroupIdArray )
+    {
+    TEFLOGSTRING( KTAINT, "CPERemoteInfo::SetContactGroups" );
+    TInt errorCode( KErrNone );
+
+    iGroupId.Reset();
+    for ( TInt i = 0; i < aGroupIdArray.Count(); i++ )
+        {
+        errorCode = iGroupId.Append( aGroupIdArray[ i ] );
+        TEFLOGSTRING3( 
+            KTAINT, 
+            "PE CPERemoteInfo::SetContactGroups, index: %d, group id: %d", 
+            i, 
+            aGroupIdArray[ i ] );
+        }
+    if ( errorCode != KErrNone )
+        {
+        TEFLOGSTRING2( KTAERROR,
+            "CPERemoteInfo::SetContactGroups ! RARRAY::APPEND FAILED WITH EXIT CODE: &d",
+            errorCode );
+        iGroupId.Reset();
+        }
+    TEFLOGSTRING2( KTAINT, "PE CPERemoteInfo::SetContactGroups, entries: %d", iGroupId.Count() );
+    }
+
+void CPERemoteInfo::SetCallerText( const TPtrC aCallerText )
+    {
+    delete iCallerText;
+    if ( aCallerText.Length() > 0 )
+        {
+        iCallerText = aCallerText.Alloc();
+        TEFLOGSTRING2( KTAINT, "CPERemoteInfo::SetCallerText, text: '%S'", &iCallerText );
+        }
+    else
+        {
+        TEFLOGSTRING( KTAERROR, "CPEREMOTEINFO::SETCALLERTEXT ! NO CALLER TEXT" );
+        }
+    }
+
+void CPERemoteInfo::SetCallerImage( const TPtrC aCallerImage )
+    {
+    delete iCallerImage;
+    if ( aCallerImage.Length() > 0 )
+        {
+        iCallerImage = aCallerImage.Alloc();
+        TEFLOGSTRING2( KTAINT, "CPERemoteInfo::SetCallerImage, path: '%S'", &iCallerImage );
+        }
+    else
+        {
+        TEFLOGSTRING( KTAERROR, "CPEREMOTEINFO::SETCALLERIMAGE ! NO CALLER IMAGE PATH" );
+        }
+    }
+
+void CPERemoteInfo::SetCallerThumbnail( CFbsBitmap* aCallerThumbnail )
+    {
+    delete iCallerThumbnail;
+    iCallerThumbnail = aCallerThumbnail;
+    TEFLOGSTRING2( KTAINT, "CPERemoteInfo::SetCallerThumbnail, ptr: %x", iCallerThumbnail );
+    }
+
+
+void CPERemoteInfo::SetHasCallerThumbnail( TBool aStatus )
+    {
+    iHasCallerThumbnail = aStatus;
+    TEFLOGSTRING2( KTAINT, "CPERemoteInfo::SetHasCallerThumbnail, %d", aStatus );
+    }
+
+// -----------------------------------------------------------------------------
+// CPERemoteInfo::SetPredefinedDtmfStrings()
+//
+//  
+// -----------------------------------------------------------------------------
+//
+void CPERemoteInfo::SetPredefinedDtmfStrings( 
+            const CDesCArray& aArray )           
+    {
+    if ( iPredefinedDtmfStrings )
+        {
+        delete iPredefinedDtmfStrings;
+        iPredefinedDtmfStrings = NULL;
+        }
+    
+    TInt count = aArray.Count();
+  
+    if ( count )
+        {
+        TRAPD( err, iPredefinedDtmfStrings = new ( ELeave ) CDesCArrayFlat( count ) );
+        
+        if( err != KErrNone )
+            {
+            TEFLOGSTRING2( KTAINT, "CPERemoteInfo::SetPredefinedDtmfStrings, err: %d", err );
+            return;
+            }
+         
+        for ( TInt i = 0; i < count; i++ )
+            {
+            TRAP_IGNORE( iPredefinedDtmfStrings->AppendL( aArray.MdcaPoint(i) ) );    
+            }
+        }
+    }
+
+
+// -----------------------------------------------------------------------------
+// CPERemoteInfo::PredefinedDtmfStrings()
+//
+//  
+// -----------------------------------------------------------------------------
+//
+CDesCArray& CPERemoteInfo::PredefinedDtmfStrings()
+    {
+    if ( !iPredefinedDtmfStrings )
+        {
+        // Create dymmy array to help post handling
+        TRAP_IGNORE( iPredefinedDtmfStrings = new ( ELeave ) CDesCArrayFlat( 1 ) );        
+        }
+    return *iPredefinedDtmfStrings;    
+    }
+
+
+void CPERemoteInfo::ResetRemoteInfo()
+    {
+    TEFLOGSTRING( KTAINT, "CPERemoteInfo::ResetRemoteInfo" );
+    iPhoneNumber = KNullDesC;
+    iColpNumber = KNullDesC;
+    iName = KNullDesC;
+    iCompanyName = KNullDesC;
+    iPersonalRingingTone = KNullDesC;
+    iPhoneNumberType = EPEUnknownNumber;
+    delete iTextToSpeechText;
+    iTextToSpeechText = NULL;
+    delete iCallerText;
+    iCallerText = NULL;
+    delete iCallerImage;
+    iCallerImage = NULL;
+    if ( iContactId )
+        {
+        if ( iContactId->IsValid() )
+            {
+            iContactId->Invalidate();
+            delete iContactId;
+            iContactId = NULL;
+            }
+        }
+    
+    delete iContactLink;
+    iContactLink = NULL;
+    
+    iGroupId.Reset();
+    delete iCallerThumbnail;
+    iCallerThumbnail = NULL;
+    delete iPredefinedDtmfStrings;
+    iPredefinedDtmfStrings = NULL;
+    iHasCallerThumbnail = EFalse;
+    }