[Qt] Implement QQuickMapboxGL::error{,String} properties

This commit is contained in:
Bruno de Oliveira Abinader
2016-09-26 11:37:26 +02:00
parent 5a12539d34
commit 9eb33d6669
2 changed files with 25 additions and 12 deletions

View File

@@ -88,10 +88,10 @@ signals:
void zoomLevelChanged(qreal zoomLevel);
void centerChanged(const QGeoCoordinate &coordinate);
void colorChanged(const QColor &color);
void errorChanged();
// Compatibility with Map QML Type, but no-op.
void pluginChanged(QDeclarativeGeoServiceProvider *plugin);
void errorChanged();
void copyrightLinkActivated(const QString &link);
void copyrightsVisibleChanged(bool visible);
@@ -163,6 +163,9 @@ private:
QList<QVariantMap> m_filterChanges;
QList<QQuickMapboxGLMapParameter*> m_parameters;
QGeoServiceProvider::Error m_error = QGeoServiceProvider::NoError;
QString m_errorString;
qreal m_bearing = 0;
qreal m_pitch = 0;

View File

@@ -40,8 +40,9 @@ QQuickFramebufferObject::Renderer *QQuickMapboxGL::createRenderer() const
void QQuickMapboxGL::setPlugin(QDeclarativeGeoServiceProvider *)
{
qWarning() << __PRETTY_FUNCTION__
<< "Not implemented.";
m_error = QGeoServiceProvider::NotSupportedError;
m_errorString = "QQuickMapboxGL does not support plugins.";
emit errorChanged();
}
QDeclarativeGeoServiceProvider *QQuickMapboxGL::plugin() const
@@ -141,12 +142,12 @@ QGeoCoordinate QQuickMapboxGL::center() const
QGeoServiceProvider::Error QQuickMapboxGL::error() const
{
return QGeoServiceProvider::NoError;
return m_error;
}
QString QQuickMapboxGL::errorString() const
{
return QString();
return m_errorString;
}
void QQuickMapboxGL::setVisibleRegion(const QGeoShape &shape)
@@ -161,8 +162,7 @@ QGeoShape QQuickMapboxGL::visibleRegion() const
void QQuickMapboxGL::setCopyrightsVisible(bool)
{
qWarning() << __PRETTY_FUNCTION__
<< "Not implemented.";
qWarning() << Q_FUNC_INFO << "Not implemented.";
}
bool QQuickMapboxGL::copyrightsVisible() const
@@ -296,7 +296,9 @@ bool QQuickMapboxGL::parseStyleSource(QQuickMapboxGLMapParameter *param)
source["data"] = geojson.readAll();
m_sourceChanges << source;
} else {
qWarning() << "Error: Unsupported source type '" << sourceType << "'.";
m_error = QGeoServiceProvider::UnknownParameterError;
m_errorString = "Invalid source type: " + sourceType;
emit errorChanged();
return false;
}
return true;
@@ -337,7 +339,9 @@ void QQuickMapboxGL::processMapParameter(QQuickMapboxGLMapParameter *param)
bool needsUpdate = false;
switch (s_parameterTypes.indexOf(param->property("type").toString())) {
case -1:
qWarning() << "Error: Invalid value for property 'type'.";
m_error = QGeoServiceProvider::UnknownParameterError;
m_errorString = "Invalid value for property 'type': " + param->property("type").toString();
emit errorChanged();
break;
case 0: // style
needsUpdate |= parseStyle(param);
@@ -374,19 +378,25 @@ void QQuickMapboxGL::onParameterPropertyUpdated(const QString &propertyName)
{
QQuickMapboxGLMapParameter *param = qobject_cast<QQuickMapboxGLMapParameter *>(sender());
if (!param) {
qWarning() << "Warning: Sender for QQuickMapboxGL::onParameterPropertyUpdated is not a QQuickMapboxGLMapParameter.";
m_error = QGeoServiceProvider::NotSupportedError;
m_errorString = "QQuickMapboxGL::onParameterPropertyUpdated should be called from a QQuickMapboxGLMapParameter.";
emit errorChanged();
return;
}
if (propertyName == "type") {
qWarning() << "Error: Cannot modify property 'type'.";
m_error = QGeoServiceProvider::NotSupportedError;
m_errorString = "Property 'type' is a write-once.";
emit errorChanged();
return;
}
bool needsUpdate = false;
switch (s_parameterTypes.indexOf(param->property("type").toString())) {
case -1:
qWarning() << "Error: Invalid value for property 'type'.";
m_error = QGeoServiceProvider::UnknownParameterError;
m_errorString = "Invalid value for property 'type': " + param->property("type").toString();
emit errorChanged();
break;
case 0: // style
needsUpdate |= parseStyle(param);