summaryrefslogtreecommitdiffstats
path: root/GeoServicesExample/services
diff options
context:
space:
mode:
authorCasper van Donderen <[email protected]>2012-06-01 12:41:13 +0200
committerMarius Storm-Olsen <[email protected]>2012-06-07 14:45:52 +0200
commit08fa70bb5fb97b07f0e85a83352fefdf10e03800 (patch)
tree382c5cc10c622ddf08dbf47c5801c23d94cf5040 /GeoServicesExample/services
parent073c4e7ae33c64105f87f0362e915b480a23091a (diff)
Add more examples for DevNet and add license text.HEADmaster
Diffstat (limited to 'GeoServicesExample/services')
-rw-r--r--GeoServicesExample/services/main.cpp52
-rw-r--r--GeoServicesExample/services/mapwindow.cpp119
-rw-r--r--GeoServicesExample/services/mapwindow.h73
-rw-r--r--GeoServicesExample/services/services.pro6
-rwxr-xr-xGeoServicesExample/services/services.py126
5 files changed, 376 insertions, 0 deletions
diff --git a/GeoServicesExample/services/main.cpp b/GeoServicesExample/services/main.cpp
new file mode 100644
index 0000000..2553a4f
--- /dev/null
+++ b/GeoServicesExample/services/main.cpp
@@ -0,0 +1,52 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation ([email protected])
+**
+** This file is part of the documentation of Qt. It was originally
+** published as part of Qt Quarterly.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial Usage
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Nokia.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, 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.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at [email protected].
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QApplication>
+#include "mapwindow.h"
+
+int main(int argc, char *argv[])
+{
+ QApplication app(argc, argv);
+ MapWindow window;
+ window.show();
+ return app.exec();
+}
diff --git a/GeoServicesExample/services/mapwindow.cpp b/GeoServicesExample/services/mapwindow.cpp
new file mode 100644
index 0000000..c32a5e8
--- /dev/null
+++ b/GeoServicesExample/services/mapwindow.cpp
@@ -0,0 +1,119 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation ([email protected])
+**
+** This file is part of the documentation of Qt. It was originally
+** published as part of Qt Quarterly.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial Usage
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Nokia.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, 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.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at [email protected].
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtGui>
+#include <QGeoCoordinate>
+#include <QGeoMappingManagerEngine>
+#include <QGraphicsGeoMap>
+#include "mapwindow.h"
+
+using namespace QtMobility;
+
+MapWindow::MapWindow()
+{
+ scene = new QGraphicsScene(this);
+
+ findServices();
+
+ QGraphicsView *view = new QGraphicsView(this);
+ view->setScene(scene);
+ setCentralWidget(view);
+}
+
+void MapWindow::findServices()
+{
+ QMenu *serviceMenu = menuBar()->addMenu(tr("&Services"));
+
+ actionGroup = new QActionGroup(this);
+ actionGroup->setExclusive(true);
+ connect(actionGroup, SIGNAL(triggered(QAction *)),
+ this, SLOT(selectService(QAction *)));
+
+ foreach (const QString &name, QGeoServiceProvider::availableServiceProviders()) {
+
+ QGeoServiceProvider *service = new QGeoServiceProvider(name);
+ services[name] = service;
+ QAction *action = serviceMenu->addAction(name);
+ action->setCheckable(true);
+ actionGroup->addAction(action);
+ }
+
+ if (services.isEmpty()) {
+
+ QGraphicsTextItem *item = scene->addText(
+ tr("Failed to find any map services. Please ensure that "
+ "the location services plugins for Qt Mobility have "
+ "been built and, if necessary, set the QT_PLUGIN_PATH "
+ "environment variable to the location of the Qt Mobility "
+ "plugins directory."));
+ item->setTextWidth(300);
+ QAction *action = serviceMenu->addAction(tr("No services"));
+ action->setEnabled(false);
+ } else
+ actionGroup->actions()[0]->trigger();
+}
+
+void MapWindow::selectService(QAction *action)
+{
+ action->setChecked(true);
+ QString name = action->text();
+
+ scene->clear();
+
+ QGeoServiceProvider *service = services[name];
+ if (service->error() != QGeoServiceProvider::NoError) {
+
+ QGraphicsTextItem *item = scene->addText(
+ tr("The \"%1\" service failed with the following error:\n'"
+ "%2").arg(name).arg(service->errorString()));
+ item->setTextWidth(300);
+ } else {
+ QGeoMappingManager *manager = service->mappingManager();
+ QGraphicsGeoMap *geoMap = new QGraphicsGeoMap(manager);
+ scene->addItem(geoMap);
+
+ geoMap->resize(300, 300);
+ geoMap->setCenter(QGeoCoordinate(37.76, -25.675));
+ geoMap->setMapType(QGraphicsGeoMap::TerrainMap);
+ geoMap->setZoomLevel(12);
+ }
+}
diff --git a/GeoServicesExample/services/mapwindow.h b/GeoServicesExample/services/mapwindow.h
new file mode 100644
index 0000000..9a6ca0c
--- /dev/null
+++ b/GeoServicesExample/services/mapwindow.h
@@ -0,0 +1,73 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation ([email protected])
+**
+** This file is part of the documentation of Qt. It was originally
+** published as part of Qt Quarterly.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial Usage
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Nokia.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, 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.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at [email protected].
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef MAPWINDOW_H
+#define MAPWINDOW_H
+
+#include <QGeoServiceProvider>
+#include <QHash>
+#include <QMainWindow>
+
+using namespace QtMobility;
+
+class QActionGroup;
+class QGraphicsScene;
+
+class MapWindow : public QMainWindow
+{
+ Q_OBJECT
+
+public:
+ MapWindow();
+
+private slots:
+ void selectService(QAction *action);
+
+private:
+ void findServices();
+
+ QActionGroup *actionGroup;
+ QGraphicsScene *scene;
+ QHash<QString, QGeoServiceProvider *> services;
+};
+
+#endif
diff --git a/GeoServicesExample/services/services.pro b/GeoServicesExample/services/services.pro
new file mode 100644
index 0000000..13288a5
--- /dev/null
+++ b/GeoServicesExample/services/services.pro
@@ -0,0 +1,6 @@
+HEADERS = mapwindow.h
+SOURCES = main.cpp \
+ mapwindow.cpp
+QT += network
+CONFIG += mobility
+MOBILITY = location
diff --git a/GeoServicesExample/services/services.py b/GeoServicesExample/services/services.py
new file mode 100755
index 0000000..4812f20
--- /dev/null
+++ b/GeoServicesExample/services/services.py
@@ -0,0 +1,126 @@
+#!/usr/bin/env python
+
+#############################################################################
+##
+## Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+## All rights reserved.
+## Contact: Nokia Corporation ([email protected])
+##
+## This file is part of the documentation of Qt. It was originally
+## published as part of Qt Quarterly.
+##
+## $QT_BEGIN_LICENSE:LGPL$
+## Commercial Usage
+## Licensees holding valid Qt Commercial licenses may use this file in
+## accordance with the Qt Commercial License Agreement provided with the
+## Software or, alternatively, in accordance with the terms contained in
+## a written agreement between you and Nokia.
+##
+## GNU Lesser General Public License Usage
+## Alternatively, 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.
+##
+## If you have questions regarding the use of this file, please contact
+## Nokia at [email protected].
+## $QT_END_LICENSE$
+##
+#############################################################################
+
+import sys
+
+from PyQt4.QtGui import QActionGroup, QApplication, QGraphicsScene, QGraphicsView, QMainWindow
+from PyQt4.QtMobility.QtLocation import *
+
+class MapWindow(QMainWindow):
+
+ def __init__(self):
+
+ QMainWindow.__init__(self)
+
+ self.scene = QGraphicsScene()
+
+ self.findServices()
+
+ view = QGraphicsView()
+ view.setScene(self.scene)
+ self.setCentralWidget(view)
+
+ def findServices(self):
+
+ serviceMenu = self.menuBar().addMenu(self.tr("&Services"))
+
+ self.services = {}
+ self.actionGroup = QActionGroup(self)
+ self.actionGroup.setExclusive(True)
+ self.actionGroup.triggered.connect(self.selectService)
+
+ for name in QGeoServiceProvider.availableServiceProviders():
+
+ service = QGeoServiceProvider(name)
+ self.services[name] = service
+ action = serviceMenu.addAction(name)
+ action.setCheckable(True)
+ self.actionGroup.addAction(action)
+
+ if not self.services:
+
+ item = self.scene.addText(
+ self.tr("Failed to find any map services. Please ensure that "
+ "the location services plugins for Qt Mobility have "
+ "been built and, if necessary, set the QT_PLUGIN_PATH "
+ "environment variable to the location of the Qt Mobility "
+ "plugins directory."))
+ item.setTextWidth(300)
+ action = serviceMenu.addAction(self.tr("No services"))
+ action.setEnabled(False)
+ else:
+ self.actionGroup.actions()[0].trigger()
+
+ def selectService(self, action):
+
+ action.setChecked(True)
+ name = action.text()
+
+ self.scene.clear()
+
+ service = self.services[name]
+ if service.error() != service.NoError:
+
+ item = self.scene.addText(
+ self.tr('The "%1" service failed with the following error:\n'
+ "%2").arg(name).arg(service.errorString()))
+ item.setTextWidth(300)
+
+ else:
+ self.manager = service.mappingManager()
+ self.geoMap = QGraphicsGeoMap(self.manager)
+ self.scene.addItem(self.geoMap)
+
+ self.geoMap.resize(300, 300)
+ self.geoMap.setCenter(QGeoCoordinate(37.76, -25.675))
+ self.geoMap.setMapType(self.geoMap.TerrainMap)
+ self.geoMap.setZoomLevel(12)
+
+
+if __name__ == "__main__":
+
+ app = QApplication(sys.argv)
+ window = MapWindow()
+ window.show()
+ sys.exit(app.exec_())