void ServiceBrowser::reloadInterfaceImplementationsList() { QString serviceName; if (servicesListWidget->currentItem() && servicesListWidget->currentItem() != showAllServicesItem) { serviceName = servicesListWidget->currentItem()->text(); interfacesGroup->setTitle(tr("Interfaces implemented by %1").arg(serviceName)); } else { interfacesGroup->setTitle(tr("All interface implementations")); } QServiceManager *manager = serviceManager; if (serviceName.endsWith(" (system)")) { serviceName.chop(9); manager = systemManager; } QList<QServiceInterfaceDescriptor> descriptors = manager->findInterfaces(serviceName); attributesListWidget->clear(); interfacesListWidget->clear(); for (int i=0; i<descriptors.count(); i++) { if (descriptors[i].scope() != manager->scope() && !serviceName.isEmpty()) continue; QString text = QString("%1 %2.%3") .arg(descriptors[i].interfaceName()) .arg(descriptors[i].majorVersion()) .arg(descriptors[i].minorVersion()); QServiceInterfaceDescriptor defaultInterfaceImpl = manager->interfaceDefault(descriptors[i].interfaceName()); if (serviceName.isEmpty()) { text += " (" + descriptors[i].serviceName() + ")"; if (descriptors[i].scope() == QService::SystemScope) { text += tr(" (system"); defaultInterfaceImpl = systemManager->interfaceDefault(descriptors[i].interfaceName()); if (descriptors[i] == defaultInterfaceImpl) text += tr(" default)"); else text += ")"; defaultInterfaceImpl = QServiceInterfaceDescriptor(); } } if (descriptors[i] == defaultInterfaceImpl) text += tr(" (default)"); QListWidgetItem *item = new QListWidgetItem(text); item->setData(Qt::UserRole, qVariantFromValue(descriptors[i])); interfacesListWidget->addItem(item); } defaultInterfaceButton->setEnabled(false); }
/*! 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; }
/* * This is the slot for Invoke Button, which loads the OOP service * and then invokes the Remote Method provided by the service. */ void sfwtestclient::invokeButtonClicked() { ui.textEditBox->clear(); QServiceManager serviceManager; QServiceFilter serviceFilter; serviceFilter.setServiceName("SfwTestService"); serviceFilter.setInterface("com.nokia.qt.SfwTest"); QList<QServiceInterfaceDescriptor> interfaceList; interfaceList = serviceManager.findInterfaces(serviceFilter); if(!interfaceList.count()) { ui.textEditBox->setText("No Interfaces Found\n"); return; } if(interfaceList.count() > 1) { ui.textEditBox->setText("Multiple Interfaces Found\n"); return; } ui.textEditBox->setText("Loading Interface...\n"); QObject *sfwTestService = NULL; sfwTestService = serviceManager.loadInterface(interfaceList.at(0)); if (sfwTestService) { ui.textEditBox->setText("Loading Interface: Success\n"); ui.textEditBox->setText("Invoking Interface Method: getServiceCount...\n"); int result = 0; QMetaObject::invokeMethod(sfwTestService, "getServiceCount", Q_RETURN_ARG(int, result)); if (!result) { ui.textEditBox->setText("Invoke Interface Method getServiceCount: No Services Found\n"); } else { QString fmtString; ui.textEditBox->setText(fmtString.sprintf("Invoke Interface Method getServiceCount: Found %d Services\n",result)); } delete sfwTestService; sfwTestService = NULL; } else {
FtuFirstTimeUse::FtuFirstTimeUse(QObject* aParent) : QObject(aParent), mRuntime(NULL) { QDEBUG("FTU::FtuFirstTimeUse::FtuFirstTimeUse"); registerServicePlugins(); QServiceManager manager; QServiceFilter filter(ftuRuntimeUri); QList<QServiceInterfaceDescriptor> interfaces = manager.findInterfaces( filter); QDEBUG("ftu: found " << interfaces.count() << " instances of runtime";) if(interfaces.count() > 0){