phoneengine/phonecntfinder2/src/cphcntmatch2.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 19 Mar 2010 09:28:42 +0200
changeset 21 92ab7f8d0eab
child 22 6bb1b21d2484
permissions -rw-r--r--
Revision: 201007 Kit: 201011

/*
* 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 <QDebug>
#include <qcontact.h>
#include <qcontactdetail.h>
#include <qcontactname.h>
#include <qcontactavatar.h>
#include <qcontactphonenumber.h>
#include <qtcontactsglobal.h>
#include "cphcntmatch2.h"
#include "cphcntcontactidimpl2.h"

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

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

// ---------------------------------------------------------------------------
// Destructor.
// ---------------------------------------------------------------------------
//
CPhCntMatch2::~CPhCntMatch2()
    {
    delete iNumber;
    delete iDummyArray;
    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
{

    MPhCntMatch::TNumberType valueToReturn = MPhCntMatch::EMobileNumber;
    /* -> TODO not yet supported
    switch (iContact->field(fieldNumber).property())
        {
        case propertyMobile: 
            {
            valueToReturn = MPhCntMatch::EMobileNumber;
            break;
            }
        default:
            {
            valueToReturn = MPhCntMatch::ENone;
            }
        
        }//switch
    */
    
    return valueToReturn;
}

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

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

// -----------------------------------------------------------------------------
// FirstName
// -----------------------------------------------------------------------------
//
TPtrC CPhCntMatch2::FirstName() const
{
    return FieldValue(QContactName::DefinitionName, QContactName::FieldFirst); 

}
// -----------------------------------------------------------------------------
// LastName
// -----------------------------------------------------------------------------
//
TPtrC CPhCntMatch2::LastName() const
{
    return FieldValue(QContactName::DefinitionName, QContactName::FieldLast);
   
}
// -----------------------------------------------------------------------------
// CompanyName
// -----------------------------------------------------------------------------
//
TPtrC CPhCntMatch2::CompanyName() const
{
  return KNullDesC();
}
// -----------------------------------------------------------------------------
// Number
// -----------------------------------------------------------------------------
//
TPtrC CPhCntMatch2::Number() const
{
//how many numbers are returned here? should be only one that matched
    return iNumber? iNumber->Des() : 
           FieldValue(QContactPhoneNumber::DefinitionName, 
                      QContactPhoneNumber::FieldNumber);
}
// -----------------------------------------------------------------------------
// PersonalRingingTone
// -----------------------------------------------------------------------------
//
TPtrC CPhCntMatch2::PersonalRingingTone() const
{
    /*
    //TODO
    QString returnValue;
    QList<QContactAvatar> details = iContact.details<QContactAvatar>();
    
    for (int i=0;i<details.count();++i) {
        if (details.at(i).subType() == QContactAvatar::SubTypeAudioRingtone) {
            returnValue = details.at(i).avatar();
            break;
        }
    }

    return returnValue.utf16();*/
    return KNullDesC();
}
// -----------------------------------------------------------------------------
// 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
{
    QString returnValue;
    QList<QContactAvatar> details = iContact.details<QContactAvatar>();

    for (int i=0;i<details.count();++i) {
        if (details.at(i).subType() == QContactAvatar::SubTypeImage) {
            returnValue = details.at(i).avatar();
            break;
        }
    }
    
    return returnValue.utf16();
}
// -----------------------------------------------------------------------------
// HasThumbnailImage
// -----------------------------------------------------------------------------
//       
TBool CPhCntMatch2::HasThumbnailImage() const
{
    return EFalse;
}
// -----------------------------------------------------------------------------
// AllDtmfNumbers
// -----------------------------------------------------------------------------
//
CDesCArray& CPhCntMatch2::AllDtmfNumbers() const
{
    return *iDummyArray;
}
// -----------------------------------------------------------------------------
// SetNumberL
// -----------------------------------------------------------------------------
//

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

// -----------------------------------------------------------------------------
// ConstructL
// -----------------------------------------------------------------------------
//
void CPhCntMatch2::ConstructL()
    {
    iContactId = CPhCntContactIdImpl2::NewL(iContact);
    iDummyArray = new CDesCArrayFlat(1);
    }

// -----------------------------------------------------------------------------
// FieldValue
// -----------------------------------------------------------------------------
//
TPtrC 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);        
        }
    qDebug()<<"CPhCntMatch2::FieldValue:: key is : "<< key << "..value is : "  << returnValue;
    return returnValue.utf16();    
}