messagingapp/msgappfw/server/src/ccsconversationcontact.cpp
changeset 23 238255e8b033
child 25 84d9eb65b26f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingapp/msgappfw/server/src/ccsconversationcontact.cpp	Fri Apr 16 14:56:15 2010 +0300
@@ -0,0 +1,278 @@
+/*
+* Copyright (c) 2007 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 shall hold all the contact data associated with a
+*                 conversation like name, numbers and contact link .
+ *
+*/
+
+
+// SYSTEM INCLUDE FILES
+#include <miutpars.h>
+
+// USER INCLUDE FILES
+#include "ccsconversation.h"
+#include "ccsconversationcontact.h"
+#include "ccsdebug.h"
+
+// ============================== MEMBER FUNCTIONS ============================
+
+// ----------------------------------------------------------------------------
+// CCsConversationContact::CCsConversationContact
+// Default constructor
+// ----------------------------------------------------------------------------
+CCsConversationContact::CCsConversationContact()
+    {
+    }
+
+// ----------------------------------------------------------------------------
+// CCsConversationContact::ConstructL
+// Two phase construction
+// ----------------------------------------------------------------------------
+void
+CCsConversationContact::ConstructL()
+    {
+    iFirstName = NULL;
+    iLastName = NULL;
+    iNickName = NULL;
+    iContactId = KErrNotFound;
+    iPhoneNumberList = new (ELeave) RPointerArray<HBufC> ();
+    }
+
+// ----------------------------------------------------------------------------
+// CCsConversationContact::NewL
+// Two Phase constructor
+// ----------------------------------------------------------------------------
+CCsConversationContact*
+CCsConversationContact::NewL()
+    {
+    CCsConversationContact* self = new (ELeave) CCsConversationContact();
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+// ----------------------------------------------------------------------------
+// CCsConversationContact::~CCsConversationContact
+// Destructor
+// ----------------------------------------------------------------------------
+CCsConversationContact::~CCsConversationContact()
+    {
+    if(iFirstName)
+        {
+        delete iFirstName;
+        iFirstName = NULL;
+        }
+
+    if(iLastName)
+        {
+        delete iLastName;
+        iLastName = NULL;
+        }
+    
+    if(iNickName)
+        {
+        delete iNickName;
+        iNickName = NULL;
+        }
+
+    if (iPhoneNumberList)
+        {
+        iPhoneNumberList->ResetAndDestroy();
+        iPhoneNumberList->Close();
+        delete iPhoneNumberList;
+        iPhoneNumberList = NULL;
+        }
+    }
+
+// ----------------------------------------------------------------------------
+// CCsConversationContact::GetFirstName
+// get the first name of the conversation
+// ----------------------------------------------------------------------------
+HBufC*
+CCsConversationContact::GetFirstName() const
+    {
+    return iFirstName;
+    }
+
+// ----------------------------------------------------------------------------
+// CCsConversationContact::GetLastName
+// get the last name of the conversation
+// ----------------------------------------------------------------------------
+HBufC*
+CCsConversationContact::GetLastName() const
+    {
+    return iLastName;
+    }
+
+// ----------------------------------------------------------------------------
+// CCsConversationContact::GetNickName
+// get the nick name of the conversation
+// ----------------------------------------------------------------------------
+HBufC*
+CCsConversationContact::GetNickName() const
+    {
+    return iNickName;
+    }
+
+// ----------------------------------------------------------------------------
+// CCsConversationContact::SetFirstNameL
+// Sets the first name of the conversation
+// ----------------------------------------------------------------------------
+void
+CCsConversationContact::SetFirstNameL(
+        const TDesC& aFirstName)
+    {
+    if( &aFirstName )
+        {
+        TRAPD(error, iFirstName = aFirstName.AllocL());
+        if(error != KErrNone)
+            {
+            // handle error
+            // call panic
+            PRINT1 ( _L("CCsConversationContact::SetFirstNameL - Error:%d"),
+                    error );
+            }
+        }
+    }
+
+// ----------------------------------------------------------------------------
+// CCsConversationContact::SetLastNameL
+// Sets the first name of the conversation
+// ----------------------------------------------------------------------------
+void
+CCsConversationContact::SetLastNameL(
+        const TDesC& aLastName)
+    {
+    if( &aLastName )
+        {
+        TRAPD(error, iLastName = aLastName.AllocL());
+        if(error != KErrNone)
+            {
+            // handle error
+            // call panic
+            PRINT1 ( _L("CCsConversationContact::SetLastNameL - Error:%d"),
+                    error );
+            }
+        }
+    }
+
+// ----------------------------------------------------------------------------
+// CCsConversationContact::SetNickNameL
+// Sets the first name of the conversation
+// ----------------------------------------------------------------------------
+void
+CCsConversationContact::SetNickNameL(
+        const TDesC& aNickName)
+    {
+    if( &aNickName )
+        {
+        TRAPD(error, iNickName = aNickName.AllocL());
+        if(error != KErrNone)
+            {
+            // handle error
+            // call panic
+            PRINT1 ( _L("CCsConversationContact::SetNickNameL - Error:%d"),
+                    error );
+            }
+        }
+    }
+// ----------------------------------------------------------------------------
+// CCsConversationContact::GetContactId
+// get the phonebook Contact Id link for the conversation
+// ----------------------------------------------------------------------------
+TInt32
+CCsConversationContact::GetContactId() const
+    {
+    return iContactId;
+    }
+
+// ----------------------------------------------------------------------------
+// CCsConversationContact::SetContactLink
+// Sets the phonebook Contact Id for the conversation
+// ----------------------------------------------------------------------------
+void
+CCsConversationContact::SetContactId(
+        TInt32 aContactId)
+    {
+    iContactId = aContactId;
+    }
+
+// ----------------------------------------------------------------------------
+// CCsConversationContact::AddPhoneNumber
+// Sets the phone number inside contact list
+// ----------------------------------------------------------------------------
+void
+CCsConversationContact::AddPhoneNumberL(
+        TDesC& aPhoneNumber)
+    {
+    HBufC* phoneNumber = aPhoneNumber.AllocL();
+    iPhoneNumberList->AppendL(phoneNumber);
+    }
+
+// ----------------------------------------------------------------------------
+// CCsConversationContact::GetPhoneNumberList
+// Returns a list of associated phone numbers
+// ----------------------------------------------------------------------------
+void
+CCsConversationContact::GetPhoneNumberList(
+        RPointerArray<TDesC>& aPhoneNumbers)
+    {
+    for ( int index = 0; index < iPhoneNumberList->Count(); index++ )
+        {
+        HBufC* value = (*iPhoneNumberList)[index];
+        aPhoneNumbers.Append(value);
+        }
+    }
+
+// ----------------------------------------------------------------------------
+// CCsConversationContact::MatchPhoneNumber
+// Check if the input phone number (aPhoneNumber) is associated with this
+// contact. Compares for aNumDigits.
+// ----------------------------------------------------------------------------
+TBool
+CCsConversationContact::MatchPhoneNumber(
+        TDesC& aPhoneNumber, TInt aNumDigits) const
+    {
+    if (aPhoneNumber.Length() == 0)
+        {
+        return EFalse;
+        }
+
+    TInt useDigits = aNumDigits;
+    
+    // Check if phone number is an email address
+    TImMessageField email;
+    if ( email.ValidInternetEmailAddress(aPhoneNumber) )
+        {
+        useDigits = aPhoneNumber.Length();
+        }
+    
+    TInt count = iPhoneNumberList->Count();
+    for ( TInt i = 0 ; i < count; i++)
+        {
+        HBufC* pno = (*iPhoneNumberList)[i];
+        
+        // Compare only last useDigits dgits of the number/ address
+        if (aPhoneNumber.Right(useDigits).CompareF(pno->Des().
+                Right(useDigits)) == 0)
+            {
+            return ETrue;
+            }
+        }
+    return EFalse;
+    }
+
+
+// EOF