phoneuis/bubblemanager2/tsrc/bubbletest2/bubbletester.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 19 Mar 2010 09:28:42 +0200
changeset 21 92ab7f8d0eab
permissions -rw-r--r--
Revision: 201007 Kit: 201011

/*!
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description:  Animated icon.
*
*/

#include <QLocalSocket>

#include "bubbletester.h"


BubbleTester::BubbleTester() : mLocalSocket(new QLocalSocket())
{
}

BubbleTester::~BubbleTester()
{
    mLocalSocket->disconnectFromServer();
    delete mLocalSocket;
}

bool BubbleTester::connectToServer()
{
    mLocalSocket->connectToServer("bubbletestserver");

    // This logic needs to be improved
    bool success = mLocalSocket->waitForConnected(500);

    qDebug() << "Socket Connect status: " << success;

    if (success) {
        connect(mLocalSocket, SIGNAL(readyRead()), this, SLOT(readData()));
    }

    return success;
}

void BubbleTester::readData()        
{
    QByteArray inputByteArray = mLocalSocket->readAll();
    QDataStream inputDataStream(inputByteArray);
    QString textDocument;
    inputDataStream >> textDocument;

    QString errorStr;
    int errorLine;
    int errorColumn;

    if (!mDomDocument.setContent(textDocument, true, &errorStr, &errorLine,
                                &errorColumn)) {
        qDebug() << "Cannot read tester data!";
    } else {
        emit dataChanged();
    }
}

QList<QString> BubbleTester::bubbles()
{
    QDomNodeList list = mDomDocument.elementsByTagName("bubble");

    QList<QString> testBubbles;

    for (int i=0; i<list.count(); i++ ) {
        QDomNode node = list.at(i);
        if (node.isElement()) {
            QDomElement e = node.toElement();
            QString id = e.attribute("id");
            testBubbles.append(id);
        }
    }

    return testBubbles;
}

QString BubbleTester::dataField( const QString&  bubble, const QString& fieldName )
{
    QString text("");
    QDomElement elem = bubbleElement(bubble);

    if (!elem.isNull()) {
        QDomNodeList list = elem.elementsByTagName(fieldName);

        if (list.count()) {
            QDomNode node = list.at(0);
            if (node.isElement()) {
                QDomElement e = node.toElement();
                text = e.text();
            }
        }
    }

    return text;
}

QDomElement BubbleTester::bubbleElement(const QString&  bubble)
{
    QDomNodeList list = mDomDocument.elementsByTagName("bubble");

    QDomElement elem;

    for (int i=0; i<list.count(); i++ ) {
        QDomNode node = list.at(i);
        if (node.isElement()) {
            QDomElement e = node.toElement();
            QString id = e.attribute("id");
            if (id == bubble) {
                elem = e;
                break;
            }
        }
    }

    return elem;
}

QString BubbleTester::dataField(const QString& fieldName)
{
    QString text("");
    QDomNodeList list = mDomDocument.elementsByTagName(fieldName);

    if (list.count()) {
        QDomNode node = list.at(0);
        if (node.isElement()) {
            QDomElement e = node.toElement();
            text = e.text();
        }
    }

    return text;
}