/*! Adds widget \a widgetUri utilizing service interface and invokeMethod call */ int HsBookmarkPublishClient::addWidget(QString Title, QString Url) { // find interface IHomeScreenClient from service hshomescreenclientplugin QServiceManager manager; QServiceFilter filter("com.nokia.symbian.IHomeScreenClient"); filter.setServiceName("hshomescreenclientplugin"); QList<QServiceInterfaceDescriptor> interfaces = manager.findInterfaces(filter); QVariantHash params; QString iconFileName; params["bookmarkTitle"] = Title; params["bookmarkUrl"] = Url; params["faviconPath"] = BEDROCK_PROVISIONING::BedrockProvisioning::createBedrockProvisioning()->valueAsString("DataBaseDirectory"); if(interfaces.isEmpty()) { QServiceManager::Error error = manager.error(); return FAILURE; } // Retrieve the favicon and check its exsistance QIcon icon = QWebSettings::iconForUrl(Url); if (!icon.isNull()) iconFileName = getIconFileName(Url); params["faviconFileName"] = iconFileName; saveFavicon(Url, iconFileName); QObject* service = manager.loadInterface(interfaces.first()); // access service's addWidget function bool retVal = false; bool ret = QMetaObject::invokeMethod( service, "addWidget", Qt::DirectConnection, Q_RETURN_ARG(bool, retVal), Q_ARG(QString,mWidgetUri), Q_ARG(QVariantHash,params)); if(!ret){ // invokeMethod returned error return FAILURE; } if(!retVal){ // addWidget returned error return FAILURE; } return SUCCESS; }
tst_QContactActions::tst_QContactActions() { // set the correct path to look for plugins QString path = QApplication::applicationDirPath() + "/dummyplugin/plugins"; QApplication::addLibraryPath(path); // and add the sendemail + call actions to the service framework QServiceManager sm; // clean up any actions/services. QStringList allServices = sm.findServices(); foreach(const QString& serv, allServices) { if (serv.startsWith("tst_qcontact")) { if (!sm.removeService(serv)) { qDebug() << " tst_qca: ctor: cleaning up test service" << serv << "failed:" << sm.error(); } } } if (!sm.addService(QCoreApplication::applicationDirPath() + "/plugins/contacts/xmldata/sendemailactionservice.xml")) qDebug() << " tst_qca: ctor: unable to add SendEmail service:" << sm.error(); if (!sm.addService(QCoreApplication::applicationDirPath() + "/plugins/contacts/xmldata/multiactionservice.xml")) qDebug() << " tst_qca: ctor: unable to add MultiAction service:" << sm.error(); }
tst_QContactActions::~tst_QContactActions() { QString path = QApplication::applicationDirPath() + "/dummyplugin/plugins"; QApplication::removeLibraryPath(path); // clean up any actions/services. QServiceManager sm; QStringList allServices = sm.findServices(); foreach(const QString& serv, allServices) { if (serv.startsWith("tst_qcontact")) { if (!sm.removeService(serv)) { qDebug() << " tst_qca: ctor: cleaning up test service" << serv << "failed:" << sm.error(); } } } }