phoneengine/phonecntfinder2/src/cphcntmatch2.cpp
author William Roberts <williamr@symbian.org>
Thu, 22 Jul 2010 16:33:21 +0100
branchGCC_SURGE
changeset 51 f39ed5e045e0
parent 22 6bb1b21d2484
parent 46 bc5a64e5bc3c
permissions -rw-r--r--
Catchup to latest Symbian^4

/*
* Copyright (c) 2009 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:
*
*/
#include <qcontact.h>
#include <qcontactdetail.h>
#include <qcontactname.h>
#include <qcontactavatar.h>
#include <qcontactringtone.h>
#include <qcontactphonenumber.h>
#include <qtcontactsglobal.h>
#include "cphcntmatch2.h"
#include "cphcntcontactidimpl2.h"
#include "qtphonelog.h"

// ======== MEMBER FUNCTIONS ========

// ---------------------------------------------------------------------------
// Constructor
// ---------------------------------------------------------------------------
//
CPhCntMatch2::CPhCntMatch2(const QContact aContact):
iContact(aContact), iNumber(NULL), iContactId(NULL), iDTMFArray(NULL)
    {
    }

// ---------------------------------------------------------------------------
// Destructor.
// ---------------------------------------------------------------------------
//
CPhCntMatch2::~CPhCntMatch2()
    {
    delete iNumber;
    delete iDTMFArray;
    delete iContactId; 
    }
    
// -----------------------------------------------------------------------------
// CPhCntMatch2::NewL
// Two-phased constructor.
// -----------------------------------------------------------------------------
//
CPhCntMatch2* CPhCntMatch2::NewL(const QContact aContact)
    {
    CPhCntMatch2* self = new( ELeave ) CPhCntMatch2(aContact);
    CleanupStack::PushL( self );
    self->ConstructL();
    CleanupStack::Pop();
    return self;
    }

// -----------------------------------------------------------------------------
// Release
// -----------------------------------------------------------------------------
//
void CPhCntMatch2::Release()
{
    delete iNumber;
    iNumber = NULL;
}

// -----------------------------------------------------------------------------
// NewL
// -----------------------------------------------------------------------------
//
CPhCntContactId* CPhCntMatch2::ContactId() const
{
    return iContactId;
}

// -----------------------------------------------------------------------------
// NumberType
// -----------------------------------------------------------------------------
//
MPhCntMatch::TNumberType CPhCntMatch2::NumberType() const
{
    return MPhCntMatch::ENone;
}

// -----------------------------------------------------------------------------
// Cli
// -----------------------------------------------------------------------------
//

MPhCntMatch::TCliType CPhCntMatch2::Cli( HBufC*& /*aCliText*/ ) const
{
    return ECliNumber;
}

// -----------------------------------------------------------------------------
// FirstName
// -----------------------------------------------------------------------------
//
TPtrC CPhCntMatch2::FirstName() const
{
    return iFirstname.utf16();

}
// -----------------------------------------------------------------------------
// LastName
// -----------------------------------------------------------------------------
//
TPtrC CPhCntMatch2::LastName() const
{
    return iLastname.utf16();
   
}
// -----------------------------------------------------------------------------
// CompanyName
// -----------------------------------------------------------------------------
//
TPtrC CPhCntMatch2::CompanyName() const
{
  return KNullDesC();
}
// -----------------------------------------------------------------------------
// Number
// -----------------------------------------------------------------------------
//
TPtrC CPhCntMatch2::Number() const
{
    //how many numbers are returned here? should be only one that matched 
    if ( iNumber == NULL ) {
   
    TPtrC ptr(FieldValue(QContactPhoneNumber::DefinitionName, 
               QContactPhoneNumber::FieldNumber).utf16());
    const_cast<HBufC*>(iNumber) = ptr.Alloc();
    }  
    return iNumber->Des();
}
// -----------------------------------------------------------------------------
// PersonalRingingTone
// -----------------------------------------------------------------------------
//
TPtrC CPhCntMatch2::PersonalRingingTone() const
{
    return iPersonalRingtone.utf16();
}
// -----------------------------------------------------------------------------
// BelongsToGroups
// -----------------------------------------------------------------------------
//
TBool CPhCntMatch2::BelongsToGroups( 
    const CArrayFix<TContactItemId>& /*aGroupArray*/ ) const
{
    return EFalse;
}
// -----------------------------------------------------------------------------
// TextToSpeechTextL
// -----------------------------------------------------------------------------
//
HBufC* CPhCntMatch2::TextToSpeechTextL() const
{
    return NULL;
}
// -----------------------------------------------------------------------------
// CallText
// -----------------------------------------------------------------------------
//    
TPtrC CPhCntMatch2::CallText() const
{
    return KNullDesC();
}
// -----------------------------------------------------------------------------
// CallImage
// -----------------------------------------------------------------------------
//       
TPtrC CPhCntMatch2::CallImage() const
{
    return iCallImage.utf16();
}
// -----------------------------------------------------------------------------
// HasThumbnailImage
// -----------------------------------------------------------------------------
//       
TBool CPhCntMatch2::HasThumbnailImage() const
{
    return EFalse;
}
// -----------------------------------------------------------------------------
// AllDtmfNumbers
// -----------------------------------------------------------------------------
//
CDesCArray& CPhCntMatch2::AllDtmfNumbers() const
{
    return *iDTMFArray;
}
// -----------------------------------------------------------------------------
// SetNumberL
// -----------------------------------------------------------------------------
//

void CPhCntMatch2::SetNumberL(const TDesC& aNumber)
{
    delete iNumber;
    iNumber = NULL;
    iNumber = aNumber.AllocL();
}

// -----------------------------------------------------------------------------
// ConstructL
// -----------------------------------------------------------------------------
//
void CPhCntMatch2::ConstructL()
    {
    iContactId = CPhCntContactIdImpl2::NewL(iContact);
    iDTMFArray = new CDesCArrayFlat(1);
    
    //Get first and last name
    iFirstname = FieldValue(
             QContactName::DefinitionName,
             QContactName::FieldFirstName); 
    
    
    iLastname = FieldValue(
             QContactName::DefinitionName, 
             QContactName::FieldLastName);
    
    //Get caller's image
    QList<QContactAvatar> details = iContact.details<QContactAvatar>();
    for (int i=0;i<details.count();++i) {
        if (!details.at(i).imageUrl().isEmpty()) {
            iCallImage = details.at(i).imageUrl().toString();
            break;
        }
    }
    PHONE_DEBUG2("CPhCntMatch2::callImage:: value is :", iCallImage);
    
    
    //Get personal ringtone
    QContactRingtone ringtonedetail = iContact.detail<QContactRingtone>();
    iPersonalRingtone = ringtonedetail.audioRingtoneUrl().toString();
    PHONE_DEBUG2("CPhCntMatch2::personalRingingtone:: value is :", iPersonalRingtone);

    }

// -----------------------------------------------------------------------------
// FieldValue
// -----------------------------------------------------------------------------
//
QString CPhCntMatch2::FieldValue(const QString& name, const QString& key) const
{
    QString returnValue;
    QList<QContactDetail> details = iContact.details(name);
    if (details.count() == 1)
        {
        returnValue = details.first().value(key);        
        }
    PHONE_DEBUG4("CPhCntMatch2::FieldValue:: key is :", key, "..value is :", returnValue);
    return returnValue;    
}