diff -r 4697dfb2d7ad -r 238255e8b033 messagingapp/msgui/msgapp/src/msgserviceinterface.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingapp/msgui/msgapp/src/msgserviceinterface.cpp Fri Apr 16 14:56:15 2010 +0300 @@ -0,0 +1,114 @@ +/* + * 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: Message Application Launcher interface used for interfacing between + * QT highway and other applications + * + */ + +//TODO: to be deprecated +#include +#include "qcontactdetailfilter.h" +#include "qcontactdetail.h" +#include "qtcontacts.h" +#include "convergedmessageaddress.h" + +#include "msgserviceinterface.h" +#include "msgviewmanager.h" +//INCLUDES + +MsgServiceInterface::MsgServiceInterface(QObject* parent, MsgViewManager* manager) +:XQServiceProvider( QLatin1String("com.nokia.services.hbserviceprovider.conversationview"),parent), +mViewManager(manager) + { + publishAll(); + } + +MsgServiceInterface::~MsgServiceInterface() + { + } + +void MsgServiceInterface::send(const QString phoneNumber, const qint32 contactId, const QString displayName) + { + mViewManager->setServiceRequest(true); + mViewManager->send(contactId, phoneNumber, displayName); + } + +void MsgServiceInterface::open(qint64 conversationId) + { + mViewManager->setServiceRequest(false); + mViewManager->open(conversationId); + } + +void MsgServiceInterface::send(QVariant data) + { + mViewManager->setServiceRequest(true); + mViewManager->send(data); + } + +void MsgServiceInterface::openConversationView(QString number, QString name) + { + mViewManager->setServiceRequest(true); + + QString resolvedName; + if(name.isEmpty()) + { + ConvergedMessageAddress address; + address.setAddress(number); + address.setAlias(name); + + ContactDetail contactDetail; + bool ret = resolveContact(address, contactDetail); + if(ret) + { + if(!contactDetail.lastName.isEmpty()) + { + resolvedName += contactDetail.lastName; + if(!contactDetail.firstName.isEmpty()) + { + resolvedName += ", "; + } + } + resolvedName += contactDetail.firstName; + } + } + mViewManager->openEditor(number,resolvedName); + } + +bool MsgServiceInterface::resolveContact(const ConvergedMessageAddress &address, + ContactDetail &contactDetail) + { + QContactManager* mPhonebookManager = new QContactManager("symbian"); + QContactDetailFilter phoneFilter; + phoneFilter.setDetailDefinitionName(QContactPhoneNumber::DefinitionName, QContactPhoneNumber::FieldNumber); + phoneFilter.setValue(address.address()); + phoneFilter.setMatchFlags(QContactFilter::MatchEndsWith); + + QList matchingContacts = mPhonebookManager->contacts(phoneFilter); + + if ( matchingContacts.count() > 0 ) { + // Fill the contact details + contactDetail.contactId = matchingContacts.at(0); + QContact match = mPhonebookManager->contact(matchingContacts.at(0)); + + QContactName nameDetails = match.detail(QContactName::DefinitionName); + + QContactName name = match.detail(QContactName::DefinitionName); + contactDetail.firstName = name.first(); + contactDetail.lastName = name.last(); + return true; + } + + return false; + } +