diff -r 885c2596c964 -r 5d007b20cfd0 qthighway/examples/hbserviceclient/src/hbserviceclientview.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qthighway/examples/hbserviceclient/src/hbserviceclientview.cpp Tue Aug 31 16:02:37 2010 +0300 @@ -0,0 +1,263 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU Lesser General Public License as published by +* the Free Software Foundation, version 2.1 of the License. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Lesser General Public License for more details. +* +* You should have received a copy of the GNU Lesser General Public License +* along with this program. If not, +* see "http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html/". +* +* Description: +* +*/ + +#include "xqservicelog.h" + +#include +#include +#include +#include +#include +//#include +#include +#include + + +#include +#include + +#include "hbserviceclientview.h" + +#include + +#include "../hbserviceprovider/src/hbcontact.h" + + +HbServiceClientView::HbServiceClientView(QGraphicsItem *parent) + : HbView(parent) +{ + XQSERVICE_DEBUG_PRINT("HbServiceClientView::HbServiceClientView"); + setTitle(tr("HB Service client view")); + + QGraphicsLinearLayout* layout = new QGraphicsLinearLayout(Qt::Vertical,this); + + layout->addItem(new HbLabel("Call service",this)); + mNumberEdit = new HbLineEdit(this); + mNumberEdit->setText("+35850123456789"); + layout->addItem(mNumberEdit); + + mServiceEdit = new HbLineEdit(this); + mServiceEdit->setText("com.nokia.services.hbserviceprovider.Dialer"); + layout->addItem(mServiceEdit); + + /* + mServiceEmbedded = HbCheckBox("Embedded",this) + mServiceEmbedded->setTristate(true); + layout->addItem(mServiceEmbedded); + */ + + mRetValue = new HbLineEdit(this); + mRetValue->setText("*****"); + layout->addItem(mRetValue); + + layout->addItem(new HbLabel("Map service",this)); + mAddressEdit = new HbLineEdit(this); + mAddressEdit->setText("Karakaari 13"); + layout->addItem(mAddressEdit); + + mCityEdit = new HbLineEdit(this); + mCityEdit->setText("Espoo"); + layout->addItem(mCityEdit); + + mCountryEdit = new HbLineEdit(this); + mCountryEdit->setText("Finland"); + layout->addItem(mCountryEdit); + + mServiceMapEdit = new HbLineEdit(this); + mServiceMapEdit->setText("com.nokia.services.hbserviceprovider.Map"); + layout->addItem(mServiceMapEdit); + + mRetMapValue = new HbLineEdit(this); + mRetMapValue->setText("*****"); + layout->addItem(mRetMapValue); + + setLayout(layout); + + HbToolBar* toolBar = this->toolBar(); + + HbAction* callAction = new HbAction("Call"); + connect(callAction, SIGNAL(triggered()), this, SLOT(callContact())); + + HbAction* callEmbeddedAction = new HbAction("Call Embedded"); + connect(callEmbeddedAction, SIGNAL(triggered()), this, SLOT(callContactEmbedded())); + + HbAction* showAddressesAction = new HbAction("Select contacts"); + connect(showAddressesAction, SIGNAL(triggered()), this, SLOT(launchContactSelecting())); + + toolBar->addAction(callAction); + toolBar->addAction(callEmbeddedAction); + toolBar->addAction(showAddressesAction); + sndAsync = NULL; +} + +HbServiceClientView::~HbServiceClientView() +{ + XQSERVICE_DEBUG_PRINT("HbServiceClientView::~HbServiceClientView"); +} + +void HbServiceClientView::callContact() +{ + XQSERVICE_DEBUG_PRINT("HbServiceClientView::callContact"); + doCallContact(false); +} + +void HbServiceClientView::callContactEmbedded() +{ + XQSERVICE_DEBUG_PRINT("HbServiceClientView::callContactEmbedded"); + doCallContact(true); +} + +void HbServiceClientView::doCallContact(bool isEmbedded) +{ + XQSERVICE_DEBUG_PRINT("HbServiceClientView::doCallContact"); + if (isEmbedded) { + XQRequestInfo info; // matti + info.setEmbedded(isEmbedded); + + XQServiceRequest snd(mServiceEdit->text(), + "dial(QString)",isEmbedded); + snd << mNumberEdit->text(); + snd.setInfo(info); // matti + + QVariant retValue; + + bool res=snd.send(retValue); + if (!res) { + int returnvalue = snd.latestError(); + mRetValue->setText(QString::number(returnvalue)); + // mRetValue->setText("send fail!"); + } + else { + if (retValue.isNull() || !retValue.isValid()) + mRetValue->setText("ret value null or not valid"); + else + mRetValue->setText(retValue.toString()); + } + } + else { + if (sndAsync) + delete sndAsync; + sndAsync = new XQServiceRequest(mServiceEdit->text(), + "dial(QString)",isEmbedded); + connect(sndAsync, SIGNAL(requestCompleted(QVariant)), this, SLOT(requestCompleted(QVariant))); + *sndAsync << mNumberEdit->text(); + bool res=sndAsync->send(); + if (!res) { + int returnvalue = sndAsync->latestError(); + mRetValue->setText(QString::number(returnvalue)); + } + else { + mRetValue->setText("call on going..."); + } + } +} + +void HbServiceClientView::requestCompleted(const QVariant& val) +{ + XQSERVICE_DEBUG_PRINT("HbServiceClientView::requestCompleted"); + mRetValue->setText(val.toString()); +} + +void HbServiceClientView::showAddresses() +{ + XQSERVICE_DEBUG_PRINT("HbServiceClientView::showAddresses"); + XQServiceRequest snd(mServiceMapEdit->text(),"showAddresses(QString,QString,QString)"); + snd << mAddressEdit->text(); + snd << mCityEdit->text(); + snd << mCountryEdit->text(); + HbContactList retValue; + bool res=snd.send(retValue); + if (!res) { + mRetMapValue->setText("send fail!"); + } + else { + QString data; + int count = 0; + foreach (HbContact cnt,retValue) { + //HbContact cnt = qVariantValue(v); + QString tmp = QString::number(++count) + " : " + cnt.mLabel + " " + cnt.mNumber + "\n"; + data.append(tmp) ; + } + HbMessageBox::information(data); + // QMessageBox msgBox; + // msgBox.setWindowTitle("Return value"); + // msgBox.setText(data); + // msgBox.exec(); + //mRetMapValue->setText(QString::number(retValue)); + } +} + +void HbServiceClientView::launchContactSelecting() +{ + if (sndAsync) + delete sndAsync; + sndAsync = new XQServiceRequest("com.nokia.services.phonebookservices.Fetch", + "fetch(QString,QString,QString)", false); + + connect(sndAsync, SIGNAL(requestCompleted(QVariant)), + this, SLOT(addSelectedRecipients(QVariant))); + *sndAsync << "Select contact"; + *sndAsync << KCntActionAll; + *sndAsync << KCntFilterDisplayAll; + + bool result = sndAsync->send(); + if (!result) { + } + +} + +void HbServiceClientView::addSelectedRecipients(const QVariant &value) +{ + CntServicesContactList list; + if(value.canConvert()) { + list = qVariantValue(value); + } + else { + ; + } + + if (list.count() == 0) { + HbMessageBox::information(tr("Nothing returned")); + // note.setTimeout(10000); + // "Nothing returned" will be replaced by a hbTrId when it is ready + // note.setText(tr("Nothing returned")); + // note.information(); + } + else { + QString data; + foreach (CntServicesContact cnt, list) + { + QString recipientName = cnt.mDisplayName; + data += recipientName + "\n"; + } + HbMessageBox::information(data); + //HbMessageBox msgBox; + //msgBox.setWindowTitle("Returned value"); + //msgBox.setText(data); + //msgBox.information(); + } +} + +Q_IMPLEMENT_USER_METATYPE(HbContact) +Q_IMPLEMENT_USER_METATYPE_NO_OPERATORS(HbContactList) + +Q_IMPLEMENT_USER_METATYPE(CntServicesContact) +Q_IMPLEMENT_USER_METATYPE_NO_OPERATORS(CntServicesContactList)