--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneuis/bubblemanager2/tsrc/bubbletest2/bubbletester/bubbledata.cpp Fri Mar 19 09:28:42 2010 +0200
@@ -0,0 +1,153 @@
+/*!
+* 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 <QFile>
+#include <QMessageBox>
+#include <QDomDocument>
+#include "bubbledata.h"
+
+BubbleData::BubbleData( QObject *parent ) : QObject(parent)
+{
+ QFile file(":/testdata.xml");
+
+ if (!file.open(QFile::ReadOnly | QFile::Text)) {
+ QMessageBox::critical((QWidget*)parent, tr("Bubble tester"),
+ tr("Cannot read testdata.xml") );
+ return;
+ }
+
+ createDomFromFile(&file);
+}
+
+void BubbleData::createDomFromFile(QIODevice *device)
+{
+ QString errorStr;
+ int errorLine;
+ int errorColumn;
+
+ if (!mDomDocument.setContent(device, true, &errorStr, &errorLine,
+ &errorColumn)) {
+ QMessageBox::information((QWidget*)parent(), tr("Bubble tester"),
+ tr("Parse error at line %1, column %2:\n%3")
+ .arg(errorLine)
+ .arg(errorColumn)
+ .arg(errorStr));
+ }
+}
+
+QString BubbleData::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 BubbleData::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;
+}
+
+void BubbleData::setDataField( const QString& bubble, const QString& fieldName, const QString& value )
+{
+ QDomElement elem = bubbleElement(bubble);
+ if (elem.isNull()) {
+ return;
+ }
+
+ QDomText domText = mDomDocument.createTextNode(value);
+ QDomElement newElem = mDomDocument.createElement(fieldName);
+ newElem.appendChild(domText);
+
+ QDomNodeList list = elem.elementsByTagName(fieldName);
+
+ if (list.count()) {
+ QDomNode node = list.at(0);
+ if (node.isElement()) {
+ QDomNode parent = node.parentNode();
+ parent.replaceChild(newElem,node);
+ }
+ }
+}
+
+QString BubbleData::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;
+}
+
+void BubbleData::setDataField(const QString& fieldName, const QString& value)
+{
+ QDomText domText = mDomDocument.createTextNode(value);
+ QDomElement newElem = mDomDocument.createElement(fieldName);
+ newElem.appendChild(domText);
+
+ QDomNodeList list = mDomDocument.elementsByTagName(fieldName);
+
+ if (list.count()) {
+ QDomNode node = list.at(0);
+ if (node.isElement()) {
+ QDomNode parent = node.parentNode();
+ parent.replaceChild(newElem,node);
+ }
+ }
+
+}
+
+const QDomDocument& BubbleData::document() const
+{
+ return mDomDocument;
+}
+