summaryrefslogtreecommitdiff
path: root/src/imports/location/qdeclarativegeomappixmapobject.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/imports/location/qdeclarativegeomappixmapobject.cpp')
-rw-r--r--src/imports/location/qdeclarativegeomappixmapobject.cpp359
1 files changed, 0 insertions, 359 deletions
diff --git a/src/imports/location/qdeclarativegeomappixmapobject.cpp b/src/imports/location/qdeclarativegeomappixmapobject.cpp
deleted file mode 100644
index f0e87465..00000000
--- a/src/imports/location/qdeclarativegeomappixmapobject.cpp
+++ /dev/null
@@ -1,359 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the Qt Mobility Components.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qdeclarativegeomappixmapobject_p.h"
-#include "qdeclarativegraphicsgeomap_p.h"
-#include "qgeomapdata.h"
-
-#include <QBrush>
-#include <QUrl>
-#include <QFile>
-#include <QIODevice>
-#include <QImage>
-#include <QImageReader>
-
-#include <QtDeclarative/qdeclarativeengine.h>
-#include <QtDeclarative/qdeclarativecontext.h>
-
-#include <QDebug>
-
-QT_BEGIN_NAMESPACE
-
-/*!
- \qmlclass MapImage
-
- \brief The MapImage element displays an image on a map.
- \inherits QGeoMapPixmapObject
-
- \ingroup qml-location-maps
-
- The image loaded from \l source will be drawn \l offset.x and
- \l offset.y pixels away from the on-screen position of \l coordinate.
-
- If \l source does not point to an image or \l coordinate is
- invalid nothing will be displayed.
-
- The status of the image loading can be monitored via \l status.
-
- The MapImage element is part of the \bold{QtMobility.location 1.2} module.
-*/
-
-QDeclarativeGeoMapPixmapObject::QDeclarativeGeoMapPixmapObject(QSGItem *parent)
- : QDeclarativeGeoMapObject(parent),
- pixmap_(0),
- reply_(0),
- status_(QDeclarativeGeoMapPixmapObject::Null)
-{
- pixmap_ = new QGeoMapPixmapObject();
- setMapObject(pixmap_);
-
- connect(pixmap_,
- SIGNAL(offsetChanged(QPoint)),
- this,
- SIGNAL(offsetChanged(QPoint)));
-}
-
-QDeclarativeGeoMapPixmapObject::~QDeclarativeGeoMapPixmapObject()
-{
- // Memory management is bit tricky because we do not know
- // which will be deleted first, the Map or some/all of the
- // MapObjects. Hence we need to make sure that the internal
- // c++ map objects are removed from QGeoMapData in either place
- // (but not both).
- if (map_)
- map_->removeMapObject(this);
- delete pixmap_;
-}
-
-/*!
- \qmlproperty Coordinate MapImage::coordinate
-
- This property holds the coordinate at which to anchor the image.
-*/
-
-void QDeclarativeGeoMapPixmapObject::setCoordinate(QDeclarativeCoordinate *coordinate)
-{
- if (!coordinate || coordinate == coordinate_)
- return;
- coordinate_ = coordinate;
-
- connect(coordinate_,
- SIGNAL(latitudeChanged(double)),
- this,
- SLOT(coordinateLatitudeChanged(double)));
- connect(coordinate_,
- SIGNAL(longitudeChanged(double)),
- this,
- SLOT(coordinateLongitudeChanged(double)));
- connect(coordinate_,
- SIGNAL(altitudeChanged(double)),
- this,
- SLOT(coordinateAltitudeChanged(double)));
-
- pixmap_->setCoordinate(coordinate->coordinate());
- emit coordinateChanged(coordinate_);
-}
-
-QDeclarativeCoordinate* QDeclarativeGeoMapPixmapObject::coordinate()
-{
- return coordinate_;
-}
-
-void QDeclarativeGeoMapPixmapObject::coordinateLatitudeChanged(double /*latitude*/)
-{
- pixmap_->setCoordinate(coordinate_->coordinate());
-}
-
-void QDeclarativeGeoMapPixmapObject::coordinateLongitudeChanged(double /*longitude*/)
-{
- pixmap_->setCoordinate(coordinate_->coordinate());
-}
-
-void QDeclarativeGeoMapPixmapObject::coordinateAltitudeChanged(double /*altitude*/)
-{
- pixmap_->setCoordinate(coordinate_->coordinate());
-}
-
-/*!
- \qmlproperty int MapImage::offset.x
- \qmlproperty int MapImage::offset.y
-
- These properties hold the offset from the on-screen position of
- \l coordinate at which the image should be displayed.
-
- They both default to 0.
-*/
-
-QPoint QDeclarativeGeoMapPixmapObject::offset() const
-{
- return pixmap_->offset();
-}
-
-void QDeclarativeGeoMapPixmapObject::setOffset(const QPoint &offset)
-{
- pixmap_->setOffset(offset);
-}
-
-/*!
- \qmlproperty url MapImage::source
-
- This property holds the URL describing the location of the image to
- display.
-
- The URL can be absolute or relative to where the QML file
- was loaded from, and can be a local file, a file embedded within
- a Qt Resource bundle, or a file retrieved from the network.
-*/
-
-void QDeclarativeGeoMapPixmapObject::setSource(const QUrl &source)
-{
- if (source_ == source)
- return;
-
- source_ = source;
-
- load();
-
- emit sourceChanged(source);
-}
-
-QUrl QDeclarativeGeoMapPixmapObject::source() const
-{
- return source_;
-}
-
-/*!
- \qmlproperty enumeration MapImage::status
-
- This property holds the status of image loading. It can be one of:
- \list
- \o MapImage.Null - no image has been set
- \o MapImage.Ready - the image has been loaded
- \o MapImage.Loading - the image is currently being loaded
- \o MapImage.Error - an error occurred while loading the image
- \endlist
-*/
-
-QDeclarativeGeoMapPixmapObject::Status QDeclarativeGeoMapPixmapObject::status() const
-{
- return status_;
-}
-
-
-void QDeclarativeGeoMapPixmapObject::setStatus(const QDeclarativeGeoMapPixmapObject::Status status)
-{
- if (status_ == status)
- return;
-
- status_ = status;
-
- emit statusChanged(status_);
-}
-
-void QDeclarativeGeoMapPixmapObject::load()
-{
- // need to deal with absolute / relative local / remote files
-
- QUrl url = QDeclarativeEngine::contextForObject(this)->resolvedUrl(source_);
-
- QString path;
-
- if (url.scheme().compare(QLatin1String("qrc"), Qt::CaseInsensitive) == 0) {
- if (url.authority().isEmpty())
- path = QLatin1Char(':') + url.path();
- } else if (url.scheme().compare(QLatin1String("file"), Qt::CaseInsensitive) == 0) {
- path = url.toLocalFile();
- }
-
- if (!path.isEmpty()) {
- QFile f(path);
- if (f.open(QIODevice::ReadOnly)) {
- QImage image;
- QImageReader imageReader(&f);
- if (imageReader.read(&image)) {
- pixmap_->setPixmap(QPixmap::fromImage(image));
- setStatus(QDeclarativeGeoMapPixmapObject::Ready);
- } else {
- pixmap_->setPixmap(QPixmap());
- setStatus(QDeclarativeGeoMapPixmapObject::Error);
- //qWarning() << "image read fail";
- }
- } else {
- pixmap_->setPixmap(QPixmap());
- setStatus(QDeclarativeGeoMapPixmapObject::Error);
- //qWarning() << "file open fail";
- }
- } else {
- if (reply_) {
- reply_->abort();
- reply_->deleteLater();
- reply_ = 0;
- }
-
- QDeclarativeEngine *engine = QDeclarativeEngine::contextForObject(this)->engine();
- if (engine) {
- QNetworkAccessManager *nam = engine->networkAccessManager();
- reply_ = nam->get(QNetworkRequest(url));
-
- if (reply_->isFinished()) {
- if (reply_->error() == QNetworkReply::NoError) {
- finished();
- } else {
- error(reply_->error());
- }
- delete reply_;
- reply_ = 0;
- return;
- }
-
- setStatus(QDeclarativeGeoMapPixmapObject::Loading);
-
- connect(reply_,
- SIGNAL(finished()),
- this,
- SLOT(finished()));
- connect(reply_,
- SIGNAL(error(QNetworkReply::NetworkError)),
- this,
- SLOT(error(QNetworkReply::NetworkError)));
-
- } else {
- pixmap_->setPixmap(QPixmap());
- setStatus(QDeclarativeGeoMapPixmapObject::Error);
- //qWarning() << "null engine fail";
- }
- }
-}
-
-void QDeclarativeGeoMapPixmapObject::finished()
-{
- if (reply_->error() != QNetworkReply::NoError) {
- reply_->deleteLater();
- reply_ = 0;
- return;
- }
-
- QImage image;
- QImageReader imageReader(reply_);
- if (imageReader.read(&image)) {
- pixmap_->setPixmap(QPixmap::fromImage(image));
- setStatus(QDeclarativeGeoMapPixmapObject::Ready);
- } else {
- pixmap_->setPixmap(QPixmap());
- setStatus(QDeclarativeGeoMapPixmapObject::Error);
- //qWarning() << "image read fail";
- }
-
- reply_->deleteLater();
- reply_ = 0;
-}
-
-void QDeclarativeGeoMapPixmapObject::error(QNetworkReply::NetworkError error)
-{
- Q_UNUSED(error)
- reply_->deleteLater();
- reply_ = 0;
-
- pixmap_->setPixmap(QPixmap());
- setStatus(QDeclarativeGeoMapPixmapObject::Error);
- //qWarning() << "network error fail";
-}
-
-/*!
- \qmlproperty int MapImage::z
-
- This property holds the z-value of the image.
-
- Map objects are drawn in z-value order, and objects with the
- same z-value will be drawn in insertion order.
-*/
-
-/*!
- \qmlproperty bool MapImage::visible
-
- This property holds a boolean corresponding to whether or not the
- image is visible.
-*/
-
-#include "moc_qdeclarativegeomappixmapobject_p.cpp"
-
-QT_END_NAMESPACE
-