/************************************************************************** ** ** This file is part of Qt Creator ** ** Copyright (c) 2012 Nokia Corporation and/or its subsidiary(-ies). ** ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** ** GNU Lesser General Public License Usage ** ** This file may be used under the terms of the GNU Lesser General Public ** License version 2.1 as published by the Free Software Foundation and ** appearing in the file LICENSE.LGPL included in the packaging of this file. ** Please review the following information to ensure the GNU Lesser General ** Public License version 2.1 requirements will be met: ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Nokia gives you certain additional ** rights. These rights are described in the Nokia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** Other Usage ** ** Alternatively, this file may be used in accordance with the terms and ** conditions contained in a signed written agreement between you and Nokia. ** ** If you have questions regarding the use of this file, please contact ** Nokia at qt-info@nokia.com. ** **************************************************************************/ //static void testMessageOutput(QtMsgType type, const char *msg) // { // switch (type) { // case QtDebugMsg: //#ifdef QDEBUG_IN_TESTS // std::fprintf(stderr, "Debug: %s\n", msg); //#endif // QDEBUG_IN_TESTS // break; // case QtWarningMsg: //#ifdef WARNINGS_IN_TESTS // std::fprintf(stderr, "Warning: %s\n", msg); //#endif // WARNINGS_IN_TESTS // break; // case QtCriticalMsg: // std::fprintf(stderr, "Critical: %s\n", msg); // break; // case QtFatalMsg: // std::fprintf(stderr, "Fatal: %s\n", msg); // break; // } // } static ModelNode addNodeListChild(const ModelNode &parentNode, const QString &typeName, int major, int minor, const QString &parentProperty) { ModelNode newNode = parentNode.view()->createModelNode(typeName, major, minor); parentNode.nodeListProperty(parentProperty).reparentHere(newNode); return newNode; } static ModelNode addNodeChild(const ModelNode &parentNode, const QString &typeName, int major, int minor, const QString &parentProperty) { ModelNode newNode = parentNode.view()->createModelNode(typeName, major, minor); parentNode.nodeProperty(parentProperty).reparentHere(newNode); return newNode; } static QString bareTemplate("import Qt 4.6\n" "Item { id: parentItem;" " %1" "}"); static QString contentsTemplate(bareTemplate.arg("Text { id: textChild; x:10; y: 10; text: \"%1\"; %2 }")); void printErrors(const QList &errors, const QString &fileName) { if (errors.isEmpty()) return; qDebug() << "Error loading file \"" << fileName << "\":"; foreach (const QDeclarativeError &error, errors) { qDebug() << error.line() << ":" << error.column() << ": " << error.description(); } } // TODO: this need to e updated for states static bool compareProperty(const AbstractProperty &property1, const AbstractProperty &property2) { return (property1.name() == property2.name()); // && (property1.value().type() == property2.value().type()); // && (property1.value() == property2.value())); } // TODO: this need to e updated for states static bool compareTree(const ModelNode &node1, const ModelNode &node2) { if (!node1.isValid() || !node2.isValid()) { return false; } if (node1.type() != node2.type()) { return false; } // Compare properties { const QList propList1 = node1.properties(); const QList propList2 = node2.properties(); QList::const_iterator iter1 = propList1.constBegin(); QList::const_iterator iter2 = propList2.constBegin(); for (; iter1 != propList1.constEnd() && iter2 != propList2.constEnd(); iter1++, iter2++) { if (!compareProperty(*iter1, *iter2)) return false; } if (iter1 != propList1.constEnd() || iter2 != propList2.constEnd()) return false; } // Compare list of children { const QList childList1 = node1.allDirectSubModelNodes(); const QList childList2 = node2.allDirectSubModelNodes(); QList::const_iterator iter1; QList::const_iterator iter2; for (iter1 = childList1.constBegin(), iter2 = childList2.constBegin(); iter1 != childList1.constEnd() && iter2 != childList2.constEnd(); iter1++, iter2++) { if (!compareTree((*iter1), (*iter2))) return false; } if (iter1 != childList1.constEnd() || iter2 != childList2.constEnd()) return false; } return true; } //void load(const QString &data, Model *&model, ByteArrayModifier *&modifier) //{ // model = 0; // QByteArray bytes = data.toLatin1(); // QBuffer file(&bytes, 0); // QVERIFY(file.open(QIODevice::ReadOnly)); // QList errors; // QString fileText(file.readAll()); // modifier = ByteArrayModifier::create(QString(fileText)); // model = Model::create(modifier, QUrl(), &errors); // // if (!errors.isEmpty()) { // printErrors(errors, ""); // } // // file.close(); //} //void reload(const QString &data, ByteArrayModifier *modifier) //{ // modifier->setText(data); //} //static Model* create(const QString& document) //{ // ByteArrayModifier* modifier = 0; // Model *model = 0; // // load(document, model, modifier); // // if (modifier && model) // modifier->setParent(model); // // return model; //}