diff options
Diffstat (limited to 'src')
6 files changed, 46 insertions, 73 deletions
diff --git a/src/imports/location/declarativeplaces/qdeclarativecategory.cpp b/src/imports/location/declarativeplaces/qdeclarativecategory.cpp index 11b7c94d..ce3da77a 100644 --- a/src/imports/location/declarativeplaces/qdeclarativecategory.cpp +++ b/src/imports/location/declarativeplaces/qdeclarativecategory.cpp @@ -72,8 +72,7 @@ QDeclarativeCategory::QDeclarativeCategory(const QPlaceCategory &category, m_icon(0), m_plugin(plugin), m_reply(0) { Q_ASSERT(plugin); - if (!category.icon().isEmpty()) - m_icon = new QDeclarativePlaceIcon(category.icon(), m_plugin, this); + setCategory(category); } QDeclarativeCategory::~QDeclarativeCategory() {} @@ -115,33 +114,18 @@ void QDeclarativeCategory::setCategory(const QPlaceCategory &category) QPlaceCategory previous = m_category; m_category = category; - if (category.name() != previous.name()) { + if (category.name() != previous.name()) emit nameChanged(); - } - if (category.categoryId() != previous.categoryId()) { + + if (category.categoryId() != previous.categoryId()) emit categoryIdChanged(); - } - if (m_icon) { - if (m_icon->plugin() != m_plugin - || m_icon->baseUrl() != category.icon().baseUrl() - || m_icon->fullUrl() != category.icon().fullUrl()) { - if (m_icon->parent() == this) { - if (category.icon().isEmpty()) { - delete m_icon; - m_icon = 0; - } else { - m_icon->setPlugin(m_plugin); - m_icon->setBaseUrl(category.icon().baseUrl()); - m_icon->setFullUrl(category.icon().fullUrl()); - } - } else { - m_icon = new QDeclarativePlaceIcon(category.icon(), m_plugin, this); - } - emit iconChanged(); - } - } else { - m_icon = new QDeclarativePlaceIcon(category.icon(), m_plugin, this); + if (m_icon && m_icon->parent() == this) { + m_icon->setPlugin(m_plugin); + m_icon->setBaseUrl(m_category.icon().baseUrl()); + m_icon->setFullUrl(m_category.icon().fullUrl()); + } else if (!m_icon || m_icon->parent() != this){ + m_icon = new QDeclarativePlaceIcon(m_category.icon(), m_plugin, this); emit iconChanged(); } } diff --git a/src/imports/location/declarativeplaces/qdeclarativeplace.cpp b/src/imports/location/declarativeplaces/qdeclarativeplace.cpp index 93e84d3e..4c4b8895 100644 --- a/src/imports/location/declarativeplaces/qdeclarativeplace.cpp +++ b/src/imports/location/declarativeplaces/qdeclarativeplace.cpp @@ -82,9 +82,6 @@ QDeclarativePlace::QDeclarativePlace(const QPlace &src, QDeclarativeGeoServicePr m_status(QDeclarativePlace::Ready) { Q_ASSERT(plugin); - if (!m_src.icon().isEmpty()) - m_icon = new QDeclarativePlaceIcon(m_src.icon(), m_plugin, this); - setPlace(src); } @@ -174,31 +171,17 @@ void QDeclarativePlace::setPlace(const QPlace &src) } if (m_supplier && m_supplier->parent() == this) { - m_supplier->setSupplier(m_src.supplier()); + m_supplier->setSupplier(m_src.supplier(), m_plugin); } else if (!m_supplier || m_supplier->parent() != this) { - m_supplier = new QDeclarativeSupplier(m_src.supplier(), this); + m_supplier = new QDeclarativeSupplier(m_src.supplier(), m_plugin, this); emit supplierChanged(); } - if (m_icon) { - if (m_icon->plugin() != m_plugin - || m_icon->baseUrl() != m_src.icon().baseUrl() - || m_icon->fullUrl() != m_src.icon().fullUrl()) { - if (m_icon->parent() == this) { - if (m_src.icon().isEmpty()) { - delete m_icon; - m_icon = 0; - } else { - m_icon->setPlugin(m_plugin); - m_icon->setBaseUrl(m_src.icon().baseUrl()); - m_icon->setFullUrl(m_src.icon().fullUrl()); - } - } else { - m_icon = new QDeclarativePlaceIcon(m_src.icon(), m_plugin, this); - } - emit iconChanged(); - } - } else { + if (m_icon && m_icon->parent() == this) { + m_icon->setPlugin(m_plugin); + m_icon->setBaseUrl(m_src.icon().baseUrl()); + m_icon->setFullUrl(m_src.icon().fullUrl()); + } else if (!m_icon || m_icon->parent() != this) { m_icon = new QDeclarativePlaceIcon(m_src.icon(), m_plugin, this); emit iconChanged(); } diff --git a/src/imports/location/declarativeplaces/qdeclarativeplacecontentmodel.cpp b/src/imports/location/declarativeplaces/qdeclarativeplacecontentmodel.cpp index 3b23137f..7db96d58 100644 --- a/src/imports/location/declarativeplaces/qdeclarativeplacecontentmodel.cpp +++ b/src/imports/location/declarativeplaces/qdeclarativeplacecontentmodel.cpp @@ -302,7 +302,7 @@ void QDeclarativePlaceContentModel::fetchFinished() m_content.insert(i, content); if (!m_suppliers.contains(content.supplier().supplierId())) { m_suppliers.insert(content.supplier().supplierId(), - new QDeclarativeSupplier(content.supplier(), this)); + new QDeclarativeSupplier(content.supplier(), m_place->plugin(), this)); } if (!m_users.contains(content.user().userId())) { m_users.insert(content.user().userId(), @@ -329,7 +329,7 @@ void QDeclarativePlaceContentModel::fetchFinished() m_content.insert(i, content); if (!m_suppliers.contains(content.supplier().supplierId())) { m_suppliers.insert(content.supplier().supplierId(), - new QDeclarativeSupplier(content.supplier(), this)); + new QDeclarativeSupplier(content.supplier(), m_place->plugin(), this)); } if (!m_users.contains(content.user().userId())) { m_users.insert(content.user().userId(), diff --git a/src/imports/location/declarativeplaces/qdeclarativeplaceicon.cpp b/src/imports/location/declarativeplaces/qdeclarativeplaceicon.cpp index 024c454f..e2ff0c02 100644 --- a/src/imports/location/declarativeplaces/qdeclarativeplaceicon.cpp +++ b/src/imports/location/declarativeplaces/qdeclarativeplaceicon.cpp @@ -57,7 +57,7 @@ QT_USE_NAMESPACE \ingroup qml-places */ QDeclarativePlaceIcon::QDeclarativePlaceIcon(QObject *parent) - : QObject(parent) + : QObject(parent), m_plugin(0) { } @@ -66,7 +66,10 @@ QDeclarativePlaceIcon::QDeclarativePlaceIcon(const QPlaceIcon &icon, QDeclarativ { m_baseUrl = icon.baseUrl(); m_fullUrl = icon.fullUrl(); - m_plugin = plugin; + if (icon.isEmpty()) + m_plugin = 0; + else + m_plugin = plugin; } QDeclarativePlaceIcon::~QDeclarativePlaceIcon() diff --git a/src/imports/location/declarativeplaces/qdeclarativesupplier.cpp b/src/imports/location/declarativeplaces/qdeclarativesupplier.cpp index 9f5d1e46..17fc3c87 100644 --- a/src/imports/location/declarativeplaces/qdeclarativesupplier.cpp +++ b/src/imports/location/declarativeplaces/qdeclarativesupplier.cpp @@ -62,38 +62,41 @@ QDeclarativeSupplier::QDeclarativeSupplier(QObject* parent) } QDeclarativeSupplier::QDeclarativeSupplier(const QPlaceSupplier &src, - QObject *parent) - : QObject(parent), - m_src(src), - m_icon(0) + QDeclarativeGeoServiceProvider *plugin, + QObject *parent) + : QObject(parent), + m_src(src), + m_icon(0) { - //Note: icon needs to be assigned externally - //to the QDeclarativeSupplier since the icon needs - //to know which plugin it comes from. + setSupplier(src, plugin); } QDeclarativeSupplier::~QDeclarativeSupplier() { } -void QDeclarativeSupplier::setSupplier(const QPlaceSupplier &src) +void QDeclarativeSupplier::setSupplier(const QPlaceSupplier &src, QDeclarativeGeoServiceProvider *plugin) { QPlaceSupplier previous = m_src; m_src = src; - if (previous.name() != m_src.name()) { + if (previous.name() != m_src.name()) emit nameChanged(); - } - if (previous.supplierId() != m_src.supplierId()) { + + if (previous.supplierId() != m_src.supplierId()) emit supplierIdChanged(); - } - if (previous.url() != m_src.url()) { + + if (previous.url() != m_src.url()) emit urlChanged(); - } - //Note: icon needs to be assigned externally - //to the QDeclarativeSupplier since the icon needs - //to know which plugin it comes from. + if (m_icon && m_icon->parent() == this) { + m_icon->setPlugin(plugin); + m_icon->setBaseUrl(m_src.icon().baseUrl()); + m_icon->setFullUrl(m_src.icon().fullUrl()); + } else if (!m_icon || m_icon->parent() != this) { + m_icon = new QDeclarativePlaceIcon(m_src.icon(), plugin, this); + emit iconChanged(); + } } QPlaceSupplier QDeclarativeSupplier::supplier() diff --git a/src/imports/location/declarativeplaces/qdeclarativesupplier_p.h b/src/imports/location/declarativeplaces/qdeclarativesupplier_p.h index d51abe27..98993d1b 100644 --- a/src/imports/location/declarativeplaces/qdeclarativesupplier_p.h +++ b/src/imports/location/declarativeplaces/qdeclarativesupplier_p.h @@ -62,11 +62,11 @@ class QDeclarativeSupplier : public QObject public: explicit QDeclarativeSupplier(QObject* parent = 0); - explicit QDeclarativeSupplier(const QPlaceSupplier &src, QObject* parent = 0); + explicit QDeclarativeSupplier(const QPlaceSupplier &src, QDeclarativeGeoServiceProvider *plugin, QObject* parent = 0); ~QDeclarativeSupplier(); QPlaceSupplier supplier(); - void setSupplier(const QPlaceSupplier &src); + void setSupplier(const QPlaceSupplier &src, QDeclarativeGeoServiceProvider *plugin); QString name() const; void setName(const QString &data); |