Qt-based BB10 API Examples Documentation

BarcodeInvoker.cpp Example File

custombarcodeinvoker/src/BarcodeInvoker.cpp
    /* Copyright (c) 2012, 2013  BlackBerry Limited.
     *
     * Licensed under the Apache License, Version 2.0 (the "License");
     * you may not use this file except in compliance with the License.
     * You may obtain a copy of the License at
     *
     * http://www.apache.org/licenses/LICENSE-2.0
     *
     * Unless required by applicable law or agreed to in writing, software
     * distributed under the License is distributed on an "AS IS" BASIS,
     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     * See the License for the specific language governing permissions and
     * limitations under the License.
     */
    #include "BarcodeInvoker.hpp"

    #include <bb/system/CardDoneMessage>
    #include <bb/system/InvokeManager>
    #include <bb/system/InvokeRequest>
    #include <bb/system/InvokeTargetReply>

    #include <QtCore/QtDebug>

    using namespace bb::system;
    BarcodeInvoker::BarcodeInvoker(QObject* parent)
        : QObject(parent)
    {
        bool ok = connect(new InvokeManager(this), SIGNAL(childCardDone(const bb::system::CardDoneMessage&)),
                          this, SLOT(onChildCardDone(const bb::system::CardDoneMessage&)));
        Q_ASSERT(ok);
        Q_UNUSED(ok);
    }

    void BarcodeInvoker::onInvokeButtonClicked() const
    {
        InvokeManager* imanager = qobject_cast<InvokeManager*>(sender());

        InvokeRequest invokeRequest;
        invokeRequest.setTarget("com.example.CustomBarcodeScanner");
        invokeRequest.setAction("community.action.SCANBARCODE");

        const InvokeTargetReply *invokeReply = imanager->invoke(invokeRequest);

        if (!invokeReply)
            qWarning() << "failed to sent invoke request message";
    }

    void BarcodeInvoker::onChildCardDone(const bb::system::CardDoneMessage &message)
    {
        setBarcode(message.data());
    }

    QString BarcodeInvoker::barcode() const
    {
        return m_barcode;
    }

    void BarcodeInvoker::setBarcode(const QString &barcode)
    {
        if (m_barcode == barcode)
            return;

        m_barcode = barcode;
        Q_EMIT barcodeChanged();
    }