void ApplicationUI::invoke(QString platform) { // Create a new invocation request InvokeRequest request; if (platform == "BBM") { request.setAction("bb.action.BBMCHAT"); request.setUri("pin:2B1F7E7B"); request.setTarget("sys.bbm.sharehandler"); } if (platform == "EMAIL") { request.setAction("bb.action.COMPOSE"); bb::Application* thisApp; const QString uri = "mailto:[email protected]?subject=" + thisApp->applicationName() + "%20version%20" + thisApp->applicationVersion(); request.setUri(uri); request.setMimeType("text/plain"); request.setData("Test"); request.setTarget("sys.pim.uib.email.hybridcomposer"); } if (platform == "TWITTER") { request.setAction("bb.action.VIEW"); request.setUri("twitter:connect:RodgerLeblanc"); request.setTarget("com.twitter.urihandler"); } if (platform == "BBW") { request.setAction("bb.action.OPEN"); request.setUri("appworld://vendor/70290"); request.setTarget("sys.appworld"); } // Start the invocation InvokeManager* invokeManager = new InvokeManager(this); invokeManager->invoke(request); invokeManager->deleteLater(); }
// invoke MediaPlayer void ApplicationUI::invokeBoundMediaPlayer(const QString& uri) { qDebug() << "invoke bound mediaplayer" << uri; InvokeRequest cardRequest; // MediaPlayer needs file:// or http:// etc as prefix // FilePicker uses /account....... etc if (uri.startsWith('/')) { cardRequest.setUri("file://" + uri); } else { cardRequest.setUri(uri); } cardRequest.setTarget("sys.mediaplayer.previewer"); mInvokeManager->invoke(cardRequest); }
void ApplicationUI::onGetResponse(QString& response) { m_pCardHolder->setProperty("visible", false); m_pResponseHolder->setProperty("visible", true); m_pResponseHolder->setProperty("text", response); QDir vcfPath; vcfPath.mkdir(QDir::tempPath()+"/data/"); vcfPath.cd(QDir::tempPath()+"/data/"); QFile vcfCard(QDir::tempPath()+"/data/readContact.vcf"); if(!vcfCard.open(QIODevice::WriteOnly | QIODevice::Text)) { showToast("Error Creating new file"); return; } QTextStream out(&vcfCard); out << response; vcfCard.close(); InvokeManager manager; InvokeRequest request; request.setTarget("sys.pim.contacts.card.viewer"); request.setAction("bb.action.VIEW"); request.setUri("file://" + QDir::tempPath()+"/data/readContact.vcf"); manager.invoke(request); }
void ApplicationUI::invoke(const QString& platform, const QString& data) { // Some invoke only works in C++, that's why all my invoke are done in C++ qDebug() << "ApplicationUI::invoke()" << platform << data; // Load from previous saved information const QString jsonPathFile = QDir::currentPath() + "/app/native/assets/InvokeTargets.json"; QVariantMap invokeTargets = jda.load(jsonPathFile).toMap()[platform].toMap(); qDebug() << "invokeTargets:" << invokeTargets; // Create a new invocation request InvokeRequest request; if (!invokeTargets["target"].isNull()) request.setTarget(invokeTargets["target"].toString()); if (!invokeTargets["action"].isNull()) request.setAction(invokeTargets["action"].toString()); if (!invokeTargets["mimeType"].isNull()) request.setMimeType(invokeTargets["mimeType"].toString()); if (!invokeTargets["uri"].isNull()) request.setUri(invokeTargets["uri"].toString() + data); request.setData(data.toUtf8()); // Start the invocation m_invokeManager->invoke(request); connect(m_invokeManager, SIGNAL(childCardDone(const bb::system::CardDoneMessage&)), this, SLOT(invokeNext())); }
// The Foursquare invocation calls are based on the sample available here: // https://github.com/kylefowler/foursquare-bb10-sdk // // Launches a native Foursquare venue search in your app. // This card will call back to your childCardDone slot with the appropriate // response for the actions taken by the user. // // URI Params: // query: (optional) prime the venue search with a query // client_id: (required) the client id from your oauth consumer // client_secret: (required) the client secret from your oauth consumer // oauth_token: (required if no client_id/client_secret) pass this if you // already have an authenticated user token, this way venue // search results will be fitted to the user requesting them // for a higher quality queryless search // // Response: // When the user selects a venue, you will get the venue information in // JSON format back through the childCardDone slot in the data object. // The venue format will match what is listed here in the core venue fields: // https://developer.foursquare.com/docs/responses/venue // // If the user cancels the search without any action: the reason message will be "canceled" // If any of the parameters are missing you will get a reason message of "invalid_credentials" void SocialInvocation::invokeFoursquareVenueCard(const QString &venue) { InvokeRequest cardRequest; cardRequest.setTarget("com.foursquare.blackberry.venuesearch.card"); cardRequest.setAction("bb.action.VIEW"); cardRequest.setMimeType("venuesearch/foursquare"); // The client_id and client_secret are the Foursquare API credentials // that you receive when registering your app with Foursquare. // // You can register your app with Foursquare here: // https://foursquare.com/developers/apps // // For more information on Foursquare API credentials, see here: // https://developer.foursquare.com/overview/auth QUrl uri = QUrl("foursquare://venues/search"); // Replace the following values with your app's client ID and secret uri.addQueryItem("client_id", "UFVANV2FBBFRPXSBXHCCKECVUDANDKP5KQFKICRCA1VAFV4V"); uri.addQueryItem("client_secret","11AY4DWL0A2CV1NXPKDMS2PJTEACRZJP0BMFXORNCKBSNVMH"); uri.addQueryItem("query", venue); cardRequest.setUri(uri); m_invokeManager->invoke(cardRequest); }
//! [1] void SocialInvocation::invoke(const QString &target, const QString &action, const QString &mimetype, const QString &uri) { // Create a new invocation request InvokeRequest request; request.setTarget(target); request.setAction(action); if (target == QLatin1String("com.rim.bb.app.facebook")) { QVariantMap payload; if (!uri.isEmpty()) { payload["object_type"] = mimetype; payload["object_id"] = uri; } else { // Open the BlackBerry North America page by default payload["object_type"] = "page"; payload["object_id"] = "328506290597521"; } request.setMetadata(payload); } else { request.setUri(uri); } m_invokeManager->invoke(request); }
void ApplicationUIBase::invoke_media_player(QString uri) { InvokeRequest request; request.setTarget("sys.mediaplayer.previewer"); request.setAction("bb.action.OPEN"); request.setUri(uri); _invoke_manager->invoke(request); }
void ApplicationUIBase::invoke_browser(QString url) { InvokeRequest request; request.setTarget("sys.browser"); request.setAction("bb.action.OPEN"); request.setUri(url); _invoke_manager->invoke(request); }
void ApplicationUIBase::invoke_bbworld(QString uri) { InvokeRequest request; request.setMimeType("application/x-bb-appworld"); request.setAction("bb.action.OPEN"); request.setUri(uri); _invoke_manager->invoke(request); }
/** * uses Invokation Framework to View the file from URI * */ void OpenDataSpace::showInView(QString uri) { qDebug() << "showInView called: " << uri; InvokeRequest invokeRequest; invokeRequest.setAction("bb.action.VIEW"); invokeRequest.setUri(uri); qDebug() << "showInView URI: " << invokeRequest.uri(); m_invokeManager->invoke(invokeRequest); }
/** * uses Invokation Framework to View the file from URI * for a specific target like "sys.pictures.app" * */ void ApplicationUI::showInTarget(QString uri, QString target) { qDebug() << "showInTarget called: " << uri; InvokeRequest invokeRequest; invokeRequest.setAction("bb.action.VIEW"); invokeRequest.setUri(uri); invokeRequest.setTarget(target); qDebug() << "showInTarget URI: " << invokeRequest.uri(); mInvokeManager->invoke(invokeRequest); }
// unbound Invokation void ApplicationUI::invokeUnbound(QString uri) { if (uri.endsWith(".svg")) { invokeBrowser(uri); return; } InvokeRequest cardRequest; cardRequest.setUri(uri); mInvokeManager->invoke(cardRequest); }
void ApplicationUI::shareTextWithMail(const QString& text) { InvokeRequest mailRequest; mailRequest.setTarget("sys.pim.uib.email.hybridcomposer"); mailRequest.setAction("bb.action.SENDEMAIL"); mailRequest.setMimeType("settings/view"); mailRequest.setUri("mailto:?subject=" + text); qDebug() << "share with Mail: " << text; mInvokeManager->invoke(mailRequest); }
void ApplicationUI::leaveReview() { InvokeRequest bbmRequest; bbmRequest.setAction("bb.action.OPEN"); bbmRequest.setMimeType("application/x-bb-appworld"); QString uri = "appworld://content/"; uri += mOdsData->applicationId(); bbmRequest.setUri(uri); qDebug() << "leave review"; mInvokeManager->invoke(bbmRequest); }
/** * uses Invokation Framework to View the file from URI * for a specific MimeType * */ void ApplicationUI::showInViewForMimeType(QString uri, QString mimeType) { qDebug() << "showInViewForMimeType called: " << uri; InvokeRequest invokeRequest; invokeRequest.setAction("bb.action.VIEW"); invokeRequest.setUri(uri); invokeRequest.setMimeType(mimeType); qDebug() << "showInViewForMimeType URI: " << invokeRequest.uri() << " Mime:" << mimeType; mInvokeManager->invoke(invokeRequest); }
// handles SLOT from feedbackItem void ApplicationUI::feedbackTriggered() { qDebug() << "invoke sendFeedback"; InvokeRequest request; request.setAction("bb.action.SENDEMAIL"); request.setTarget("sys.pim.uib.email.hybridcomposer"); request.setMimeType("settings/view"); request.setUri( "mailto:" + mOdsData->feedbackMail() + "?subject=Feedback%20" + mOdsData->applicationName()); mInvokeManager->invoke(request); }
void ApplicationUI::sendMail(const QString title) { qDebug() << "invoke sendMail"; InvokeRequest request; request.setAction("bb.action.SENDEMAIL"); request.setTarget("sys.pim.uib.email.hybridcomposer"); request.setMimeType("settings/view"); request.setUri( "mailto:" + mOdsData->supportMail() + "?subject=" + mOdsData->applicationName() + "%20" + title); mInvokeManager->invoke(request); }
void ApplicationUI::openThisAppInBBW(const QString bbwLink) { InvokeRequest request; request.setAction("bb.action.OPEN"); request.setUri(bbwLink); request.setTarget("sys.appworld"); // Start the invocation InvokeManager* invokeManager = new InvokeManager(this); invokeManager->invoke(request); invokeManager->deleteLater(); }
/** * uses Invokation Framework to View the file from URI * for a specific MimeType * and for a specific target like "sys.pictures.app" * */ void OpenDataSpace::showInTargetForMimeType(QString uri, QString mimeType, QString target) { qDebug() << "showInTargetForMimeType called: " << uri; InvokeRequest invokeRequest; invokeRequest.setAction("bb.action.VIEW"); invokeRequest.setUri(uri); invokeRequest.setTarget(target); invokeRequest.setMimeType(mimeType); qDebug() << "showInTargetForMimeType URI: " << invokeRequest.uri() << " MimeType:" << mimeType; m_invokeManager->invoke(invokeRequest); }
void ApplicationUI::viewimage(QString path) { // invoke the system image viewer InvokeRequest request; // Set the URI request.setUri(path); request.setTarget("sys.pictures.card.previewer"); request.setAction("bb.action.VIEW"); // Send the invocation request InvokeTargetReply *cardreply = m_pInvokeManager->invoke(request); Q_UNUSED(cardreply); }
void App::invoke(int targetType, const QString &action, const QString &mime, const QString &uri, const QString &data, const QString &target) { iManager = new InvokeManager(this); InvokeRequest iRequest; if (action != 0 && action.length() > 0) { printf("################"); printf(action.toAscii().constData()); if (action != QString("All") && action != QString("Menu Actions")) { iRequest.setAction(action); } else if(target.length() <= 0){ root->findChild<QObject*>("qlDialogMessage")->setProperty("text", "[" + action + "] is not a valid action type for an unbound invocation."); root->findChild<QObject*>("qcdDialog")->setProperty("visible", true); return; } } if (mime != 0 && mime.length() > 0) { printf("################"); printf(mime.toAscii().constData()); iRequest.setMimeType(mime); } else { root->findChild<QObject*>("qlDialogMessage")->setProperty("text", "MIME type must be specified!"); root->findChild<QObject*>("qcdDialog")->setProperty("visible", true); return; } if (uri != 0 && uri.length() > 0) { printf("################"); printf(uri.toAscii().constData()); iRequest.setUri(uri); } if (data != 0 && data.length() > 0) { printf("################"); printf(data.toAscii().constData()); iRequest.setData(data.toUtf8()); } if (target != 0 && target.length() > 0) { printf("################"); printf(target.toAscii().constData()); iRequest.setTarget(target); } iReply = iManager->invoke(iRequest); QObject::connect(iReply, SIGNAL(finished()), this, SLOT(processInvokeReply())); if (iReply == NULL) { root->findChild<QObject*>("qlDialogMessage")->setProperty("text", "Invoke Failed! InvokeReply is NULL."); root->findChild<QObject*>("qcdDialog")->setProperty("visible", true); return; } }
void ApplicationUI::InvokeSmsComposer(QString PhoneNumber) { InvokeRequest cardrequest; //cardrequest.setTarget("sys.pim.text_messaging.composer"); - not working on WorkSpace perimeter //cross-perimeter invoke cardrequest.setTarget("sys.pim.text_messaging.smsuri"); cardrequest.setAction("bb.action.SENDTEXT"); cardrequest.setUri("tel:" + PhoneNumber); InvokeManager invokemanager; InvokeTargetReply *reply = invokemanager.invoke(cardrequest); if (reply) { connect(reply, SIGNAL(finished()), this, SLOT(OnInvokeFinished())); } else { qDebug() << "Invocation Connecting Failed!!"; } }
/** * uses Invokation Framework to View the file from URI * */ void ApplicationUI::showInView(QString uri) { qDebug() << "showInView called: " << uri; if (uri.endsWith(".ogg")) { invokeBoundMediaPlayer(uri); return; } if (uri.endsWith(".svg")) { invokeBrowser(uri); return; } InvokeRequest invokeRequest; invokeRequest.setAction("bb.action.VIEW"); invokeRequest.setUri(uri); qDebug() << "showInView URI: " << invokeRequest.uri(); mInvokeManager->invoke(invokeRequest); }
void ApplicationUI::invokeEmail(QString email) { InvokeManager manager; InvokeRequest request; // Setup what to show and in what target. request.setTarget("sys.pim.uib.email.hybridcomposer"); request.setAction("bb.action.OPEN, bb.action.SENDEMAIL"); request.setUri("mailto:"+email); InvokeTargetReply *targetReply = manager.invoke(request); //setting the parent to "this" will make the manager live on after this function is destroyed manager.setParent(this); if (targetReply == NULL) { qDebug() << "InvokeTargetReply is NULL: targetReply = " << targetReply; } else { targetReply->setParent(this); } }
//invoke the blakcberry browser void ApplicationUI::invokeBrowser() { InvokeManager invokeManager; InvokeRequest request; QString uri = "http://bizblog.blackberry.com"; cout << "uri for browser = $" << uri.toStdString() << endl; // Target ID for app we're invoking request.setTarget("sys.browser"); // Action we want target application to perform request.setAction("bb.action.OPEN"); // The actual data request.setUri(uri); InvokeTargetReply *reply = invokeManager.invoke(request); }
void NSRFileSharer::invokeUri (const QString& uri, const QString& target, const QString& action) { InvokeManager invokeManager; InvokeRequest invokeRequest; InvokeTargetReply *invokeReply; invokeRequest.setUri (QUrl (uri)); invokeRequest.setAction (action); invokeRequest.setTarget (target); invokeReply = invokeManager.invoke (invokeRequest); if (invokeReply != NULL) { invokeReply->setParent (this); bool ok = connect (invokeReply, SIGNAL (finished ()), invokeReply, SLOT (deleteLater ())); Q_UNUSED (ok); Q_ASSERT (ok); } }
//invoke adobe reader application as a card void ApplicationUI::invokeAdobe() { InvokeManager invokeManager; InvokeRequest request; QString uri = "file:" + QDir::currentPath() + "/app/native/assets/docs/panther.pdf"; // Target ID for app we're invoking request.setTarget("com.rim.bb.app.adobeReader.viewer"); // Action we want target application to perform request.setAction("bb.action.VIEW"); // Type of data we're sending request.setMimeType("application/pdf"); // The actual data request.setUri(uri); InvokeTargetReply *reply = invokeManager.invoke(request); }
//! [1] void App::invoke() { // Create a new invocation request InvokeRequest request; // Setup the request properties according to the current configuration if (m_action.length() > 0) { request.setAction(m_action); } if (m_mimeType.length() > 0) { request.setMimeType(m_mimeType); } if (m_uri.length() > 0) { request.setUri(m_uri); } if (m_data.length() > 0) { request.setData(m_data.toUtf8()); } if (m_target.length() > 0) { request.setTarget(m_target); } // Start the invocation const InvokeReply *reply = m_invokeManager->invoke(request); if (reply) { // Ensure that processInvokeReply() is called when the invocation has finished bool ok = connect(reply, SIGNAL(finished()), this, SLOT(processInvokeReply())); Q_ASSERT(ok); Q_UNUSED(ok); } else { m_errorMessage = tr("Invoke Failed! Reply object is empty."); showErrorDialog(); return; } }
void ApplicationUI::onInvoked(const bb::system::InvokeRequest& request) { qDebug() << "invoke!" << request.action(); if(request.action().compare("bb.action.VIEW") == 0 || request.action().compare("bb.action.OPEN") == 0) { // qDebug() << "HubIntegration: onInvoked: view item: " << request.data(); JsonDataAccess jda; QVariantMap objectMap = (jda.loadFromBuffer(request.data())).toMap(); QVariantMap itemMap = objectMap["attributes"].toMap(); QVariantList items = m_Settings.value("hub/items").toList(); QString urlToOpen; for(int index = 0; index < items.size(); index++) { QVariantMap item = items.at(index).toMap(); QString sourceId = item["messageid"].toString(); if (item["sourceId"].toString() == itemMap["messageid"].toString() || item["sourceId"].toString() == itemMap["sourceId"].toString()) { qDebug() << "FOUD!"; urlToOpen = item["url"].toString(); break; } } qDebug() << "URL TO OPEN: " << urlToOpen; QmlDocument *qml = QmlDocument::create("asset:///StartupCardThread.qml") .parent(this); m_root = qml->createRootObject<NavigationPane>(); qml->setContextProperty("_app", this); m_app->setScene(m_root); QObject *thread = m_root->findChild<QObject*>("pageThread"); if(thread != NULL) { thread->setProperty("urlPage", urlToOpen); bb::device::DisplayInfo display; QDeclarativePropertyMap* displayDimensions = new QDeclarativePropertyMap; displayDimensions->insert( "width", QVariant( display.pixelSize().width() ) ); displayDimensions->insert( "height", QVariant( display.pixelSize().height() ) ); qml->setContextProperty( "DisplayInfo", displayDimensions ); } else qDebug() << "pageThread variable is not found in the qml document :("; InvokeRequest request; request.setTarget("com.amonchakai.HFR10Service"); request.setAction("bb.action.MARKREAD"); request.setMimeType("hub/item"); request.setUri(QUrl("pim:")); QByteArray bytes; jda.saveToBuffer(objectMap, &bytes); request.setData(bytes); m_InvokeManager->invoke(request); } if(request.action().compare("bb.action.COMPOSE") == 0) { QmlDocument *qml = QmlDocument::create("asset:///StartupCardCompose.qml") .parent(this); m_root = qml->createRootObject<NavigationPane>(); qml->setContextProperty("_app", this); m_app->setScene(m_root); QString directory = QDir::homePath() + QLatin1String("/HFRBlackData"); if (!QFile::exists(directory)) { return; } QFile file(directory + "/UserID.txt"); QString userName; if (file.open(QIODevice::ReadOnly)) { QDataStream stream(&file); stream >> userName; file.close(); }
void ApplicationUI::invokeBrowser(QString uri) { InvokeRequest cardRequest; cardRequest.setUri(uri); cardRequest.setTarget("sys.browser"); mInvokeManager->invoke(cardRequest); }