/*! \qmlproperty QGeoLocation QtPositioning::Location::location For details on how to use this property to interface between C++ and QML see "\l {positioning-cpp-qml.html#location} {Interfaces between C++ and QML Code}". */ void QDeclarativeGeoLocation::setLocation(const QGeoLocation &src) { if (m_address && m_address->parent() == this) { m_address->setAddress(src.address()); } else if (!m_address || m_address->parent() != this) { m_address = new QDeclarativeGeoAddress(src.address(), this); emit addressChanged(); } setCoordinate(src.coordinate()); setBoundingBox(src.boundingBox()); }
bool QGeoCodeXmlParser::parseRootElement() { /* <xsd:element name="places"> <xsd:complexType> <xsd:sequence> <xsd:element minOccurs="0" maxOccurs="unbounded" name="place" type="gc:Place"/> </xsd:sequence> <xsd:attribute name="resultCode" type="gc:ResultCodes"/> <xsd:attribute name="resultDescription" type="xsd:string"/> <xsd:attribute name="resultsTotal" type="xsd:nonNegativeInteger"/> </xsd:complexType> </xsd:element> <xsd:simpleType name="ResultCodes"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="OK"/> <xsd:enumeration value="FAILED"/> </xsd:restriction> </xsd:simpleType> */ if (m_reader->readNextStartElement()) { if (m_reader->name() == "places") { if (m_reader->attributes().hasAttribute("resultCode")) { QStringRef result = m_reader->attributes().value("resultCode"); if (result == "FAILED") { QString resultDesc = m_reader->attributes().value("resultDescription").toString(); if (resultDesc.isEmpty()) resultDesc = "The attribute \"resultCode\" of the element \"places\" indicates that the request failed."; m_reader->raiseError(resultDesc); return false; } else if (result != "OK") { m_reader->raiseError(QString("The attribute \"resultCode\" of the element \"places\" has an unknown value (value was %1).").arg(result.toString())); return false; } } while (m_reader->readNextStartElement()) { if (m_reader->name() == "place") { QGeoLocation location; if (!parsePlace(&location)) return false; if (!m_bounds.isValid() || m_bounds.contains(location.coordinate())) m_results.append(location); } else { m_reader->raiseError(QString("The element \"places\" did not expect a child element named \"%1\".").arg(m_reader->name().toString())); return false; } } } else { m_reader->raiseError(QString("The root element is expected to have the name \"places\" (root element was named \"%1\").").arg(m_reader->name().toString())); return false; } } else { m_reader->raiseError("Expected a root element named \"places\" (no root element found)."); return false; } if (m_reader->readNextStartElement()) { m_reader->raiseError(QString("A single root element named \"places\" was expected (second root element was named \"%1\")").arg(m_reader->name().toString())); return false; } return true; }