From 00bb99ac80741fc50ef8a289719373032f2391eb Mon Sep 17 00:00:00 2001 From: toma Date: Wed, 25 Nov 2009 17:56:58 +0000 Subject: Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features. BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdeaccessibility@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- kttsd/libkttsd/utils.cpp | 132 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 132 insertions(+) create mode 100644 kttsd/libkttsd/utils.cpp (limited to 'kttsd/libkttsd/utils.cpp') diff --git a/kttsd/libkttsd/utils.cpp b/kttsd/libkttsd/utils.cpp new file mode 100644 index 0000000..dd9f98c --- /dev/null +++ b/kttsd/libkttsd/utils.cpp @@ -0,0 +1,132 @@ +/*************************************************************************** + Class of utility functions. + ------------------- + Copyright : (C) 2004 Paul Giannaros + ------------------- + Original author: Paul Giannaros + Current Maintainer: Paul Giannaros + ****************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; version 2 of the License. * + * * + ***************************************************************************/ + +#include +#include +#include + +#include "utils.h" + +KttsUtils::KttsUtils() { +} + + +KttsUtils::~KttsUtils() { +} + +/** + * Check if an XML document has a certain root element. + * @param xmldoc The document to check for the element. + * @param elementName The element to check for in the document. + * @returns True if the root element exists in the document, false otherwise. +*/ +bool KttsUtils::hasRootElement(const QString &xmldoc, const QString &elementName) { + // Strip all whitespace and go from there. + QString doc = xmldoc.simplifyWhiteSpace(); + // Take off the if it exists + if(doc.startsWith(" and strip everything off from there to the start - effectively removing + // + int xmlStatementEnd = doc.find("?>"); + if(xmlStatementEnd == -1) { + kdDebug() << "KttsUtils::hasRootElement: Bad XML file syntax\n"; + return false; + } + xmlStatementEnd += 2; // len '?>' == 2 + doc = doc.right(doc.length() - xmlStatementEnd); + } + // Take off leading comments, if they exist. + while(doc.startsWith(""); + if(commentStatementEnd == -1) { + kdDebug() << "KttsUtils::hasRootElement: Bad XML file syntax\n"; + return false; + } + commentStatementEnd += 3; // len '>' == 2 + doc = doc.right(doc.length() - commentStatementEnd); + } + // Take off the doctype statement if it exists. + while(doc.startsWith(""); + if(doctypeStatementEnd == -1) { + kdDebug() << "KttsUtils::hasRootElement: Bad XML file syntax\n"; + return false; + } + doctypeStatementEnd += 1; // len '>' == 2 + doc = doc.right(doc.length() - doctypeStatementEnd); + } + // We should (hopefully) be left with the root element. + return (doc.startsWith("<" + elementName) || doc.startsWith(" <" + elementName)); +} + +/** + * Check if an XML document has a certain DOCTYPE. + * @param xmldoc The document to check for the doctype. + * @param name The doctype name to check for. Pass QString::null to not check the name. + * @param publicId The public ID to check for. Pass QString::null to not check the ID. + * @param systemId The system ID to check for. Pass QString::null to not check the ID. + * @returns True if the parameters match the doctype, false otherwise. +*/ +bool KttsUtils::hasDoctype(const QString &xmldoc, const QString &name/*, const QString &publicId, const QString &systemId*/) { + // Strip all whitespace and go from there. + QString doc = xmldoc.stripWhiteSpace(); + // Take off the if it exists + if(doc.startsWith(" and strip everything off from there to the start - effectively removing + // + int xmlStatementEnd = doc.find("?>"); + if(xmlStatementEnd == -1) { + kdDebug() << "KttsUtils::hasDoctype: Bad XML file syntax\n"; + return false; + } + xmlStatementEnd += 2; // len '?>' == 2 + doc = doc.right(doc.length() - xmlStatementEnd); + doc = doc.stripWhiteSpace(); + } + // Take off leading comments, if they exist. + while(doc.startsWith(""); + if(commentStatementEnd == -1) { + kdDebug() << "KttsUtils::hasDoctype: Bad XML file syntax\n"; + return false; + } + commentStatementEnd += 3; // len '>' == 2 + doc = doc.right(doc.length() - commentStatementEnd); + doc = doc.stripWhiteSpace(); + } + // Match the doctype statement if it exists. + // kdDebug() << "KttsUtils::hasDoctype: searching " << doc.left(20) << "... for " << "count(); + for (int ndx = 0; ndx < itemCount; ++ndx) + { + if (cb->text(ndx) == text) + { + cb->setCurrentItem(ndx); + return; + } + } +} + -- cgit v1.2.3