--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/qthighway/examples/serviceapp/src/serviceapp.cpp Tue Aug 31 16:02:37 2010 +0300
@@ -0,0 +1,1070 @@
+/*
+* 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 <QApplication>
+#include <QKeyEvent>
+#include <QLabel>
+#include <QVBoxLayout>
+#include <QStackedWidget>
+#include <QImageReader>
+#include <QDebug>
+#include <QTimer>
+#include <QPushButton>
+#include <QLineEdit>
+#include <QListView>
+#include <QMessageBox>
+#include <xqsharablefile.h>
+
+#include "testservicedata.h"
+#include "serviceapp.h"
+#include <xqserviceutil.h>
+
+ServiceApp::ServiceApp(QWidget *parent, Qt::WFlags f)
+ : QWidget(parent, f),
+ mDialService(NULL),
+ mUriService(NULL),
+ mFileService(NULL),
+ mNewDialService(NULL),
+ mNewFileService(NULL),
+ mNewUriService(NULL)
+{
+ XQSERVICE_DEBUG_PRINT("ServiceApp::ServiceApp");
+ if (XQServiceUtil::isService())
+ {
+ mDialService = new DialerService(this);
+ mUriService = new UriService(this);
+ mFileService = new FileService(this);
+ mNewDialService = new NewDialerService(this);
+ mNewUriService = new NewUriService(this);
+ mNewFileService = new NewFileService(this);
+ }
+ /* Adjust the palette */
+#if defined(Q_WS_S60)
+ QPalette p = qApp->palette();
+ QColor color(192,192,192);
+ QColor bg(201,250,250);
+ p.setColor(QPalette::Highlight, color.lighter(200));
+ p.setColor(QPalette::Text, Qt::black);
+ p.setColor(QPalette::Base, bg);
+ p.setColor(QPalette::WindowText, Qt::black);
+ p.setColor(QPalette::Window, bg);
+ p.setColor(QPalette::ButtonText, Qt::black);
+ p.setColor(QPalette::Button, color.lighter(150));
+ p.setColor(QPalette::Link, QColor(240,40,40));
+
+ qApp->setPalette(p);
+#endif
+
+ QPushButton *quitButton = new QPushButton(tr("Quit"));
+ QPushButton *answerButtonDial = new QPushButton(tr("Dial answer"));
+ QPushButton *answerButtonUri = new QPushButton(tr("Uri answer"));
+ QPushButton *answerButtonFile = new QPushButton(tr("File answer"));
+ connect(quitButton, SIGNAL(clicked()), this, SLOT(quit()));
+ connect(answerButtonDial, SIGNAL(clicked()), this, SLOT(answerDial()));
+ connect(answerButtonUri, SIGNAL(clicked()), this, SLOT(answerUri()));
+ connect(answerButtonFile, SIGNAL(clicked()), this, SLOT(answerFile()));
+
+ /*
+ mEndCallButton = new QPushButton(tr("End Call"));
+ mEndCallButton->setEnabled(false);
+ connect(mEndCallButton, SIGNAL(clicked()), this, SLOT(endCall()));
+ */
+ bool isService = XQServiceUtil::isService();
+ QString interface = XQServiceUtil::interfaceName();
+ QString operation = XQServiceUtil::operationName();
+
+ QString t = "SERVICEAPP:\n";
+ t = t + (isService ? " Service launch\n" : " Normal launch\n");
+ t = t + (XQServiceUtil::isEmbedded() ? " Embedded\n" : " Not embedded\n");
+ t = t + (" Interface=" + interface + "\n");
+ t = t + (" Operation=" + operation + "\n");
+
+ QLabel *title = new QLabel(t);
+
+ mLabel = new QLabel("");
+ mNumber = new QLineEdit("");
+
+ QVBoxLayout *vl = new QVBoxLayout;
+ vl->setMargin(0);
+ vl->setSpacing(0);
+
+ vl->addWidget(quitButton);
+ vl->addWidget(answerButtonDial);
+ vl->addWidget(answerButtonUri);
+ vl->addWidget(answerButtonFile);
+ vl->addWidget(title);
+ vl->addWidget(mLabel);
+ vl->addWidget(mNumber);
+
+ setLayout(vl);
+
+#if defined(Q_WS_X11) || defined(Q_WS_WIN)
+ setFixedSize(QSize(360,640)); // nHD
+#elif defined(Q_WS_S60)
+ // showMaximized();
+ showFullScreen();
+#endif
+// new DialerService(this);
+}
+
+
+ServiceApp::~ServiceApp()
+{
+ XQSERVICE_DEBUG_PRINT("ServiceApp::~ServiceApp");
+ delete mDialService;
+ delete mUriService;
+ delete mFileService;
+}
+
+void ServiceApp::quit()
+{
+ XQSERVICE_DEBUG_PRINT("ServiceApp::quit");
+ qApp->quit();
+}
+
+void ServiceApp::answerDial()
+{
+ XQSERVICE_DEBUG_PRINT("ServiceApp::answerDial");
+ if (mDialService && mDialService->asyncAnswer())
+ {
+ mDialService->complete(mNumber->text());
+ }
+ if (mNewDialService && mNewDialService->asyncAnswer())
+ {
+ mNewDialService->complete(mNumber->text());
+ }
+}
+
+
+void ServiceApp::answerUri()
+{
+ XQSERVICE_DEBUG_PRINT("ServiceApp::answerUri");
+ if (mUriService && mUriService->asyncAnswer())
+ {
+ mUriService->complete(true);
+ }
+ if (mNewUriService && mNewUriService->asyncAnswer())
+ {
+ mNewUriService->complete(true);
+ }
+}
+
+void ServiceApp::answerFile()
+{
+ XQSERVICE_DEBUG_PRINT("ServiceApp::answerFile");
+ if (mFileService && mFileService->asyncAnswer())
+ {
+ mFileService->complete(true);
+ }
+ if (mNewFileService && mNewFileService->asyncAnswer())
+ {
+ mNewFileService->complete(true);
+ }
+}
+
+
+
+void ServiceApp::endCall()
+{
+ XQSERVICE_DEBUG_PRINT("ServiceApp::endCall");
+ //QVBoxLayout *vl = qobject_cast<QVBoxLayout *>(layout()) ;
+ //vl->removeWidget(mEndCallButton);
+
+ //XQServiceUtil::toBackground(true);
+}
+
+void ServiceApp::setLabelNumber(QString label,QString number)
+{
+ XQSERVICE_DEBUG_PRINT("ServiceApp::setLabelNumber");
+ mLabel->setText(label);
+ mNumber->setText(number);
+}
+
+// ----------DialerService---------------
+
+DialerService::DialerService(ServiceApp* parent)
+: XQServiceProvider(QLatin1String("com.nokia.services.serviceapp.Dialer"),parent),
+ mServiceApp(parent)
+{
+ XQSERVICE_DEBUG_PRINT("DialerService::DialerService");
+ publishAll();
+}
+
+DialerService::~DialerService()
+{
+ XQSERVICE_DEBUG_PRINT("DialerService::~DialerService");
+}
+
+void DialerService::complete(QString number)
+{
+ XQSERVICE_DEBUG_PRINT("DialerService::complete");
+
+ // Complete all IDs
+ foreach (quint32 reqId, mAsyncReqIds)
+ {
+ XQSERVICE_DEBUG_PRINT("DialerService::complete %d", reqId);
+ completeRequest(reqId, number.toInt());
+ }
+}
+
+int DialerService::dial(const QString& number, bool asyncAnswer)
+{
+ Q_UNUSED(asyncAnswer);
+
+ XQRequestInfo info = requestInfo();
+ QString testCase = (info.info(TESTCASE_INFO_KEY)).toString();
+ XQSERVICE_DEBUG_PRINT("XQTESTER serviceapp,%s,DialerService::dial", qPrintable(testCase));
+
+ XQSERVICE_DEBUG_PRINT("\tRequest info: id=%d,sid=%X,vid=%X", info.id(), info.clientSecureId(), info.clientVendorId());
+ QSet<int> caps = info.clientCapabilities();
+ QSetIterator<int> i(caps);
+ while (i.hasNext())
+ qDebug() << "Has capability " << i.next();
+ XQSERVICE_DEBUG_PRINT("\tRequest info: embed=%d,sync=%d", info.isEmbedded(), info.isSynchronous());
+
+ bool isAsync = !info.isSynchronous();
+ QString label = "Dialer::dial:\n";
+ label += QString("number=%1\n").arg(number);
+ label += QString("async=%1\n").arg(isAsync);
+
+ connect(this, SIGNAL(returnValueDelivered()), this, SLOT(handleAnswerDelivered()));
+
+ mNumber = number ;
+ mServiceApp->setLabelNumber(label, number);
+ int ret = 0;
+ if (isAsync)
+ {
+ mAsyncReqIds.insertMulti(info.clientSecureId(), setCurrentRequestAsync());
+ connect(this, SIGNAL(clientDisconnected()), this, SLOT(handleClientDisconnect()));
+ }
+ else
+ {
+ ret = number.toInt();
+ }
+ return ret;
+}
+
+CntServicesContactList DialerService::testContactList(CntServicesContactList list)
+{
+ XQSERVICE_DEBUG_PRINT("DialerService::testContactList");
+ showRecipients(list);
+
+ // Create output
+ CntServicesContact cnt1;
+ cnt1.mDisplayName = "Test1-Return";
+ cnt1.mPhoneNumber = "060-1111111";
+ cnt1.mEmailAddress = "test1.return@nokia.com";
+
+ CntServicesContact cnt2;
+ cnt2.mDisplayName = "Test1-Return";
+ cnt2.mPhoneNumber = "060-2222222";
+ cnt2.mEmailAddress = "test2.return@nokia.com";
+
+ CntServicesContactList ret;
+ ret.append(cnt1);
+ ret.append(cnt2);
+
+ return ret;
+
+}
+
+QVariant DialerService::testVariant(QVariant variant)
+{
+ XQRequestInfo info = requestInfo();
+ QString testCase = (info.info(TESTCASE_INFO_KEY)).toString();
+ XQSERVICE_DEBUG_PRINT("XQTESTER serviceapp,%s,DialerService::testVariant", qPrintable(testCase));
+
+ XQSERVICE_DEBUG_PRINT("DialerService::testVariant::variant(%d,%d,%s)",
+ variant.type(), variant.userType(), variant.typeName());
+ XQSERVICE_DEBUG_PRINT("DialerService::testVariant::variant value=%s", qPrintable(variant.toString()));
+
+ if (variant.typeName() == QLatin1String("QStringList"))
+ {
+ qDebug() << "DialerService::testVariant QStringList";
+ QStringList ret = variant.toStringList();
+ return qVariantFromValue(ret);
+ }
+ else if (variant.typeName() == QLatin1String("XQShabarableFile"))
+ {
+ qDebug() << "DialerService::testVariant XQShabarableFile";
+ XQSharableFile sf = variant.value<XQSharableFile>();
+
+ RFile file;
+ bool ok = sf.getHandle( file );
+ if (ok)
+ {
+ HBufC8* data = HBufC8::NewL(100);
+ TPtr8 ptr = data->Des();
+ TInt err = file.Read( ptr );
+ QString text = QString::fromUtf8((const char *)(data->Ptr()), data->Length());
+ XQSERVICE_DEBUG_PRINT("DialerService::testVariant ::file content,%d,%s", err, qPrintable(text));
+ sf.close();
+ delete data;
+ }
+
+ return QVariant(ok);
+
+ }
+ else if (variant.typeName() == QLatin1String("XQRequestInfo"))
+ {
+ qDebug() << "DialerService::testVariant XQRequestInfo";
+ XQRequestInfo info = variant.value<XQRequestInfo>();
+ QStringList keys = info.infoKeys();
+ foreach (QString key, keys)
+ {
+ XQSERVICE_DEBUG_PRINT("DialerService::testVariant: info %s=%s",
+ qPrintable(key),
+ qPrintable(info.info(key).toString()));
+ }
+
+ return qVariantFromValue(info);
+
+ }
+ else if (variant.typeName() == QLatin1String("CntServicesContactList"))
+ {
+ qDebug() << "DialerService::testVariant CntServicesContactList";
+ // Show input
+ showRecipients(variant);
+
+ // Create output
+ CntServicesContact cnt1;
+ cnt1.mDisplayName = "Test1-Return";
+ cnt1.mPhoneNumber = "060-1111111";
+ cnt1.mEmailAddress = "test1.return@nokia.com";
+
+ CntServicesContact cnt2;
+ cnt2.mDisplayName = "Test1-Return";
+ cnt2.mPhoneNumber = "060-2222222";
+ cnt2.mEmailAddress = "test2.return@nokia.com";
+
+ CntServicesContactList list;
+ list.append(cnt1);
+ list.append(cnt2);
+
+ // Return contact list back
+ return qVariantFromValue(list);
+ }
+ else
+ {
+ return variant.toString();
+ }
+}
+
+void DialerService::handleClientDisconnect()
+{
+ XQSERVICE_DEBUG_PRINT("DialerService::handleClientDisconnect");
+
+ // Get the info of the cancelled request
+ XQRequestInfo info = requestInfo();
+ XQSERVICE_DEBUG_PRINT("\tDisconnected request info: id=%d,sid=%X,vid=%X", info.id(),info.clientSecureId(), info.clientVendorId());
+
+ // Just quit service application if client ends
+ mServiceApp->quit();
+}
+
+void DialerService::handleAnswerDelivered()
+{
+ XQSERVICE_DEBUG_PRINT("DialerService::handleAnswerDelivered");
+ XQRequestInfo info = requestInfo();
+ XQSERVICE_DEBUG_PRINT("\tRequest info: sid=%X,vid=%X", info.clientSecureId(), info.clientVendorId());
+ // Done
+ mAsyncReqIds.remove(info.clientSecureId());
+}
+
+
+
+void DialerService::showRecipients(QVariant &value)
+{
+ CntServicesContactList list;
+ if(value.canConvert<CntServicesContactList>())
+ {
+ qDebug() << "DialerService::showRecipients: canConvert";
+ list = qVariantValue<CntServicesContactList>(value);
+ }
+ else
+ {
+ qDebug() << "DialerService::showRecipients: canConvert NOK";
+ return;
+ }
+
+ showRecipients(list);
+}
+
+void DialerService::showRecipients(CntServicesContactList &list)
+{
+ if (list.count() == 0)
+ {
+ qDebug() << "DialerService::showRecipients(2): Count==0";
+ }
+ else
+ {
+ for (int i = 0; i < list.count(); ++i)
+ {
+ qDebug() << "DialerService::showRecipients(2)[" << i << "]=" << list[i].mDisplayName;
+ qDebug() << "DialerService::showRecipients(2)[" << i << "]=" << list[i].mPhoneNumber;
+ qDebug() << "DialerService::showRecipients(2)[" << i << "]=" << list[i].mEmailAddress;
+ }
+ }
+}
+
+
+// ----------New dialler service---------------
+
+NewDialerService::NewDialerService(ServiceApp* parent)
+: XQServiceProvider(QLatin1String("serviceapp.Dialer"),parent),
+mServiceApp(parent)
+{
+ XQSERVICE_DEBUG_PRINT("NewDialerService::NewDialerService");
+ publishAll();
+}
+
+NewDialerService::~NewDialerService()
+{
+ XQSERVICE_DEBUG_PRINT("NewDialerService::~NewDialerService");
+}
+
+void NewDialerService::complete(QString number)
+{
+ XQSERVICE_DEBUG_PRINT("NewDialerService::complete");
+
+ // Complete all IDs
+ foreach (quint32 reqId, mAsyncReqIds)
+ {
+ XQSERVICE_DEBUG_PRINT("NewDialerService::complete %d", reqId);
+ completeRequest(reqId, number.toInt());
+ }
+}
+
+int NewDialerService::dial(const QString& number, bool asyncAnswer)
+{
+ Q_UNUSED(asyncAnswer);
+
+ XQRequestInfo info = requestInfo();
+ QString testCase = (info.info(TESTCASE_INFO_KEY)).toString();
+ XQSERVICE_DEBUG_PRINT("XQTESTER serviceapp,%s,NewDialerService::dial", qPrintable(testCase));
+
+ XQSERVICE_DEBUG_PRINT("\tRequest info: id=%d,sid=%X,vid=%X", info.id(), info.clientSecureId(), info.clientVendorId());
+ QSet<int> caps = info.clientCapabilities();
+ QSetIterator<int> i(caps);
+ while (i.hasNext())
+ qDebug() << "Has capability " << i.next();
+ XQSERVICE_DEBUG_PRINT("\tRequest info: embed=%d,sync=%d", info.isEmbedded(), info.isSynchronous());
+
+ bool isAsync = !info.isSynchronous();
+
+ QString label = "NewDialer::dial:\n";
+ label += QString("number=%1\n").arg(number);
+ label += QString("async=%1\n").arg(isAsync);
+
+ connect(this, SIGNAL(returnValueDelivered()), this, SLOT(handleAnswerDelivered()));
+
+ mNumber = number ;
+ mServiceApp->setLabelNumber(label, number);
+ int ret = 0;
+ if (isAsync)
+ {
+ mAsyncReqIds.insertMulti(info.clientSecureId(), setCurrentRequestAsync());
+ connect(this, SIGNAL(clientDisconnected()), this, SLOT(handleClientDisconnect()));
+ }
+ else
+ {
+ ret = number.toInt();
+ }
+ return ret;
+}
+
+CntServicesContactList NewDialerService::testContactList(CntServicesContactList list)
+{
+ XQSERVICE_DEBUG_PRINT("NewDialerService::testContactList");
+ showRecipients(list);
+
+ // Create output
+ CntServicesContact cnt1;
+ cnt1.mDisplayName = "Test1-Return";
+ cnt1.mPhoneNumber = "060-1111111";
+ cnt1.mEmailAddress = "test1.return@nokia.com";
+
+ CntServicesContact cnt2;
+ cnt2.mDisplayName = "Test1-Return";
+ cnt2.mPhoneNumber = "060-2222222";
+ cnt2.mEmailAddress = "test2.return@nokia.com";
+
+ CntServicesContactList ret;
+ ret.append(cnt1);
+ ret.append(cnt2);
+
+ return ret;
+
+}
+
+QVariant NewDialerService::testVariant(QVariant variant)
+{
+ XQRequestInfo info = requestInfo();
+ QString testCase = (info.info(TESTCASE_INFO_KEY)).toString();
+ XQSERVICE_DEBUG_PRINT("XQTESTER serviceapp,%s,NewDialerService::testVariant", qPrintable(testCase));
+
+ XQSERVICE_DEBUG_PRINT("NewDialerService::testVariant::variant(%d,%d,%s)",
+ variant.type(), variant.userType(), variant.typeName());
+ XQSERVICE_DEBUG_PRINT("NewDialerService::testVariant::variant value=%s", qPrintable(variant.toString()));
+
+ if (variant.typeName() == QLatin1String("QStringList"))
+ {
+ QStringList ret = variant.toStringList();
+ return qVariantFromValue(ret);
+ }
+ else if (variant.typeName() == QLatin1String("TestServiceDataList"))
+ {
+ qDebug() << "DialerService::testVariant TestServiceDataList";
+ TestServiceDataList list;
+ if(variant.canConvert<TestServiceDataList>())
+ {
+ qDebug() << "DialerService::TestServiceDataList: canConvert OK";
+ list = qVariantValue<TestServiceDataList>(variant);
+ for (int i = 0; i < list.count(); ++i)
+ {
+ qDebug() << "DialerService::TestServiceDataList[" << i << "]=" << list[i].mType;
+ qDebug() << "DialerService::TestServiceDataList[" << i << "]=" << list[i].mData.toString();
+ }
+ }
+ else
+ {
+ qDebug() << "DialerService::TestServiceDataList: canConvert NOK";
+ }
+
+ TestServiceDataList resultList;
+ QVariant v1;
+ QVariant v2;
+ QVariant v3;
+ v1.setValue((int)99);
+ v2.setValue((bool)false);
+ v3.setValue(QString("Variant3 return"));
+ TestServiceData data1(1, v1);
+ TestServiceData data2(2, v2);
+ TestServiceData data3(3, v3);
+ resultList.append(data1);
+ resultList.append(data2);
+ resultList.append(data3);
+
+ // Return some data back
+ return qVariantFromValue(resultList);
+ }
+ else if (variant.typeName() == QLatin1String("XQShabarableFile"))
+ {
+ XQSharableFile sf = variant.value<XQSharableFile>();
+
+ RFile file;
+ bool ok = sf.getHandle( file );
+ if (ok)
+ {
+ HBufC8* data = HBufC8::NewL(100);
+ TPtr8 ptr = data->Des();
+ TInt err = file.Read( ptr );
+ QString text = QString::fromUtf8((const char *)(data->Ptr()), data->Length());
+ XQSERVICE_DEBUG_PRINT("NewDialerService::testVariant ::file content,%d,%s", err, qPrintable(text));
+ sf.close();
+ delete data;
+ }
+
+ return QVariant(ok);
+
+ }
+ else if (variant.typeName() == QLatin1String("XQRequestInfo"))
+ {
+ XQRequestInfo info = variant.value<XQRequestInfo>();
+ QStringList keys = info.infoKeys();
+ foreach (QString key, keys)
+ {
+ XQSERVICE_DEBUG_PRINT("NewDialerService::testVariant: info %s=%s",
+ qPrintable(key),
+ qPrintable(info.info(key).toString()));
+ }
+
+ return qVariantFromValue(info);
+
+ }
+ else if (variant.typeName() == QLatin1String("CntServicesContactList"))
+ {
+ // Show input
+ showRecipients(variant);
+
+ // Create output
+ CntServicesContact cnt1;
+ cnt1.mDisplayName = "Test1-Return";
+ cnt1.mPhoneNumber = "060-1111111";
+ cnt1.mEmailAddress = "test1.return@nokia.com";
+
+ CntServicesContact cnt2;
+ cnt2.mDisplayName = "Test1-Return";
+ cnt2.mPhoneNumber = "060-2222222";
+ cnt2.mEmailAddress = "test2.return@nokia.com";
+
+ CntServicesContactList list;
+ list.append(cnt1);
+ list.append(cnt2);
+
+ // Return contact list back
+ return qVariantFromValue(list);
+ }
+ else if (variant.typeName() == QLatin1String("QByteArray"))
+ {
+ QByteArray val = variant.value<QByteArray>();
+ qDebug() << "DialerService::QByteArray size=" << val.size();
+ return qVariantFromValue(val);
+ }
+ else
+ {
+ return variant.toString();
+ }
+}
+
+void NewDialerService::handleClientDisconnect()
+{
+ XQSERVICE_DEBUG_PRINT("NewDialerService::handleClientDisconnect");
+
+ // Get the info of the cancelled request
+ XQRequestInfo info = requestInfo();
+ XQSERVICE_DEBUG_PRINT("\tDisconnected request info: id=%d,sid=%X,vid=%X", info.id(),info.clientSecureId(), info.clientVendorId());
+
+ // Just quit service application if client ends
+ mServiceApp->quit();
+}
+
+void NewDialerService::handleAnswerDelivered()
+{
+ XQSERVICE_DEBUG_PRINT("NewDialerService::handleAnswerDelivered");
+ XQRequestInfo info = requestInfo();
+ XQSERVICE_DEBUG_PRINT("\tRequest info: sid=%X,vid=%X", info.clientSecureId(), info.clientVendorId());
+ // Done
+ mAsyncReqIds.remove(info.clientSecureId());
+}
+
+
+
+void NewDialerService::showRecipients(QVariant &value)
+{
+ CntServicesContactList list;
+ if(value.canConvert<CntServicesContactList>())
+ {
+ qDebug() << "NewDialerService::showRecipients: canConvert";
+ list = qVariantValue<CntServicesContactList>(value);
+ }
+ else
+ {
+ qDebug() << "NewDialerService::showRecipients: canConvert NOK";
+ return;
+ }
+
+ showRecipients(list);
+}
+
+void NewDialerService::showRecipients(CntServicesContactList &list)
+{
+ if (list.count() == 0)
+ {
+ qDebug() << "NewDialerService::showRecipients(2): Count==0";
+ }
+ else
+ {
+ for (int i = 0; i < list.count(); ++i)
+ {
+ qDebug() << "NewDialerService::showRecipients(2)[" << i << "]=" << list[i].mDisplayName;
+ qDebug() << "NewDialerService::showRecipients(2)[" << i << "]=" << list[i].mPhoneNumber;
+ qDebug() << "NewDialerService::showRecipients(2)[" << i << "]=" << list[i].mEmailAddress;
+ }
+ }
+}
+
+
+
+Q_IMPLEMENT_USER_METATYPE(CntServicesContact)
+Q_IMPLEMENT_USER_METATYPE_NO_OPERATORS(CntServicesContactList)
+
+Q_IMPLEMENT_USER_METATYPE(TestServiceData)
+Q_IMPLEMENT_USER_METATYPE_NO_OPERATORS(TestServiceDataList)
+
+// ----------UriService---------------
+
+UriService::UriService(ServiceApp* parent)
+: XQServiceProvider(QLatin1String("com.nokia.services.serviceapp.com.nokia.symbian.IUriView"),parent),
+ mServiceApp(parent)
+
+{
+ XQSERVICE_DEBUG_PRINT("UriService::UriService");
+ publishAll();
+}
+
+UriService::~UriService()
+{
+ XQSERVICE_DEBUG_PRINT("UriService::~UriService");
+}
+
+void UriService::complete(bool ok)
+{
+ Q_UNUSED(ok)
+ XQSERVICE_DEBUG_PRINT("UriService::complete");
+ // Complete all IDs
+ foreach (quint32 reqId, mAsyncReqIds)
+ {
+ XQSERVICE_DEBUG_PRINT("UriService::complete %d", reqId);
+ completeRequest(reqId, QVariant(mRetValue));
+ }
+}
+
+bool UriService::view(const QString& uri)
+{
+ XQSERVICE_DEBUG_PRINT("UriService::view(1)");
+ return view(uri, true);
+}
+
+bool UriService::view(const QString& uri, bool retValue)
+{
+ XQRequestInfo info = requestInfo();
+ QString testCase = (info.info(TESTCASE_INFO_KEY)).toString();
+ XQSERVICE_DEBUG_PRINT("XQTESTER serviceapp,%s,UriService::view", qPrintable(testCase));
+
+ QString label = "IUriView::view\n:";
+ label += QString ("Uri=%1\n").arg(uri);
+ label += QString ("retValue=%1\n").arg(retValue);
+ QString param = QString ("retValue=%1\n").arg(retValue);
+
+ bool isAsync = !info.isSynchronous();;
+ connect(this, SIGNAL(returnValueDelivered()), this, SLOT(handleAnswerDelivered()));
+
+ mRetValue = retValue;
+ mServiceApp->setLabelNumber(label,param);
+ if (isAsync)
+ {
+ mAsyncReqIds.insertMulti(info.clientSecureId(), setCurrentRequestAsync());
+ connect(this, SIGNAL(clientDisconnected()), this, SLOT(handleClientDisconnect()));
+ }
+
+ return retValue;
+}
+
+void UriService::handleClientDisconnect()
+{
+ XQSERVICE_DEBUG_PRINT("UriService::handleClientDisconnect");
+ XQRequestInfo info = requestInfo();
+ XQSERVICE_DEBUG_PRINT("\tRequest info: id=%d,sid=%X,vid=%X", info.id(),info.clientSecureId(), info.clientVendorId());
+
+ mAsyncReqIds.remove(info.clientSecureId());
+ mServiceApp->quit();
+}
+
+void UriService::handleAnswerDelivered()
+{
+ XQSERVICE_DEBUG_PRINT("UriService::handleAnswerDelivered");
+ XQRequestInfo info = requestInfo();
+ XQSERVICE_DEBUG_PRINT("\tRequest info: sid=%X,vid=%X", info.clientSecureId(), info.clientVendorId());
+ // Done
+ mAsyncReqIds.remove(info.clientSecureId());
+
+}
+
+// ----------NewUriService---------------
+
+NewUriService::NewUriService(ServiceApp* parent)
+: XQServiceProvider(QLatin1String("serviceapp.com.nokia.symbian.IUriView"),parent),
+mServiceApp(parent)
+
+{
+ XQSERVICE_DEBUG_PRINT("NewUriService::NewUriService");
+ publishAll();
+}
+
+NewUriService::~NewUriService()
+{
+ XQSERVICE_DEBUG_PRINT("NewUriService::~NewUriService");
+}
+
+void NewUriService::complete(bool ok)
+{
+ Q_UNUSED(ok);
+ XQSERVICE_DEBUG_PRINT("NewUriService::complete");
+ // Complete all IDs
+ foreach (quint32 reqId, mAsyncReqIds)
+ {
+ XQSERVICE_DEBUG_PRINT("NewUriService::complete %d", reqId);
+ completeRequest(reqId, QVariant(mRetValue));
+ }
+}
+
+bool NewUriService::view(const QString& uri)
+{
+ XQSERVICE_DEBUG_PRINT("NewUriService::view(1)");
+ return view(uri, true);
+}
+
+bool NewUriService::view(const QString& uri, bool retValue)
+{
+ XQRequestInfo info = requestInfo();
+ QString testCase = (info.info(TESTCASE_INFO_KEY)).toString();
+ XQSERVICE_DEBUG_PRINT("XQTESTER serviceapp,%s,NewUriService::view", qPrintable(testCase));
+
+ QString label = "New IUriView::view\n:";
+ label += QString ("Uri=%1\n").arg(uri);
+ label += QString ("retValue=%1\n").arg(retValue);
+ QString param = QString ("retValue=%1\n").arg(retValue);
+
+ bool isAsync = !info.isSynchronous();;
+ connect(this, SIGNAL(returnValueDelivered()), this, SLOT(handleAnswerDelivered()));
+
+ mRetValue = retValue;
+ mServiceApp->setLabelNumber(label,param);
+ if (isAsync)
+ {
+ mAsyncReqIds.insertMulti(info.clientSecureId(), setCurrentRequestAsync());
+ connect(this, SIGNAL(clientDisconnected()), this, SLOT(handleClientDisconnect()));
+ }
+
+ return retValue;
+}
+
+void NewUriService::handleClientDisconnect()
+{
+ XQSERVICE_DEBUG_PRINT("NewUriService::handleClientDisconnect");
+ XQRequestInfo info = requestInfo();
+ XQSERVICE_DEBUG_PRINT("\tRequest info: id=%d,sid=%X,vid=%X", info.id(),info.clientSecureId(), info.clientVendorId());
+
+ mAsyncReqIds.remove(info.clientSecureId());
+ mServiceApp->quit();
+}
+
+void NewUriService::handleAnswerDelivered()
+{
+ XQSERVICE_DEBUG_PRINT("NewUriService::handleAnswerDelivered");
+ XQRequestInfo info = requestInfo();
+ XQSERVICE_DEBUG_PRINT("\tRequest info: sid=%X,vid=%X", info.clientSecureId(), info.clientVendorId());
+ // Done
+ mAsyncReqIds.remove(info.clientSecureId());
+
+}
+
+
+// ----------FileService---------------
+
+FileService::FileService(ServiceApp* parent)
+: XQServiceProvider(QLatin1String("com.nokia.services.serviceapp.com.nokia.symbian.IFileView"),parent),
+ mServiceApp(parent)
+
+{
+ XQSERVICE_DEBUG_PRINT("FileService::FileService");
+ publishAll();
+}
+
+FileService::~FileService()
+{
+ XQSERVICE_DEBUG_PRINT("FileService::~FileService");
+}
+
+void FileService::complete(bool ok)
+{
+ XQSERVICE_DEBUG_PRINT("FileService::complete");
+ // Complete all
+ foreach (quint32 reqId, mAsyncReqIds)
+ {
+ XQSERVICE_DEBUG_PRINT("FileService::complete %d", reqId);
+ completeRequest(reqId, QVariant(ok));
+ }
+}
+
+bool FileService::view(QString file)
+{
+ XQRequestInfo info = requestInfo();
+ QString testCase = (info.info(TESTCASE_INFO_KEY)).toString();
+ XQSERVICE_DEBUG_PRINT("XQTESTER serviceapp,%s,FileService::view", qPrintable(testCase));
+
+ QString label = "IFileView::view\n:";
+ QString param = QString ("File=%1\n").arg(file);
+
+ bool isAsync = !info.isSynchronous();;
+ connect(this, SIGNAL(returnValueDelivered()), this, SLOT(handleAnswerDelivered()));
+
+ mServiceApp->setLabelNumber(label,param);
+ if (isAsync)
+ {
+ mAsyncReqIds.insertMulti(info.clientSecureId(), setCurrentRequestAsync());
+ connect(this, SIGNAL(clientDisconnected()), this, SLOT(handleClientDisconnect()));
+ }
+
+ return true;
+}
+
+
+bool FileService::view(XQSharableFile sf)
+{
+ XQSERVICE_DEBUG_PRINT("FileService::view(XQSharebleFile)");
+ QString label = "IFile::view\n:";
+ QString param = QString ("File=%1\n").arg(sf.fileName());
+
+ RFile file;
+ bool ok = sf.getHandle( file );
+ if (ok)
+ {
+ HBufC8* data = HBufC8::NewL(100);
+ TPtr8 ptr = data->Des();
+ TInt err = file.Read( ptr );
+ QString text = QString::fromUtf8((const char *)(data->Ptr()), data->Length());
+ XQSERVICE_DEBUG_PRINT("FileService::file read,%d,%s", err, qPrintable(text));
+ sf.close();
+ delete data;
+ }
+
+ XQRequestInfo info = requestInfo();
+ bool isAsync = !info.isSynchronous();;
+
+ mServiceApp->setLabelNumber(label,param);
+ if (isAsync)
+ {
+ mAsyncReqIds.insertMulti(info.clientSecureId(), setCurrentRequestAsync());
+ connect(this, SIGNAL(clientDisconnected()), this, SLOT(handleClientDisconnect()));
+ }
+ return true;
+}
+
+
+void FileService::handleClientDisconnect()
+{
+ XQSERVICE_DEBUG_PRINT("FileService::handleClientDisconnect");
+ XQRequestInfo info = requestInfo();
+ XQSERVICE_DEBUG_PRINT("\tRequest info: id=%d,sid=%X,vid=%X", info.id(),info.clientSecureId(), info.clientVendorId());
+
+ mAsyncReqIds.remove(info.clientSecureId());
+ mServiceApp->quit();
+}
+
+
+void FileService::handleAnswerDelivered()
+{
+ XQSERVICE_DEBUG_PRINT("FileService::handleAnswerDelivered");
+ XQRequestInfo info = requestInfo();
+ XQSERVICE_DEBUG_PRINT("\tRequest info: sid=%X,vid=%X", info.clientSecureId(), info.clientVendorId());
+ // Done
+ mAsyncReqIds.remove(info.clientSecureId());
+
+}
+
+
+// ----------NewFileService---------------
+
+NewFileService::NewFileService(ServiceApp* parent)
+: XQServiceProvider(QLatin1String("serviceapp.com.nokia.symbian.IFileView"),parent),
+mServiceApp(parent)
+
+{
+ XQSERVICE_DEBUG_PRINT("NewFileService::NewFileService");
+ publishAll();
+}
+
+NewFileService::~NewFileService()
+{
+ XQSERVICE_DEBUG_PRINT("NewFileService::~NewFileService");
+}
+
+void NewFileService::complete(bool ok)
+{
+ XQSERVICE_DEBUG_PRINT("NewFileService::complete");
+ // Complete all
+ foreach (quint32 reqId, mAsyncReqIds)
+ {
+ XQSERVICE_DEBUG_PRINT("NewFileService::complete %d", reqId);
+ completeRequest(reqId, QVariant(ok));
+ }
+}
+
+bool NewFileService::view(QString file)
+{
+ XQRequestInfo info = requestInfo();
+ QString testCase = (info.info(TESTCASE_INFO_KEY)).toString();
+ XQSERVICE_DEBUG_PRINT("XQTESTER serviceapp,%s,NewFileService::view", qPrintable(testCase));
+
+ QString label = "New IFileView::view\n:";
+ QString param = QString ("File=%1\n").arg(file);
+
+ bool isAsync = !info.isSynchronous();;
+ connect(this, SIGNAL(returnValueDelivered()), this, SLOT(handleAnswerDelivered()));
+
+ mServiceApp->setLabelNumber(label,param);
+ if (isAsync)
+ {
+ mAsyncReqIds.insertMulti(info.clientSecureId(), setCurrentRequestAsync());
+ connect(this, SIGNAL(clientDisconnected()), this, SLOT(handleClientDisconnect()));
+ }
+
+ return true;
+}
+
+
+bool NewFileService::view(XQSharableFile sf)
+{
+ XQSERVICE_DEBUG_PRINT("NewFileService::view(XQSharebleFile)");
+ QString label = "IFile::view\n:";
+ QString param = QString ("File=%1\n").arg(sf.fileName());
+
+ RFile file;
+ bool ok = sf.getHandle( file );
+ if (ok)
+ {
+ HBufC8* data = HBufC8::NewL(100);
+ TPtr8 ptr = data->Des();
+ TInt err = file.Read( ptr );
+ QString text = QString::fromUtf8((const char *)(data->Ptr()), data->Length());
+ XQSERVICE_DEBUG_PRINT("NewFileService::file read,%d,%s", err, qPrintable(text));
+ sf.close();
+ delete data;
+ }
+
+ XQRequestInfo info = requestInfo();
+ bool isAsync = !info.isSynchronous();;
+
+ mServiceApp->setLabelNumber(label,param);
+ if (isAsync)
+ {
+ mAsyncReqIds.insertMulti(info.clientSecureId(), setCurrentRequestAsync());
+ connect(this, SIGNAL(clientDisconnected()), this, SLOT(handleClientDisconnect()));
+ }
+ return true;
+}
+
+
+void NewFileService::handleClientDisconnect()
+{
+ XQSERVICE_DEBUG_PRINT("NewFileService::handleClientDisconnect");
+ XQRequestInfo info = requestInfo();
+ XQSERVICE_DEBUG_PRINT("\tRequest info: id=%d,sid=%X,vid=%X", info.id(),info.clientSecureId(), info.clientVendorId());
+
+ mAsyncReqIds.remove(info.clientSecureId());
+ mServiceApp->quit();
+}
+
+
+void NewFileService::handleAnswerDelivered()
+{
+ XQSERVICE_DEBUG_PRINT("NewFileService::handleAnswerDelivered");
+ XQRequestInfo info = requestInfo();
+ XQSERVICE_DEBUG_PRINT("\tRequest info: sid=%X,vid=%X", info.clientSecureId(), info.clientVendorId());
+ // Done
+ mAsyncReqIds.remove(info.clientSecureId());
+
+}
+