本文整理汇总了C++中QDomElement::elementsByTagNameNS方法的典型用法代码示例。如果您正苦于以下问题:C++ QDomElement::elementsByTagNameNS方法的具体用法?C++ QDomElement::elementsByTagNameNS怎么用?C++ QDomElement::elementsByTagNameNS使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QDomElement
的用法示例。
在下文中一共展示了QDomElement::elementsByTagNameNS方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: outgoingStanza
bool AttentionPlugin::outgoingStanza(int /*account*/, QDomElement& xml) {
if(enabled) {
if(xml.tagName() == "iq" && xml.attribute("type") == "result")
{
QDomNodeList list = xml.elementsByTagNameNS("http://jabber.org/protocol/disco#info", "query");
if(!list.isEmpty())
{
QDomElement query = list.at(0).toElement();
if(!query.hasAttribute("node")) {
QDomDocument doc = xml.ownerDocument();
QDomElement feature = doc.createElement("feature");
feature.setAttribute("var", "urn:xmpp:attention:0");
query.appendChild(feature);
}
}
}
else if(xml.tagName() == "presence")
{
QDomNodeList list = xml.elementsByTagNameNS("http://jabber.org/protocol/caps", "c");
if(!list.isEmpty())
{
QDomElement c = list.at(0).toElement();
if(c.hasAttribute("ext")) {
QString ext = c.attribute("ext");
ext += " at-pl";
c.setAttribute("ext", ext);
}
}
}
}
return false;
}
示例2: loadDirectory
void OwnCloudService::loadDirectory(QString &data) {
QDomDocument doc;
doc.setContent(data, true);
if (data.isEmpty()) {
showOwnCloudServerErrorMessage("", false);
}
QStringList pathList;
QDomNodeList responseNodes = doc.elementsByTagNameNS(NS_DAV, "response");
for (int i = 0; i < responseNodes.count(); i++) {
QDomNode responseNode = responseNodes.at(i);
if (responseNode.isElement()) {
QDomElement elem = responseNode.toElement();
bool isFolder = false;
QDomNodeList resourceTypeNodes =
elem.elementsByTagNameNS(NS_DAV, "resourcetype");
if (resourceTypeNodes.length()) {
QDomNodeList typeNodes = resourceTypeNodes.at(0).childNodes();
for (int j = 0; j < typeNodes.length(); ++j) {
QDomNode typeNode = typeNodes.at(j);
QString typeString = typeNode.toElement().tagName();
if (typeString == "collection") {
isFolder = true;
break;
}
}
}
if (!isFolder) {
continue;
}
// check if we have an url
QDomNodeList urlPartNodes = elem.elementsByTagNameNS(NS_DAV,
"href");
if (urlPartNodes.length()) {
QString urlPart = urlPartNodes.at(0).toElement().text();
QRegularExpression re(
QRegularExpression::escape(webdavPath) + "\\/(.+)\\/$");
QRegularExpressionMatch match = re.match(urlPart);
QString folderString =
match.hasMatch() ? match.captured(1) : "";
if (!folderString.isEmpty()) {
pathList << QUrl::fromPercentEncoding(
folderString.toUtf8());
}
}
}
}
settingsDialog->setNoteFolderRemotePathList(pathList);
}
示例3: parseCalendarHrefList
QStringList OwnCloudService::parseCalendarHrefList(QString &data) {
QStringList resultList;
QDomDocument doc;
doc.setContent(data, true);
// loop all response blocks
QDomNodeList responseNodes = doc.elementsByTagNameNS(NS_DAV, "response");
for (int i = 0; i < responseNodes.length(); ++i) {
QDomNode responseNode = responseNodes.at(i);
if (responseNode.isElement()) {
QDomElement elem = responseNode.toElement();
QDomNodeList resourceTypeNodes =
elem.elementsByTagNameNS(NS_DAV, "resourcetype");
if (resourceTypeNodes.length()) {
QDomNodeList typeNodes = resourceTypeNodes.at(0).childNodes();
for (int j = 0; j < typeNodes.length(); ++j) {
QDomNode typeNode = typeNodes.at(j);
QString typeString = typeNode.toElement().tagName();
// did we find a calendar?
// ideally we should check the
// "supported-calendar-component-set" for "VTODO"
if (typeString == "calendar") {
// add the href to our result list
QDomNodeList hrefNodes = elem.elementsByTagNameNS(
NS_DAV, "href");
if (hrefNodes.length()) {
const QString href = hrefNodes.at(
0).toElement().text();
resultList << href;
}
QDomNodeList displayNameNodes =
elem.elementsByTagNameNS(NS_DAV, "displayname");
if (displayNameNodes.length()) {
// TODO(pbek): we want to use this display name in
// the future!
const QString displayName = displayNameNodes.at(
0).toElement().text();
qDebug() << __func__ << " - 'displayName': " <<
displayName;
}
}
}
}
}
}
return resultList;
}
示例4: getOldErrorCode
int CoreProtocol::getOldErrorCode(const QDomElement &e)
{
QDomElement err = e.elementsByTagNameNS(NS_CLIENT, "error").item(0).toElement();
if(err.isNull() || !err.hasAttribute("code"))
return -1;
return err.attribute("code").toInt();
}
示例5: insertedFeatureIds
QStringList QgsWFSProvider::insertedFeatureIds( const QDomDocument& serverResponse ) const
{
QStringList ids;
if ( serverResponse.isNull() )
{
return ids;
}
QDomElement rootElem = serverResponse.documentElement();
if ( rootElem.isNull() )
{
return ids;
}
QDomNodeList insertResultList = rootElem.elementsByTagNameNS( QgsWFSConstants::WFS_NAMESPACE, "InsertResult" );
for ( int i = 0; i < insertResultList.size(); ++i )
{
QDomNodeList featureIdList = insertResultList.at( i ).toElement().elementsByTagNameNS( QgsWFSConstants::OGC_NAMESPACE, "FeatureId" );
for ( int j = 0; j < featureIdList.size(); ++j )
{
QString fidString = featureIdList.at( j ).toElement().attribute( "fid" );
if ( !fidString.isEmpty() )
{
ids << fidString;
}
}
}
return ids;
}
示例6: transactionSuccess
bool QgsWFSProvider::transactionSuccess( const QDomDocument& serverResponse ) const
{
if ( serverResponse.isNull() )
{
return false;
}
QDomElement documentElem = serverResponse.documentElement();
if ( documentElem.isNull() )
{
return false;
}
QDomNodeList transactionResultList = documentElem.elementsByTagNameNS( QgsWFSConstants::WFS_NAMESPACE, "TransactionResult" );
if ( transactionResultList.size() < 1 )
{
return false;
}
QDomNodeList statusList = transactionResultList.at( 0 ).toElement().elementsByTagNameNS( QgsWFSConstants::WFS_NAMESPACE, "Status" );
if ( statusList.size() < 1 )
{
return false;
}
if ( statusList.at( 0 ).firstChildElement().localName() == "SUCCESS" )
{
return true;
}
else
{
return false;
}
}
示例7: parseGetMapElement
int QgsSOAPRequestHandler::parseGetMapElement( QMap<QString, QString>& parameterMap, const QDomElement& getMapElement ) const
{
QDomNodeList boundingBoxList = getMapElement.elementsByTagName( "BoundingBox" );
if ( !boundingBoxList.isEmpty() )
{
parseBoundingBoxElement( parameterMap, boundingBoxList.item( 0 ).toElement() );
}
QDomNodeList CRSList = getMapElement.elementsByTagName( "coordinateReferenceSystem" );
if ( !CRSList.isEmpty() )
{
QString crsText = CRSList.item( 0 ).toElement().text();
QString epsgNumber;
if ( !crsText.startsWith( "EPSG_" ) ) //use underscore in SOAP because ':' is reserved for namespaces
{
//error
}
else
{
epsgNumber = crsText.replace( 4, 1, ":" );//replace the underscore with a ':' to make it WMS compatible
}
parameterMap.insert( "CRS", epsgNumber );
}
QDomNodeList GMLList = getMapElement.elementsByTagNameNS( "http://www.eu-orchestra.org/services/ms", "GML" );
if ( !GMLList.isEmpty() )
{
QString gmlText;
QTextStream gmlStream( &gmlText );
GMLList.at( 0 ).save( gmlStream, 2 );
parameterMap.insert( "GML", gmlText );
}
//outputAttributes
QDomNodeList imageDocumentAttributesList = getMapElement.elementsByTagName( "Output" );
if ( !imageDocumentAttributesList.isEmpty() )
{
parseOutputAttributesElement( parameterMap, imageDocumentAttributesList.item( 0 ).toElement() );
}
//SLD
QDomNodeList sldList = getMapElement.elementsByTagName( "StyledLayerDescriptor" );
if ( !sldList.isEmpty() )
{
QString sldString;
QTextStream sldStream( &sldString );
sldList.item( 0 ).save( sldStream, 0 );
//Replace some special characters
sldString.replace( "<", "<" );
sldString.replace( ">", ">" );
parameterMap.insert( "SLD", sldString );
}
return 0;
}
示例8: extractStreamError
void BasicProtocol::extractStreamError(const QDomElement &e)
{
QString text;
QDomElement appSpec;
QDomElement t = firstChildElement(e);
if(t.isNull() || t.namespaceURI() != NS_STREAMS) {
// probably old-style error
errCond = -1;
errText = e.text();
}
else
errCond = stringToStreamCond(t.tagName());
if(errCond != -1) {
if(errCond == SeeOtherHost)
otherHost = t.text();
t = e.elementsByTagNameNS(NS_STREAMS, "text").item(0).toElement();
if(!t.isNull())
text = t.text();
// find first non-standard namespaced element
QDomNodeList nl = e.childNodes();
for(int n = 0; n < nl.count(); ++n) {
QDomNode i = nl.item(n);
if(i.isElement() && i.namespaceURI() != NS_STREAMS) {
appSpec = i.toElement();
break;
}
}
errText = text;
errAppSpec = appSpec;
}
}
示例9: readAttributesFromSchema
int QgsWFSProvider::readAttributesFromSchema( QDomDocument& schemaDoc, QString& geometryAttribute, QgsFields& fields, QGis::WkbType& geomType )
{
//get the <schema> root element
QDomNodeList schemaNodeList = schemaDoc.elementsByTagNameNS( QgsWFSConstants::XMLSCHEMA_NAMESPACE, "schema" );
if ( schemaNodeList.length() < 1 )
{
return 1;
}
QDomElement schemaElement = schemaNodeList.at( 0 ).toElement();
mApplicationNamespace = schemaElement.attribute( "targetNamespace" );
QDomElement complexTypeElement; //the <complexType> element corresponding to the feature type
//find out, on which lines the first <element> or the first <complexType> occur. If <element> occurs first (mapserver), read the type of the relevant <complexType> tag. If <complexType> occurs first (geoserver), search for information about the feature type directly under this first complexType element
int firstElementTagPos = schemaElement.elementsByTagNameNS( QgsWFSConstants::XMLSCHEMA_NAMESPACE, "element" ).at( 0 ).toElement().columnNumber();
int firstComplexTypeTagPos = schemaElement.elementsByTagNameNS( QgsWFSConstants::XMLSCHEMA_NAMESPACE, "complexType" ).at( 0 ).toElement().columnNumber();
if ( firstComplexTypeTagPos < firstElementTagPos )
{
//geoserver
complexTypeElement = schemaElement.elementsByTagNameNS( QgsWFSConstants::XMLSCHEMA_NAMESPACE, "complexType" ).at( 0 ).toElement();
}
else
{
//UMN mapserver
QString complexTypeType;
QDomNodeList typeElementNodeList = schemaElement.elementsByTagNameNS( QgsWFSConstants::XMLSCHEMA_NAMESPACE, "element" );
QDomElement typeElement = typeElementNodeList.at( 0 ).toElement();
complexTypeType = typeElement.attribute( "type" );
if ( complexTypeType.isEmpty() )
{
return 3;
}
//remove the namespace on complexTypeType
if ( complexTypeType.contains( ':' ) )
{
complexTypeType = complexTypeType.section( ':', 1, 1 );
}
//find <complexType name=complexTypeType
QDomNodeList complexTypeNodeList = schemaElement.elementsByTagNameNS( QgsWFSConstants::XMLSCHEMA_NAMESPACE, "complexType" );
for ( int i = 0; i < complexTypeNodeList.size(); ++i )
{
if ( complexTypeNodeList.at( i ).toElement().attribute( "name" ) == complexTypeType )
{
complexTypeElement = complexTypeNodeList.at( i ).toElement();
break;
}
}
}
if ( complexTypeElement.isNull() )
{
return 4;
}
//we have the relevant <complexType> element. Now find out the geometry and the thematic attributes
QDomNodeList attributeNodeList = complexTypeElement.elementsByTagNameNS( QgsWFSConstants::XMLSCHEMA_NAMESPACE, "element" );
if ( attributeNodeList.size() < 1 )
{
return 5;
}
bool foundGeometryAttribute = false;
for ( int i = 0; i < attributeNodeList.size(); ++i )
{
QDomElement attributeElement = attributeNodeList.at( i ).toElement();
//attribute name
QString name = attributeElement.attribute( "name" );
//attribute type
QString type = attributeElement.attribute( "type" );
//is it a geometry attribute?
//MH 090428: sometimes the <element> tags for geometry attributes have only attribute ref="gml:polygonProperty" and no name
QRegExp gmlPT( "gml:(.*)PropertyType" );
// the GeometryAssociationType has been seen in #11785
if ( type.indexOf( gmlPT ) == 0 || type == "gml:GeometryAssociationType" || name.isEmpty() )
{
foundGeometryAttribute = true;
geometryAttribute = name;
geomType = geomTypeFromPropertyType( geometryAttribute, gmlPT.cap( 1 ) );
}
else //todo: distinguish between numerical and non-numerical types
{
QVariant::Type attributeType = QVariant::String; //string is default type
if ( type.contains( "double", Qt::CaseInsensitive ) || type.contains( "float", Qt::CaseInsensitive ) || type.contains( "decimal", Qt::CaseInsensitive ) )
{
attributeType = QVariant::Double;
}
else if ( type.contains( "int", Qt::CaseInsensitive ) )
{
attributeType = QVariant::Int;
}
else if ( type.contains( "long", Qt::CaseInsensitive ) )
{
attributeType = QVariant::LongLong;
}
//.........这里部分代码省略.........
示例10: slotSave
void RSSEditPopup::slotSave(QNetworkReply* reply)
{
QDomDocument document;
document.setContent(reply->read(reply->bytesAvailable()), true);
QString text = document.toString();
QString title = m_titleEdit->GetText();
QString description = m_descEdit->GetText();
QString author = m_authorEdit->GetText();
QString file = m_thumbImage->GetFilename();
bool download;
if (m_download->GetCheckState() == MythUIStateType::Full)
download = true;
else
download = false;
VERBOSE(VB_GENERAL|VB_EXTRA, QString("Text to Parse: %1").arg(text));
QDomElement root = document.documentElement();
QDomElement channel = root.firstChildElement ("channel");
if (!channel.isNull ())
{
Parse parser;
if (title.isEmpty())
title = channel.firstChildElement("title").text().trimmed();
if (description.isEmpty())
description = channel.firstChildElement("description").text();
if (author.isEmpty())
author = parser.GetAuthor(channel);
if (author.isEmpty())
author = channel.firstChildElement("managingEditor").text();
if (author.isEmpty())
author = channel.firstChildElement("webMaster").text();
QString thumbnailURL = channel.firstChildElement("image").attribute("url");
if (thumbnailURL.isEmpty())
{
QDomElement thumbElem = channel.firstChildElement("image");
if (!thumbElem.isNull())
thumbnailURL = thumbElem.firstChildElement("url").text();
}
if (thumbnailURL.isEmpty())
{
QDomNodeList nodes = channel.elementsByTagNameNS(
"http://www.itunes.com/dtds/podcast-1.0.dtd", "image");
if (nodes.size())
{
thumbnailURL = nodes.at(0).toElement().attributeNode("href").value();
if (thumbnailURL.isEmpty())
thumbnailURL = nodes.at(0).toElement().text();
}
}
bool download;
if (m_download->GetCheckState() == MythUIStateType::Full)
download = true;
else
download = false;
QDateTime updated = QDateTime::currentDateTime();
QString filename("");
if (file.isEmpty())
filename = file;
QString link = m_urlEdit->GetText();
if (!thumbnailURL.isEmpty() && filename.isEmpty())
{
QString fileprefix = GetConfDir();
QDir dir(fileprefix);
if (!dir.exists())
dir.mkdir(fileprefix);
fileprefix += "/MythNetvision";
dir = QDir(fileprefix);
if (!dir.exists())
dir.mkdir(fileprefix);
fileprefix += "/sitecovers";
dir = QDir(fileprefix);
if (!dir.exists())
dir.mkdir(fileprefix);
QFileInfo fi(thumbnailURL);
QString rawFilename = fi.fileName();
filename = QString("%1/%2").arg(fileprefix).arg(rawFilename);
bool exists = QFile::exists(filename);
if (!exists)
HttpComms::getHttpFile(filename, thumbnailURL, 20000, 1, 2);
}
if (insertInDB(new RSSSite(title, filename, VIDEO_PODCAST, description, link,
author, download, QDateTime::currentDateTime())))
//.........这里部分代码省略.........
示例11: capabilitiesReplyFinished
void QgsWFSCapabilities::capabilitiesReplyFinished()
{
QNetworkReply *reply = mCapabilitiesReply;
reply->deleteLater();
mCapabilitiesReply = 0;
// handle network errors
if ( reply->error() != QNetworkReply::NoError )
{
mErrorCode = QgsWFSCapabilities::NetworkError;
mErrorMessage = reply->errorString();
emit gotCapabilities();
return;
}
// handle HTTP redirects
QVariant redirect = reply->attribute( QNetworkRequest::RedirectionTargetAttribute );
if ( !redirect.isNull() )
{
QgsDebugMsg( "redirecting to " + redirect.toUrl().toString() );
QNetworkRequest request( redirect.toUrl() );
setAuthorization( request );
request.setAttribute( QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferNetwork );
request.setAttribute( QNetworkRequest::CacheSaveControlAttribute, true );
mCapabilitiesReply = QgsNetworkAccessManager::instance()->get( request );
connect( mCapabilitiesReply, SIGNAL( finished() ), this, SLOT( capabilitiesReplyFinished() ) );
return;
}
QByteArray buffer = reply->readAll();
QgsDebugMsg( "parsing capabilities: " + buffer );
// parse XML
QString capabilitiesDocError;
QDomDocument capabilitiesDocument;
if ( !capabilitiesDocument.setContent( buffer, true, &capabilitiesDocError ) )
{
mErrorCode = QgsWFSCapabilities::XmlError;
mErrorMessage = capabilitiesDocError;
emit gotCapabilities();
return;
}
QDomElement doc = capabilitiesDocument.documentElement();
// hangle exceptions
if ( doc.tagName() == "ExceptionReport" )
{
QDomNode ex = doc.firstChild();
QString exc = ex.toElement().attribute( "exceptionCode", "Exception" );
QDomElement ext = ex.firstChild().toElement();
mErrorCode = QgsWFSCapabilities::ServerExceptionError;
mErrorMessage = exc + ": " + ext.firstChild().nodeValue();
emit gotCapabilities();
return;
}
mCaps.clear();
//test wfs version
QString version = capabilitiesDocument.documentElement().attribute( "version" );
if ( version != "1.0.0" && version != "1.0" )
{
mErrorCode = WFSVersionNotSupported;
mErrorMessage = tr( "Either the WFS server does not support WFS version 1.0.0 or the WFS url is wrong" );
emit gotCapabilities();
return;
}
// get the <FeatureType> elements
QDomNodeList featureTypeList = capabilitiesDocument.elementsByTagNameNS( WFS_NAMESPACE, "FeatureType" );
for ( unsigned int i = 0; i < featureTypeList.length(); ++i )
{
FeatureType featureType;
QDomElement featureTypeElem = featureTypeList.at( i ).toElement();
//Name
QDomNodeList nameList = featureTypeElem.elementsByTagNameNS( WFS_NAMESPACE, "Name" );
if ( nameList.length() > 0 )
{
featureType.name = nameList.at( 0 ).toElement().text();
}
//Title
QDomNodeList titleList = featureTypeElem.elementsByTagNameNS( WFS_NAMESPACE, "Title" );
if ( titleList.length() > 0 )
{
featureType.title = titleList.at( 0 ).toElement().text();
}
//Abstract
QDomNodeList abstractList = featureTypeElem.elementsByTagNameNS( WFS_NAMESPACE, "Abstract" );
if ( abstractList.length() > 0 )
{
featureType.abstract = abstractList.at( 0 ).toElement().text();
}
//DefaultSRS is always the first entry in the feature srs list
QDomNodeList defaultCRSList = featureTypeElem.elementsByTagNameNS( WFS_NAMESPACE, "DefaultSRS" );
//.........这里部分代码省略.........
示例12: createTransactionDocument
//.........这里部分代码省略.........
throw QgsSecurityAccessException( QStringLiteral( "Feature insert permission denied" ) );
}
}
else if ( actionName == QLatin1String( "Update" ) )
{
if ( !accessControl->layerUpdatePermission( layer ) )
{
throw QgsSecurityAccessException( QStringLiteral( "Feature update permission denied" ) );
}
}
else if ( actionName == QLatin1String( "Delete" ) )
{
if ( !accessControl->layerDeletePermission( layer ) )
{
throw QgsSecurityAccessException( QStringLiteral( "Feature delete permission denied" ) );
}
}
#endif
// Get the provider and it's capabilities
QgsVectorDataProvider* provider = layer->dataProvider();
if ( !provider )
{
continue;
}
int cap = provider->capabilities();
// Start the update transaction
layer->startEditing();
if (( cap & QgsVectorDataProvider::ChangeAttributeValues ) && ( cap & QgsVectorDataProvider::ChangeGeometries ) )
{
// Loop through the update elements for this layer
QDomNodeList upNodeList = typeNameElem.elementsByTagNameNS( WFS_NAMESPACE, QStringLiteral( "Update" ) );
for ( int j = 0; j < upNodeList.count(); ++j )
{
if ( !configParser->wfstUpdateLayers().contains( layer->id() ) )
{
//no wfs permissions to do updates
QString errorMsg = "No permissions to do WFS updates on layer '" + layer->name() + "'";
QgsMessageLog::logMessage( errorMsg, QStringLiteral( "Server" ), QgsMessageLog::CRITICAL );
addTransactionResult( resp, respElem, QStringLiteral( "FAILED" ), QStringLiteral( "Update" ), errorMsg );
return resp;
}
actionElem = upNodeList.at( j ).toElement();
// Get the Feature Ids for this filter on the layer
QDomElement filterElem = actionElem.elementsByTagName( QStringLiteral( "Filter" ) ).at( 0 ).toElement();
QgsFeatureIds fids = getFeatureIdsFromFilter( filterElem, layer );
// Loop through the property elements
// Store properties and the geometry element
QDomNodeList propertyNodeList = actionElem.elementsByTagName( QStringLiteral( "Property" ) );
QMap<QString, QString> propertyMap;
QDomElement propertyElem;
QDomElement nameElem;
QDomElement valueElem;
QDomElement geometryElem;
for ( int l = 0; l < propertyNodeList.count(); ++l )
{
propertyElem = propertyNodeList.at( l ).toElement();
nameElem = propertyElem.elementsByTagName( QStringLiteral( "Name" ) ).at( 0 ).toElement();
valueElem = propertyElem.elementsByTagName( QStringLiteral( "Value" ) ).at( 0 ).toElement();
if ( nameElem.text() != QLatin1String( "geometry" ) )
示例13: guess
/**
\brief Reads the error from XML
This function finds and reads the error element \a e.
You need to provide the base namespace of the stream which this stanza belongs to
(probably by using stream.baseNS() function).
*/
bool Stanza::Error::fromXml(const QDomElement &e, const QString &baseNS)
{
if(e.tagName() != "error" && e.namespaceURI() != baseNS)
return false;
// type
type = Private::stringToErrorType(e.attribute("type"));
// condition
QDomNodeList nl = e.childNodes();
QDomElement t;
condition = -1;
int n;
for(n = 0; n < nl.count(); ++n) {
QDomNode i = nl.item(n);
t = i.toElement();
if(!t.isNull()) {
// FIX-ME: this shouldn't be needed
if(t.namespaceURI() == NS_STANZAS || t.attribute("xmlns") == NS_STANZAS) {
condition = Private::stringToErrorCond(t.tagName());
if (condition != -1)
break;
}
}
}
// code
originalCode = e.attribute("code").toInt();
// try to guess type/condition
if(type == -1 || condition == -1) {
QPair<int, int> guess(-1, -1);
if (originalCode)
guess = Private::errorCodeToTypeCond(originalCode);
if (type == -1)
type = guess.first != -1 ? guess.first : Cancel;
if (condition == -1)
condition = guess.second != -1 ? guess.second : UndefinedCondition;
}
// text
t = e.elementsByTagNameNS(NS_STANZAS, "text").item(0).toElement();
if(!t.isNull())
text = t.text().trimmed();
else
text = e.text().trimmed();
// appspec: find first non-standard namespaced element
appSpec = QDomElement();
nl = e.childNodes();
for(n = 0; n < nl.count(); ++n) {
QDomNode i = nl.item(n);
if(i.isElement() && i.namespaceURI() != NS_STANZAS) {
appSpec = i.toElement();
break;
}
}
return true;
}
示例14: slotPropFindResult
//.........这里部分代码省略.........
QString transparent = prop.namedItem("transparent").toElement().text();
event->setTransparency(transparent.toInt() > 0 ? KCal::Event::Transparent
: KCal::Event::Opaque);
// kdDebug() << "Got transparent: " << transparent << endl;
QString description = prop.namedItem("textdescription").toElement().text();
event->setDescription(description);
kdDebug() << "Got description: " << description << endl;
QString subject = prop.namedItem("subject").toElement().text();
event->setSummary(subject);
kdDebug() << "Got summary: " << subject << endl;
QString location = prop.namedItem("location").toElement().text();
event->setLocation(location);
// kdDebug() << "Got location: " << location << endl;
QString rrule = prop.namedItem("rrule").toElement().text();
kdDebug() << "Got rrule: " << rrule << endl;
if(!rrule.isEmpty())
{
// Timezone should be handled automatically
// because we used mFormat->setTimeZone() earlier
KCal::RecurrenceRule *rr = event->recurrence()->defaultRRule(true);
if(!rr || !mFormat->fromString(rr, rrule))
{
kdError() << "ERROR parsing rrule " << rrule << endl;
}
}
QDomElement keywords = prop.namedItem("Keywords").toElement();
QStringList categories;
QDomNodeList list = keywords.elementsByTagNameNS("xml:", "v");
for(uint i = 0; i < list.count(); i++)
{
QDomElement item = list.item(i).toElement();
categories.append(item.text());
}
event->setCategories(categories);
// kdDebug() << "Got categories: " << categories.join( ", " ) << endl;
QDomElement exdate = prop.namedItem("exdate").toElement();
KCal::DateList exdates;
list = exdate.elementsByTagNameNS("xml:", "v");
for(uint i = 0; i < list.count(); i++)
{
QDomElement item = list.item(i).toElement();
QDate date = utcAsZone(QDateTime::fromString(item.text(), Qt::ISODate), localTimeZoneId).date();
exdates.append(date);
// kdDebug() << "Got exdate: " << date.toString() << endl;
}
event->recurrence()->setExDates(exdates);
// Exchange sentitivity values:
// 0 None
// 1 Personal
// 2 Private
// 3 Company Confidential
QString sensitivity = prop.namedItem("sensitivity").toElement().text();
if(! sensitivity.isNull())
switch(sensitivity.toInt())
{
case 0:
event->setSecrecy(KCal::Incidence::SecrecyPublic);
示例15: handleAppointments
void ExchangeDownload::handleAppointments(const QDomDocument &response,
bool recurrence)
{
kdDebug() << "Entering handleAppointments" << endl;
int successCount = 0;
if(response.documentElement().firstChild().toElement().isNull())
{
// Got an empty response, but no error. This would mean there are
// no appointments in this time period.
return;
}
for(QDomElement item = response.documentElement().firstChild().toElement();
!item.isNull();
item = item.nextSibling().toElement())
{
//kdDebug() << "Current item:" << item.tagName() << endl;
QDomNodeList propstats = item.elementsByTagNameNS("DAV:", "propstat");
// kdDebug() << "Item has " << propstats.count() << " propstat children" << endl;
for(uint i = 0; i < propstats.count(); i++)
{
QDomElement propstat = propstats.item(i).toElement();
QDomElement prop = propstat.namedItem("prop").toElement();
if(prop.isNull())
{
kdError() << "Error: no <prop> in response" << endl;
continue;
}
QDomElement instancetypeElement = prop.namedItem("instancetype").toElement();
if(instancetypeElement.isNull())
{
kdError() << "Error: no instance type in Exchange server reply" << endl;
continue;
}
int instanceType = instancetypeElement.text().toInt();
//kdDebug() << "Instance type: " << instanceType << endl;
if(recurrence && instanceType > 0)
{
QDomElement uidElement = prop.namedItem("uid").toElement();
if(uidElement.isNull())
{
kdError() << "Error: no uid in Exchange server reply" << endl;
continue;
}
QString uid = uidElement.text();
if(! m_uids.contains(uid))
{
m_uids[uid] = 1;
handleRecurrence(uid);
successCount++;
}
continue;
}
QDomElement hrefElement = prop.namedItem("href").toElement();
if(hrefElement.isNull())
{
kdError() << "Error: no href in Exchange server reply" << endl;
continue;
}
QString href = hrefElement.text();
KURL url(href);
kdDebug() << "Getting appointment from url: " << url.prettyURL() << endl;
readAppointment(toDAV(url));
successCount++;
}
}
if(!successCount)
{
finishUp(ExchangeClient::ServerResponseError,
"WebDAV SEARCH response:\n" + response.toString());
}
}