Qt-based BB10 API Examples Documentation

app.hpp Example File

jsonreadwrite/src/app.hpp
    /****************************************************************************
     **
     ** Portions Copyright (C) 2012, 2013  BlackBerry Limited.
     ** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
     ** All rights reserved.
     ** Contact: BlackBerry Ltd. (http://www.blackberry.com/company/contact/)
     ** Contact: Nokia Corporation (qt-info@nokia.com)
     **
     ** This file is part of the examples of the BB10 Platform and is derived
     ** from a similar file that is part of the Qt Toolkit.
     **
     ** You may use this file under the terms of the BSD license as follows:
     **
     ** "Redistribution and use in source and binary forms, with or without
     ** modification, are permitted provided that the following conditions are
     ** met:
     **   * Redistributions of source code must retain the above copyright
     **     notice, this list of conditions and the following disclaimer.
     **   * Redistributions in binary form must reproduce the above copyright
     **     notice, this list of conditions and the following disclaimer in
     **     the documentation and/or other materials provided with the
     **     distribution.
     **   * Neither the name of BlackBerry, nor the name of Nokia
     **     Corporation and its Subsidiary(-ies), nor the names of its
     **     contributors may be used to endorse or promote products
     **     derived from this software without specific prior written
     **     permission.
     **
     ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
     ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
     ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
     ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
     **
     ****************************************************************************/

    #ifndef JSON_READWRITE_HPP
    #define JSON_READWRITE_HPP

    #include <QtCore/QFile>
    #include <QtCore/QObject>
    #include <QtCore/QString>
    #include <QtCore/QVariant>

    class App: public QObject
    {
        Q_OBJECT
        Q_ENUMS(State)
        Q_PROPERTY(QString jsonData READ jsonData WRITE setJsonData NOTIFY jsonDataChanged)
        Q_PROPERTY(QString rhsTitle READ rhsTitle WRITE setRhsTitle NOTIFY rhsTitleChanged)
        Q_PROPERTY(QString rhsText READ rhsText WRITE setRhsText NOTIFY rhsTextChanged)
        Q_PROPERTY(QString result READ result WRITE setResult NOTIFY resultChanged)
        Q_PROPERTY(State state READ state WRITE setState NOTIFY stateChanged)

    public:
        enum State {
          Init,
          JsonLoaded,
          QtDisplayed,
          ReadyToWrite
        };

        App();

        QString jsonData() const;
        void setJsonData(const QString& data);

        QString rhsTitle() const;
        void setRhsTitle(const QString& title);

        QString rhsText() const;
        void setRhsText(const QString& text);

        QString result() const;
        void setResult(const QString& result);

        State state() const;
        void setState(const State state);

    public Q_SLOTS:
        void loadOriginalJson();
        void convertJsonToQt();
        void convertQtToJson();
        void updateJsonDataFromQml(const QString &data);
        void writeToJsonFileAndReload();

    Q_SIGNALS:
        void jsonDataChanged(const QString& data);
        void rhsTitleChanged(const QString& title);
        void rhsTextChanged(const QString& text);
        void resultChanged(const QString& result);
        void stateChanged(State state);

    private:
        void loadJsonFileRaw(const QString& resultMsg, QFile& jsonFile);
        void setQtData(const QVariant& data);
        void setResultAndState(const QString& resultMsg, State newState);
        void setRhsTitleAndText(const QString& title, const QString& text);

        QString mJsonData;
        QString const mRhsDefaultTitle;
        QString mRhsTitle;
        QString mRhsText;
        QString mResult;
        State mState;
        QVariant mQtData;
    };

    #endif