Moved files to make zouba the only project.
authorMax Waterman <davidmaxwaterman@jeeves.(none)>
Fri, 16 Sep 2011 15:50:02 +0000 (18:50 +0300)
committerMax Waterman <davidmaxwaterman@jeeves.(none)>
Fri, 16 Sep 2011 15:50:02 +0000 (18:50 +0300)
219 files changed:
build-stamp [new file with mode: 0644]
configure-stamp [new file with mode: 0644]
data/48x48/zouba.png [new file with mode: 0644]
data/64x64/zouba.png [new file with mode: 0644]
data/zouba.desktop [new file with mode: 0644]
data/zouba.xcf [new file with mode: 0644]
debian/README [new file with mode: 0644]
debian/README.Debian [new file with mode: 0644]
debian/changelog [new file with mode: 0644]
debian/compat [new file with mode: 0644]
debian/control [new file with mode: 0644]
debian/copyright [new file with mode: 0644]
debian/cron.d.ex [new file with mode: 0644]
debian/dirs [new file with mode: 0644]
debian/docs [new file with mode: 0644]
debian/emacsen-install.ex [new file with mode: 0644]
debian/emacsen-remove.ex [new file with mode: 0644]
debian/emacsen-startup.ex [new file with mode: 0644]
debian/files [new file with mode: 0644]
debian/init.d.ex [new file with mode: 0644]
debian/init.d.lsb.ex [new file with mode: 0644]
debian/manpage.1.ex [new file with mode: 0644]
debian/manpage.sgml.ex [new file with mode: 0644]
debian/manpage.xml.ex [new file with mode: 0644]
debian/menu.ex [new file with mode: 0644]
debian/postinst.ex [new file with mode: 0644]
debian/postrm.ex [new file with mode: 0644]
debian/preinst.ex [new file with mode: 0644]
debian/prerm.ex [new file with mode: 0644]
debian/rules [new file with mode: 0755]
debian/watch.ex [new file with mode: 0644]
debian/zouba.debhelper.log [new file with mode: 0644]
debian/zouba.default.ex [new file with mode: 0644]
debian/zouba.doc-base.EX [new file with mode: 0644]
debian/zouba.tarlist [new file with mode: 0644]
doc/coordinate_systems/JHS153.pdf [deleted file]
doc/coordinate_systems/JHS154.pdf [deleted file]
doc/coordinate_systems/JHS154_liite1.pdf [deleted file]
doc/coordinate_systems/JHS154_liite2.pdf [deleted file]
doc/coordinate_systems/coordtrans.fgi.fi [deleted file]
doc/coordinate_systems/kkjgps.htm [deleted file]
doc/coordinate_systems/kkjgps_files/urchin.js [deleted file]
getmehome/.gitignore [deleted file]
getmehome/AUTHORS [deleted file]
getmehome/COPYING [deleted file]
getmehome/ChangeLog [deleted file]
getmehome/Makefile.am [deleted file]
getmehome/NEWS [deleted file]
getmehome/README [deleted file]
getmehome/antigen.sh [deleted file]
getmehome/autogen.sh [deleted file]
getmehome/configure.ac [deleted file]
getmehome/coordinate-system.c [deleted file]
getmehome/coordinate-system.h [deleted file]
getmehome/debian/changelog [deleted file]
getmehome/debian/compat [deleted file]
getmehome/debian/control [deleted file]
getmehome/debian/copyright [deleted file]
getmehome/debian/rules [deleted file]
getmehome/lib-timeout-home-widget.c [deleted file]
getmehome/lib-timeout-home-widget.h [deleted file]
getmehome/location-provider.c [deleted file]
getmehome/location-provider.h [deleted file]
getmehome/timeout-home-widget.desktop.in [deleted file]
include/QGeoPositionInfo [new file with mode: 0644]
include/QGeoPositionInfoSource [new file with mode: 0644]
include/qgeocoordinate.h [new file with mode: 0644]
include/qgeopositioninfo.h [new file with mode: 0644]
include/qgeopositioninfosource.h [new file with mode: 0644]
include/qmobilityglobal.h [new file with mode: 0644]
prepareGmock.sh [deleted file]
src/.gitignore [deleted file]
src/coordinatesystemtransformer.cpp [deleted file]
src/coordinatesystemtransformer.h [deleted file]
src/gpscontroller.cpp [new file with mode: 0644]
src/gpscontroller.h [new file with mode: 0644]
src/gpscontroller_p.cpp [new file with mode: 0644]
src/gpscontroller_p.h [new file with mode: 0644]
src/kkjgridcoordinate.cpp [deleted file]
src/kkjgridcoordinate.h [deleted file]
src/kkjgridcoordinate_p.h [deleted file]
src/location.cpp [new file with mode: 0644]
src/location.h [new file with mode: 0644]
src/location_p.cpp [new file with mode: 0644]
src/location_p.h [new file with mode: 0644]
src/locations.cpp [new file with mode: 0644]
src/locations.h [new file with mode: 0644]
src/main.cpp [new file with mode: 0644]
src/route.cpp [new file with mode: 0644]
src/route.h [new file with mode: 0644]
src/route_p.cpp [new file with mode: 0644]
src/route_p.h [new file with mode: 0644]
src/routedata.h [new file with mode: 0644]
src/src.pro [deleted file]
src/ui.cpp [new file with mode: 0644]
src/ui.h [new file with mode: 0644]
src/uicontroller.cpp [new file with mode: 0644]
src/uicontroller.h [new file with mode: 0644]
src/ytv.h [new file with mode: 0644]
tests/.gitignore [deleted file]
tests/check.pri [deleted file]
tests/coord_trans_proto/coord_trans_proto.py [deleted file]
tests/gmock.pri [deleted file]
tests/testSummary [new file with mode: 0755]
tests/tests.pri [new file with mode: 0644]
tests/tests.pro
tests/ut_common.pri [deleted file]
tests/ut_coord_trans/.gitignore [deleted file]
tests/ut_coord_trans/Makefile [deleted file]
tests/ut_coord_trans/ut_coord_trans.c [deleted file]
tests/ut_coordinatesystemtransformer/.gitignore [deleted file]
tests/ut_coordinatesystemtransformer/ut_coordinatesystemtransformer.cpp [deleted file]
tests/ut_coordinatesystemtransformer/ut_coordinatesystemtransformer.pro [deleted file]
tests/ut_gmocktemplate/.gitignore [deleted file]
tests/ut_gmocktemplate/ut_gmocktemplate.cpp [deleted file]
tests/ut_gmocktemplate/ut_gmocktemplate.pro [deleted file]
tests/ut_gmocktest/.gitignore [deleted file]
tests/ut_gmocktest/mock_turtle.h [deleted file]
tests/ut_gmocktest/painter.cpp [deleted file]
tests/ut_gmocktest/painter.h [deleted file]
tests/ut_gmocktest/turtle.h [deleted file]
tests/ut_gmocktest/ut_gmocktest.cpp [deleted file]
tests/ut_gmocktest/ut_gmocktest.pro [deleted file]
tests/ut_gpscontroller/ut_gpscontroller.cpp [new file with mode: 0644]
tests/ut_gpscontroller/ut_gpscontroller.h [new file with mode: 0644]
tests/ut_gpscontroller/ut_gpscontroller.pro [new file with mode: 0644]
tests/ut_kkjgridcoordinate/.gitignore [deleted file]
tests/ut_kkjgridcoordinate/ut_kkjgridcoordinate.cpp [deleted file]
tests/ut_kkjgridcoordinate/ut_kkjgridcoordinate.pro [deleted file]
tests/ut_location/ut_location.cpp [new file with mode: 0644]
tests/ut_location/ut_location.h [new file with mode: 0644]
tests/ut_location/ut_location.pro [new file with mode: 0644]
tests/ut_route/ut_route.cpp [new file with mode: 0644]
tests/ut_route/ut_route.h [new file with mode: 0644]
tests/ut_route/ut_route.pro [new file with mode: 0644]
tests/ut_route/ut_sampleinput.h [new file with mode: 0644]
tests/ut_template/.gitignore [deleted file]
tests/ut_template/ut_template.cpp [deleted file]
tests/ut_template/ut_template.h [deleted file]
tests/ut_template/ut_template.pro [deleted file]
tests/util/stlhelpers.h [deleted file]
tests/util/stlhelpers4qt.h [deleted file]
zouba.pro [new file with mode: 0644]
zouba/build-stamp [deleted file]
zouba/configure-stamp [deleted file]
zouba/data/48x48/zouba.png [deleted file]
zouba/data/64x64/zouba.png [deleted file]
zouba/data/zouba.desktop [deleted file]
zouba/data/zouba.xcf [deleted file]
zouba/debian/README [deleted file]
zouba/debian/README.Debian [deleted file]
zouba/debian/changelog [deleted file]
zouba/debian/compat [deleted file]
zouba/debian/control [deleted file]
zouba/debian/copyright [deleted file]
zouba/debian/cron.d.ex [deleted file]
zouba/debian/dirs [deleted file]
zouba/debian/docs [deleted file]
zouba/debian/emacsen-install.ex [deleted file]
zouba/debian/emacsen-remove.ex [deleted file]
zouba/debian/emacsen-startup.ex [deleted file]
zouba/debian/files [deleted file]
zouba/debian/init.d.ex [deleted file]
zouba/debian/init.d.lsb.ex [deleted file]
zouba/debian/manpage.1.ex [deleted file]
zouba/debian/manpage.sgml.ex [deleted file]
zouba/debian/manpage.xml.ex [deleted file]
zouba/debian/menu.ex [deleted file]
zouba/debian/postinst.ex [deleted file]
zouba/debian/postrm.ex [deleted file]
zouba/debian/preinst.ex [deleted file]
zouba/debian/prerm.ex [deleted file]
zouba/debian/rules [deleted file]
zouba/debian/watch.ex [deleted file]
zouba/debian/zouba.debhelper.log [deleted file]
zouba/debian/zouba.default.ex [deleted file]
zouba/debian/zouba.doc-base.EX [deleted file]
zouba/debian/zouba.tarlist [deleted file]
zouba/include/QGeoPositionInfo [deleted file]
zouba/include/QGeoPositionInfoSource [deleted file]
zouba/include/qgeocoordinate.h [deleted file]
zouba/include/qgeopositioninfo.h [deleted file]
zouba/include/qgeopositioninfosource.h [deleted file]
zouba/include/qmobilityglobal.h [deleted file]
zouba/src/gpscontroller.cpp [deleted file]
zouba/src/gpscontroller.h [deleted file]
zouba/src/gpscontroller_p.cpp [deleted file]
zouba/src/gpscontroller_p.h [deleted file]
zouba/src/location.cpp [deleted file]
zouba/src/location.h [deleted file]
zouba/src/location_p.cpp [deleted file]
zouba/src/location_p.h [deleted file]
zouba/src/locations.cpp [deleted file]
zouba/src/locations.h [deleted file]
zouba/src/main.cpp [deleted file]
zouba/src/route.cpp [deleted file]
zouba/src/route.h [deleted file]
zouba/src/route_p.cpp [deleted file]
zouba/src/route_p.h [deleted file]
zouba/src/routedata.h [deleted file]
zouba/src/ui.cpp [deleted file]
zouba/src/ui.h [deleted file]
zouba/src/uicontroller.cpp [deleted file]
zouba/src/uicontroller.h [deleted file]
zouba/src/ytv.h [deleted file]
zouba/tests/testSummary [deleted file]
zouba/tests/tests.pri [deleted file]
zouba/tests/tests.pro [deleted file]
zouba/tests/ut_gpscontroller/ut_gpscontroller.cpp [deleted file]
zouba/tests/ut_gpscontroller/ut_gpscontroller.h [deleted file]
zouba/tests/ut_gpscontroller/ut_gpscontroller.pro [deleted file]
zouba/tests/ut_location/ut_location.cpp [deleted file]
zouba/tests/ut_location/ut_location.h [deleted file]
zouba/tests/ut_location/ut_location.pro [deleted file]
zouba/tests/ut_route/ut_route.cpp [deleted file]
zouba/tests/ut_route/ut_route.h [deleted file]
zouba/tests/ut_route/ut_route.pro [deleted file]
zouba/tests/ut_route/ut_sampleinput.h [deleted file]
zouba/zouba.pro [deleted file]

diff --git a/build-stamp b/build-stamp
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/configure-stamp b/configure-stamp
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/data/48x48/zouba.png b/data/48x48/zouba.png
new file mode 100644 (file)
index 0000000..4bf6300
Binary files /dev/null and b/data/48x48/zouba.png differ
diff --git a/data/64x64/zouba.png b/data/64x64/zouba.png
new file mode 100644 (file)
index 0000000..3c83f3e
Binary files /dev/null and b/data/64x64/zouba.png differ
diff --git a/data/zouba.desktop b/data/zouba.desktop
new file mode 100644 (file)
index 0000000..57545da
--- /dev/null
@@ -0,0 +1,11 @@
+[Desktop Entry]
+Encoding=UTF-8
+Version=0.1
+Type=Application
+Name=ZouBa
+Exec=/usr/bin/zouba
+Icon=zouba
+X-HildonDesk-ShowInToolbar=true
+X-Window-Icon=zouba
+X-Window-Icon-Dimmed=zouba
+X-Osso-Type=application/x-executable
diff --git a/data/zouba.xcf b/data/zouba.xcf
new file mode 100644 (file)
index 0000000..683a0ac
Binary files /dev/null and b/data/zouba.xcf differ
diff --git a/debian/README b/debian/README
new file mode 100644 (file)
index 0000000..86f57e5
--- /dev/null
@@ -0,0 +1,6 @@
+The Debian Package zouba
+----------------------------
+
+Comments regarding the Package
+
+ -- Max Waterman <davidmaxwaterman@jeeves>  Tue, 23 Mar 2010 20:11:34 +0200
diff --git a/debian/README.Debian b/debian/README.Debian
new file mode 100644 (file)
index 0000000..ce6b0b0
--- /dev/null
@@ -0,0 +1,6 @@
+zouba for Debian
+----------------
+
+<possible notes regarding this package - if none, delete this file>
+
+ -- Max Waterman <davidmaxwaterman@jeeves>  Tue, 23 Mar 2010 20:11:34 +0200
diff --git a/debian/changelog b/debian/changelog
new file mode 100644 (file)
index 0000000..a37b5e8
--- /dev/null
@@ -0,0 +1,65 @@
+zouba (0.9) unstable; urgency=low
+
+  * added notification for address resolution failure and no route
+  * fixed issue with multiple route requests for a single button click 
+
+ -- Max Waterman <davidmaxwaterman@fastmail.co.uk>  Sun, 25 Apr 2010 06:12:00 +0200
+
+zouba (0.8) unstable; urgency=low
+
+  * Fixed problem when changing the address of a location to something invalid.
+
+ -- Max Waterman <davidmaxwaterman@fastmail.co.uk>  Sat, 24 Apr 2010 03:39:00 +0200
+
+zouba (0.7) unstable; urgency=low
+
+  * Changed gps controller to use labels for fake gps instead of a new Location instance.
+  * Added route detail table and general associated shuffle of api.
+
+ -- Max Waterman <davidmaxwaterman@fastmail.co.uk>  Tue, 20 Apr 2010 06:27:00 +0200
+
+zouba (0.6) unstable; urgency=low
+
+  * Changed layout in preparation for multiple routes
+  * Changed the selection mode for the tables
+
+ -- Max Waterman <davidmaxwaterman@fastmail.co.uk>  Mon, 19 Apr 2010 17:38:00 +0200
+
+zouba (0.5) unstable; urgency=low
+
+  * Changed package description
+  * Changed 'fakegps' button from two actions to a single toggle one
+  * Fixed core dump in gpscontroller caused by deleting the fakelocation
+
+ -- Max Waterman <davidmaxwaterman@fastmail.co.uk>  Mon, 19 Apr 2010 11:18:00 +0200
+
+zouba (0.4) unstable; urgency=low
+
+  * Fix for routes with bus changes (only displays first bus)
+  * Added and cleaned up ut_route
+
+ -- Max Waterman <davidmaxwaterman@fastmail.co.uk>  Fri, 16 Apr 2010 11:28:00 +0200
+
+zouba (0.3) unstable; urgency=low
+
+  * Fix for app manager icon
+  * Changes: cleanup and corrections for autobuilder
+  * Added new settings button to set a fake current location ('work' in the first instance).
+  * Added 'optimize' parameter set to 'leastwalking' to route server to give same results as web server early in the morning.
+
+ -- Max Waterman <davidmaxwaterman@fastmail.co.uk>  Mon, 12 Apr 2010 12:13:13 +0200
+
+zouba (0.2) unstable; urgency=low
+
+  * Better xml error string.
+  * Better message table width resizing, though visually the same.
+  * Added missing message when work button becomes valid.
+  * First upload to extras-devel.
+
+ -- Max Waterman <davidmaxwaterman@fastmail.co.uk>  Wed, 24 Mar 2010 21:29:00 +0200
+
+zouba (0.1) unstable; urgency=low
+
+  * Initial Release.
+
+ -- Max Waterman <davidmaxwaterman@fastmail.co.uk>  Tue, 23 Mar 2010 20:11:34 +0200
diff --git a/debian/compat b/debian/compat
new file mode 100644 (file)
index 0000000..7ed6ff8
--- /dev/null
@@ -0,0 +1 @@
+5
diff --git a/debian/control b/debian/control
new file mode 100644 (file)
index 0000000..bb9a57f
--- /dev/null
@@ -0,0 +1,112 @@
+Source: zouba
+Section: user/navigation
+Priority: extra
+Maintainer: Max Waterman <davidmaxwaterman@fastmail.co.uk>
+Build-Depends: libqt4-dev, libqtm-bearer, libqtm-location, debhelper (>= 5)
+Standards-Version: 3.7.3
+Homepage: 
+
+Package: zouba
+Architecture: armel
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Tells you which bus is next (in Helsinki area).
+ Allows you to easily find how to get the bus home. Uses HSL Journey Planner API <http://developer.reittiopas.fi/pages/en/home.php>. Uses GPS for current location. Uses Qt and QtMobility.
+# XB-Maemo-Icon-26 field contains the application icon file encoded in
+# base64. This is the icon that is shown in the Application Manager,
+# next to the package name. To perform this encoding use following mad
+# command: $ mad base64 <48x48 icon file name>
+# For example following XB-Maemo-Icon-26 field content is an output
+# from command: $ mad base64 zouba/src/data/48x48/zouba.png
+XB-Maemo-Icon-26:
+ iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABGdBTUEAALGP
+ C/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUw
+ AADqYAAAOpgAABdwnLpRPAAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAAL
+ EwAACxMBAJqcGAAAAAl2cEFnAAAAMAAAADAAzu6MVwAADplJREFUaN7VmOmP
+ ZNV5h59z7rlLLbequnqp3qBhlp6FmWEYA4YwRiYMAsvBTuzIwiRxnAXJEYkT
+ ZVH+AH+KIkVE8gd/iJLIimQnEhMHgx3FRkOCMTG2YQbMGAZ6YDw93dVV1VW3
+ a7l16675cG/NtIfBZrFjfKRSt2p9fu9539/7ngO/3MsUv2iCd7hs4B7gvl8m
+ AZMZ9CEhuEnT7JvjeKnwXhcggX3AR6QUH9G03PsMY1ZX6hCj0W2MRjt5rwrQ
+ gT3Ap4TgvlyucFU+f30SBLcI3z/IaFQjjhWQvOcEKOBa4DNCcL9l5WZLpT1o
+ 2p10OjfieRMkiQCSix94rwjIAx8F7hWC20yztFgsHpRSHmUwOIzrvhH8vSJg
+ FrgN+G0huNs0K7lC4TBJ8kFc9zpGoxJJwhXBf5ECRAZ+DPgzKcVB06zqlvU+
+ kuQDDIf78P3im0b8FylABw4CHxVCfFzT1G7TnDEM4wbi+CjD4TJBkH/L4P9f
+ AsrAXuAQcJdS5u1K2TVdn0GpA0TR+/G8Hfh+Pnv7Wwf/eQoQwFXArwOfAA5o
+ ml4yjEmh60tIuZ8ouh7PWyIMc2874j9vASZwP/DXIHZLaUmlpjDNHUh5HWG4
+ D99fJAhy2U+/E3BB2t9ifpZ9QJKmyl+A+ISUpaJS8+j6DjTtAFG0h9FomijS
+ M1d5J2sMvgmcAg4DE+9agAZMAb8K/KWU1hGlllFqP1LuIYp24fuTRJH2DqO9
+ PT7DDPw4un6aMPw1kuRTqHcBPglcD/ymlOKjSi3VlDoKHCKKFhmNKtvA3ym8
+ AELgh8DDKPUcBw7s5Oqr7+HrX/8GQbD/bQuQ28DvkFIeU0o/omnvV/AbBMES
+ UZQjjuU7ABf8eF1EQB14CikfY9euIh/+8AMsL+/hpZdewjAeJwhW3rIACVRJ
+ 7fB2TdMO6rquhEiuiePDKggeJIqqJEnCuLjeXkxioAG4gJU9dxopX2RmZo2j
+ R2/jYx/7OJVKhXq9juu6F3/rpwmQwARwAPgVTdOWDcPoFwqFr/q+nx8M3GNR
+ dHumbTXb7nnAeAtCxuX3EvAN4HtAH7AR4iDV6gTXXbfITTcd4siRvczPz9Nu
+ t9na2mJ1dZXhMAZ2vamAMfg+4EZN05YMw3Dy+fx/6Lr+8nA4bHe73c/CZB52
+ A/8N/ANCDEmSW4D3AcuZGDIxl8MPgMcR4stMT8OuXbsplyv0ej08r8fy8vtZ
+ Wppjbi7Gtkt4nsdg4NJqtXj99bMkyTSw/AYBEqiQUh2UUs4ahuGYpvlVIcTr
+ W1tb/TAMY9Kx4CZYyuC+xN13H+DGG2/m+PGH+dGPnsJ1yyTJh0jH+v2kk3IC
+ BEAb+DdM8wT79y9z7NhdTExMkM/n0TSNM2deRtcVhYJE19Od6vV6fP/73+Mr
+ XznOuXMN4PeB2kUBAiiSzuJ7gKpSqm8YxokkSVa73a6bXDJwSWqds0IU0LQO
+ hjHg7rs/xKc//Xt88pP3c+7cOR599BGef/4HfPe7D+P7vwvcBXSADZQ6y8TE
+ D7njjg9zyy23UiqVyOVyCCEYDocUizZRFJMkGp2Ow5kzj/PMM8/w7LPPMRzu
+ Bf4QOAIIVBbNGrCT1GH6UsoVYHM4HA6TS+SStNMWpZRHNE27xjD2YFkR+XyR
+ 2dk5hBDMzs6ysLDArbfeSq/X48EH/4hHH30MmEPTekxM9FlY8LjmmsMcPfoB
+ lpaWEEIQBAGe59Hr9XBdF983WVl5jdOnv8PZs88zGtnAp4A7svhFQIICdgEz
+ 2f6eAbbiOPbjOB77oMisoaRpml2pVAzTNKdGo0C3rAksK6RSqVKr1UiSBCHS
+ LQ/DENd1MQwTcKhWV5mby7OwUGZpqcbiYsTU1BSmaTIYDHAch3Z7k5WVFV55
+ ZY2VlTxraw6+PwV8NqupSoYUXcx5BZSAFtAF/G0VNwa3NU0rlctla25uzpyZ
+ mdE9z9ObzVZsmhaW1aNWm8AwDDRNw/d9Go0G586dY3V1lUajwfLybhYWqszP
+ V5mbK1Gp6OTzPRynQ7PZ4Pz586ytrXP+/Cpnz16g0VggCJZIzzpXkx7YEt5o
+ BqmAtSuAm4AtpbRt287Nzs6aMzMzZrVaNaempoxWqzkdBJFhWSaGcTW+f4Ev
+ fOEL3HnnnZTL5SwFfFzXZWamxvz8IjMzOygWdSwL4tij2WzSbJ5nY8OhXvc4
+ f35Eq1UgDO8inXPmMwyuCL7dz6avAF6ybduq1WrmzMyMOTExYVYqFatcLlu2
+ bZtxHE++8MLJB0ajXQtJcowgOIfnPUkc/4ipqQn27t3Hnj17ME2TU6dOYhi7
+ 0fU5osjFddu02xs0m22aTZf1dWi3LYJgNvOQGdI+8tOaYdq5RfaJH4v4lcCL
+ xaJZLBaNfD6vlFLixInH72u1jMOj0WHCsIeuJ5TLUCgMkdLBtiVLS1fjeR5h
+ OMVgYNNo1Gm1tmi1fBqNBMfRCcMpYDGLo8GlkeLNGuH49R5wFgVMSSmLtm3n
+ rwReKBRM27bH4ERRxPr6etFxnHy/r6PrW0xNVSkWy2iaThh6hGEf123z2mt1
+ wKPfD2k0OjSbHs0mdLtFwrBKejSezOInSEeJegZ3TVae8WXgDvAt0u59DlUu
+ l2dqtZpRq9UugpdKJatQKFi2bRuFQkEppYjjOO71etqFCxfK9Xp9yvcDq1qd
+ o1S6NgOH0Sgm7XMaw2EFz4vwPEG3a9JoRHS7ecJwInPtyraIbwBPA0+haato
+ 2gjfPwB8hkvdvAP8D/BN4FUfojPAI+rIkSOGbduFUqmUr1QquWKxOI64rpQS
+ SZLEvu9HnU5HXrhwwdra2tKKxeIgjqfcMDSJ4zy+HxMEEb4f0ut16fW6eB5E
+ kY3rVun1IsKwsA1c31acLeDzmOZz7N69i3J5mVptllOnnmNl5R+BPwZOAv8O
+ nPEgegb4F+BrwLo6dOiQVigUlGmapmVZlmEYllJKJkmSjEaj0HXdqNvtRo1G
+ Q/X7fTeXy4WmaVrdblcPwwqGoRGGIb1ei0bDo90e4PsGUlYIQ4so0kkvk0tZ
+ xMl8fAA0EeJr6PopyuUKnufTbJ7llVdWUEpl4J8DzsQwehr4PPCfWR6lNloq
+ leT09HRSKpVCpVQwGAy0fr+vDQaDqN/vh71ez+t0OmGz2VRCCD1JEjka+YWt
+ LUclySJxPKDdfpLNzScZDvcSxzeSNvV8Fmkzc2uRgQ+BFkK00fXzGMZzJInE
+ tm1uuOEGdu7cyfHjxzlz5kyG+IIHPJQ9NoAbsq07BaBM0wzjOA583/eSJElc
+ 140bjYbe7Xb9Xq833Nra8tvtdthqtaRSSvM8T3recG5jY3Pa98F1L+C6LxDH
+ 54DzwDPA7wAfusxRXKCDEG2UctH1EDhLHHfI5XLce++9HDhwgEceeYSNjQ2k
+ lMRx3AT+Fvh70vnhr4A/Af4VeB5IlOM4Q9/3Y9d1YyllvLm5GdXrdeE4ju84
+ zqjT6XidTmfkOI6maZrVbrfNfr/nua4XxXFAkpRJb1CuytyhA/wX8MFsF8bg
+ Dpo2QtcDwCNJPHK5hKmpBWy7xOnTp3n66aexLIsHH3yQJ554gm9/+9uvAk8A
+ DwB/kDWKfwb+Zuyx6rXXXhsWi8W4UChESim/Xq8b9XpdtNttr9PpeN1uNxgO
+ h2EYhroQgm636wPfAb4HT92Rpst1pLPK7ixF92bfvw50UMpDqRjwSZIRliUp
+ l8sUCtMYxgaGYVCtVrnnnnu4+eabKZfLPPnkkwALwJeyvydIh6JnSCeH1Fzn
+ 5+f3V6tVVavVjEKhYKytrRn1ej3e2toag4fbusr2W4ydqc/V7oRPS7gpy/Ue
+ 6cnKy8Aj0pNagGkqbNsgl+ui6ysYxir5vGB6eoYHHniAgwcP0m63OX78OA89
+ 9FDU6/WeAv6XS0c2h8uWABY1TTMqlYpRKpV0x3GMfr8vgyAIs6obC9AywrH/
+ haRXh5+Da4/Bn2YW6aDU8CJ4kgQYhkaxmMOyhih1Dl1fJ5ezyOcVptkNDcPY
+ mp2drdZqNXHixAlOnjwZeJ73xSz/X2X7+HkFAZOks74hpbSSJMklSaJlgFEG
+ rm2rxvFu+JkXHkpzsna9Urej1D5AI0l8DEOjUMiRywVIuYambWCaJrncPIYR
+ Ai8nUg7PjkajF19++eVj3W43juP4JPBl4IvZdv7EJUhP5DKDtIDxvZ+8zP/G
+ 8GkVpv+XhRAzpmleJyW/FcfajUkybxjGMoXC9eRyZTRtEyk30XWJYUyilARe
+ JQhej1y3c35zs33ecZydURTNA/8E/PmVUuUnCZjJQI3soV8W8WQb+DCD14UQ
+ VcuypovFYlVKaQdBMCmlPJzLmTfpunG1ELW8pu1C1xW6nkfKHHG8ThC8Eg8G
+ jY7jOBe63Z4dx/FVwNnMXb4JfPetwo8FXJtB69siHvPGiA+ztNKBCV3XJ3Vd
+ ryRJUqpWq6XFxcVipVIxkyQpdrvd/cOhe1RKfVJKXUZRlPi+F/X7nb7jbLX7
+ /cFWHMfz2e/9HXCc9H7lbS+VpcwYfHxeuzziYfZ+SWruuTiOjUKhoHbv3i1m
+ Z2djIIqiSBNC6LZt133ff8JxnB2e5yX9/pa7sdHId7vd+TiO50jH0LNp7fAl
+ fkKRvhUB4/uOiEv3HtsjPrZPkUXfEELotVpN7Nu3L15YWIiVUkkcxzKOY2s4
+ HFZ7vV7VdV3R7XZ/sLa2JjqdTiWzY0HaRR8DXiQdDd7NrS8qg1VXAB8vuS3d
+ NCGE0DQt1nU9klImhmHIYrFodTqd2c3NzaVer2f2er3W+vr6oNVqTYRhaJG2
+ /W9l0PXLvv9dLZUBk8EH214bR30sYpxicZIkcS6XE6Zpmo7jzLRarR39fr/q
+ OM7m+vp6q9Fo5IIgKAOvkzaik0CTd5Eqb7YE6RVictlzVwQndalSLperzs/P
+ LxYKhR2WZU1qmuZubGx0VldXdd/3K6T+/TzpxNj4eYBvhy1fBj3uAdvBEy4V
+ 8JyUck+hUJizbds3DGOt2Wzqg8FgfM/4EvAs6W3HzyxV3mz9H8WDYRQx8Afu
+ AAAAGXRFWHRDb21tZW50AENyZWF0ZWQgd2l0aCBHSU1QV4EOFwAAACV0RVh0
+ Y3JlYXRlLWRhdGUAMjAxMC0wMy0yNFQwNToyODo0MyswMjowMPMmiCkAAAAl
+ dEVYdG1vZGlmeS1kYXRlADIwMTAtMDMtMjRUMDU6Mjg6NDMrMDI6MDCsl/4d
+ AAAAAElFTkSuQmCC
+ ====
diff --git a/debian/copyright b/debian/copyright
new file mode 100644 (file)
index 0000000..5765b41
--- /dev/null
@@ -0,0 +1,39 @@
+This package was debianized by Max Waterman <davidmaxwaterman@jeeves> on
+Tue, 23 Mar 2010 20:11:34 +0200.
+
+It was downloaded from <url://example.com>
+
+Upstream Author(s):
+
+    <put author's name and email here>
+    <likewise for another author>
+
+Copyright:
+
+    <Copyright (C) YYYY Name OfAuthor>
+    <likewise for another author>
+
+License:
+
+    This package is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2 of the License, or (at your option) any later version.
+
+    This package is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this package; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+
+On Debian systems, the complete text of the GNU Lesser General
+Public License can be found in `/usr/share/common-licenses/LGPL'.
+
+The Debian packaging is (C) 2010, Max Waterman <davidmaxwaterman@jeeves> and
+is licensed under the GPL, see `/usr/share/common-licenses/GPL'.
+
+# Please also look if there are files or directories which have a
+# different copyright/license attached and list them here.
diff --git a/debian/cron.d.ex b/debian/cron.d.ex
new file mode 100644 (file)
index 0000000..2bcd648
--- /dev/null
@@ -0,0 +1,4 @@
+#
+# Regular cron jobs for the zouba package
+#
+0 4    * * *   root    [ -x /usr/bin/zouba_maintenance ] && /usr/bin/zouba_maintenance
diff --git a/debian/dirs b/debian/dirs
new file mode 100644 (file)
index 0000000..ca882bb
--- /dev/null
@@ -0,0 +1,2 @@
+usr/bin
+usr/sbin
diff --git a/debian/docs b/debian/docs
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/debian/emacsen-install.ex b/debian/emacsen-install.ex
new file mode 100644 (file)
index 0000000..614a11d
--- /dev/null
@@ -0,0 +1,45 @@
+#! /bin/sh -e
+# /usr/lib/emacsen-common/packages/install/zouba
+
+# Written by Jim Van Zandt <jrv@debian.org>, borrowing heavily
+# from the install scripts for gettext by Santiago Vila
+# <sanvila@ctv.es> and octave by Dirk Eddelbuettel <edd@debian.org>.
+
+FLAVOR=$1
+PACKAGE=zouba
+
+if [ ${FLAVOR} = emacs ]; then exit 0; fi
+
+echo install/${PACKAGE}: Handling install for emacsen flavor ${FLAVOR}
+
+#FLAVORTEST=`echo $FLAVOR | cut -c-6`
+#if [ ${FLAVORTEST} = xemacs ] ; then
+#    SITEFLAG="-no-site-file"
+#else
+#    SITEFLAG="--no-site-file"
+#fi
+FLAGS="${SITEFLAG} -q -batch -l path.el -f batch-byte-compile"
+
+ELDIR=/usr/share/emacs/site-lisp/${PACKAGE}
+ELCDIR=/usr/share/${FLAVOR}/site-lisp/${PACKAGE}
+
+# Install-info-altdir does not actually exist.
+# Maybe somebody will write it.
+if test -x /usr/sbin/install-info-altdir; then
+    echo install/${PACKAGE}: install Info links for ${FLAVOR}
+    install-info-altdir --quiet --section "" "" --dirname=${FLAVOR} /usr/share/info/${PACKAGE}.info.gz
+fi
+
+install -m 755 -d ${ELCDIR}
+cd ${ELDIR}
+FILES=`echo *.el`
+cp ${FILES} ${ELCDIR}
+cd ${ELCDIR}
+
+cat << EOF > path.el
+(setq load-path (cons "." load-path) byte-compile-warnings nil)
+EOF
+${FLAVOR} ${FLAGS} ${FILES}
+rm -f *.el path.el
+
+exit 0
diff --git a/debian/emacsen-remove.ex b/debian/emacsen-remove.ex
new file mode 100644 (file)
index 0000000..579e5c9
--- /dev/null
@@ -0,0 +1,15 @@
+#!/bin/sh -e
+# /usr/lib/emacsen-common/packages/remove/zouba
+
+FLAVOR=$1
+PACKAGE=zouba
+
+if [ ${FLAVOR} != emacs ]; then
+    if test -x /usr/sbin/install-info-altdir; then
+        echo remove/${PACKAGE}: removing Info links for ${FLAVOR}
+        install-info-altdir --quiet --remove --dirname=${FLAVOR} /usr/share/info/zouba.info.gz
+    fi
+
+    echo remove/${PACKAGE}: purging byte-compiled files for ${FLAVOR}
+    rm -rf /usr/share/${FLAVOR}/site-lisp/${PACKAGE}
+fi
diff --git a/debian/emacsen-startup.ex b/debian/emacsen-startup.ex
new file mode 100644 (file)
index 0000000..73c6491
--- /dev/null
@@ -0,0 +1,25 @@
+;; -*-emacs-lisp-*-
+;;
+;; Emacs startup file, e.g.  /etc/emacs/site-start.d/50zouba.el
+;; for the Debian zouba package
+;;
+;; Originally contributed by Nils Naumann <naumann@unileoben.ac.at>
+;; Modified by Dirk Eddelbuettel <edd@debian.org>
+;; Adapted for dh-make by Jim Van Zandt <jrv@debian.org>
+
+;; The zouba package follows the Debian/GNU Linux 'emacsen' policy and
+;; byte-compiles its elisp files for each 'emacs flavor' (emacs19,
+;; xemacs19, emacs20, xemacs20...).  The compiled code is then
+;; installed in a subdirectory of the respective site-lisp directory.
+;; We have to add this to the load-path:
+(let ((package-dir (concat "/usr/share/"
+                           (symbol-name flavor)
+                           "/site-lisp/zouba")))
+;; If package-dir does not exist, the zouba package must have
+;; removed but not purged, and we should skip the setup.
+  (when (file-directory-p package-dir)
+        (setq load-path (cons package-dir load-path))
+       (autoload 'zouba-mode "zouba-mode"
+         "Major mode for editing zouba files." t)
+       (add-to-list 'auto-mode-alist '("\\.zouba$" . zouba-mode))))
+
diff --git a/debian/files b/debian/files
new file mode 100644 (file)
index 0000000..a44eb77
--- /dev/null
@@ -0,0 +1 @@
+zouba_0.9_armel.deb user/navigation extra
diff --git a/debian/init.d.ex b/debian/init.d.ex
new file mode 100644 (file)
index 0000000..eb92011
--- /dev/null
@@ -0,0 +1,157 @@
+#! /bin/sh
+#
+# skeleton     example file to build /etc/init.d/ scripts.
+#              This file should be used to construct scripts for /etc/init.d.
+#
+#              Written by Miquel van Smoorenburg <miquels@cistron.nl>.
+#              Modified for Debian
+#              by Ian Murdock <imurdock@gnu.ai.mit.edu>.
+#               Further changes by Javier Fernandez-Sanguino <jfs@debian.org>
+#
+# Version:     @(#)skeleton  1.9  26-Feb-2001  miquels@cistron.nl
+#
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+DAEMON=/usr/sbin/zouba
+NAME=zouba
+DESC=zouba
+
+test -x $DAEMON || exit 0
+
+LOGDIR=/var/log/zouba
+PIDFILE=/var/run/$NAME.pid
+DODTIME=1                   # Time to wait for the server to die, in seconds
+                            # If this value is set too low you might not
+                            # let some servers to die gracefully and
+                            # 'restart' will not work
+
+# Include zouba defaults if available
+if [ -f /etc/default/zouba ] ; then
+       . /etc/default/zouba
+fi
+
+set -e
+
+running_pid()
+{
+    # Check if a given process pid's cmdline matches a given name
+    pid=$1
+    name=$2
+    [ -z "$pid" ] && return 1
+    [ ! -d /proc/$pid ] &&  return 1
+    cmd=`cat /proc/$pid/cmdline | tr "\000" "\n"|head -n 1 |cut -d : -f 1`
+    # Is this the expected child?
+    [ "$cmd" != "$name" ] &&  return 1
+    return 0
+}
+
+running()
+{
+# Check if the process is running looking at /proc
+# (works for all users)
+
+    # No pidfile, probably no daemon present
+    [ ! -f "$PIDFILE" ] && return 1
+    # Obtain the pid and check it against the binary name
+    pid=`cat $PIDFILE`
+    running_pid $pid $DAEMON || return 1
+    return 0
+}
+
+force_stop() {
+# Forcefully kill the process
+    [ ! -f "$PIDFILE" ] && return
+    if running ; then
+        kill -15 $pid
+        # Is it really dead?
+        [ -n "$DODTIME" ] && sleep "$DODTIME"s
+        if running ; then
+            kill -9 $pid
+            [ -n "$DODTIME" ] && sleep "$DODTIME"s
+            if running ; then
+                echo "Cannot kill $LABEL (pid=$pid)!"
+                exit 1
+            fi
+        fi
+    fi
+    rm -f $PIDFILE
+    return 0
+}
+
+case "$1" in
+  start)
+       echo -n "Starting $DESC: "
+       start-stop-daemon --start --quiet --pidfile $PIDFILE \
+               --exec $DAEMON -- $DAEMON_OPTS
+        if running ; then
+            echo "$NAME."
+        else
+            echo " ERROR."
+        fi
+       ;;
+  stop)
+       echo -n "Stopping $DESC: "
+       start-stop-daemon --stop --quiet --pidfile $PIDFILE \
+               --exec $DAEMON
+       echo "$NAME."
+       ;;
+  force-stop)
+       echo -n "Forcefully stopping $DESC: "
+        force_stop
+        if ! running ; then
+            echo "$NAME."
+        else
+            echo " ERROR."
+        fi
+       ;;
+  #reload)
+       #
+       #       If the daemon can reload its config files on the fly
+       #       for example by sending it SIGHUP, do it here.
+       #
+       #       If the daemon responds to changes in its config file
+       #       directly anyway, make this a do-nothing entry.
+       #
+       # echo "Reloading $DESC configuration files."
+       # start-stop-daemon --stop --signal 1 --quiet --pidfile \
+       #       /var/run/$NAME.pid --exec $DAEMON
+  #;;
+  force-reload)
+       #
+       #       If the "reload" option is implemented, move the "force-reload"
+       #       option to the "reload" entry above. If not, "force-reload" is
+       #       just the same as "restart" except that it does nothing if the
+       #   daemon isn't already running.
+       # check wether $DAEMON is running. If so, restart
+       start-stop-daemon --stop --test --quiet --pidfile \
+               /var/run/$NAME.pid --exec $DAEMON \
+       && $0 restart \
+       || exit 0
+       ;;
+  restart)
+    echo -n "Restarting $DESC: "
+       start-stop-daemon --stop --quiet --pidfile \
+               /var/run/$NAME.pid --exec $DAEMON
+       [ -n "$DODTIME" ] && sleep $DODTIME
+       start-stop-daemon --start --quiet --pidfile \
+               /var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS
+       echo "$NAME."
+       ;;
+  status)
+    echo -n "$LABEL is "
+    if running ;  then
+        echo "running"
+    else
+        echo " not running."
+        exit 1
+    fi
+    ;;
+  *)
+       N=/etc/init.d/$NAME
+       # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
+       echo "Usage: $N {start|stop|restart|force-reload|status|force-stop}" >&2
+       exit 1
+       ;;
+esac
+
+exit 0
diff --git a/debian/init.d.lsb.ex b/debian/init.d.lsb.ex
new file mode 100644 (file)
index 0000000..4765549
--- /dev/null
@@ -0,0 +1,296 @@
+#!/bin/sh
+#
+# Example init.d script with LSB support.
+#
+# Please read this init.d carefully and modify the sections to
+# adjust it to the program you want to run.
+#
+# Copyright (c) 2007 Javier Fernandez-Sanguino <jfs@debian.org>
+#
+# This is free software; you may redistribute it and/or modify
+# it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2,
+# or (at your option) any later version.
+#
+# This is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License with
+# the Debian operating system, in /usr/share/common-licenses/GPL;  if
+# not, write to the Free Software Foundation, Inc., 59 Temple Place,
+# Suite 330, Boston, MA 02111-1307 USA
+#
+### BEGIN INIT INFO
+# Provides:          zouba
+# Required-Start:    $network $local_fs
+# Required-Stop:
+# Should-Start:      $named
+# Should-Stop:
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# Short-Description: <Enter a short description of the sortware>
+# Description:       <Enter a long description of the software>
+#                    <...>
+#                    <...>
+### END INIT INFO
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+
+DAEMON=/usr/sbin/zouba # Introduce the server's location here
+NAME=#PACKAGE              # Introduce the short server's name here
+DESC=#PACKAGE              # Introduce a short description here
+LOGDIR=/var/log/zouba  # Log directory to use
+
+PIDFILE=/var/run/$NAME.pid
+
+test -x $DAEMON || exit 0
+
+. /lib/lsb/init-functions
+
+# Default options, these can be overriden by the information
+# at /etc/default/$NAME
+DAEMON_OPTS=""          # Additional options given to the server
+
+DIETIME=10              # Time to wait for the server to die, in seconds
+                        # If this value is set too low you might not
+                        # let some servers to die gracefully and
+                        # 'restart' will not work
+
+#STARTTIME=2             # Time to wait for the server to start, in seconds
+                        # If this value is set each time the server is
+                        # started (on start or restart) the script will
+                        # stall to try to determine if it is running
+                        # If it is not set and the server takes time
+                        # to setup a pid file the log message might 
+                        # be a false positive (says it did not start
+                        # when it actually did)
+                        
+LOGFILE=$LOGDIR/$NAME.log  # Server logfile
+#DAEMONUSER=zouba   # Users to run the daemons as. If this value
+                        # is set start-stop-daemon will chuid the server
+
+# Include defaults if available
+if [ -f /etc/default/$NAME ] ; then
+       . /etc/default/$NAME
+fi
+
+# Use this if you want the user to explicitly set 'RUN' in
+# /etc/default/
+#if [ "x$RUN" != "xyes" ] ; then
+#    log_failure_msg "$NAME disabled, please adjust the configuration to your needs "
+#    log_failure_msg "and then set RUN to 'yes' in /etc/default/$NAME to enable it."
+#    exit 1
+#fi
+
+# Check that the user exists (if we set a user)
+# Does the user exist?
+if [ -n "$DAEMONUSER" ] ; then
+    if getent passwd | grep -q "^$DAEMONUSER:"; then
+        # Obtain the uid and gid
+        DAEMONUID=`getent passwd |grep "^$DAEMONUSER:" | awk -F : '{print $3}'`
+        DAEMONGID=`getent passwd |grep "^$DAEMONUSER:" | awk -F : '{print $4}'`
+    else
+        log_failure_msg "The user $DAEMONUSER, required to run $NAME does not exist."
+        exit 1
+    fi
+fi
+
+
+set -e
+
+running_pid() {
+# Check if a given process pid's cmdline matches a given name
+    pid=$1
+    name=$2
+    [ -z "$pid" ] && return 1
+    [ ! -d /proc/$pid ] &&  return 1
+    cmd=`cat /proc/$pid/cmdline | tr "\000" "\n"|head -n 1 |cut -d : -f 1`
+    # Is this the expected server
+    [ "$cmd" != "$name" ] &&  return 1
+    return 0
+}
+
+running() {
+# Check if the process is running looking at /proc
+# (works for all users)
+
+    # No pidfile, probably no daemon present
+    [ ! -f "$PIDFILE" ] && return 1
+    pid=`cat $PIDFILE`
+    running_pid $pid $DAEMON || return 1
+    return 0
+}
+
+start_server() {
+# Start the process using the wrapper
+        if [ -z "$DAEMONUSER" ] ; then
+            start_daemon -p $PIDFILE $DAEMON -- $DAEMON_OPTS
+            errcode=$?
+        else
+# if we are using a daemonuser then change the user id
+            start-stop-daemon --start --quiet --pidfile $PIDFILE \
+                        --chuid $DAEMONUSER \
+                        --exec $DAEMON -- $DAEMON_OPTS
+            errcode=$?
+        fi
+       return $errcode
+}
+
+stop_server() {
+# Stop the process using the wrapper
+        if [ -z "$DAEMONUSER" ] ; then
+            killproc -p $PIDFILE $DAEMON
+            errcode=$?
+        else
+# if we are using a daemonuser then look for process that match
+            start-stop-daemon --stop --quiet --pidfile $PIDFILE \
+                        --user $DAEMONUSER \
+                        --exec $DAEMON
+            errcode=$?
+        fi
+
+       return $errcode
+}
+
+reload_server() {
+    [ ! -f "$PIDFILE" ] && return 1
+    pid=pidofproc $PIDFILE # This is the daemon's pid
+    # Send a SIGHUP
+    kill -1 $pid
+    return $?
+}
+
+force_stop() {
+# Force the process to die killing it manually
+       [ ! -e "$PIDFILE" ] && return
+       if running ; then
+               kill -15 $pid
+       # Is it really dead?
+               sleep "$DIETIME"s
+               if running ; then
+                       kill -9 $pid
+                       sleep "$DIETIME"s
+                       if running ; then
+                               echo "Cannot kill $NAME (pid=$pid)!"
+                               exit 1
+                       fi
+               fi
+       fi
+       rm -f $PIDFILE
+}
+
+
+case "$1" in
+  start)
+       log_daemon_msg "Starting $DESC " "$NAME"
+        # Check if it's running first
+        if running ;  then
+            log_progress_msg "apparently already running"
+            log_end_msg 0
+            exit 0
+        fi
+        if start_server ; then
+            # NOTE: Some servers might die some time after they start,
+            # this code will detect this issue if STARTTIME is set
+            # to a reasonable value
+            [ -n "$STARTTIME" ] && sleep $STARTTIME # Wait some time 
+            if  running ;  then
+                # It's ok, the server started and is running
+                log_end_msg 0
+            else
+                # It is not running after we did start
+                log_end_msg 1
+            fi
+        else
+            # Either we could not start it
+            log_end_msg 1
+        fi
+       ;;
+  stop)
+        log_daemon_msg "Stopping $DESC" "$NAME"
+        if running ; then
+            # Only stop the server if we see it running
+                       errcode=0
+            stop_server || errcode=$?
+            log_end_msg $errcode
+        else
+            # If it's not running don't do anything
+            log_progress_msg "apparently not running"
+            log_end_msg 0
+            exit 0
+        fi
+        ;;
+  force-stop)
+        # First try to stop gracefully the program
+        $0 stop
+        if running; then
+            # If it's still running try to kill it more forcefully
+            log_daemon_msg "Stopping (force) $DESC" "$NAME"
+                       errcode=0
+            force_stop || errcode=$?
+            log_end_msg $errcode
+        fi
+       ;;
+  restart|force-reload)
+        log_daemon_msg "Restarting $DESC" "$NAME"
+               errcode=0
+        stop_server || errcode=$?
+        # Wait some sensible amount, some server need this
+        [ -n "$DIETIME" ] && sleep $DIETIME
+        start_server || errcode=$?
+        [ -n "$STARTTIME" ] && sleep $STARTTIME
+        running || errcode=$?
+        log_end_msg $errcode
+       ;;
+  status)
+
+        log_daemon_msg "Checking status of $DESC" "$NAME"
+        if running ;  then
+            log_progress_msg "running"
+            log_end_msg 0
+        else
+            log_progress_msg "apparently not running"
+            log_end_msg 1
+            exit 1
+        fi
+        ;;
+  # Use this if the daemon cannot reload
+  reload)
+        log_warning_msg "Reloading $NAME daemon: not implemented, as the daemon"
+        log_warning_msg "cannot re-read the config file (use restart)."
+        ;;
+  # And this if it cann
+  #reload)
+          #
+          # If the daemon can reload its config files on the fly
+          # for example by sending it SIGHUP, do it here.
+          #
+          # If the daemon responds to changes in its config file
+          # directly anyway, make this a do-nothing entry.
+          #
+          # log_daemon_msg "Reloading $DESC configuration files" "$NAME"
+          # if running ; then
+          #    reload_server
+          #    if ! running ;  then
+          # Process died after we tried to reload
+          #       log_progress_msg "died on reload"
+          #       log_end_msg 1
+          #       exit 1
+          #    fi
+          # else
+          #    log_progress_msg "server is not running"
+          #    log_end_msg 1
+          #    exit 1
+          # fi
+                                                                                    #;;
+
+  *)
+       N=/etc/init.d/$NAME
+       echo "Usage: $N {start|stop|force-stop|restart|force-reload|status}" >&2
+       exit 1
+       ;;
+esac
+
+exit 0
diff --git a/debian/manpage.1.ex b/debian/manpage.1.ex
new file mode 100644 (file)
index 0000000..bca658d
--- /dev/null
@@ -0,0 +1,59 @@
+.\"                                      Hey, EMACS: -*- nroff -*-
+.\" First parameter, NAME, should be all caps
+.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
+.\" other parameters are allowed: see man(7), man(1)
+.TH ZOUBA SECTION "March 23, 2010"
+.\" Please adjust this date whenever revising the manpage.
+.\"
+.\" Some roff macros, for reference:
+.\" .nh        disable hyphenation
+.\" .hy        enable hyphenation
+.\" .ad l      left justify
+.\" .ad b      justify to both left and right margins
+.\" .nf        disable filling
+.\" .fi        enable filling
+.\" .br        insert line break
+.\" .sp <n>    insert n+1 empty lines
+.\" for manpage-specific macros, see man(7)
+.SH NAME
+zouba \- program to do something
+.SH SYNOPSIS
+.B zouba
+.RI [ options ] " files" ...
+.br
+.B bar
+.RI [ options ] " files" ...
+.SH DESCRIPTION
+This manual page documents briefly the
+.B zouba
+and
+.B bar
+commands.
+.PP
+.\" TeX users may be more comfortable with the \fB<whatever>\fP and
+.\" \fI<whatever>\fP escape sequences to invode bold face and italics,
+.\" respectively.
+\fBzouba\fP is a program that...
+.SH OPTIONS
+These programs follow the usual GNU command line syntax, with long
+options starting with two dashes (`-').
+A summary of options is included below.
+For a complete description, see the Info files.
+.TP
+.B \-h, \-\-help
+Show summary of options.
+.TP
+.B \-v, \-\-version
+Show version of program.
+.SH SEE ALSO
+.BR bar (1),
+.BR baz (1).
+.br
+The programs are documented fully by
+.IR "The Rise and Fall of a Fooish Bar" ,
+available via the Info system.
+.SH AUTHOR
+zouba was written by <upstream author>.
+.PP
+This manual page was written by Max Waterman <davidmaxwaterman@jeeves>,
+for the Debian project (but may be used by others).
diff --git a/debian/manpage.sgml.ex b/debian/manpage.sgml.ex
new file mode 100644 (file)
index 0000000..bd2e519
--- /dev/null
@@ -0,0 +1,156 @@
+<!doctype refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [
+
+<!-- Process this file with docbook-to-man to generate an nroff manual
+     page: `docbook-to-man manpage.sgml > manpage.1'.  You may view
+     the manual page with: `docbook-to-man manpage.sgml | nroff -man |
+     less'.  A typical entry in a Makefile or Makefile.am is:
+
+manpage.1: manpage.sgml
+       docbook-to-man $< > $@
+
+
+       The docbook-to-man binary is found in the docbook-to-man package.
+       Please remember that if you create the nroff version in one of the
+       debian/rules file targets (such as build), you will need to include
+       docbook-to-man in your Build-Depends control field.
+
+  -->
+
+  <!-- Fill in your name for FIRSTNAME and SURNAME. -->
+  <!ENTITY dhfirstname "<firstname>FIRSTNAME</firstname>">
+  <!ENTITY dhsurname   "<surname>SURNAME</surname>">
+  <!-- Please adjust the date whenever revising the manpage. -->
+  <!ENTITY dhdate      "<date>March 23, 2010</date>">
+  <!-- SECTION should be 1-8, maybe w/ subsection other parameters are
+       allowed: see man(7), man(1). -->
+  <!ENTITY dhsection   "<manvolnum>SECTION</manvolnum>">
+  <!ENTITY dhemail     "<email>davidmaxwaterman@jeeves</email>">
+  <!ENTITY dhusername  "Max Waterman">
+  <!ENTITY dhucpackage "<refentrytitle>ZOUBA</refentrytitle>">
+  <!ENTITY dhpackage   "zouba">
+
+  <!ENTITY debian      "<productname>Debian</productname>">
+  <!ENTITY gnu         "<acronym>GNU</acronym>">
+  <!ENTITY gpl         "&gnu; <acronym>GPL</acronym>">
+]>
+
+<refentry>
+  <refentryinfo>
+    <address>
+      &dhemail;
+    </address>
+    <author>
+      &dhfirstname;
+      &dhsurname;
+    </author>
+    <copyright>
+      <year>2003</year>
+      <holder>&dhusername;</holder>
+    </copyright>
+    &dhdate;
+  </refentryinfo>
+  <refmeta>
+    &dhucpackage;
+
+    &dhsection;
+  </refmeta>
+  <refnamediv>
+    <refname>&dhpackage;</refname>
+
+    <refpurpose>program to do something</refpurpose>
+  </refnamediv>
+  <refsynopsisdiv>
+    <cmdsynopsis>
+      <command>&dhpackage;</command>
+
+      <arg><option>-e <replaceable>this</replaceable></option></arg>
+
+      <arg><option>--example <replaceable>that</replaceable></option></arg>
+    </cmdsynopsis>
+  </refsynopsisdiv>
+  <refsect1>
+    <title>DESCRIPTION</title>
+
+    <para>This manual page documents briefly the
+      <command>&dhpackage;</command> and <command>bar</command>
+      commands.</para>
+
+    <para>This manual page was written for the &debian; distribution
+      because the original program does not have a manual page.
+      Instead, it has documentation in the &gnu;
+      <application>Info</application> format; see below.</para>
+
+    <para><command>&dhpackage;</command> is a program that...</para>
+
+  </refsect1>
+  <refsect1>
+    <title>OPTIONS</title>
+
+    <para>These programs follow the usual &gnu; command line syntax,
+      with long options starting with two dashes (`-').  A summary of
+      options is included below.  For a complete description, see the
+      <application>Info</application> files.</para>
+
+    <variablelist>
+      <varlistentry>
+        <term><option>-h</option>
+          <option>--help</option>
+        </term>
+        <listitem>
+          <para>Show summary of options.</para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><option>-v</option>
+          <option>--version</option>
+        </term>
+        <listitem>
+          <para>Show version of program.</para>
+        </listitem>
+      </varlistentry>
+    </variablelist>
+  </refsect1>
+  <refsect1>
+    <title>SEE ALSO</title>
+
+    <para>bar (1), baz (1).</para>
+
+    <para>The programs are documented fully by <citetitle>The Rise and
+      Fall of a Fooish Bar</citetitle> available via the
+      <application>Info</application> system.</para>
+  </refsect1>
+  <refsect1>
+    <title>AUTHOR</title>
+
+    <para>This manual page was written by &dhusername; &dhemail; for
+      the &debian; system (but may be used by others).  Permission is
+      granted to copy, distribute and/or modify this document under
+      the terms of the &gnu; General Public License, Version 2 any
+         later version published by the Free Software Foundation.
+    </para>
+       <para>
+         On Debian systems, the complete text of the GNU General Public
+         License can be found in /usr/share/common-licenses/GPL.
+       </para>
+
+  </refsect1>
+</refentry>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:nil
+sgml-default-dtd-file:nil
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->
+
+
diff --git a/debian/manpage.xml.ex b/debian/manpage.xml.ex
new file mode 100644 (file)
index 0000000..a9973bf
--- /dev/null
@@ -0,0 +1,291 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+
+<!--
+
+`xsltproc -''-nonet \
+          -''-param man.charmap.use.subset "0" \
+          -''-param make.year.ranges "1" \
+          -''-param make.single.year.ranges "1" \
+          /usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl \
+          manpage.xml'
+
+A manual page <package>.<section> will be generated. You may view the
+manual page with: nroff -man <package>.<section> | less'. A typical entry
+in a Makefile or Makefile.am is:
+
+DB2MAN = /usr/share/sgml/docbook/stylesheet/xsl/nwalsh/manpages/docbook.xsl
+XP     = xsltproc -''-nonet -''-param man.charmap.use.subset "0"
+
+manpage.1: manpage.xml
+        $(XP) $(DB2MAN) $<
+
+The xsltproc binary is found in the xsltproc package. The XSL files are in
+docbook-xsl. A description of the parameters you can use can be found in the
+docbook-xsl-doc-* packages. Please remember that if you create the nroff
+version in one of the debian/rules file targets (such as build), you will need
+to include xsltproc and docbook-xsl in your Build-Depends control field.
+Alternatively use the xmlto command/package. That will also automatically
+pull in xsltproc and docbook-xsl.
+
+Notes for using docbook2x: docbook2x-man does not automatically create the
+AUTHOR(S) and COPYRIGHT sections. In this case, please add them manually as
+<refsect1> ... </refsect1>.
+
+To disable the automatic creation of the AUTHOR(S) and COPYRIGHT sections
+read /usr/share/doc/docbook-xsl/doc/manpages/authors.html. This file can be
+found in the docbook-xsl-doc-html package.
+
+Validation can be done using: `xmllint -''-noout -''-valid manpage.xml`
+
+General documentation about man-pages and man-page-formatting:
+man(1), man(7), http://www.tldp.org/HOWTO/Man-Page/
+
+-->
+
+  <!-- Fill in your name for FIRSTNAME and SURNAME. -->
+  <!ENTITY dhfirstname "FIRSTNAME">
+  <!ENTITY dhsurname   "SURNAME">
+  <!-- dhusername could also be set to "&firstname; &surname;". -->  
+  <!ENTITY dhusername  "Max Waterman">
+  <!ENTITY dhemail     "davidmaxwaterman@jeeves">
+  <!-- SECTION should be 1-8, maybe w/ subsection other parameters are
+       allowed: see man(7), man(1) and
+       http://www.tldp.org/HOWTO/Man-Page/q2.html. -->
+  <!ENTITY dhsection   "SECTION">
+  <!-- TITLE should be something like "User commands" or similar (see
+       http://www.tldp.org/HOWTO/Man-Page/q2.html). -->
+  <!ENTITY dhtitle     "zouba User Manual">
+  <!ENTITY dhucpackage "ZOUBA">
+  <!ENTITY dhpackage   "zouba">
+]>
+
+<refentry>
+  <refentryinfo>
+    <title>&dhtitle;</title>
+    <productname>&dhpackage;</productname>
+    <authorgroup>
+      <author>
+       <firstname>&dhfirstname;</firstname>
+        <surname>&dhsurname;</surname>
+        <contrib>Wrote this manpage for the Debian system.</contrib>
+        <address>
+          <email>&dhemail;</email>
+        </address>
+      </author>
+    </authorgroup>
+    <copyright>
+      <year>2007</year>
+      <holder>&dhusername;</holder>
+    </copyright>
+    <legalnotice>
+      <para>This manual page was written for the Debian system
+        (but may be used by others).</para>
+      <para>Permission is granted to copy, distribute and/or modify this
+        document under the terms of the GNU General Public License,
+        Version 2 or (at your option) any later version published by
+        the Free Software Foundation.</para>
+      <para>On Debian systems, the complete text of the GNU General Public
+        License can be found in
+       <filename>/usr/share/common-licenses/GPL</filename>.</para>
+    </legalnotice>
+  </refentryinfo>
+  <refmeta>
+    <refentrytitle>&dhucpackage;</refentrytitle>
+    <manvolnum>&dhsection;</manvolnum>
+  </refmeta>
+  <refnamediv>
+    <refname>&dhpackage;</refname>
+    <refpurpose>program to do something</refpurpose>
+  </refnamediv>
+  <refsynopsisdiv>
+    <cmdsynopsis>
+      <command>&dhpackage;</command>
+      <!-- These are several examples, how syntaxes could look -->
+      <arg choice="plain"><option>-e <replaceable>this</replaceable></option></arg>
+      <arg choice="opt"><option>--example=<parameter>that</parameter></option></arg>
+      <arg choice="opt">
+        <group choice="req">
+          <arg choice="plain"><option>-e</option></arg>
+          <arg choice="plain"><option>--example</option></arg>
+        </group>
+        <replaceable class="option">this</replaceable>
+      </arg>
+      <arg choice="opt">
+        <group choice="req">
+          <arg choice="plain"><option>-e</option></arg>
+          <arg choice="plain"><option>--example</option></arg>
+        </group>
+        <group choice="req">
+          <arg choice="plain"><replaceable>this</replaceable></arg>
+          <arg choice="plain"><replaceable>that</replaceable></arg>
+        </group>
+      </arg>
+    </cmdsynopsis>
+    <cmdsynopsis>
+      <command>&dhpackage;</command>
+      <!-- Normally the help and version options make the programs stop
+           right after outputting the requested information. -->
+      <group choice="opt">
+        <arg choice="plain">
+          <group choice="req">
+            <arg choice="plain"><option>-h</option></arg>
+            <arg choice="plain"><option>--help</option></arg>
+          </group>
+        </arg>
+        <arg choice="plain">
+          <group choice="req">
+            <arg choice="plain"><option>-v</option></arg>
+            <arg choice="plain"><option>--version</option></arg>
+          </group>
+        </arg>
+      </group>
+    </cmdsynopsis>
+  </refsynopsisdiv>
+  <refsect1 id="description">
+    <title>DESCRIPTION</title>
+    <para>This manual page documents briefly the
+      <command>&dhpackage;</command> and <command>bar</command>
+      commands.</para>
+    <para>This manual page was written for the Debian distribution
+      because the original program does not have a manual page.
+      Instead, it has documentation in the GNU <citerefentry>
+        <refentrytitle>info</refentrytitle>
+        <manvolnum>1</manvolnum>
+      </citerefentry> format; see below.</para>
+    <para><command>&dhpackage;</command> is a program that...</para>
+  </refsect1>
+  <refsect1 id="options">
+    <title>OPTIONS</title>
+    <para>The program follows the usual GNU command line syntax,
+      with long options starting with two dashes (`-').  A summary of
+      options is included below.  For a complete description, see the
+      <citerefentry>
+        <refentrytitle>info</refentrytitle>
+        <manvolnum>1</manvolnum>
+      </citerefentry> files.</para>
+    <variablelist>
+      <!-- Use the variablelist.term.separator and the
+           variablelist.term.break.after parameters to
+           control the term elements. -->
+      <varlistentry>
+        <term><option>-e <replaceable>this</replaceable></option></term>
+        <term><option>--example=<replaceable>that</replaceable></option></term>
+        <listitem>
+          <para>Does this and that.</para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><option>-h</option></term>
+        <term><option>--help</option></term>
+        <listitem>
+          <para>Show summary of options.</para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><option>-v</option></term>
+        <term><option>--version</option></term>
+        <listitem>
+          <para>Show version of program.</para>
+        </listitem>
+      </varlistentry>
+    </variablelist>
+  </refsect1>
+  <refsect1 id="files">
+    <title>FILES</title>
+    <variablelist>
+      <varlistentry>
+        <term><filename>/etc/foo.conf</filename></term>
+        <listitem>
+          <para>The system-wide configuration file to control the
+            behaviour of <application>&dhpackage;</application>. See
+            <citerefentry>
+              <refentrytitle>foo.conf</refentrytitle>
+              <manvolnum>5</manvolnum>
+            </citerefentry> for further details.</para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><filename>${HOME}/.foo.conf</filename></term>
+        <listitem>
+          <para>The per-user configuration file to control the
+             behaviour of <application>&dhpackage;</application>. See
+             <citerefentry>
+               <refentrytitle>foo.conf</refentrytitle>
+               <manvolnum>5</manvolnum>
+             </citerefentry> for further details.</para>
+        </listitem>
+      </varlistentry>
+    </variablelist>
+  </refsect1>
+  <refsect1 id="environment">
+    <title>ENVIONMENT</title>
+    <variablelist>
+      <varlistentry>
+        <term><envar>FOO_CONF</envar></term>
+        <listitem>
+          <para>If used, the defined file is used as configuration
+            file (see also <xref linkend="files"/>).</para>
+        </listitem>
+      </varlistentry>
+    </variablelist>
+  </refsect1>
+  <refsect1 id="diagnostics">
+    <title>DIAGNOSTICS</title>
+    <para>The following diagnostics may be issued
+      on <filename class="devicefile">stderr</filename>:</para>
+    <variablelist>
+      <varlistentry>
+        <term><errortext>Bad configuration file. Exiting.</errortext></term>
+        <listitem>
+          <para>The configuration file seems to contain a broken configuration
+            line. Use the <option>--verbose</option> option, to get more info.
+          </para>
+        </listitem>
+      </varlistentry>
+    </variablelist>
+    <para><command>&dhpackage;</command> provides some return codes, that can
+      be used in scripts:</para>
+    <segmentedlist>
+      <segtitle>Code</segtitle>
+      <segtitle>Diagnostic</segtitle>
+      <seglistitem>
+        <seg><errorcode>0</errorcode></seg>
+        <seg>Program exited successfully.</seg>
+      </seglistitem>
+      <seglistitem>
+        <seg><errorcode>1</errorcode></seg>
+        <seg>The configuration file seems to be broken.</seg>
+      </seglistitem>
+    </segmentedlist>
+  </refsect1>
+  <refsect1 id="bugs">
+    <!-- Or use this section to tell about upstream BTS. -->
+    <title>BUGS</title>
+    <para>The program is currently limited to only work
+      with the <package>foobar</package> library.</para>
+    <para>The upstreams <acronym>BTS</acronym> can be found
+      at <ulink url="http://bugzilla.foo.tld"/>.</para>
+  </refsect1>
+  <refsect1 id="see_also">
+    <title>SEE ALSO</title>
+    <!-- In alpabetical order. -->
+    <para><citerefentry>
+        <refentrytitle>bar</refentrytitle>
+        <manvolnum>1</manvolnum>
+      </citerefentry>, <citerefentry>
+        <refentrytitle>baz</refentrytitle>
+        <manvolnum>1</manvolnum>
+      </citerefentry>, <citerefentry>
+        <refentrytitle>foo.conf</refentrytitle>
+        <manvolnum>5</manvolnum>
+      </citerefentry></para>
+    <para>The programs are documented fully by <citetitle>The Rise and
+      Fall of a Fooish Bar</citetitle> available via the <citerefentry>
+        <refentrytitle>info</refentrytitle>
+        <manvolnum>1</manvolnum>
+      </citerefentry> system.</para>
+  </refsect1>
+</refentry>
+
diff --git a/debian/menu.ex b/debian/menu.ex
new file mode 100644 (file)
index 0000000..1452157
--- /dev/null
@@ -0,0 +1,2 @@
+?package(zouba):needs="X11|text|vc|wm" section="Applications/see-menu-manual"\
+  title="zouba" command="/usr/bin/zouba"
diff --git a/debian/postinst.ex b/debian/postinst.ex
new file mode 100644 (file)
index 0000000..a6404b3
--- /dev/null
@@ -0,0 +1,41 @@
+#!/bin/sh
+# postinst script for zouba
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <postinst> `configure' <most-recently-configured-version>
+#        * <old-postinst> `abort-upgrade' <new version>
+#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
+#          <new-version>
+#        * <postinst> `abort-remove'
+#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
+#          <failed-install-package> <version> `removing'
+#          <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+    configure)
+    ;;
+
+    abort-upgrade|abort-remove|abort-deconfigure)
+    ;;
+
+    *)
+        echo "postinst called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/debian/postrm.ex b/debian/postrm.ex
new file mode 100644 (file)
index 0000000..09f682e
--- /dev/null
@@ -0,0 +1,39 @@
+#!/bin/sh
+# postrm script for zouba
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <postrm> `remove'
+#        * <postrm> `purge'
+#        * <old-postrm> `upgrade' <new-version>
+#        * <new-postrm> `failed-upgrade' <old-version>
+#        * <new-postrm> `abort-install'
+#        * <new-postrm> `abort-install' <old-version>
+#        * <new-postrm> `abort-upgrade' <old-version>
+#        * <disappearer's-postrm> `disappear' <overwriter>
+#          <overwriter-version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+    purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+    ;;
+
+    *)
+        echo "postrm called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/debian/preinst.ex b/debian/preinst.ex
new file mode 100644 (file)
index 0000000..d4873d1
--- /dev/null
@@ -0,0 +1,37 @@
+#!/bin/sh
+# preinst script for zouba
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <new-preinst> `install'
+#        * <new-preinst> `install' <old-version>
+#        * <new-preinst> `upgrade' <old-version>
+#        * <old-preinst> `abort-upgrade' <new-version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+    install|upgrade)
+    ;;
+
+    abort-upgrade)
+    ;;
+
+    *)
+        echo "preinst called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/debian/prerm.ex b/debian/prerm.ex
new file mode 100644 (file)
index 0000000..76b8d2d
--- /dev/null
@@ -0,0 +1,40 @@
+#!/bin/sh
+# prerm script for zouba
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <prerm> `remove'
+#        * <old-prerm> `upgrade' <new-version>
+#        * <new-prerm> `failed-upgrade' <old-version>
+#        * <conflictor's-prerm> `remove' `in-favour' <package> <new-version>
+#        * <deconfigured's-prerm> `deconfigure' `in-favour'
+#          <package-being-installed> <version> `removing'
+#          <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+    remove|upgrade|deconfigure)
+    ;;
+
+    failed-upgrade)
+    ;;
+
+    *)
+        echo "prerm called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/debian/rules b/debian/rules
new file mode 100755 (executable)
index 0000000..f8b4404
--- /dev/null
@@ -0,0 +1,92 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+# Sample debian/rules that uses debhelper.
+# This file was originally written by Joey Hess and Craig Small.
+# As a special exception, when this file is copied by dh-make into a
+# dh-make output file, you may use that output file without restriction.
+# This special exception was added by Craig Small in version 0.37 of dh-make.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+
+
+
+
+configure: configure-stamp
+configure-stamp:
+       dh_testdir
+       # Add here commands to configure the package.
+
+       qmake
+       touch configure-stamp
+
+
+build: build-stamp
+
+build-stamp: configure-stamp  
+       dh_testdir
+
+       # Add here commands to compile the package.
+       $(MAKE)
+       #docbook-to-man debian/zouba.sgml > zouba.1
+
+       touch $@
+
+clean: 
+       dh_testdir
+       dh_testroot
+       rm -f build-stamp configure-stamp
+
+       # Add here commands to clean up after the build process.
+       -$(MAKE) clean
+
+       dh_clean 
+
+install: build
+       dh_testdir
+       dh_testroot
+       dh_clean -k 
+       dh_installdirs
+
+       # Add here commands to install the package into debian/zouba.
+       $(MAKE) INSTALL_ROOT="$(CURDIR)"/debian/zouba install
+
+
+# Build architecture-independent files here.
+binary-indep: build install
+# We have nothing to do by default.
+
+# Build architecture-dependent files here.
+binary-arch: build install
+       dh_testdir
+       dh_testroot
+       dh_installchangelogs 
+       dh_installdocs
+       dh_installexamples
+#      dh_install
+#      dh_installmenu
+#      dh_installdebconf       
+#      dh_installlogrotate
+#      dh_installemacsen
+#      dh_installpam
+#      dh_installmime
+#      dh_python
+#      dh_installinit
+#      dh_installcron
+#      dh_installinfo
+       dh_installman
+       dh_link
+       dh_strip
+       dh_compress
+       dh_fixperms
+#      dh_perl
+#      dh_makeshlibs
+       dh_installdeb
+       dh_shlibdeps
+       dh_gencontrol
+       dh_md5sums
+       dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install configure
diff --git a/debian/watch.ex b/debian/watch.ex
new file mode 100644 (file)
index 0000000..658e247
--- /dev/null
@@ -0,0 +1,23 @@
+# Example watch control file for uscan
+# Rename this file to "watch" and then you can run the "uscan" command
+# to check for upstream updates and more.
+# See uscan(1) for format
+
+# Compulsory line, this is a version 3 file
+version=3
+
+# Uncomment to examine a Webpage
+# <Webpage URL> <string match>
+#http://www.example.com/downloads.php zouba-(.*)\.tar\.gz
+
+# Uncomment to examine a Webserver directory
+#http://www.example.com/pub/zouba-(.*)\.tar\.gz
+
+# Uncommment to examine a FTP server
+#ftp://ftp.example.com/pub/zouba-(.*)\.tar\.gz debian uupdate
+
+# Uncomment to find new files on sourceforge, for devscripts >= 2.9
+# http://sf.net/zouba/zouba-(.*)\.tar\.gz
+
+# Uncomment to find new files on GooglePages
+# http://example.googlepages.com/foo.html zouba-(.*)\.tar\.gz
diff --git a/debian/zouba.debhelper.log b/debian/zouba.debhelper.log
new file mode 100644 (file)
index 0000000..44e74eb
--- /dev/null
@@ -0,0 +1,432 @@
+dh_installdirs
+dh_installchangelogs
+dh_installdocs
+dh_installexamples
+dh_installman
+dh_link
+dh_strip
+dh_compress
+dh_fixperms
+dh_installdeb
+dh_installdirs
+dh_installchangelogs
+dh_installdocs
+dh_installexamples
+dh_installman
+dh_link
+dh_strip
+dh_compress
+dh_fixperms
+dh_installdeb
+dh_installdirs
+dh_installchangelogs
+dh_installdocs
+dh_installexamples
+dh_installman
+dh_link
+dh_strip
+dh_compress
+dh_fixperms
+dh_installdeb
+dh_installdirs
+dh_installchangelogs
+dh_installdocs
+dh_installexamples
+dh_installman
+dh_link
+dh_strip
+dh_compress
+dh_fixperms
+dh_installdeb
+dh_installdirs
+dh_installchangelogs
+dh_installdocs
+dh_installexamples
+dh_installman
+dh_link
+dh_strip
+dh_compress
+dh_fixperms
+dh_installdeb
+dh_installdirs
+dh_installchangelogs
+dh_installdocs
+dh_installexamples
+dh_installman
+dh_link
+dh_strip
+dh_compress
+dh_fixperms
+dh_installdeb
+dh_gencontrol
+dh_md5sums
+dh_builddeb
+dh_installdirs
+dh_installdirs
+dh_installchangelogs
+dh_installdocs
+dh_installexamples
+dh_installman
+dh_link
+dh_strip
+dh_compress
+dh_fixperms
+dh_installdeb
+dh_gencontrol
+dh_md5sums
+dh_builddeb
+dh_installdirs
+dh_installchangelogs
+dh_installdocs
+dh_installexamples
+dh_installman
+dh_link
+dh_strip
+dh_compress
+dh_fixperms
+dh_installdeb
+dh_gencontrol
+dh_md5sums
+dh_builddeb
+dh_installdirs
+dh_installchangelogs
+dh_installdocs
+dh_installexamples
+dh_installman
+dh_link
+dh_strip
+dh_compress
+dh_fixperms
+dh_installdeb
+dh_gencontrol
+dh_md5sums
+dh_builddeb
+dh_installdirs
+dh_installdirs
+dh_installdirs
+dh_installchangelogs
+dh_installdocs
+dh_installexamples
+dh_installman
+dh_link
+dh_strip
+dh_compress
+dh_fixperms
+dh_installdeb
+dh_gencontrol
+dh_md5sums
+dh_builddeb
+dh_installdirs
+dh_installdirs
+dh_installdirs
+dh_installchangelogs
+dh_installdocs
+dh_installexamples
+dh_installman
+dh_link
+dh_strip
+dh_compress
+dh_fixperms
+dh_installdeb
+dh_gencontrol
+dh_md5sums
+dh_builddeb
+dh_installdirs
+dh_installchangelogs
+dh_installdocs
+dh_installexamples
+dh_installman
+dh_link
+dh_strip
+dh_compress
+dh_fixperms
+dh_installdeb
+dh_gencontrol
+dh_md5sums
+dh_builddeb
+dh_installdirs
+dh_installchangelogs
+dh_installdocs
+dh_installexamples
+dh_installman
+dh_link
+dh_strip
+dh_compress
+dh_fixperms
+dh_installdeb
+dh_gencontrol
+dh_md5sums
+dh_builddeb
+dh_installdirs
+dh_installchangelogs
+dh_installdocs
+dh_installexamples
+dh_installman
+dh_link
+dh_strip
+dh_compress
+dh_fixperms
+dh_installdeb
+dh_gencontrol
+dh_md5sums
+dh_builddeb
+dh_installdirs
+dh_installchangelogs
+dh_installdocs
+dh_installexamples
+dh_installman
+dh_link
+dh_strip
+dh_compress
+dh_fixperms
+dh_installdeb
+dh_gencontrol
+dh_md5sums
+dh_builddeb
+dh_installdirs
+dh_installchangelogs
+dh_installdocs
+dh_installexamples
+dh_installman
+dh_link
+dh_strip
+dh_compress
+dh_fixperms
+dh_installdeb
+dh_gencontrol
+dh_md5sums
+dh_builddeb
+dh_installdirs
+dh_installchangelogs
+dh_installdocs
+dh_installexamples
+dh_installman
+dh_link
+dh_strip
+dh_compress
+dh_fixperms
+dh_installdeb
+dh_gencontrol
+dh_md5sums
+dh_builddeb
+dh_installdirs
+dh_installchangelogs
+dh_installdocs
+dh_installexamples
+dh_installman
+dh_link
+dh_strip
+dh_compress
+dh_fixperms
+dh_installdeb
+dh_gencontrol
+dh_md5sums
+dh_builddeb
+dh_installdirs
+dh_installchangelogs
+dh_installdocs
+dh_installexamples
+dh_installman
+dh_link
+dh_strip
+dh_compress
+dh_fixperms
+dh_installdeb
+dh_gencontrol
+dh_md5sums
+dh_builddeb
+dh_installdirs
+dh_installchangelogs
+dh_installdocs
+dh_installexamples
+dh_installman
+dh_link
+dh_strip
+dh_compress
+dh_fixperms
+dh_installdeb
+dh_gencontrol
+dh_md5sums
+dh_builddeb
+dh_installdirs
+dh_installchangelogs
+dh_installdocs
+dh_installexamples
+dh_installman
+dh_link
+dh_strip
+dh_compress
+dh_fixperms
+dh_installdeb
+dh_gencontrol
+dh_md5sums
+dh_builddeb
+dh_installdirs
+dh_installchangelogs
+dh_installdocs
+dh_installexamples
+dh_installman
+dh_link
+dh_strip
+dh_compress
+dh_fixperms
+dh_installdeb
+dh_gencontrol
+dh_md5sums
+dh_builddeb
+dh_installdirs
+dh_installchangelogs
+dh_installdocs
+dh_installexamples
+dh_installman
+dh_link
+dh_strip
+dh_compress
+dh_fixperms
+dh_installdeb
+dh_gencontrol
+dh_md5sums
+dh_builddeb
+dh_installdirs
+dh_installchangelogs
+dh_installdocs
+dh_installexamples
+dh_installman
+dh_link
+dh_strip
+dh_compress
+dh_fixperms
+dh_installdeb
+dh_gencontrol
+dh_md5sums
+dh_builddeb
+dh_installdirs
+dh_installchangelogs
+dh_installdocs
+dh_installexamples
+dh_installman
+dh_link
+dh_strip
+dh_compress
+dh_fixperms
+dh_installdeb
+dh_gencontrol
+dh_md5sums
+dh_builddeb
+dh_installdirs
+dh_installchangelogs
+dh_installdocs
+dh_installexamples
+dh_installman
+dh_link
+dh_strip
+dh_compress
+dh_fixperms
+dh_installdeb
+dh_gencontrol
+dh_md5sums
+dh_builddeb
+dh_installdirs
+dh_installchangelogs
+dh_installdocs
+dh_installexamples
+dh_installman
+dh_link
+dh_strip
+dh_compress
+dh_fixperms
+dh_installdeb
+dh_gencontrol
+dh_md5sums
+dh_builddeb
+dh_installdirs
+dh_installchangelogs
+dh_installdocs
+dh_installexamples
+dh_installman
+dh_link
+dh_strip
+dh_compress
+dh_fixperms
+dh_installdeb
+dh_gencontrol
+dh_md5sums
+dh_builddeb
+dh_installdirs
+dh_installchangelogs
+dh_installdocs
+dh_installexamples
+dh_installman
+dh_link
+dh_strip
+dh_compress
+dh_fixperms
+dh_installdeb
+dh_gencontrol
+dh_md5sums
+dh_builddeb
+dh_installdirs
+dh_installchangelogs
+dh_installdocs
+dh_installexamples
+dh_installman
+dh_link
+dh_strip
+dh_compress
+dh_fixperms
+dh_installdeb
+dh_gencontrol
+dh_md5sums
+dh_builddeb
+dh_installdirs
+dh_installchangelogs
+dh_installdocs
+dh_installexamples
+dh_installman
+dh_link
+dh_strip
+dh_compress
+dh_fixperms
+dh_installdeb
+dh_gencontrol
+dh_md5sums
+dh_builddeb
+dh_installdirs
+dh_installchangelogs
+dh_installdocs
+dh_installexamples
+dh_installman
+dh_link
+dh_strip
+dh_compress
+dh_fixperms
+dh_installdeb
+dh_gencontrol
+dh_md5sums
+dh_builddeb
+dh_installdirs
+dh_installchangelogs
+dh_installdocs
+dh_installexamples
+dh_installman
+dh_link
+dh_strip
+dh_compress
+dh_fixperms
+dh_installdeb
+dh_gencontrol
+dh_md5sums
+dh_builddeb
+dh_installdirs
+dh_installchangelogs
+dh_installdocs
+dh_installexamples
+dh_installman
+dh_link
+dh_strip
+dh_compress
+dh_fixperms
+dh_installdeb
+dh_gencontrol
+dh_md5sums
+dh_builddeb
diff --git a/debian/zouba.default.ex b/debian/zouba.default.ex
new file mode 100644 (file)
index 0000000..5af76cd
--- /dev/null
@@ -0,0 +1,10 @@
+# Defaults for zouba initscript
+# sourced by /etc/init.d/zouba
+# installed at /etc/default/zouba by the maintainer scripts
+
+#
+# This is a POSIX shell fragment
+#
+
+# Additional options that are passed to the Daemon.
+DAEMON_OPTS=""
diff --git a/debian/zouba.doc-base.EX b/debian/zouba.doc-base.EX
new file mode 100644 (file)
index 0000000..fe69624
--- /dev/null
@@ -0,0 +1,22 @@
+Document: zouba
+Title: Debian zouba Manual
+Author: <insert document author here>
+Abstract: This manual describes what zouba is
+ and how it can be used to
+ manage online manuals on Debian systems.
+Section: unknown
+
+Format: debiandoc-sgml
+Files: /usr/share/doc/zouba/zouba.sgml.gz
+
+Format: postscript
+Files: /usr/share/doc/zouba/zouba.ps.gz
+
+Format: text
+Files: /usr/share/doc/zouba/zouba.text.gz
+
+Format: HTML
+Index: /usr/share/doc/zouba/html/index.html
+Files: /usr/share/doc/zouba/html/*.html
+
+
diff --git a/debian/zouba.tarlist b/debian/zouba.tarlist
new file mode 100644 (file)
index 0000000..a1dcb65
--- /dev/null
@@ -0,0 +1,18 @@
+755 root root . usr  /
+755 root root . usr/share  /
+755 root root . usr/share/doc  /
+755 root root . usr/share/doc/zouba  /
+644 root root . usr/share/doc/zouba/changelog.gz debian/zouba/usr/share/doc/zouba/changelog.gz
+644 root root . usr/share/doc/zouba/README.Debian debian/zouba/usr/share/doc/zouba/README.Debian
+644 root root . usr/share/doc/zouba/copyright debian/zouba/usr/share/doc/zouba/copyright
+755 root root . usr/share/applications  /
+755 root root . usr/share/applications/hildon  /
+644 root root . usr/share/applications/hildon/zouba.desktop debian/zouba/usr/share/applications/hildon/zouba.desktop
+755 root root . usr/share/icons  /
+755 root root . usr/share/icons/hicolor  /
+755 root root . usr/share/icons/hicolor/64x64  /
+755 root root . usr/share/icons/hicolor/64x64/apps  /
+644 root root . usr/share/icons/hicolor/64x64/apps/zouba.png debian/zouba/usr/share/icons/hicolor/64x64/apps/zouba.png
+755 root root . usr/bin  /
+755 root root . usr/bin/zouba  debian/zouba/usr/bin/zouba
+755 root root . usr/sbin  /
diff --git a/doc/coordinate_systems/JHS153.pdf b/doc/coordinate_systems/JHS153.pdf
deleted file mode 100644 (file)
index e8f19a7..0000000
Binary files a/doc/coordinate_systems/JHS153.pdf and /dev/null differ
diff --git a/doc/coordinate_systems/JHS154.pdf b/doc/coordinate_systems/JHS154.pdf
deleted file mode 100644 (file)
index 64ba018..0000000
Binary files a/doc/coordinate_systems/JHS154.pdf and /dev/null differ
diff --git a/doc/coordinate_systems/JHS154_liite1.pdf b/doc/coordinate_systems/JHS154_liite1.pdf
deleted file mode 100644 (file)
index 32fd19b..0000000
Binary files a/doc/coordinate_systems/JHS154_liite1.pdf and /dev/null differ
diff --git a/doc/coordinate_systems/JHS154_liite2.pdf b/doc/coordinate_systems/JHS154_liite2.pdf
deleted file mode 100644 (file)
index 8136b07..0000000
Binary files a/doc/coordinate_systems/JHS154_liite2.pdf and /dev/null differ
diff --git a/doc/coordinate_systems/coordtrans.fgi.fi b/doc/coordinate_systems/coordtrans.fgi.fi
deleted file mode 100644 (file)
index 8112c5a..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-[Desktop Entry]
-Icon=text-html
-Type=Link
-URL[$e]=http://coordtrans.fgi.fi/
-X-Ubuntu-Gettext-Domain=desktop_kdebase
diff --git a/doc/coordinate_systems/kkjgps.htm b/doc/coordinate_systems/kkjgps.htm
deleted file mode 100644 (file)
index 5a3a833..0000000
+++ /dev/null
@@ -1,1239 +0,0 @@
-<html><head>
-
-
-<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
-<meta name="author" content="Eino Uikkanen">
-<meta name="keywords" content="ETRS-TM35FIN ETRS-GK KKJ YKJ ETRS89 ETRF89 EUREF-FIN">
-<meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">
-<title>Suomalaiset koordinaatistot</title>
-<link rev="made" href="mailto:eino.uikkanen@iki.fi">
-</head><body bgcolor="#ffffff">
-
-<h1><a href="http://www.kolumbus.fi/eino.uikkanen/index.htm"><font face="Verdana" size="2">Eino
-Uikkasen kotisivu</font></a><font face="Verdana" size="2"> &gt; </font><a href="http://www.kolumbus.fi/eino.uikkanen/geodocs/kkjgps.htm"><font face="Verdana" size="2">Suomalaiset
-koordinaatistot</font></a><font face="Verdana" size="2"> -
-päivitetty <!--webbot bot="Timestamp" startspan s-type="EDITED"\r
-s-format="%d.%m.%Y" -->18.10.2009<!--webbot bot="Timestamp"\r
-i-checksum="12483" endspan --></font></h1>
-
-<hr color="#808080" noshade="noshade">
-
-<h1><a name="Suomessa käytössä olevat koordinaatistot ja GPS"><font face="Verdana" size="2">Suomessa käytössä olevat
-vaakakoordinaatistot</font></a></h1>
-
-<blockquote>
-    <p><font face="Verdana" size="2">Tämä artikkeli on lyhyt
-    kuvaus Suomessa käytetyistä vaakakoordinaatistoista, joista
-    lista taulussa 1.</font></p>
-</blockquote>
-
-<blockquote>
-    <table border="6">
-        <tbody><tr>
-            <td colspan="4"><font face="Verdana" size="2"><strong>Taulu
-            1, Suomalaiset koordinaatistot</strong></font></td>
-        </tr>
-        <tr>
-            <td><font face="Verdana" size="2"><strong>Tunnus</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>Nimi</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>Käytetty
-            kartantuotannossa</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>Kommentti</strong></font></td>
-        </tr>
-        <tr>
-            <td><font face="Verdana" size="2">VVJ</font></td>
-            <td><font face="Verdana" size="2">Helsingin
-            järjestelmä</font></td>
-            <td><font face="Verdana" size="2">-1970</font></td>
-            <td><font face="Verdana" size="2">Edelleen
-            käytössä eräissä kaupungeissa</font></td>
-        </tr>
-        <tr>
-            <td><font face="Verdana" size="2">ED50</font></td>
-            <td><font face="Verdana" size="2">European Datum 1950
-            </font></td>
-            <td><font face="Verdana" size="2">Ei koskaan</font></td>
-            <td><font face="Verdana" size="2">Kansallinen
-            tasoitus 1966</font></td>
-        </tr>
-        <tr>
-            <td><font face="Verdana" size="2">KKJ</font></td>
-            <td><font face="Verdana" size="2">Kartastokoordinaattijärjestelmä</font></td>
-            <td><font face="Verdana" size="2">1970-2005</font></td>
-            <td><font face="Verdana" size="2">Perustuu ED50
-            koordinaatistoon</font></td>
-        </tr>
-        <tr>
-            <td><font face="Verdana" size="2">EUREF-FIN</font></td>
-            <td><font face="Verdana" size="2">EUREF-FIN</font></td>
-            <td><font face="Verdana" size="2">2003- merikartat,
-            2005- maastokartat</font></td>
-            <td><font face="Verdana" size="2">ETRS89 realisaatio
-            Suomessa</font></td>
-        </tr>
-    </tbody></table>
-    <p><font face="Verdana" size="2">Artikkelista löytyy
-    englanninkielinen versio sivulta: </font><a href="http://www.kolumbus.fi/eino.uikkanen/geodocsgb/ficoords.htm"><font face="Verdana" size="2">Finnish coordinate systems</font></a></p>
-    <p><font face="Verdana" size="2">Suomessa käytössä
-    olevista korkeusjärjestelmistä löytyy kirjoitus sivulta: </font><a href="http://www.kolumbus.fi/eino.uikkanen/geodocs/korkeudet.htm"><font face="Verdana" size="2">Suomen
-    korkeusjärjestelmät</font></a></p>
-    <p><font face="Verdana" size="2">Vastaan mieluusti
-    artikkeliin liittyviin kysymyksiin ja kommentteihin
-    osoitteessa </font><a href="mailto:eino.uikkanen@iki.fi"><font face="Verdana" size="2">eino.uikkanen@iki.fi</font></a><font face="Verdana" size="2">.</font></p>
-</blockquote>
-
-<h1><font face="Verdana" size="2">KKJ:n edeltäjä, Helsingin
-järjestelmä alias VVJ, -1970</font></h1>
-
-<blockquote>
-    <p><font face="Verdana" size="2">Ennen KKJ:n käyttöönottoa
-    kartastotöissä käytettiin järjestelmää nimeltä 'Helsingin
-    järjestelmä' alias VVJ, Vanha Valtion Järjestelmä.
-    Siirtyminen VVJ:stä KKJ:hin aloitettiin 1970, mutta VVJ:n
-    mukaisia koordinaatteja on vieläkin käytössä eräissä
-    kunnissa. </font></p>
-    <p><font face="Verdana" size="2">KKJ ei millään tavalla
-    pohjaudu VVJ:hin, vaan ED50-koordinaatistoon ja sen
-    kansalliseen laajennukseen, mutta KKJ määriteltiin
-    kierrettäväksi tasossa siten, että se mahdollisimman hyvin
-    yhtyy vanhaan VVJ-koordinaatistoon. Tällä saavutettiin se
-    etu, että vanhoja karttoja voitiin käyttää ylimenokauden
-    ajan tarvitsematta ottaa huomioon koordinaattijärjestelmän
-    muutosta. Jos siis kartassa on VVJ-koordinaatisto, sitä voi
-    käsitellä kuten kartta olisi tehty KKJ-koordinaatiston
-    mukaisesti, huomioiden kuitenkin seuraavat erot VVJ- ja KKJ-koordinaattien
-    arvoissa ja esitysmuodoissa:</font></p>
-    <ul>
-        <li><font face="Verdana" size="2">VVJ-koordinaattien ja
-            KKJ-koordinaattien ero on keskimäärin 2 m (Suomen
-            kartasto, vihko 112, sivu 11, 1984). Eroissa
-            kannattaa varautua suuriin alueellisiin vaihteluihin
-            ja suurimmillaan 10 m virheisiin.</font></li>
-        <li><font face="Verdana" size="2">VVJ y-koordinaatti
-            esitetään ilman edeltävää kaistanumeroa, jonka
-            sijalla saattaa olla keskimeridiaanin arvo asteina,
-            esim. jos KKJ y-koordinaatti on 3511666, niin VVJ y-koordinaatti
-            voidaan esittää muodossa 511666 tai 27°511666</font></li>
-        <li><font face="Verdana" size="2">VVJ-koordinaatiston
-            koordinaateista jätettiin usein pois tuhannet ja
-            jopa sadat kilometrit</font></li>
-    </ul>
-</blockquote>
-
-<h1><font face="Verdana" size="2"><strong>ED50-järjestelmä,
-European datum 1950, Suomen kansallinen tasoitus 1966</strong></font></h1>
-
-<blockquote>
-    <p><font face="Verdana" size="2">European Datum 1959 (ED50)
-    perustuu 1950-luvulla tehtyyn Euroopan laajuiseen
-    kolmioverkkojen yhteistasoitukseen. Suomen ED50-järjestelmä
-    perustuu v. 1966 tehtyyn ensimmäisen luokan kolmioverkkojen
-    tasoitukseen, jonka lähtöpisteet otettiin eurooppalaisesta
-    tasoituksesta (Korhonen Jorma, 1967). Tämän kansallisen
-    tasoituksen lopputulosta, ED50-koordinaatistoa, ei ole
-    Suomessa koskaan käytetty karttatuotannossa ja siksi ei ole
-    missään tilanteessa mielekästä laittaa GPS-laitteeseen
-    tai karttaohjelmaan ED50:n mukaisia asetuksia, vaikka monissa
-    lähteissä näin kehotetaan tekemään. ED50 koordinaatisto
-    on kuitenkin varsin merkityksellinen, sillä se on ollut
-    pohjana Suomessa vuonna 1970 käyttöönotetulle KKJ-koordinaatistolle.</font></p>
-</blockquote>
-
-<h1><a name="KKJ-koordinaatisto"><font face="Verdana" size="2">KKJ-koordinaatisto</font></a><font face="Verdana" size="2">, kartastokoordinaattijärjestelmä, 1970
-- 2003/2005</font></h1>
-
-<blockquote>
-    <p><font face="Verdana" size="2">KKJ-koordinaatisto on
-    johdettu ED50-koordinaatistosta (Suomen kansallinen tasoitus
-    1966) siirtämällä ja kiertämällä ED50-koordinaatistoa
-    siten, että se mahdollisimman hyvin yhtyy KKJ:n
-    edeltäjään eli VVJ-koordinaatistoon.</font></p>
-    <p><font face="Verdana" size="2">KKJ:n yhteydessä
-    käytetään referenssiellipsoidina Hayfordin ellipsoidia,
-    joka tunnetaan myös nimellä International 1924. Taulussa 2
-    on kuvattu Hayfordin ellipsoidin parametrit, isoakselin
-    puolikkaan pituus metreinä ja litistyssuhde eli flattening,
-    joka lasketaan kaavalla (isoakseli-pikkuakseli)/isoakseli.
-    Näitä arvoja ei usein ilmoiteta suoraan, vaan
-    vähennettynä WGS84-ellipsoidin vastaavista luvuista,
-    jolloin litistyssuhteiden erotus kerrotaan vielä luvulla
-    10000. Siksi taulussa 2 esitetään myös WGS84 ellipsoidin
-    parametrit sekä parametrien arvojen erotukset (DA,DF) . </font></p>
-    <table border="6">
-        <tbody><tr>
-            <td colspan="6"><font face="Verdana" size="2"><strong>Taulu
-            2, Hayford eli International 1924 ja WGS84
-            ellipsoidit</strong></font></td>
-        </tr>
-        <tr>
-            <td><font face="Verdana" size="2"><strong>Parametri</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>Selite</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>Yksikkö</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>WGS84</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>Hayford</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>WGS84-Hayford</strong></font></td>
-        </tr>
-        <tr>
-            <td><font face="Verdana" size="2">A, DA</font></td>
-            <td><font face="Verdana" size="2">Isoakselin puolikas</font></td>
-            <td><font face="Verdana" size="2">metri</font></td>
-            <td><font face="Verdana" size="2">6378137</font></td>
-            <td><font face="Verdana" size="2">6378388</font></td>
-            <td><font face="Verdana" size="2">-251</font></td>
-        </tr>
-        <tr>
-            <td><font face="Verdana" size="2">F, DF</font></td>
-            <td><font face="Verdana" size="2">Litistyssuhde</font></td>
-            <td>&nbsp;</td>
-            <td><font face="Verdana" size="2">1/298.257223563</font></td>
-            <td><font face="Verdana" size="2">1/297</font></td>
-            <td><font face="Verdana" size="2">-0.14192702256</font></td>
-        </tr>
-    </tbody></table>
-    <p><font face="Verdana" size="2">KKJ-koordinaatit voidaan
-    esittää joko maantieteellisinä koordinaatteina (leveys,
-    pituus) tai tasokoordinaatteina (pohjois- ja itäkoordinaatti),
-    jotka johdetaan maantieteellisistä koordinaateista Gauss-Krüger-projektiokaavalla.
-    Koska KKJ on kaksiulotteinen koordinaatisto, siihen ei liity
-    mitään määritelmää korkeudesta. Jos KKJ:n yhteydessä
-    kuitenkin annetaan korkeus, se on aina ortometrinen korkeus
-    kansallisessa korkeussysteemissä (esim. N60). </font></p>
-    <p><font face="Verdana" size="2">KKJ-tasokoordinaatisto
-    koostuu kuudesta (0-5) kolme astetta leveästä kaistasta.
-    Usein esitetään vain kaistat 1-4, jotka peittävät melkein
-    koko Suomen, mutta joskus esitetään myös kaistat 0 ja 5.
-    Tätä kuudesta kolme astetta leveästä kaistasta koostuvaa
-    koordinaatistoa kutsutaan nimellä 'Peruskoordinaatisto'.
-    Tämän lisäksi kaistan 3 parametreja käytetään
-    valtakunnanlaajuisesti. Tätä valtakunnanlaajuista yhden
-    kaistan koordinaatistoa kutsutaan nimellä 'Yhtenäiskoordinaatisto'.
-    Maastokartoissa peruskoordinaatisto esitetään mustalla
-    ruudukolla ja yhtenäiskoordinaatisto punaisella ruudukolla.</font></p>
-    <table border="6">
-        <tbody><tr>
-            <td colspan="7"><font face="Verdana" size="2"><strong>Taulu
-            3, KKJ peruskoordinaatisto, musta ruudukko</strong></font></td>
-        </tr>
-        <tr>
-            <td><font face="Verdana" size="2"><strong>Projektio</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>Ellipsoidi</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>Kaista</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>Keskusmeridiaani</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>Valeitä</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>Mittakaavakerroin
-            keskusmeridiaanilla</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>Kaistan
-            leveys</strong></font></td>
-        </tr>
-        <tr>
-            <td><font face="Verdana" size="2"><strong>Projection</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>Ellipsoid</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>Zone</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>Central
-            meridian</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>False
-            Easting</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>Scale
-            factor at Central Meridian</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>Zone width</strong></font></td>
-        </tr>
-        <tr>
-            <td><font face="Verdana" size="2">KKJ</font></td>
-            <td><font face="Verdana" size="2">International 1924</font></td>
-            <td><font face="Verdana" size="2">0</font></td>
-            <td><font face="Verdana" size="2">18</font></td>
-            <td><font face="Verdana" size="2">500000</font></td>
-            <td><font face="Verdana" size="2">1.000</font></td>
-            <td><font face="Verdana" size="2">3</font></td>
-        </tr>
-        <tr>
-            <td><font face="Verdana" size="2">KKJ</font></td>
-            <td><font face="Verdana" size="2">International 1924</font></td>
-            <td><font face="Verdana" size="2">1</font></td>
-            <td><font face="Verdana" size="2">21</font></td>
-            <td><font face="Verdana" size="2">1500000</font></td>
-            <td><font face="Verdana" size="2">1.000</font></td>
-            <td><font face="Verdana" size="2">3</font></td>
-        </tr>
-        <tr>
-            <td><font face="Verdana" size="2">KKJ</font></td>
-            <td><font face="Verdana" size="2">International 1924</font></td>
-            <td><font face="Verdana" size="2">2</font></td>
-            <td><font face="Verdana" size="2">24</font></td>
-            <td><font face="Verdana" size="2">2500000</font></td>
-            <td><font face="Verdana" size="2">1.000</font></td>
-            <td><font face="Verdana" size="2">3</font></td>
-        </tr>
-        <tr>
-            <td><font face="Verdana" size="2">KKJ</font></td>
-            <td><font face="Verdana" size="2">International 1924</font></td>
-            <td><font face="Verdana" size="2">3</font></td>
-            <td><font face="Verdana" size="2">27</font></td>
-            <td><font face="Verdana" size="2">3500000</font></td>
-            <td><font face="Verdana" size="2">1.000</font></td>
-            <td><font face="Verdana" size="2">3</font></td>
-        </tr>
-        <tr>
-            <td><font face="Verdana" size="2">KKJ</font></td>
-            <td><font face="Verdana" size="2">International 1924</font></td>
-            <td><font face="Verdana" size="2">4</font></td>
-            <td><font face="Verdana" size="2">30</font></td>
-            <td><font face="Verdana" size="2">4500000</font></td>
-            <td><font face="Verdana" size="2">1.000</font></td>
-            <td><font face="Verdana" size="2">3</font></td>
-        </tr>
-        <tr>
-            <td><font face="Verdana" size="2">KKJ</font></td>
-            <td><font face="Verdana" size="2">International 1924</font></td>
-            <td><font face="Verdana" size="2">5</font></td>
-            <td><font face="Verdana" size="2">33</font></td>
-            <td><font face="Verdana" size="2">5500000</font></td>
-            <td><font face="Verdana" size="2">1.000</font></td>
-            <td><font face="Verdana" size="2">3</font></td>
-        </tr>
-    </tbody></table>
-    <p>&nbsp;</p>
-    <table border="6">
-        <tbody><tr>
-            <td colspan="7"><font face="Verdana" size="2"><strong>Taulu
-            4, KKJ yhtenäiskoordinaatisto YKJ, punainen ruudukko</strong></font></td>
-        </tr>
-        <tr>
-            <td><font face="Verdana" size="2"><strong>Projektio</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>Ellipsoidi</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>Kaista</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>Keskusmeridiaani</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>Valeitä</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>Mittakaavakerroin
-            keskusmeridiaanilla</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>Kaistan
-            leveys</strong></font></td>
-        </tr>
-        <tr>
-            <td><font face="Verdana" size="2"><strong>Projection</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>Ellipsoid</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>Zone</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>Central
-            Meridian</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>False
-            Easting</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>Scale
-            factor at Central Meridian</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>Zone width</strong></font></td>
-        </tr>
-        <tr>
-            <td><font face="Verdana" size="2">YKJ</font></td>
-            <td><font face="Verdana" size="2">International 1924</font></td>
-            <td><font face="Verdana" size="2">3</font></td>
-            <td><font face="Verdana" size="2">27</font></td>
-            <td><font face="Verdana" size="2">3500000</font></td>
-            <td><font face="Verdana" size="2">1.000</font></td>
-            <td><font face="Verdana" size="2">Koko Suomi (13)</font></td>
-        </tr>
-    </tbody></table>
-    <p><font face="Verdana" size="2">Ylläkuvattujen parametrien
-    lisäksi laitteissa esiintyy usein myös parametrit
-    valepohjoinen eli False Northing sekä Latitude of Origin -
-    näiden arvot ovat KKJ-koordinaattien laskennassa nollia.</font></p>
-    <p><font face="Verdana" size="2">Pisteen suorakulmaisten KKJ-koordinaattien
-    arvojen voidaan ajatella syntyvän seuraavasti:</font></p>
-</blockquote>
-
-<blockquote>
-    <ol>
-        <li><font face="Verdana" size="2">Siirrytään pisteestä
-            suorinta tietä keskimeridiaanille - matka metreinä
-            on y-koordinaatin alkuarvo. Arvo asetetaan
-            negatiiviseksi keskimeridiaanin länsipuolella ja
-            positiiviseksi itäpuolella. Esimerkiksi y=45107.</font></li>
-        <li><font face="Verdana" size="2">Siirrytään tästä
-            pisteestä edelleen keskimeridiaania myöten
-            päiväntasaajalle - matka metreinä on x-koordinaatin
-            arvo. Esimerkiksi x=6717563.</font></li>
-        <li><font face="Verdana" size="2">Jotta y-koordinaatin
-            arvo tulisi positiiviseksi molemmin puolin
-            keskimeridiaania, siihen lisätään 500000 metriä.
-            Tämä luku on nimeltään valeitä eli false easting.
-            Esimerkiksi y=545107.</font></li>
-        <li><font face="Verdana" size="2">Jotta kaistan
-            tunnistaisi suoraan koordinaattien arvosta,
-            lisätään y-koordinaatin eteen kaistan numero.
-            Esimerkiksi y=2545107.</font></li>
-        <li><font face="Verdana" size="2">Näin saatiin
-            koordinaattien arvoksi: x=6717563 ja y=2545107</font></li>
-    </ol>
-</blockquote>
-
-<blockquote>
-    <p><font face="Verdana" size="2">Kohtia 3 ja 4 ei yleensä
-    ajatella erillisinä, vaan kaistan numeron lisäys
-    huomioidaan valeidän arvossa. Esimerkiksi yllä valeitä
-    olisi 2 500 000 metriä.</font></p>
-    <p><font face="Verdana" size="2">Koska maapallo ei ole taso,
-    eivät suorakulmaiset xy-koordinaatit voi kuvata täsmälleen
-    pisteiden metrisiä etäisyyksiä, vaan
-    koordinaattipisteistä tasogeometrian keinoin lasketut
-    keskinäiset etäisyydet poikkeavat todellisista metrisistä
-    etäisyyksistä sitä enemmän, mitä kauempana ollaan
-    keskimeridiaanista. Tätä eroa kutsutaan nimellä 'projektiovirhe'.
-    Kyseessä ei kuitenkaan ole "virhe" vaan ero, joka
-    on tarkasti laskettavissa ja joka tulee ymmärtää ja
-    huomioida tarkoissa sovelluksissa. Normaalikäyttäjälle
-    projektiovirheellä ei ole vähäisintäkään merkitystä
-    edes yhtenäiskoordinaatistossa, jonka laidoilla se esiintyy
-    suurimpana. Huomaa erityisesti, että projektiovirhe
-    vaikuttaa vain mittakaavaan, eikä lainkaan koordinaattien
-    arvoihin. Koordinaattien arvot eivät siis ole epätarkempia
-    kaistan reunoilla.</font></p>
-    <p><font face="Verdana" size="2">Taulussa 5 esimerkkinä
-    samasta pisteestä eri muodoissa esitettyjä koordinaatteja.</font></p>
-    <table border="6">
-        <tbody><tr>
-            <td colspan="3"><font face="Verdana" size="2"><strong>Taulu
-            5, esimerkkejä koordinaattien arvoista</strong></font></td>
-        </tr>
-        <tr>
-            <td><font face="Verdana" size="2"><strong>Koordinaattityyppi</strong></font></td>
-            <td align="center"><font face="Verdana" size="2"><strong>leveys</strong></font></td>
-            <td align="center"><font face="Verdana" size="2"><strong>pituus</strong></font></td>
-        </tr>
-        <tr>
-            <td><font face="Verdana" size="2">WGS84
-            maantieteelliset</font></td>
-            <td><font face="Verdana" size="2">60.566077</font></td>
-            <td><font face="Verdana" size="2">24.819210</font></td>
-        </tr>
-        <tr>
-            <td><font face="Verdana" size="2">KKJ
-            maantieteelliset</font></td>
-            <td><font face="Verdana" size="2">60.565894</font></td>
-            <td><font face="Verdana" size="2">24.822422</font></td>
-        </tr>
-        <tr>
-            <td align="center">&nbsp;</td>
-            <td align="center"><font face="Verdana" size="2"><strong>x</strong></font></td>
-            <td align="center"><font face="Verdana" size="2"><strong>y</strong></font></td>
-        </tr>
-        <tr>
-            <td><font face="Verdana" size="2">KKJ suorakulmaiset,
-            kaista 2</font></td>
-            <td><font face="Verdana" size="2">6717563</font></td>
-            <td><font face="Verdana" size="2">2545107</font></td>
-        </tr>
-        <tr>
-            <td><font face="Verdana" size="2">KKJ suorakulmaiset,
-            kaista 3/YKJ</font></td>
-            <td><font face="Verdana" size="2">6719258</font></td>
-            <td><font face="Verdana" size="2">3380581</font></td>
-        </tr>
-    </tbody></table>
-</blockquote>
-
-<blockquote>
-    <p><font face="Verdana" size="2"><strong>Muuntoparametrit </strong></font><a name="Muunnos WGS84-koordinaatistosta KKJ-koordinaatistoon eli datum-muunnos"><font face="Verdana" size="2"><strong>EUREF-FIN(WGS84) ja -KKJ-koordinaatistojen
-    </strong></font></a><font face="Verdana" size="2"><strong>väliseen
-    yhdenmuotoisuusmuunnokseen </strong></font></p>
-</blockquote>
-
-<blockquote>
-    <p><font face="Verdana" size="2">Datumin, tässä tapauksessa
-    KKJ-koordinaatiston kuvaamiseen tarvitaan kahdenlaisia lukuja.
-    Toiset luvut kertovat, miten EUREF-FIN ja KKJ-koordinaatiston
-    pisteet muutetaan toisikseen kolmiulotteisissa X,Y,Z-koordinaatistoissa.
-    Toiset luvut kuvaavat ellipsoidin, jonka mukaan
-    kolmiulotteiset X,Y,Z-koordinaatit muunnetaan
-    maantieteellisiksi koordinaateiksi ja päinvastoin.</font></p>
-    <p><font face="Verdana" size="2">Muunnos datumien, esim.
-    EUREF-FIN:n ja KKJ:n välillä tapahtuu lähes kaikissa
-    harrastajalaitteissa kolmiulotteisella
-    yhdenmuotoisuusmuunnoksella. Yhdenmuotoisuusmuunnos tapahtuu
-    siten, että toisen koordinaatiston pisteitä siirretään ja
-    kierretään siten, että ne mahdollisimman hyvin yhtyvät
-    toisen koordinaatiston pisteisiin. Siirtojen ja kiertojen
-    lisäksi yhdenmuotoisuusmuunnokseen saattaa liittyä
-    mittakaavan muunnos. Näin ollen kaikki
-    yhdenmuotoisuusmuunnokset voidaan kuvata seitsemällä
-    luvulla: siirrot kolmeen suuntaan (3), kierrot kolmen akselin
-    ympäri (3) ja mittakaavamuunnos (1). Useissa
-    harrastajalaitteissa yhdenmuotoisuusmuunnoksesta tehdään
-    pelkästään siirrot eli yhdenmuotoisuusmuunnos kuvataan
-    vain kolmella luvulla, mikä heikentää muunnoksen
-    tarkkuutta. </font></p>
-    <p><font face="Verdana" size="2">Taulussa 6 on kuvattu
-    parhaat muunnosarvot seitsenparametristä ja
-    kolmiparametristä KKJ-WGS84-yhdenmuotoisuusmuunnosta varten.
-    Yhdenmuotoisuusmuunnosta tarkempia menetelmiä on kuvattu
-    julkisen hallinnon tiedotteessa 154: </font><a href="http://www.jhs-suositukset.fi/suomi/jhs154"><font face="Verdana" size="2">JHS154</font></a></p>
-    <p><font face="Verdana" size="2">Seitsenparametrisen
-    muunnoksen parametrit (sarake 1) ovat Geodeettisen Laitoksen
-    3D-muunnokselle KKJ-ETRF89 laskemat arvot. Laskenta on
-    suoritettu pienimmän neliösumman menetelmällä käyttäen
-    90 pistettä, jotka Geodeettinen Laitos on mitannut ETRF89-koordinaatiston
-    realisoinnin yhteydessä. Koko Suomea koskevan
-    yhdenmuotoisuusmuunnoksen parametreja siis tuskin juurikaan
-    voidaan tästä parantaa.</font></p>
-    <p><font face="Verdana" size="2">Taulukon kolmiparametristen
-    muunnosten parametrit (sarakkeet 2-4) olen laskenut itse
-    käyttäen Geodeettisen Laitoksen mittaamaa pisteistöä,
-    joka siis teki mahdolliseksi uusien tarkempien parametrien
-    laskennan myös kolmiparametrisille muunnoksille. Suoritin
-    laskennan yksinkertaisesti minimoimalla X-, Y- ja Z-akselien
-    suuntaisten virheiden aritmeettiset keskiarvot. Pyöristin
-    parametrien arvot kokonaisluvuiksi, koska useat GPS-laitteet
-    eivät ota vastaan desimaaleja siirtymäarvoissa. Sarakkeessa
-    2 kuvaan parametrit, jotka olen laskenut käytettäväksi
-    koko valtakunnan alueella. Sarakkeissa 3 ja 4 kuvaan
-    parametrit, jotka olen laskenut erikseen Etelä- ja Pohjois-Suomessa
-    käytettäväksi (leveys &lt;65 ja &gt;65 astetta).</font></p>
-    <p><font face="Verdana" size="2">Vertailun vuoksi olen
-    sarakkeessa 5 (harmaa sarake) esittänyt parametrit, jotka
-    ovat käytössä useimmissa GPS-laitteissa, joissa KKJ-muunnos
-    on valmiina. Nämä parametrit on laskenut Jukka Varonen /
-    Merenkulkulaitos vuonna 1989. Tämän jälkeen niitä on
-    sovellettu useimmissa GPS-laitteissa ja monissa
-    karttaohjelmissa lähes teollisuusstandardina. Parametrit on
-    laskettu käytettäväksi pelkästään merialueilla, mutta
-    ne pätevät silti koko Suomen alueella niin hyvin, ettei
-    tarkkuuserolla uusiin ja vartavasten koko Suomea varten
-    laskettuihin kolmiparametrisiin muunnoksiin ole mitään
-    käytännön merkitystä.</font></p>
-    <p><font face="Verdana" size="2">Taulukkoon liitetyt
-    tarkkuusarvot ovat laskemiani epävirallisia ja
-    tarkistamattomia arvoja. Olen laskenut kolmiparametristen
-    muunnosten tarkkuusarvot pyöristetyille parametrien arvoille
-    eli olen ensin pyöristänyt parametrit ja vasta sitten
-    laskenut tarkkuusarvot. Keski- ja maksimivirheestä on
-    huomattava, että ne tarkoittavat keskimääräistä ja
-    suurinta virhettä laskennassa käytetyssä, vaikkakin
-    edustavassa aineistossa - ei yleisesti keskimääräistä ja
-    suurinta mahdollista virhettä.</font></p>
-    <table border="6">
-        <tbody><tr>
-            <td colspan="8"><font face="Verdana" size="2"><strong>Taulu
-            6, Yhdenmuotoisuusmuunnoksen KKJ-WGS84(ETRF89)
-            parametreja</strong></font></td>
-        </tr>
-        <tr>
-            <td><font face="Verdana" size="2"><strong>Parametri</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>Selite</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>Yksikkö</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>1</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>2</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>3</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>4</strong></font></td>
-            <td bgcolor="#c0c0c0"><font face="Verdana" size="2"><strong>5</strong></font></td>
-        </tr>
-        <tr>
-            <td>&nbsp;</td>
-            <td><font face="Verdana" size="2">Sovellusalueen
-            leveysasteet</font></td>
-            <td>&nbsp;</td>
-            <td>&nbsp;</td>
-            <td>&nbsp;</td>
-            <td><font face="Verdana" size="2">&lt;65</font></td>
-            <td><font face="Verdana" size="2">&gt;65</font></td>
-            <td bgcolor="#c0c0c0">&nbsp;</td>
-        </tr>
-        <tr>
-            <td><font face="Verdana" size="2">DX</font></td>
-            <td><font face="Verdana" size="2">Siirto X-akselin
-            suunnassa</font></td>
-            <td><font face="Verdana" size="2">metri</font></td>
-            <td><font face="Verdana" size="2">-96.062</font></td>
-            <td><font face="Verdana" size="2">-75</font></td>
-            <td><font face="Verdana" size="2">-74</font></td>
-            <td><font face="Verdana" size="2">-76</font></td>
-            <td bgcolor="#c0c0c0"><font face="Verdana" size="2">-78</font></td>
-        </tr>
-        <tr>
-            <td><font face="Verdana" size="2">DY</font></td>
-            <td><font face="Verdana" size="2">Siirto Y-akselin
-            suunnassa</font></td>
-            <td><font face="Verdana" size="2">metri</font></td>
-            <td><font face="Verdana" size="2">-82.428</font></td>
-            <td><font face="Verdana" size="2">-230</font></td>
-            <td><font face="Verdana" size="2">-229</font></td>
-            <td><font face="Verdana" size="2">-232</font></td>
-            <td bgcolor="#c0c0c0"><font face="Verdana" size="2">-231</font></td>
-        </tr>
-        <tr>
-            <td><font face="Verdana" size="2">DZ</font></td>
-            <td><font face="Verdana" size="2">Siirto Z-akselin
-            suunnassa</font></td>
-            <td><font face="Verdana" size="2">metri</font></td>
-            <td><font face="Verdana" size="2">-121.754</font></td>
-            <td><font face="Verdana" size="2">-89</font></td>
-            <td><font face="Verdana" size="2">-88</font></td>
-            <td><font face="Verdana" size="2">-91</font></td>
-            <td bgcolor="#c0c0c0"><font face="Verdana" size="2">-97</font></td>
-        </tr>
-        <tr>
-            <td><font face="Verdana" size="2">rx</font></td>
-            <td><font face="Verdana" size="2">Kierto X-akselin
-            ympäri</font></td>
-            <td><font face="Verdana" size="2">sekunti</font></td>
-            <td><font face="Verdana" size="2">-4.801</font></td>
-            <td>&nbsp;</td>
-            <td>&nbsp;</td>
-            <td>&nbsp;</td>
-            <td bgcolor="#c0c0c0">&nbsp;</td>
-        </tr>
-        <tr>
-            <td><font face="Verdana" size="2">ry</font></td>
-            <td><font face="Verdana" size="2">Kierto Y-akselin
-            ympäri</font></td>
-            <td><font face="Verdana" size="2">sekunti</font></td>
-            <td><font face="Verdana" size="2">-0.345</font></td>
-            <td>&nbsp;</td>
-            <td>&nbsp;</td>
-            <td>&nbsp;</td>
-            <td bgcolor="#c0c0c0">&nbsp;</td>
-        </tr>
-        <tr>
-            <td><font face="Verdana" size="2">rz</font></td>
-            <td><font face="Verdana" size="2">Kierto Z-akselin
-            ympäri</font></td>
-            <td><font face="Verdana" size="2">sekunti</font></td>
-            <td><font face="Verdana" size="2">+1.376</font></td>
-            <td>&nbsp;</td>
-            <td>&nbsp;</td>
-            <td>&nbsp;</td>
-            <td bgcolor="#c0c0c0">&nbsp;</td>
-        </tr>
-        <tr>
-            <td><font face="Verdana" size="2">m</font></td>
-            <td><font face="Verdana" size="2">Mittakaavakerroin =
-            (mittakaava-1)*10^6</font></td>
-            <td>&nbsp;</td>
-            <td><font face="Verdana" size="2">+1.496</font></td>
-            <td>&nbsp;</td>
-            <td>&nbsp;</td>
-            <td>&nbsp;</td>
-            <td bgcolor="#c0c0c0">&nbsp;</td>
-        </tr>
-        <tr>
-            <td>&nbsp;</td>
-            <td>&nbsp;</td>
-            <td>&nbsp;</td>
-            <td>&nbsp;</td>
-            <td>&nbsp;</td>
-            <td>&nbsp;</td>
-            <td>&nbsp;</td>
-            <td bgcolor="#c0c0c0">&nbsp;</td>
-        </tr>
-        <tr>
-            <td>&nbsp;</td>
-            <td><font face="Verdana" size="2">Virheen keskiarvo</font></td>
-            <td><font face="Verdana" size="2">metri</font></td>
-            <td><font face="Verdana" size="2">0.8</font></td>
-            <td><font face="Verdana" size="2">1.6</font></td>
-            <td><font face="Verdana" size="2">1.4</font></td>
-            <td><font face="Verdana" size="2">0.8</font></td>
-            <td bgcolor="#c0c0c0"><font face="Verdana" size="2">1.8</font></td>
-        </tr>
-        <tr>
-            <td>&nbsp;</td>
-            <td><font face="Verdana" size="2">Maksimivirhe</font></td>
-            <td><font face="Verdana" size="2">metri</font></td>
-            <td><font face="Verdana" size="2">2</font></td>
-            <td><font face="Verdana" size="2">3.3</font></td>
-            <td><font face="Verdana" size="2">2.5</font></td>
-            <td><font face="Verdana" size="2">1.8</font></td>
-            <td bgcolor="#c0c0c0"><font face="Verdana" size="2">3.4</font></td>
-        </tr>
-    </tbody></table>
-    <p><font face="Verdana" size="2">Seitsenparametrisen 3D-yhdenmuotoisuusmuunnoksen
-    kaavoista on käytössä useita toisistaan hieman poikkeavia
-    versioita, joista toinen ei ole sen oikeampi tai väärempi
-    kuin toinen; oleellista on vain se, että parametrit on
-    annettu vastaamaan kulloinkin käytössä olevaa kaavaa.
-    Siksi esitän taulussa 7 3D-yhdenmuotoisuusmuunnoskaavan,
-    jota ajatellen edelläesitetyt muunnosparametrit on
-    määritelty. Valtaosa eri lähteissä tarjolla olevista
-    muunnosparametreistä esitetään joko tämän kaavan
-    mukaisina tai sellaisen kaavan mukaisina, joissa
-    kiertokulmien etumerkit ovat vastakkaiset tälle kaavalle.
-    Kannattaa siis erityisesti tarkistaa, että kiertokulmien
-    etumerkit ja käytetty kaava vastaavat toisiaan.
-    Muunnoskaavan kiertokulmien yksikkö on radiaani, mutta
-    kiertokulmat on parametreissa esitetty kaarisekunteina, koska
-    ne useimmiten ilmoitetaan laitteille ja ohjelmille
-    kaarisekunteina.</font></p>
-    <table border="6">
-        <tbody><tr>
-            <td><font face="Verdana" size="2"><strong>Taulu 7, 3D-yhdenmuotoisuusmuunnoskaava,
-            jota vastaan muunnosparametrit on määritelty</strong></font></td>
-        </tr>
-        <tr>
-            <td><pre><font size="2"> </font><font size="3">|X2|   |DX|                | 1   Rz -Ry |   |X1|</font></pre>
-            <pre><font size="3"> |Y2| = |DY| + (1+m/10^6) * |-Rz  1   Rx | * |Y1|</font></pre>
-            <pre><font size="3"> |Z2|   |DZ|                | Ry -Rx  1  |   |Z1|</font></pre>
-            </td>
-        </tr>
-    </tbody></table>
-</blockquote>
-
-<p>&nbsp;</p>
-
-<h1><font face="Verdana" size="2">Kuntien ja kaupunkien omat
-koordinaatistot</font></h1>
-
-<blockquote>
-    <p><font face="Verdana" size="2">Useissa kunnissa on
-    käytössä oma koordinaatisto. Oheisessa
-    Maanmittauslaitoksen artikkelissa on esitetty varsin kattava
-    luettelo kuntien omista koordinaatistoista sekä
-    muunnoskaavat kuntien omien koordinaatistojen ja KKJ-koordinaatiston
-    välillä. Artikkelista löytyy myös yhteystiedot
-    lisätietojen saamista varten.</font></p>
-    <ul>
-        <li><a href="http://www.maanmittauslaitos.fi/paikkatiedot/default.asp?id=895"><font face="Verdana" size="2">Koordinaattimuunnokset
-            kuntien omien koordinaatistojen ja KKJ:n välillä</font></a></li>
-    </ul>
-    <p><font face="Verdana" size="2">Eräät kunnat ovat
-    laittaneet nettiin online-muunnosohjelmia tai tietoja
-    muunnoksista:</font></p>
-    <ul>
-        <li><a href="http://teto.tampere.fi/kami/stato/muunnos/muunnos5.php#"><font face="Verdana" size="2">Muunna koordinaatteja
-            Tampereen seudulla</font></a><font face="Verdana" size="2"> - </font><a href="http://www.tampere.fi/kartat/koordinaattijarjestelmat/index.html"><font face="Verdana" size="2">Tampereen kaupunki:
-            koordinaattijärjestelmät</font></a></li>
-        <li><a href="http://www.vantaa.fi/i_perusdokumentti.asp?path=1;135;137;221;1761;2460;2661;5962"><font face="Verdana" size="2">Vantaa - Karttakoordinaatisto</font></a><font face="Verdana" size="2"> - </font><a href="http://kartta.vantaa.fi/fin/info/html/Metadata/vaneuref.htm"><font face="Verdana" size="2">Vantaan kaupunki:
-            koordinaattijärjestelmä</font></a></li>
-        <li><a href="http://www.kemi.fi/tekpa/MaaMittaus/Mittauspalvelut/muukaava.htm"><font face="Verdana" size="2">Kemin kaupunki Tekniset
-            palvelut Runkomittaukset ja vaaitukset</font></a></li>
-        <li><a href="http://www.keminmaa.fi/kunta/tekninen/mittaus/muunnos.htm"><font face="Verdana" size="2">Keminmaa - muunnoskaavat</font></a></li>
-        <li><a href="http://www.tuusula.fi/teksti.tmpl?id=376;numero=50858240"><font face="Verdana" size="2">Tuusulan kunta - Kartta- ja
-            paikkatieto</font></a></li>
-        <li><a href="http://www.lahti.fi/www/bulletin.nsf/9448b3047ee76304c2256c5a001fb524/ce6dc1c6c638c475c22570c100470945?OpenDocument"><font face="Verdana" size="2">Lahti siirtyi
-            yhteiseurooppalaiseen koordinaatistoon</font></a></li>
-    </ul>
-</blockquote>
-
-<h1><font face="Verdana" size="2">EUREF-FIN, ETRS89-realisaatio
-Suomessa, 2003/2005-</font></h1>
-
-<blockquote>
-    <p><font face="Verdana" size="2">Suomessa on käynnissä
-    koordinaatistouudistus, jossa nykyinen
-    kartastokoordinaattiärjestelmä KKJ korvataan
-    yleiseurooppalaisella ETRS89-koordinaatistojärjestelmällä.</font></p>
-    <p><font face="Verdana" size="2">Yleiseurooppalaisen ETRS90-koordinaatistojärjestelmän
-    mukaisen ETRF89-koordinaatiston realisaatio Suomessa (EUREF-FIN)
-    on määritelty Julkisen hallinnon suosituksessa 153: </font><a href="http://www.jhs-suositukset.fi/suomi/jhs153"><font face="Verdana" size="2">JHS153</font></a><font face="Verdana" size="2">. JHS153 suosittelee kansallisissa
-    kartoitustöissä ja paikannusjärjestelmissä
-    käytettäväksi ETRS89 koordinaattijärjestelmää KKJ-koordinaattijärjestelmän
-    sijasta.</font></p>
-    <p><font face="Verdana" size="2">ETRS89-järjestelmään
-    liittyvät karttaprojektiot, tasokoordinaatistot ja
-    karttalehtijako sekä tarkat muunnoskaavat ja -parametrit
-    esitetään julkisen hallinnon suosituksessa 154: </font><a href="http://www.jhs-suositukset.fi/suomi/jhs154"><font face="Verdana" size="2">JHS154</font></a></p>
-    <p><a href="http://www.fgi.fi/"><font face="Verdana" size="2">Geodeettinen
-    laitos</font></a><font face="Verdana" size="2"> on luonut
-    Suomeen yleiseurooppalaiseen EUREF89-koordinaatistoon sidotun
-    EUREF-FIN-koordinaatiston. ETRS89 yhtyy
-    senttimetritarkkuudella WGS84-koordinaatistoon, joten
-    paikannuksen ja navigoinnin vaatimissa tarkkuuksissa ei
-    enää tarvita muunnosta WGS84:n ja suomalaisen
-    koordinaatiston välillä. Yhteys EUREF-FIN koordinaatiston
-    ja KKJ:n välillä on kuvattu edellä KKJ-koordinaatiston
-    kuvauksen yhteydessä.</font></p>
-    <p><font face="Verdana" size="2">Koko valtakuntaa koskevissa
-    kartoitus- ja muissa paikkatietotöissä suositetaan
-    käytettäväksi koko Suomen kattavaa poikittaista
-    lieriöprojektiota (Transverse Mercator), jonka
-    keskimeridiaani on 27 astetta itäistä pituutta ja joka
-    noudattaa UTM standardia lukuunottamatta kaistanleveyttä, n.
-    13 astetta. Projektiota kutsutaan nimellä ETRS-TM35FIN.
-    Nimessä ETRS viittaa datumiin, TM35 tarkoittaa Transverse
-    Mercatorin kaistaa 35 ja FIN kertoo poikkeamasta UTM-standardista.</font></p>
-    <p><font face="Verdana" size="2">Paikallisiin töihin voidaan
-    edelleen käyttää Gauss-Krüger-projektioita
-    projektiovääristymien pienentämiseksi. Keskimeridiaanina
-    käytetään lähintä tasa-astetta. Gauss-Krüger-projektiota
-    kutsutaan nimellä ETRS-GKn. Nimessä ETRS viittaa datumiin,
-    ja GKn tarkoittaa Gauss-Krügerin kaistaa, jonka
-    keskimeridiaani on n astetta.</font></p>
-    <p><font face="Verdana" size="2">Taulussa 8 esitetään
-    Suomessa käytettävien tasokoordinaatistojen
-    projektioparametrit, joiden mukaan suoritetaan muunnokset
-    maantieteellisistä koordinaateista tasokoordinaateiksi ja
-    päinvastoin. Vertailun vuoksi taulukon lopussa esitetään
-    myös vastaavat KKJ-parametrit.</font></p>
-    <table border="6">
-        <tbody><tr>
-            <td colspan="6"><font face="Verdana" size="2"><strong>Taulu
-            8, Projektioparametrit Suomessa käytetyille
-            tasokoordinaatistoille</strong></font></td>
-        </tr>
-        <tr>
-            <td><font face="Verdana" size="2"><strong>Projektio</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>Ellipsoidi</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>Keskimeridiaani</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>Valeitä</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>Mittakaava
-            keskimeridiaanilla</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>Kaistanleveys</strong></font></td>
-        </tr>
-        <tr>
-            <td><font face="Verdana" size="2"><strong>Projection</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>Ellipsoid</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>Central
-            Meridian</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>False
-            Easting</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>Scale
-            factor at Central Meridian</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>Zone width</strong></font></td>
-        </tr>
-        <tr>
-            <td><font face="Verdana" size="2">ETRS-TM35FIN</font></td>
-            <td><font face="Verdana" size="2">GRS80</font></td>
-            <td><font face="Verdana" size="2">27</font></td>
-            <td><font face="Verdana" size="2">500000 </font></td>
-            <td><font face="Verdana" size="2">0.9996</font></td>
-            <td><font face="Verdana" size="2">13</font></td>
-        </tr>
-        <tr>
-            <td><font face="Verdana" size="2">ETRS-TMn</font></td>
-            <td><font face="Verdana" size="2">GRS80</font></td>
-            <td><font face="Verdana" size="2">21,27,33</font></td>
-            <td><font face="Verdana" size="2">500000</font></td>
-            <td><font face="Verdana" size="2">0.9996</font></td>
-            <td><font face="Verdana" size="2">6</font></td>
-        </tr>
-        <tr>
-            <td><font face="Verdana" size="2">ETRS-GK </font></td>
-            <td><font face="Verdana" size="2">GRS80</font></td>
-            <td><font face="Verdana" size="2">19,20,...,31</font></td>
-            <td><font face="Verdana" size="2">n500000, n=19,20,...,31</font></td>
-            <td><font face="Verdana" size="2">1.0000</font></td>
-            <td><font face="Verdana" size="2">1</font></td>
-        </tr>
-        <tr>
-            <td bgcolor="#c0c0c0"><font face="Verdana" size="2">KKJ</font></td>
-            <td bgcolor="#c0c0c0"><font face="Verdana" size="2">International
-            1924</font></td>
-            <td bgcolor="#c0c0c0"><font face="Verdana" size="2">18,21,24,27,30,33</font></td>
-            <td bgcolor="#c0c0c0"><font face="Verdana" size="2">n500000,
-            n=0,1,...,5</font></td>
-            <td bgcolor="#c0c0c0"><font face="Verdana" size="2">1.0000</font></td>
-            <td bgcolor="#c0c0c0"><font face="Verdana" size="2">3</font></td>
-        </tr>
-    </tbody></table>
-    <p><font face="Verdana" size="2">Muunnos kolmiulotteisista X,Y,Z-koordinaateista
-    maantieteellisiin koordinaatteihin tehdään ETRS89-koordinaatistojen
-    yhteydessä käyttäen referenssiellipsoidia GRS80. GRS80 on
-    niin lähellä WGS84:n käyttämää WGS84 ellipsoidia, että
-    ero voidaan käytännön sovelluksissa unohtaa. Taulussa 8
-    kuitenkin GRS80:n parametrit ja vertailu vastaaviin WGS84:n
-    parametreihin.</font></p>
-    <table border="6">
-        <tbody><tr>
-            <td colspan="6"><font face="Verdana" size="2"><strong>Taulu
-            9, GRS80 ja WGS84 ellipsoidit</strong></font></td>
-        </tr>
-        <tr>
-            <td><font face="Verdana" size="2"><strong>Parametri</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>Selite</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>Yksikkö</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>WGS84</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>GRS80</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>WGS84-GRS80</strong></font></td>
-        </tr>
-        <tr>
-            <td><font face="Verdana" size="2">A, DA</font></td>
-            <td><font face="Verdana" size="2">Isoakselin puolikas</font></td>
-            <td><font face="Verdana" size="2">metri</font></td>
-            <td><font face="Verdana" size="2">6378137</font></td>
-            <td><font face="Verdana" size="2">6378137</font></td>
-            <td><font face="Verdana" size="2">0</font></td>
-        </tr>
-        <tr>
-            <td><font face="Verdana" size="2">F, DF</font></td>
-            <td><font face="Verdana" size="2">Litistyssuhde</font></td>
-            <td>&nbsp;</td>
-            <td><font face="Verdana" size="2">1/298.257223563</font></td>
-            <td><font face="Verdana" size="2">1/298.257222101</font></td>
-            <td><font face="Verdana" size="2">-0.000000164423..</font></td>
-        </tr>
-    </tbody></table>
-    <p><font face="Verdana" size="2"><strong>Uudet kartat</strong></font></p>
-    <p><font face="Verdana" size="2">Vuoden 2003 alusta alkaen </font><a href="http://www.fma.fi/"><font face="Verdana" size="2">Merenkulkulaitos</font></a><font face="Verdana" size="2"> on julkaissut uudet merikartat WGS84-koordinaatistossa
-    ja käyttäen kansainvälisesti sovitun INT-karttasymboliikan
-    mukaisia symboleja ja värejä. Uudessa värityksessä leimaa-antavin
-    väri on matalan veden sininen väri ja vanhassa
-    värityksessä maa-alueiden vihreä väri. Siksi uusia
-    merikarttoja kutsutaan sinisiksi merikartoiksi erotukseksi
-    nykyisistä KKJ-koordinaatistoon perustuvista vihreistä
-    merikartoista. Siniset merikartat tulevat korvaamaan vihreät
-    merikartat 4-5 vuoden sisällä. Kuitenkin niistä alueista,
-    joista ei ole vielä sinistä merikarttaa, ylläpidetään
-    ajantasaista vihreää merikarttaa. </font></p>
-    <p><a href="http://www.maanmittauslaitos.fi/"><font face="Verdana" size="2">Maanmittauslaitos</font></a><font face="Verdana" size="2"> siirtyi kartantuotannossaan uuteen
-    koordinaattijärjestelmään ja lehtijakoon vuonna 2005.
-    Uudistuksen myötä muuttuu myös maastokarttojen mittakaava;
-    uudet maastokartat julkaistaan mittakaavoissa 1:25 000 ja 1:50
-    000. Siirtymävaihe kartantuotannossa vienee vuosia ja sinä
-    aikana on käytössä rinnakkain KKJ:n ja EUREF-FIN:n
-    mukaisia karttoja. Uusissa maastokartoissa ETRS-TM35FIN
-    ruudukko on merkitty mustilla risteillä, kolme UTM-ruudukkoa
-    TM34, TM35 ja TM36 on painettu punaisella värillä ja
-    maantieteelliset koordinaatit sinisellä värillä. ETRS-GK-ruudukkoa
-    ei esitetä maastokartoilla lainkaan.</font></p>
-</blockquote>
-
-<h1><font face="Verdana" size="2">Koordinaatistojen väliset
-muunnokset</font></h1>
-
-<blockquote>
-    <p><font face="Verdana" size="2"><strong>Parametrien asetus
-    GPS-laitteeseen tai navigointi-/paikannusohjelmaan</strong></font></p>
-    <p><font face="Verdana" size="2">Kun suomalaisia karttoja
-    käytetään GPS-laitteiden tai navigointi/paikannusohjelmien
-    kanssa, täytyy ohjelmaan tai laitteeseen asettaa taulun 10
-    mukaiset datum- tai tasokoordinaattimuunnosparametrit. Tyhjä
-    kohta tarkoittaa, että voidaan soveltaa yleisiä
-    oletusarvoja; datum=WGS84 tai vastaava, esim EUREF-FIN,
-    ellipsoidi=WGS84 tai GRS80.</font></p>
-    <table border="6">
-        <tbody><tr>
-            <td colspan="6"><font face="Verdana" size="2"><strong>Taulu
-            10, Suomalaisten karttojen tarvitsemat datum- ja
-            tasokoordinaattikonversiot</strong></font></td>
-        </tr>
-        <tr>
-            <td colspan="2"><font face="Verdana" size="2"><strong>Karttatyyppi</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>Koordinaattityyppi</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>Datum-muunnos</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>Ellipsoidi</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>Tasokoordinaattimuunnos</strong></font></td>
-        </tr>
-        <tr>
-            <td rowspan="2" colspan="2"><font face="Verdana" size="2">Vanhat maakartat, KKJ, 1970-2005</font></td>
-            <td><font face="Verdana" size="2">Maantieteellinen</font></td>
-            <td><font face="Verdana" size="2">KKJ &lt;&gt; EUREF-FIN</font></td>
-            <td><font face="Verdana" size="2">International 1924</font></td>
-            <td>&nbsp;</td>
-        </tr>
-        <tr>
-            <td><font face="Verdana" size="2">Tasokoordinaatti</font></td>
-            <td><font face="Verdana" size="2">KKJ &lt;&gt; EUREF-FIN</font></td>
-            <td><font face="Verdana" size="2">International 1924</font></td>
-            <td><font face="Verdana" size="2">KKJ1-KKJ5 / YKJ</font></td>
-        </tr>
-        <tr>
-            <td colspan="2"><font face="Verdana" size="2">Vanhat
-            "vihreät" merikartat, KKJ, -2002</font></td>
-            <td><font face="Verdana" size="2">Maantieteellinen</font></td>
-            <td><font face="Verdana" size="2">KKJ &lt;&gt; EUREF-FIN</font></td>
-            <td><font face="Verdana" size="2">International 1924</font></td>
-            <td>&nbsp;</td>
-        </tr>
-        <tr>
-            <td rowspan="2" colspan="2"><font face="Verdana" size="2">Uudet maakartat, EUREF-FIN, 2005-</font></td>
-            <td><font face="Verdana" size="2">Maantieteellinen</font></td>
-            <td>&nbsp;</td>
-            <td>&nbsp;</td>
-            <td>&nbsp;</td>
-        </tr>
-        <tr>
-            <td><font face="Verdana" size="2">Tasokoordinaatti</font></td>
-            <td>&nbsp;</td>
-            <td>&nbsp;</td>
-            <td><font face="Verdana" size="2">ETRS-TM35FIN / ETRS-GK(n)</font></td>
-        </tr>
-        <tr>
-            <td colspan="2"><font face="Verdana" size="2">Uudet
-            "siniset" merikartat, EUREF-FIN, 2003-</font></td>
-            <td><font face="Verdana" size="2">Maantieteellinen</font></td>
-            <td>&nbsp;</td>
-            <td>&nbsp;</td>
-            <td>&nbsp;</td>
-        </tr>
-    </tbody></table>
-    <p><font face="Verdana" size="2">Muunnos WGS84(n. EUREF-FIN)-koordinaatistosta
-    KKJ-koordinaatistoon on useissa laitteissa ja ohjelmissa
-    sisäänrakennettuna ja se pitää yleensä sisällään
-    sekä 3D-yhdenmuotoisuusmuunnoksen (datum-muunnos) että
-    muunnoksen 3D-X,Y,Z-koordinaattien ja maantieteellisten
-    koordinaattien välillä (ellipsoidin mukaan). GPS:ssä
-    koordinaatistoja kutsutaan nimellä datum ja muunnos onkin
-    yleensä helppo asettaa valitsemalla GPS:n datumiksi KKJ.
-    Ongelmana on vain se, että KKJ-koordinaatistoa kutsutaan eri
-    laitteissa eri nimillä, mm. KKJ, Finland Hayford, Finnish
-    Nautical Chart jne.</font></p>
-    <p><font face="Verdana" size="2">Useimmissa GPS-laitteissa on
-    valmiina projektioparametrit KKJ-yhtenäiskoordinaatistoa (YKJ)
-    varten, eli samalla peruskoordinaatiston kaistaa 3 varten,
-    mutta harvoin peruskoordinaatiston muita kaistoja varten.
-    Myös KKJ-tasokoordinaateista käytetään eri laitteissa eri
-    nimiä, esim. KKJ3, KKJ27, Finnish grid. Jos laitteesta
-    löytyy KKJ-projektioparametrit, aiheuttaa niiden valinta
-    yleensä samalla myös datumin vaihdon KKJ:hin.</font></p>
-    <p><font face="Verdana" size="2">Jos tasokoordinaatteja
-    vastaavia projektioparametreja ei ole valmiiksi
-    määriteltynä, ne voi yleensä syöttää käyttäjän
-    määritteleminä ns. "user grid"-parametreina. Jos
-    laitteessa on valittavana useita eri user grid-tyyppejä,
-    esimerkiksi Transverse Mercator, Lambert Conic Conformal,
-    Mercator jne., tulee valita tyyppi 'Transverse Mercator'.
-    Vastaavat parametrit otetaan tauluista 3, 4 tai 8. Tässä
-    kannattaa huomata, että keskimeridiaania kutsutaan sekä
-    nimellä 'Central Meridian" että 'Longitude of Origin'.
-    Valepohjoinen eli 'False northing' on nolla kaikissa
-    tapauksissa (sekä vanhoissa että uusissa
-    tasokoordinaatistoissa). Eräissä laitteissa esiintyy
-    Transverse Mercator projektion yhteydessä myös parametri 'Latitude
-    of Origin'; tämän arvon tulee olla nolla.</font></p>
-    <h1><font face="Verdana" size="2">Muunnosketju, kaavat ja
-    parametrit</font></h1>
-    <p><font face="Verdana" size="2">Taulussa 11 on esitetty
-    kaikki muunnosvaiheet kaavoineen ja parametreineen KKJ-tasokoordinaateista
-    EUREF-FIN tasokoordinaatteihin ja päinvastoin. Esitetty
-    ketju on yleinen ja on siksi sovellettavissa myös muihin
-    vastaaviin koordinaatistoihin vaihtamalla parametreja tai
-    mahdollisesti vaihtamalla muunnoskaava taso- ja
-    maantieteellisten koordinaattien välillä vastaamaan ko.
-    koordinaatistosysteemiä.</font></p>
-    <p><font face="Verdana" size="2">Jos vaadittu muunnostarkkuus
-    ei ole suuri, voidaan käyttää huomattavasti
-    yksinkertaisempia kaavoja, jotka on rakennettu suoraan
-    tiettyjen koordinaattimuotojen välille, esimerkiksi suoraan
-    KKJ-maantieteellisten ja EUREF-FIN-maantieteellisten välille.
-    Jos tarvitaan suurta tarkkuutta, voidaan soveltaa </font><a href="http://www.jhs-suositukset.fi/suomi/jhs154"><font face="Verdana" size="2">Julkisen hallinnon suosituksen 154</font></a><font face="Verdana" size="2"> liitteessä 5 esitettyä
-    kolmioittaista affiinimuunnosta YKJ- ja ETRS-GK-koordinaattien
-    välillä. Kattavasti suomalaisten geodeettisten
-    koordinaatistojen väliset muunnokset on kuvattu </font><a href="http://www.fgi.fi/julkaisut/pdf/GLtiedote30.pdf"><font face="Verdana" size="2">Geodeettisen laitoksen tiedotteessa
-    numero 30</font></a><font face="Verdana" size="2">.</font></p>
-    <table border="6">
-        <tbody><tr>
-            <td colspan="6"><font face="Verdana" size="2"><strong>Taulu
-            11, Muunnosketju KKJ-tasokoordinaatit &gt; ETRS-pohjaiset
-            tasokoordinaatit (taulu 8) &gt; KKJ-tasokoordinaatit </strong></font></td>
-        </tr>
-        <tr>
-            <td><font face="Verdana" size="2"><strong>Mistä</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>Mihin</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>Muunnos</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>Kaava</strong></font></td>
-            <td><font face="Verdana" size="2"><strong>Parametrit</strong></font></td>
-        </tr>
-        <tr>
-            <td><font face="Verdana" size="2">KKJ
-            tasokoordinaatit</font></td>
-            <td><font face="Verdana" size="2">KKJ
-            maantieteelliset</font></td>
-            <td><font face="Verdana" size="2">Transverse Mercator
-            projektio </font></td>
-            <td><a href="http://www.jhs-suositukset.fi/suomi/jhs154"><font face="Verdana" size="2">JHS154</font></a><font face="Verdana" size="2">, liite 1</font></td>
-            <td><font face="Verdana" size="2">KKJ-tasokoordinaatit,
-            taulu 3</font></td>
-        </tr>
-        <tr>
-            <td><font face="Verdana" size="2">KKJ
-            maantieteelliset</font></td>
-            <td><font face="Verdana" size="2">KKJ 3D-X,Y,Z-koordinaatit</font></td>
-            <td><font face="Verdana" size="2">Maantieteelliset
-            &gt; 3D-X,Y,Z</font></td>
-            <td><a href="http://www.jhs-suositukset.fi/suomi/jhs153"><font face="Verdana" size="2">JHS153</font></a><font face="Verdana" size="2">, 5.2</font></td>
-            <td><font face="Verdana" size="2">Hayfordin
-            ellipsoidi, taulu 2</font></td>
-        </tr>
-        <tr>
-            <td><font face="Verdana" size="2">KKJ 3D-X,Y,Z-koordinaatit</font></td>
-            <td><font face="Verdana" size="2">EUREF-FIN 3D-X,Y,Z-koordinaatit</font></td>
-            <td><font face="Verdana" size="2">Datum-muunnos, 3D-
-            yhdenmuotoisuusmuunnos</font></td>
-            <td><font face="Verdana" size="2">Taulu 7</font></td>
-            <td><font face="Verdana" size="2">Taulu 6, sarake 1</font></td>
-        </tr>
-        <tr>
-            <td><font face="Verdana" size="2">EUREF-FIN 3D-X,Y,Z-koordinaatit</font></td>
-            <td><font face="Verdana" size="2">EUREF-FIN
-            maantieteelliset</font></td>
-            <td><font face="Verdana" size="2">3D-X,Y,Z &gt;
-            maantieteelliset</font></td>
-            <td><a href="http://www.jhs-suositukset.fi/suomi/jhs153"><font face="Verdana" size="2">JHS153</font></a><font face="Verdana" size="2">, 5.2</font></td>
-            <td><font face="Verdana" size="2">GRS80 ellipsoidi,
-            taulu 9</font></td>
-        </tr>
-        <tr>
-            <td><font face="Verdana" size="2">EUREF-FIN
-            maantieteelliset</font></td>
-            <td><font face="Verdana" size="2">ETRS-pohjaiset
-            tasokoordinaatit</font></td>
-            <td><font face="Verdana" size="2">Transverse Mercator
-            projektio</font></td>
-            <td><a href="http://www.jhs-suositukset.fi/suomi/jhs154"><font face="Verdana" size="2">JHS154</font></a><font face="Verdana" size="2">, liite 1</font></td>
-            <td><font face="Verdana" size="2">ETRS-pohjaiset
-            tasokoordinaatit, taulu 8</font></td>
-        </tr>
-        <tr>
-            <td>&nbsp;</td>
-            <td>&nbsp;</td>
-            <td>&nbsp;</td>
-            <td>&nbsp;</td>
-            <td>&nbsp;</td>
-        </tr>
-        <tr>
-            <td><font face="Verdana" size="2">ETRS-pohjaiset
-            tasokoordinaatit</font></td>
-            <td><font face="Verdana" size="2">EUREF-FIN
-            maantieteelliset</font></td>
-            <td><font face="Verdana" size="2">Transverse Mercator
-            projektio</font></td>
-            <td><a href="http://www.jhs-suositukset.fi/suomi/jhs154"><font face="Verdana" size="2">JHS154</font></a><font face="Verdana" size="2">, liite 1</font></td>
-            <td><font face="Verdana" size="2">ETRS-pohjaiset
-            tasokoordinaatit, taulu 8</font></td>
-        </tr>
-        <tr>
-            <td><font face="Verdana" size="2">EUREF-FIN
-            maantieteelliset</font></td>
-            <td><font face="Verdana" size="2">EUREF-FIN 3D-X,Y,Z-koordinaatit</font></td>
-            <td><font face="Verdana" size="2">Maantieteelliset
-            &gt; 3D-X,Y,Z</font></td>
-            <td><a href="http://www.jhs-suositukset.fi/suomi/jhs153"><font face="Verdana" size="2">JHS153</font></a><font face="Verdana" size="2">, 5,2</font></td>
-            <td><font face="Verdana" size="2">GRS80 ellipsoidi,
-            taulu 9</font></td>
-        </tr>
-        <tr>
-            <td><font face="Verdana" size="2">EUREF-FIN 3D-X,Y,Z-koordinaatit</font></td>
-            <td><font face="Verdana" size="2">KKJ 3D-X,Y,Z-koordinaatit</font></td>
-            <td><font face="Verdana" size="2">Datum-muunnos, 3D-
-            yhdenmuotoisuusmuunnos</font></td>
-            <td><font face="Verdana" size="2">Taulu 7</font></td>
-            <td><font face="Verdana" size="2">Taulu 6, sarake 1</font></td>
-        </tr>
-        <tr>
-            <td><font face="Verdana" size="2">KKJ 3D-X,Y,Z-koordinaatit</font></td>
-            <td><font face="Verdana" size="2">KKJ
-            maantieteelliset</font></td>
-            <td><font face="Verdana" size="2">3D-X,Y,Z &gt;
-            maantieteelliset</font></td>
-            <td><a href="http://www.jhs-suositukset.fi/suomi/jhs153"><font face="Verdana" size="2">JHS153</font></a><font face="Verdana" size="2">, 5.2</font></td>
-            <td><font face="Verdana" size="2">Hayfordin
-            ellipsoidi, taulu 2</font></td>
-        </tr>
-        <tr>
-            <td><font face="Verdana" size="2">KKJ
-            maantieteelliset</font></td>
-            <td><font face="Verdana" size="2">KKJ
-            tasokoordinaatit</font></td>
-            <td><font face="Verdana" size="2">Transverse Mercator
-            projektio</font></td>
-            <td><a href="http://www.jhs-suositukset.fi/suomi/jhs154"><font face="Verdana" size="2">JHS154</font></a><font face="Verdana" size="2">, liite 1</font></td>
-            <td><font face="Verdana" size="2">KKJ-tasokoordinaatit,
-            taulu 3</font></td>
-        </tr>
-    </tbody></table>
-    <p>&nbsp;</p>
-    <h1><font face="Verdana" size="2">Muunnospalveluja</font></h1>
-    <p><a href="http://www.fgi.fi/"><font face="Verdana" size="2">Geodeettinen
-    laitos</font></a><font face="Verdana" size="2"> on tuottanut
-    koordinaattien muunnospalvelun </font><a href="http://coordtrans.fgi.fi/"><font face="Verdana" size="2">http://coordtrans.fgi.fi/</font></a><font face="Verdana" size="2">. Palvelu tukee Suomessa
-    valtakunnallisesti käytössä olevia koordinaatistoja ja
-    korkeusjärjestelmiä.</font></p>
-    <h1><a name="Muunnosten tarkkuudesta"><font face="Verdana" size="2">Muunnosten tarkkuudesta</font></a></h1>
-    <p><font face="Verdana" size="2">KKJ-koordinaatiston
-    sisäisistä mittakaava- ja orientointivirheistä johtuen
-    jää EUREF-FIN - KKJ- yhdenmuotoisuusmuunnoksesta
-    parhaillakin siirtoparametreilla suurimmillaan kahden metrin
-    jäännösvirheitä. Harrastelijakäyttöön tarkoitetuissa
-    GPS-laitteissa käytetään useimmiten kolmiparametrista
-    yhdenmuotoisuusmuunnosta, jossa jäännösvirheet nousevat
-    suuremmiksi. Useissa navigointisovelluksissa nämä virheet
-    eivät kuitenkaan ole merkittäviä, eivätkä useinkaan
-    suurimpia koko navigointiketjussa.</font></p>
-    <p><font face="Verdana" size="2">Muunnos tasokoordinaattien
-    ja maantieteellisten koordinaattien samoin kuin muunnos
-    maantieteellisten ja 3D-X,Y,Z-koordinaattien välillä on
-    yleensä yksinkertaisimmillakin käytössä olevilla
-    kaavoilla niin tarkka, ettei virheillä ole mitään
-    merkitystä käytännön sovelluksissa.</font></p>
-    <p><font face="Verdana" size="2">Kannattaa huomata, että
-    koordinaatistomuunnosten virheet ovat vain osa
-    kokonaisvirhettä. Geodeettinen ja kartografinen perustyö,
-    GPS-tekniikka sekä käyttäjän navigointityö ovat kaikki
-    mittaamista mittaamisen perään ja aina kun mitataan,
-    tehdään virheitä. Kokonaisvirhe on eri vaiheissa tehtyjen
-    virheiden summa. Alla lueteltuna vaiheita, joissa syntyy
-    väistämättä mitta- tai laskentavirheitä, vaikka itse
-    toiminta olisi virheetöntä. Tämän lisäksi tulevat
-    tietysti käyttäjän tai tekijän omat virheet -
-    väärinkäsitykset, merkintävirheet, tulkintavirheet jne.</font></p>
-    <dir>
-        <li><font face="Verdana" size="2">virheet koordinaatiston
-            mittaamisessa ja merkitsemisessä maastoon</font></li>
-        <li><font face="Verdana" size="2">kartantuotannossa
-            tapahtuvat virheet</font></li>
-        <li><font face="Verdana" size="2">virhe, kun käyttäjä
-            määrittää kartalla olevan pisteen koordinaatit
-            tai koordinaattien perusteella kartan pisteen</font></li>
-        <li><font face="Verdana" size="2">koordinaatistojen
-            välisten muunnosten virheet (esimerkiksi KKJ-WGS84),
-            mahdollisesti useassa kohdassa navigointiketjua</font></li>
-        <li><font face="Verdana" size="2">GPS-järjestelmän
-            virheet</font></li>
-    </dir>
-</blockquote>
-
-<h1><font face="Verdana" size="2">Kiitokset</font></h1>
-
-<blockquote>
-    <p><font face="Verdana" size="2">Haluan lämpimästi
-    kiittää FT Matti Ollikaista hänen ystävällisistä
-    neuvoistaan sekä eräiden tässä dokumentissa esiintyneiden
-    virheiden ja epätarkkuuksien korjaamisesta.</font></p>
-    <p><font face="Verdana" size="2">Suuri kiitos myös muille
-    tätä artikkelia kommentoineille henkilöille.</font></p>
-</blockquote>
-
-<h1><font face="Verdana" size="2">Lähdeluettelo</font></h1>
-
-<blockquote>
-    <ul>
-        <li><font face="Verdana" size="2">Hirvonen, R.A., 1949:
-            Die Gauss-Krügersche Projektion für breite
-            Meridianstreifen auf dem Internationalen Ellipsoide.
-            Kirjoitus Suomen Geodeettisen laitoksen julkaisussa
-            no 36</font></li>
-        <li><font face="Verdana" size="2">Ollikainen, M., 1993:
-            GPS-koordinaattien muuttaminen
-            Kartastokoordinaateiksi, Geodeettinen laitos, tiedote
-            8</font></li>
-        <li><font face="Verdana" size="2">Poutanen Markku, 1998, </font><a href="http://www.ursa.fi/ursa/julkaisut/gps/gps.html"><font face="Verdana" size="2">GPS-paikanmääritys</font></a><font face="Verdana" size="2"> - ISBN 951-9269-89-4</font></li>
-        <li><font face="Verdana" size="2">Ollikainen, M., H.
-            Koivula and Markku Poutanen, 2000. The densification
-            of the EUREF network in Finland. The Publication of
-            Finnish Geodetic Institute, no. 129. P.O. Box 15, FIN-02431
-            Masala</font></li>
-        <li><font face="Verdana" size="2">Ollikainen, M., Koivula
-            H., Poutanen M., 2001: EUREF-FIN koordinaatisto ja
-            EUREF-pistetihennykset Suomessa, Geodeettinen laitos,
-            tiedote 24</font></li>
-        <li><font face="Verdana" size="2">Suomen kartasto, vihko
-            112 </font></li>
-        <li><font face="Verdana" size="2">JHS 153: ETRS89-järjestelmän
-            mukaiset koordinaatit Suomessa: </font><a href="http://www.jhs-suositukset.fi/suomi/jhs153"><font face="Verdana" size="2">JHS153</font></a></li>
-        <li><font face="Verdana" size="2">JHS 154: ETRS89-järjestelmään
-            liittyvät karttaprojektiot, tasokoordinaatistot ja
-            karttalehtijako: </font><a href="http://www.jhs-suositukset.fi/suomi/jhs154"><font face="Verdana" size="2">JHS154</font></a></li>
-        <li><font face="Verdana" size="2">Marko Ollikainen ja
-            Matti Ollikainen, 2004, The Finnish Coordinate
-            Reference Systems. Julkaisijat Geodeettinen laitos ja
-            Maanmittauslaitos </font><a href="http://www.maanmittauslaitos.fi/popup.asp?id=0&amp;docid=2507"><font face="Verdana" size="2">www.maanmittauslaitos.fi/popup.asp?id=0&amp;docid=2507</font></a></li>
-        <li><font face="Verdana" size="2">Häkli P., Puupponen J.,
-            Koivula H., Poutanen M.: </font><a href="http://www.fgi.fi/julkaisut/pdf/GLtiedote30.pdf"><font face="Verdana" size="2">Suomen geodeettiset
-            koordinaatistot ja niiden väliset muunnokset</font></a><font face="Verdana" size="2">, Geodeettinen laitos,
-            tiedote 30</font></li>
-    </ul>
-</blockquote>
-
-<p><a href="http://www.kolumbus.fi/eino.uikkanen/index.htm"><font face="Verdana" size="2">Eino
-Uikkasen kotisivu</font></a></p>
-<script src="kkjgps_files/urchin.js" type="text/javascript">
-</script><script type="text/javascript">
-_uacct = "UA-469384-5";
-urchinTracker();
-</script>
-</body></html>
\ No newline at end of file
diff --git a/doc/coordinate_systems/kkjgps_files/urchin.js b/doc/coordinate_systems/kkjgps_files/urchin.js
deleted file mode 100644 (file)
index 44803e9..0000000
+++ /dev/null
@@ -1,695 +0,0 @@
-//-- Google Analytics Urchin Module
-//-- Copyright 2007 Google, All Rights Reserved.
-
-//-- Urchin On Demand Settings ONLY
-var _uacct="";                 // set up the Urchin Account
-var _userv=1;                  // service mode (0=local,1=remote,2=both)
-
-//-- UTM User Settings
-var _ufsc=1;                   // set client info flag (1=on|0=off)
-var _udn="auto";               // (auto|none|domain) set the domain name for cookies
-var _uhash="on";               // (on|off) unique domain hash for cookies
-var _utimeout="1800";          // set the inactive session timeout in seconds
-var _ugifpath="/__utm.gif";    // set the web path to the __utm.gif file
-var _utsp="|";                 // transaction field separator
-var _uflash=1;                 // set flash version detect option (1=on|0=off)
-var _utitle=1;                 // set the document title detect option (1=on|0=off)
-var _ulink=0;                  // enable linker functionality (1=on|0=off)
-var _uanchor=0;                        // enable use of anchors for campaign (1=on|0=off)
-var _utcp="/";                 // the cookie path for tracking
-var _usample=100;              // The sampling % of visitors to track (1-100).
-
-//-- UTM Campaign Tracking Settings
-var _uctm=1;                   // set campaign tracking module (1=on|0=off)
-var _ucto="15768000";          // set timeout in seconds (6 month default)
-var _uccn="utm_campaign";      // name
-var _ucmd="utm_medium";                // medium (cpc|cpm|link|email|organic)
-var _ucsr="utm_source";                // source
-var _uctr="utm_term";          // term/keyword
-var _ucct="utm_content";       // content
-var _ucid="utm_id";            // id number
-var _ucno="utm_nooverride";    // don't override
-
-//-- Auto/Organic Sources and Keywords
-var _uOsr=new Array();
-var _uOkw=new Array();
-_uOsr[0]="google";     _uOkw[0]="q";
-_uOsr[1]="yahoo";      _uOkw[1]="p";
-_uOsr[2]="msn";                _uOkw[2]="q";
-_uOsr[3]="aol";                _uOkw[3]="query";
-_uOsr[4]="aol";                _uOkw[4]="encquery";
-_uOsr[5]="lycos";      _uOkw[5]="query";
-_uOsr[6]="ask";                _uOkw[6]="q";
-_uOsr[7]="altavista";  _uOkw[7]="q";
-_uOsr[8]="netscape";   _uOkw[8]="query";
-_uOsr[9]="cnn";        _uOkw[9]="query";
-_uOsr[10]="looksmart"; _uOkw[10]="qt";
-_uOsr[11]="about";     _uOkw[11]="terms";
-_uOsr[12]="mamma";     _uOkw[12]="query";
-_uOsr[13]="alltheweb"; _uOkw[13]="q";
-_uOsr[14]="gigablast"; _uOkw[14]="q";
-_uOsr[15]="voila";     _uOkw[15]="rdata";
-_uOsr[16]="virgilio";  _uOkw[16]="qs";
-_uOsr[17]="live";      _uOkw[17]="q";
-_uOsr[18]="baidu";     _uOkw[18]="wd";
-_uOsr[19]="alice";     _uOkw[19]="qs";
-_uOsr[20]="yandex";    _uOkw[20]="text";
-_uOsr[21]="najdi";     _uOkw[21]="q";
-_uOsr[22]="aol";       _uOkw[22]="q";
-_uOsr[23]="club-internet"; _uOkw[23]="query";
-_uOsr[24]="mama";      _uOkw[24]="query";
-_uOsr[25]="seznam";    _uOkw[25]="q";
-_uOsr[26]="search";    _uOkw[26]="q";
-_uOsr[27]="wp";        _uOkw[27]="szukaj";
-_uOsr[28]="onet";      _uOkw[28]="qt";
-_uOsr[29]="netsprint"; _uOkw[29]="q";
-_uOsr[30]="google.interia";    _uOkw[30]="q";
-_uOsr[31]="szukacz";   _uOkw[31]="q";
-_uOsr[32]="yam";       _uOkw[32]="k";
-_uOsr[33]="pchome";    _uOkw[33]="q";
-_uOsr[34]="kvasir";    _uOkw[34]="searchExpr";
-_uOsr[35]="sesam";     _uOkw[35]="q";
-_uOsr[36]="ozu"; _uOkw[36]="q";
-_uOsr[37]="terra"; _uOkw[37]="query";
-_uOsr[38]="nostrum"; _uOkw[38]="query";
-_uOsr[39]="mynet"; _uOkw[39]="q";
-_uOsr[40]="ekolay"; _uOkw[40]="q";
-_uOsr[41]="search.ilse"; _uOkw[41]="search_for";
-_uOsr[42]="bing"; _uOkw[42]="q";
-
-//-- Auto/Organic Keywords to Ignore
-var _uOno=new Array();
-//_uOno[0]="urchin";
-//_uOno[1]="urchin.com";
-//_uOno[2]="www.urchin.com";
-
-//-- Referral domains to Ignore
-var _uRno=new Array();
-//_uRno[0]=".urchin.com";
-
-//-- **** Don't modify below this point ***
-var _uff,_udh,_udt,_ubl=0,_udo="",_uu,_ufns=0,_uns=0,_ur="-",_ufno=0,_ust=0,_ubd=document,_udl=_ubd.location,_udlh="",_uwv="1.3";
-var _ugifpath2="http://www.google-analytics.com/__utm.gif";
-if (_udl.hash) _udlh=_udl.href.substring(_udl.href.indexOf('#'));
-if (_udl.protocol=="https:") _ugifpath2="https://ssl.google-analytics.com/__utm.gif";
-if (!_utcp || _utcp=="") _utcp="/";
-function urchinTracker(page) {
- if (_udl.protocol=="file:") return;
- if (_uff && (!page || page=="")) return;
- var a,b,c,xx,v,z,k,x="",s="",f=0,nv=0;
- var nx=" expires="+_uNx()+";";
- var dc=_ubd.cookie;
- _udh=_uDomain();
- if (!_uVG()) return;
- _uu=Math.round(Math.random()*2147483647);
- _udt=new Date();
- _ust=Math.round(_udt.getTime()/1000);
- a=dc.indexOf("__utma="+_udh+".");
- b=dc.indexOf("__utmb="+_udh);
- c=dc.indexOf("__utmc="+_udh);
- if (_udn && _udn!="") { _udo=" domain="+_udn+";"; }
- if (_utimeout && _utimeout!="") {
-  x=new Date(_udt.getTime()+(_utimeout*1000));
-  x=" expires="+x.toGMTString()+";";
- }
- if (_ulink) {
-  if (_uanchor && _udlh && _udlh!="") s=_udlh+"&";
-  s+=_udl.search;
-  if(s && s!="" && s.indexOf("__utma=")>=0) {
-   if (!(_uIN(a=_uGC(s,"__utma=","&")))) a="-";
-   if (!(_uIN(b=_uGC(s,"__utmb=","&")))) b="-";
-   if (!(_uIN(c=_uGC(s,"__utmc=","&")))) c="-";
-   v=_uGC(s,"__utmv=","&");
-   z=_uGC(s,"__utmz=","&");
-   k=_uGC(s,"__utmk=","&");
-   xx=_uGC(s,"__utmx=","&");
-   if ((k*1) != ((_uHash(a+b+c+xx+z+v)*1)+(_udh*1))) {_ubl=1;a="-";b="-";c="-";xx="-";z="-";v="-";}
-   if (a!="-" && b!="-" && c!="-") f=1;
-   else if(a!="-") f=2;
-  }
- }
- if(f==1) {
-  _ubd.cookie="__utma="+a+"; path="+_utcp+";"+nx+_udo;
-  _ubd.cookie="__utmb="+b+"; path="+_utcp+";"+x+_udo;
-  _ubd.cookie="__utmc="+c+"; path="+_utcp+";"+_udo;
- } else if (f==2) {
-  a=_uFixA(s,"&",_ust);
-  _ubd.cookie="__utma="+a+"; path="+_utcp+";"+nx+_udo;
-  _ubd.cookie="__utmb="+_udh+"; path="+_utcp+";"+x+_udo;
-  _ubd.cookie="__utmc="+_udh+"; path="+_utcp+";"+_udo;
-  _ufns=1;
- } else if (a>=0 && b>=0 && c>=0) {
-   b = _uGC(dc,"__utmb="+_udh,";");
-   b = ("-" == b) ? _udh : b;  
-  _ubd.cookie="__utmb="+b+"; path="+_utcp+";"+x+_udo;
- } else {
-  if (a>=0) a=_uFixA(_ubd.cookie,";",_ust);
-  else {
-   a=_udh+"."+_uu+"."+_ust+"."+_ust+"."+_ust+".1";
-   nv=1;
-  }
-  _ubd.cookie="__utma="+a+"; path="+_utcp+";"+nx+_udo;
-  _ubd.cookie="__utmb="+_udh+"; path="+_utcp+";"+x+_udo;
-  _ubd.cookie="__utmc="+_udh+"; path="+_utcp+";"+_udo;
-  _ufns=1;
- }
- if (_ulink && xx && xx!="" && xx!="-") {
-   xx=_uUES(xx);
-   if (xx.indexOf(";")==-1) _ubd.cookie="__utmx="+xx+"; path="+_utcp+";"+nx+_udo;
- }
- if (_ulink && v && v!="" && v!="-") {
-  v=_uUES(v);
-  if (v.indexOf(";")==-1) _ubd.cookie="__utmv="+v+"; path="+_utcp+";"+nx+_udo;
- }
- var wc=window;
- var c=_ubd.cookie;
- if(wc && wc.gaGlobal && wc.gaGlobal.dh==_udh){
-  var g=wc.gaGlobal;
-  var ua=c.split("__utma="+_udh+".")[1].split(";")[0].split(".");
-  if(g.sid)ua[3]=g.sid;
-  if(nv>0){
-   ua[2]=ua[3];
-   if(g.vid){
-    var v=g.vid.split(".");
-    ua[0]=v[0];
-    ua[1]=v[1];
-   }
-  }
-  _ubd.cookie="__utma="+_udh+"."+ua.join(".")+"; path="+_utcp+";"+nx+_udo;
- }
- _uInfo(page);
- _ufns=0;
- _ufno=0;
- if (!page || page=="") _uff=1;
-}
-function _uGH() {
- var hid;
- var wc=window;
- if (wc && wc.gaGlobal && wc.gaGlobal.hid) {
-  hid=wc.gaGlobal.hid;
- } else {
-  hid=Math.round(Math.random()*0x7fffffff);
-  if (!wc.gaGlobal) wc.gaGlobal={};
-  wc.gaGlobal.hid=hid;
- }
- return hid;
-}
-function _uInfo(page) {
- var p,s="",dm="",pg=_udl.pathname+_udl.search;
- if (page && page!="") pg=_uES(page,1);
- _ur=_ubd.referrer;
- if (!_ur || _ur=="") { _ur="-"; }
- else {
-  dm=_ubd.domain;
-  if(_utcp && _utcp!="/") dm+=_utcp;
-  p=_ur.indexOf(dm);
-  if ((p>=0) && (p<=8)) { _ur="0"; }
-  if (_ur.indexOf("[")==0 && _ur.lastIndexOf("]")==(_ur.length-1)) { _ur="-"; }
- }
- s+="&utmn="+_uu;
- if (_ufsc) s+=_uBInfo();
- if (_uctm) s+=_uCInfo();
- if (_utitle && _ubd.title && _ubd.title!="") s+="&utmdt="+_uES(_ubd.title);
- if (_udl.hostname && _udl.hostname!="") s+="&utmhn="+_uES(_udl.hostname);
- if (_usample && _usample != 100) s+="&utmsp="+_uES(_usample);
- s+="&utmhid="+_uGH();
- s+="&utmr="+_ur;
- s+="&utmp="+pg;
- if ((_userv==0 || _userv==2) && _uSP()) {
-  var i=new Image(1,1);
-  i.src=_ugifpath+"?"+"utmwv="+_uwv+s;
-  i.onload=function() { _uVoid(); }
- }
- if ((_userv==1 || _userv==2) && _uSP()) {
-  var i2=new Image(1,1);
-  i2.src=_ugifpath2+"?"+"utmwv="+_uwv+s+"&utmac="+_uacct+"&utmcc="+_uGCS();
-  i2.onload=function() { _uVoid(); }
- }
- return;
-}
-function _uVoid() { return; }
-function _uCInfo() {
- if (!_ucto || _ucto=="") { _ucto="15768000"; }
- if (!_uVG()) return;
- var c="",t="-",t2="-",t3="-",o=0,cs=0,cn=0,i=0,z="-",s="";
- if (_uanchor && _udlh && _udlh!="") s=_udlh+"&";
- s+=_udl.search;
- var x=new Date(_udt.getTime()+(_ucto*1000));
- var dc=_ubd.cookie;
- x=" expires="+x.toGMTString()+";";
- if (_ulink && !_ubl) {
-  z=_uUES(_uGC(s,"__utmz=","&"));
-  if (z!="-" && z.indexOf(";")==-1) { _ubd.cookie="__utmz="+z+"; path="+_utcp+";"+x+_udo; return ""; }
- }
- z=dc.indexOf("__utmz="+_udh+".");
- if (z>-1) { z=_uGC(dc,"__utmz="+_udh+".",";"); }
- else { z="-"; }
- t=_uGC(s,_ucid+"=","&");
- t2=_uGC(s,_ucsr+"=","&");
- t3=_uGC(s,"gclid=","&");
- if ((t!="-" && t!="") || (t2!="-" && t2!="") || (t3!="-" && t3!="")) {
-  if (t!="-" && t!="") c+="utmcid="+_uEC(t);
-  if (t2!="-" && t2!="") { if (c != "") c+="|"; c+="utmcsr="+_uEC(t2); }
-  if (t3!="-" && t3!="") { if (c != "") c+="|"; c+="utmgclid="+_uEC(t3); }
-  t=_uGC(s,_uccn+"=","&");
-  if (t!="-" && t!="") c+="|utmccn="+_uEC(t);
-  else c+="|utmccn=(not+set)";
-  t=_uGC(s,_ucmd+"=","&");
-  if (t!="-" && t!="") c+="|utmcmd="+_uEC(t);
-  else  c+="|utmcmd=(not+set)";
-  t=_uGC(s,_uctr+"=","&");
-  if (t!="-" && t!="") c+="|utmctr="+_uEC(t);
-  else { t=_uOrg(1); if (t!="-" && t!="") c+="|utmctr="+_uEC(t); }
-  t=_uGC(s,_ucct+"=","&");
-  if (t!="-" && t!="") c+="|utmcct="+_uEC(t);
-  t=_uGC(s,_ucno+"=","&");
-  if (t=="1") o=1;
-  if (z!="-" && o==1) return "";
- }
- if (c=="-" || c=="") { c=_uOrg(); if (z!="-" && _ufno==1)  return ""; }
- if (c=="-" || c=="") { if (_ufns==1)  c=_uRef(); if (z!="-" && _ufno==1)  return ""; }
- if (c=="-" || c=="") {
-  if (z=="-" && _ufns==1) { c="utmccn=(direct)|utmcsr=(direct)|utmcmd=(none)"; }
-  if (c=="-" || c=="") return "";
- }
- if (z!="-") {
-  i=z.indexOf(".");
-  if (i>-1) i=z.indexOf(".",i+1);
-  if (i>-1) i=z.indexOf(".",i+1);
-  if (i>-1) i=z.indexOf(".",i+1);
-  t=z.substring(i+1,z.length);
-  if (t.toLowerCase()==c.toLowerCase()) cs=1;
-  t=z.substring(0,i);
-  if ((i=t.lastIndexOf(".")) > -1) {
-   t=t.substring(i+1,t.length);
-   cn=(t*1);
-  }
- }
- if (cs==0 || _ufns==1) {
-  t=_uGC(dc,"__utma="+_udh+".",";");
-  if ((i=t.lastIndexOf(".")) > 9) {
-   _uns=t.substring(i+1,t.length);
-   _uns=(_uns*1);
-  }
-  cn++;
-  if (_uns==0) _uns=1;
-  _ubd.cookie="__utmz="+_udh+"."+_ust+"."+_uns+"."+cn+"."+c+"; path="+_utcp+"; "+x+_udo;
- }
- if (cs==0 || _ufns==1) return "&utmcn=1";
- else return "&utmcr=1";
-}
-function _uRef() {
- if (_ur=="0" || _ur=="" || _ur=="-") return "";
- var i=0,h,k,n;
- if ((i=_ur.indexOf("://"))<0 || _uGCse()) return "";
- h=_ur.substring(i+3,_ur.length);
- if (h.indexOf("/") > -1) {
-  k=h.substring(h.indexOf("/"),h.length);
-  if (k.indexOf("?") > -1) k=k.substring(0,k.indexOf("?"));
-  h=h.substring(0,h.indexOf("/"));
- }
- h=h.toLowerCase();
- n=h;
- if ((i=n.indexOf(":")) > -1) n=n.substring(0,i);
- for (var ii=0;ii<_uRno.length;ii++) {
-  if ((i=n.indexOf(_uRno[ii].toLowerCase())) > -1 && n.length==(i+_uRno[ii].length)) { _ufno=1; break; }
- }
- if (h.indexOf("www.")==0) h=h.substring(4,h.length);
- return "utmccn=(referral)|utmcsr="+_uEC(h)+"|"+"utmcct="+_uEC(k)+"|utmcmd=referral";
-}
-function _uOrg(t) {
- if (_ur=="0" || _ur=="" || _ur=="-") return "";
- var i=0,h,k;
- if ((i=_ur.indexOf("://"))<0 || _uGCse()) return "";
- h=_ur.substring(i+3,_ur.length);
- if (h.indexOf("/") > -1) {
-  h=h.substring(0,h.indexOf("/"));
- }
- for (var ii=0;ii<_uOsr.length;ii++) {
-  if (h.toLowerCase().indexOf(_uOsr[ii].toLowerCase()) > -1) {
-   if ((i=_ur.indexOf("?"+_uOkw[ii]+"=")) > -1 || (i=_ur.indexOf("&"+_uOkw[ii]+"=")) > -1) {
-    k=_ur.substring(i+_uOkw[ii].length+2,_ur.length);
-    if ((i=k.indexOf("&")) > -1) k=k.substring(0,i);
-    for (var yy=0;yy<_uOno.length;yy++) {
-     if (_uOno[yy].toLowerCase()==k.toLowerCase()) { _ufno=1; break; }
-    }
-    if (t) return _uEC(k);
-    else return "utmccn=(organic)|utmcsr="+_uEC(_uOsr[ii])+"|"+"utmctr="+_uEC(k)+"|utmcmd=organic";
-   }
-  }
- }
- return "";
-}
-function _uGCse() {
- var h,p;
- h=p=_ur.split("://")[1];
- if(h.indexOf("/")>-1) {
-  h=h.split("/")[0];
-  p=p.substring(p.indexOf("/")+1,p.length);
- }
- if(p.indexOf("?")>-1) {
-  p=p.split("?")[0];
- }
- if(h.toLowerCase().indexOf("google")>-1) {
-  if(_ur.indexOf("?q=")>-1 || _ur.indexOf("&q=")>-1) {
-   if (p.toLowerCase().indexOf("cse")>-1) {
-    return true;
-   }
-  }
- }
-}
-function _uBInfo() {
- var sr="-",sc="-",ul="-",fl="-",cs="-",je=1;
- var n=navigator;
- if (self.screen) {
-  sr=screen.width+"x"+screen.height;
-  sc=screen.colorDepth+"-bit";
- } else if (self.java) {
-  var j=java.awt.Toolkit.getDefaultToolkit();
-  var s=j.getScreenSize();
-  sr=s.width+"x"+s.height;
- }
- if (n.language) { ul=n.language.toLowerCase(); }
- else if (n.browserLanguage) { ul=n.browserLanguage.toLowerCase(); }
- je=n.javaEnabled()?1:0;
- if (_uflash) fl=_uFlash();
- if (_ubd.characterSet) cs=_uES(_ubd.characterSet);
- else if (_ubd.charset) cs=_uES(_ubd.charset);
- return "&utmcs="+cs+"&utmsr="+sr+"&utmsc="+sc+"&utmul="+ul+"&utmje="+je+"&utmfl="+fl;
-}
-function __utmSetTrans() {
- var e;
- if (_ubd.getElementById) e=_ubd.getElementById("utmtrans");
- else if (_ubd.utmform && _ubd.utmform.utmtrans) e=_ubd.utmform.utmtrans;
- if (!e) return;
- var l=e.value.split("UTM:");
- var i,i2,c;
- if (_userv==0 || _userv==2) i=new Array();
- if (_userv==1 || _userv==2) { i2=new Array(); c=_uGCS(); }
-
- for (var ii=0;ii<l.length;ii++) {
-  l[ii]=_uTrim(l[ii]);
-  if (l[ii].charAt(0)!='T' && l[ii].charAt(0)!='I') continue;
-  var r=Math.round(Math.random()*2147483647);
-  if (!_utsp || _utsp=="") _utsp="|";
-  var f=l[ii].split(_utsp),s="";
-  if (f[0].charAt(0)=='T') {
-   s="&utmt=tran"+"&utmn="+r;
-   f[1]=_uTrim(f[1]); if(f[1]&&f[1]!="") s+="&utmtid="+_uES(f[1]);
-   f[2]=_uTrim(f[2]); if(f[2]&&f[2]!="") s+="&utmtst="+_uES(f[2]);
-   f[3]=_uTrim(f[3]); if(f[3]&&f[3]!="") s+="&utmtto="+_uES(f[3]);
-   f[4]=_uTrim(f[4]); if(f[4]&&f[4]!="") s+="&utmttx="+_uES(f[4]);
-   f[5]=_uTrim(f[5]); if(f[5]&&f[5]!="") s+="&utmtsp="+_uES(f[5]);
-   f[6]=_uTrim(f[6]); if(f[6]&&f[6]!="") s+="&utmtci="+_uES(f[6]);
-   f[7]=_uTrim(f[7]); if(f[7]&&f[7]!="") s+="&utmtrg="+_uES(f[7]);
-   f[8]=_uTrim(f[8]); if(f[8]&&f[8]!="") s+="&utmtco="+_uES(f[8]);
-  } else {
-   s="&utmt=item"+"&utmn="+r;
-   f[1]=_uTrim(f[1]); if(f[1]&&f[1]!="") s+="&utmtid="+_uES(f[1]);
-   f[2]=_uTrim(f[2]); if(f[2]&&f[2]!="") s+="&utmipc="+_uES(f[2]);
-   f[3]=_uTrim(f[3]); if(f[3]&&f[3]!="") s+="&utmipn="+_uES(f[3]);
-   f[4]=_uTrim(f[4]); if(f[4]&&f[4]!="") s+="&utmiva="+_uES(f[4]);
-   f[5]=_uTrim(f[5]); if(f[5]&&f[5]!="") s+="&utmipr="+_uES(f[5]);
-   f[6]=_uTrim(f[6]); if(f[6]&&f[6]!="") s+="&utmiqt="+_uES(f[6]);
-  }
-  if (_udl.hostname && _udl.hostname!="") s+="&utmhn="+_uES(_udl.hostname);
-  if (_usample && _usample != 100) s+="&utmsp="+_uES(_usample);
-
-  if ((_userv==0 || _userv==2) && _uSP()) {
-   i[ii]=new Image(1,1);
-   i[ii].src=_ugifpath+"?"+"utmwv="+_uwv+s;
-   i[ii].onload=function() { _uVoid(); }
-  }
-  if ((_userv==1 || _userv==2) && _uSP()) {
-   i2[ii]=new Image(1,1);
-   i2[ii].src=_ugifpath2+"?"+"utmwv="+_uwv+s+"&utmac="+_uacct+"&utmcc="+c;
-   i2[ii].onload=function() { _uVoid(); }
-  }
- }
- return;
-}
-function _uFlash() {
- var f="-",n=navigator;
- if (n.plugins && n.plugins.length) {
-  for (var ii=0;ii<n.plugins.length;ii++) {
-   if (n.plugins[ii].name.indexOf('Shockwave Flash')!=-1) {
-    f=n.plugins[ii].description.split('Shockwave Flash ')[1];
-    break;
-   }
-  }
- } else {
-  var fl;
-  try {
-   fl = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
-   f = fl.GetVariable("$version");
-  } catch(e) {}
-  if (f == "-") {
-   try {
-    fl = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
-    f = "WIN 6,0,21,0";
-    fl.AllowScriptAccess = "always";
-    f = fl.GetVariable("$version");
-   } catch(e) {}
-  }
-  if (f == "-") {
-   try {
-    fl = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
-    f = fl.GetVariable("$version");
-   } catch(e) {}
-  }
-  if (f != "-") {
-   f = f.split(" ")[1].split(",");
-   f = f[0] + "." + f[1] + " r" + f[2];
-  }
- }
- return f;
-}
-function __utmLinkerUrl(l,h) {
- var p,k,a="-",b="-",c="-",x="-",z="-",v="-";
- var dc=_ubd.cookie;
- var iq = l.indexOf("?");
- var ih = l.indexOf("#");
- var url=l;
- if (dc) {
-  a=_uES(_uGC(dc,"__utma="+_udh+".",";"));
-  b=_uES(_uGC(dc,"__utmb="+_udh,";"));
-  c=_uES(_uGC(dc,"__utmc="+_udh,";"));
-  x=_uES(_uGC(dc,"__utmx="+_udh,";"));
-  z=_uES(_uGC(dc,"__utmz="+_udh+".",";"));
-  v=_uES(_uGC(dc,"__utmv="+_udh+".",";"));
-  k=(_uHash(a+b+c+x+z+v)*1)+(_udh*1);
-  p="__utma="+a+"&__utmb="+b+"&__utmc="+c+"&__utmx="+x+"&__utmz="+z+"&__utmv="+v+"&__utmk="+k;
- }
- if (p) {
-  if (h && ih>-1) return;
-  if (h) { url=l+"#"+p; }
-  else {
-   if (iq==-1 && ih==-1) url=l+"?"+p;
-   else if (ih==-1) url=l+"&"+p;
-   else if (iq==-1) url=l.substring(0,ih-1)+"?"+p+l.substring(ih);
-   else url=l.substring(0,ih-1)+"&"+p+l.substring(ih);
-  }
- }
- return url;
-}
-function __utmLinker(l,h) {
- if (!_ulink || !l || l=="") return;
- _udl.href=__utmLinkerUrl(l,h);
-}
-function __utmLinkPost(f,h) {
- if (!_ulink || !f || !f.action) return;
- f.action=__utmLinkerUrl(f.action, h);
- return;
-}
-function __utmSetVar(v) {
- if (!v || v=="") return;
- if (!_udo || _udo == "") {
-  _udh=_uDomain();
-  if (_udn && _udn!="") { _udo=" domain="+_udn+";"; }
- }
- if (!_uVG()) return;
- var r=Math.round(Math.random() * 2147483647);
- _ubd.cookie="__utmv="+_udh+"."+_uES(v)+"; path="+_utcp+"; expires="+_uNx()+";"+_udo;
- var s="&utmt=var&utmn="+r;
- if (_usample && _usample != 100) s+="&utmsp="+_uES(_usample);
- if ((_userv==0 || _userv==2) && _uSP()) {
-  var i=new Image(1,1);
-  i.src=_ugifpath+"?"+"utmwv="+_uwv+s;
-  i.onload=function() { _uVoid(); }
- }
- if ((_userv==1 || _userv==2) && _uSP()) {
-  var i2=new Image(1,1);
-  i2.src=_ugifpath2+"?"+"utmwv="+_uwv+s+"&utmac="+_uacct+"&utmcc="+_uGCS();
-  i2.onload=function() { _uVoid(); }
- }
-}
-function _uGCS() {
- var t,c="",dc=_ubd.cookie;
- if ((t=_uGC(dc,"__utma="+_udh+".",";"))!="-") c+=_uES("__utma="+t+";+");
- if ((t=_uGC(dc,"__utmx="+_udh,";"))!="-") c+=_uES("__utmx="+t+";+");
- if ((t=_uGC(dc,"__utmz="+_udh+".",";"))!="-") c+=_uES("__utmz="+t+";+");
- if ((t=_uGC(dc,"__utmv="+_udh+".",";"))!="-") c+=_uES("__utmv="+t+";");
- if (c.charAt(c.length-1)=="+") c=c.substring(0,c.length-1);
- return c;
-}
-function _uGC(l,n,s) {
- if (!l || l=="" || !n || n=="" || !s || s=="") return "-";
- var i,i2,i3,c="-";
- i=l.indexOf(n);
- i3=n.indexOf("=")+1;
- if (i > -1) {
-  i2=l.indexOf(s,i); if (i2 < 0) { i2=l.length; }
-  c=l.substring((i+i3),i2);
- }
- return c;
-}
-function _uDomain() {
- if (!_udn || _udn=="" || _udn=="none") { _udn=""; return 1; }
- if (_udn=="auto") {
-  var d=_ubd.domain;
-  if (d.substring(0,4)=="www.") {
-   d=d.substring(4,d.length);
-  }
-  _udn=d;
- }
- _udn = _udn.toLowerCase(); 
- if (_uhash=="off") return 1;
- return _uHash(_udn);
-}
-function _uHash(d) {
- if (!d || d=="") return 1;
- var h=0,g=0;
- for (var i=d.length-1;i>=0;i--) {
-  var c=parseInt(d.charCodeAt(i));
-  h=((h << 6) & 0xfffffff) + c + (c << 14);
-  if ((g=h & 0xfe00000)!=0) h=(h ^ (g >> 21));
- }
- return h;
-}
-function _uFixA(c,s,t) {
- if (!c || c=="" || !s || s=="" || !t || t=="") return "-";
- var a=_uGC(c,"__utma="+_udh+".",s);
- var lt=0,i=0;
- if ((i=a.lastIndexOf(".")) > 9) {
-  _uns=a.substring(i+1,a.length);
-  _uns=(_uns*1)+1;
-  a=a.substring(0,i);
-  if ((i=a.lastIndexOf(".")) > 7) {
-   lt=a.substring(i+1,a.length);
-   a=a.substring(0,i);
-  }
-  if ((i=a.lastIndexOf(".")) > 5) {
-   a=a.substring(0,i);
-  }
-  a+="."+lt+"."+t+"."+_uns;
- }
- return a;
-}
-function _uTrim(s) {
-  if (!s || s=="") return "";
-  while ((s.charAt(0)==' ') || (s.charAt(0)=='\n') || (s.charAt(0,1)=='\r')) s=s.substring(1,s.length);
-  while ((s.charAt(s.length-1)==' ') || (s.charAt(s.length-1)=='\n') || (s.charAt(s.length-1)=='\r')) s=s.substring(0,s.length-1);
-  return s;
-}
-function _uEC(s) {
-  var n="";
-  if (!s || s=="") return "";
-  for (var i=0;i<s.length;i++) {if (s.charAt(i)==" ") n+="+"; else n+=s.charAt(i);}
-  return n;
-}
-function __utmVisitorCode(f) {
- var r=0,t=0,i=0,i2=0,m=31;
- var a=_uGC(_ubd.cookie,"__utma="+_udh+".",";");
- if ((i=a.indexOf(".",0))<0) return;
- if ((i2=a.indexOf(".",i+1))>0) r=a.substring(i+1,i2); else return "";  
- if ((i=a.indexOf(".",i2+1))>0) t=a.substring(i2+1,i); else return "";  
- if (f) {
-  return r;
- } else {
-  var c=new Array('A','B','C','D','E','F','G','H','J','K','L','M','N','P','R','S','T','U','V','W','X','Y','Z','1','2','3','4','5','6','7','8','9');
-  return c[r>>28&m]+c[r>>23&m]+c[r>>18&m]+c[r>>13&m]+"-"+c[r>>8&m]+c[r>>3&m]+c[((r&7)<<2)+(t>>30&3)]+c[t>>25&m]+c[t>>20&m]+"-"+c[t>>15&m]+c[t>>10&m]+c[t>>5&m]+c[t&m];
- }
-}
-function _uIN(n) {
- if (!n) return false;
- for (var i=0;i<n.length;i++) {
-  var c=n.charAt(i);
-  if ((c<"0" || c>"9") && (c!=".")) return false;
- }
- return true;
-}
-function _uES(s,u) {
- if (typeof(encodeURIComponent) == 'function') {
-  if (u) return encodeURI(s);
-  else return encodeURIComponent(s);
- } else {
-  return escape(s);
- }
-}
-function _uUES(s) {
- if (typeof(decodeURIComponent) == 'function') {
-  return decodeURIComponent(s);
- } else {
-  return unescape(s);
- }
-}
-function _uVG() {
- if((_udn.indexOf("www.google.") == 0 || _udn.indexOf(".google.") == 0 || _udn.indexOf("google.") == 0) && _utcp=='/' && _udn.indexOf("google.org")==-1) {
-  return false;
- }
- return true;
-}
-function _uSP() {
- var s=100;
- if (_usample) s=_usample;
- if(s>=100 || s<=0) return true;
- return ((__utmVisitorCode(1)%10000)<(s*100));
-}
-function urchinPathCopy(p){
- var d=document,nx,tx,sx,i,c,cs,t,h,o;
- cs=new Array("a","b","c","v","x","z");
- h=_uDomain(); if (_udn && _udn!="") o=" domain="+_udn+";";
- nx=_uNx()+";";
- tx=new Date(); tx.setTime(tx.getTime()+(_utimeout*1000));
- tx=tx.toGMTString()+";";
- sx=new Date(); sx.setTime(sx.getTime()+(_ucto*1000));
- sx=sx.toGMTString()+";";
- for (i=0;i<6;i++){
-  t=" expires=";
-  if (i==1) t+=tx; else if (i==2) t=""; else if (i==5) t+=sx; else t+=nx;
-  c=_uGC(d.cookie,"__utm"+cs[i]+"="+h,";");
-  if (c!="-") d.cookie="__utm"+cs[i]+"="+c+"; path="+p+";"+t+o;
- }
-}
-function _uCO() {
- if (!_utk || _utk=="" || _utk.length<10) return;
- var d='www.google.com';
- if (_utk.charAt(0)=='!') d='analytics.corp.google.com';
- _ubd.cookie="GASO="+_utk+"; path="+_utcp+";"+_udo;
- var sc=document.createElement('script');
- sc.type='text/javascript';
- sc.id="_gasojs";
- sc.src='https://'+d+'/analytics/reporting/overlay_js?gaso='+_utk+'&'+Math.random();
- document.getElementsByTagName('head')[0].appendChild(sc);  
-}
-function _uGT() {
- var h=location.hash, a;
- if (h && h!="" && h.indexOf("#gaso=")==0) {
-  a=_uGC(h,"gaso=","&");
- } else {
-  a=_uGC(_ubd.cookie,"GASO=",";");
- }
- return a;
-}
-var _utk=_uGT();
-if (_utk && _utk!="" && _utk.length>10 && _utk.indexOf("=")==-1) {
- if (window.addEventListener) {
-  window.addEventListener('load', _uCO, false); 
- } else if (window.attachEvent) { 
-  window.attachEvent('onload', _uCO);
- }
-}
-
-function _uNx() {
-  return (new Date((new Date()).getTime()+63072000000)).toGMTString();
-}
diff --git a/getmehome/.gitignore b/getmehome/.gitignore
deleted file mode 100644 (file)
index 6dac9f2..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-.deps
-.libs
-Makefile
-Makefile.in
-aclocal.m4
-autom4te.cache
-config.guess
-config.h
-config.h.in
-config.log
-config.status
-config.sub
-configure
-depcomp
-install-sh
-libtool
-ltmain.sh
-missing
-stamp-h1
-*.desktop
-*~
diff --git a/getmehome/AUTHORS b/getmehome/AUTHORS
deleted file mode 100644 (file)
index 36d7ace..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Maemo Team <xxxx@maemo.org>
diff --git a/getmehome/COPYING b/getmehome/COPYING
deleted file mode 100644 (file)
index f083aa1..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-Copyright (C) 2009 Nokia Corporation. All rights reserved.
-
-This maemo code example is licensed under a following MIT-style license.
-
-Permission is hereby granted, free of charge, to any person obtaining a
-copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE 
diff --git a/getmehome/ChangeLog b/getmehome/ChangeLog
deleted file mode 100644 (file)
index bff24a6..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-2009-06-24  Maemo Team  <xxxx@maemo.org>
-
-       * Autotoolized and debianized
diff --git a/getmehome/Makefile.am b/getmehome/Makefile.am
deleted file mode 100644 (file)
index 42126d2..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-# We invent desktoplib_LTLIBRARIES instead of the normal lib_LTLIBRARIES,
-# so we can specify the non-standard installation directory.
-desktoplib_LTLIBRARIES =  lib-timeout-home-widget.la
-desktoplibdir = $(HILDON_DESKTOP_LIB_DIR)
-
-lib_timeout_home_widget_la_SOURCES = lib-timeout-home-widget.c lib-timeout-home-widget.h location-provider.c location-provider.h coordinate-system.c coordinate-system.h
-lib_timeout_home_widget_la_LIBADD = $(EXAMPLE_LIBS)
-
-AM_CFLAGS = -Wall $(EXAMPLE_CFLAGS)
-
-# .desktop file
-desktopdir = $(HILDON_HOME_DESKTOP_DIR)
-desktop_DATA = timeout-home-widget.desktop
-
-DISTCLEANFILES = $(desktop_DATA)
diff --git a/getmehome/NEWS b/getmehome/NEWS
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/getmehome/README b/getmehome/README
deleted file mode 100644 (file)
index 1c7902a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Example Home widget. Provides TimeOut applet for the Home Area of the desktop.
diff --git a/getmehome/antigen.sh b/getmehome/antigen.sh
deleted file mode 100644 (file)
index b877a0b..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-set -ex
-if test -f Makefile; then
-  make distclean
-fi
-rm -f *.tar.* *.tgz
-rm -Rf autom4te.cache
-rm -f Makefile.in aclocal.m4 configure depcomp install-sh missing ltmain.sh config.guess config.sub config.h.in mkinstalldirs INSTALL
diff --git a/getmehome/autogen.sh b/getmehome/autogen.sh
deleted file mode 100755 (executable)
index 27a68ef..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-
-set -ex
-autoreconf --install --force 
diff --git a/getmehome/configure.ac b/getmehome/configure.ac
deleted file mode 100644 (file)
index ebe86df..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-AC_PREREQ(2.61)
-AC_INIT([hildon-timeout-desktop-widget-example], [0.1])
-AC_CONFIG_SRCDIR([lib-timeout-home-widget.c])
-AM_INIT_AUTOMAKE
-AC_CONFIG_HEADER([config.h])
-
-AC_PROG_CC
-AC_HEADER_STDC
-AC_PROG_INSTALL
-AM_PROG_LIBTOOL
-
-PKG_CHECK_MODULES(EXAMPLE, hildon-1 libhildondesktop-1 gtk+-2.0 liblocation)
-AC_SUBST(EXAMPLE_CFLAGS)
-AC_SUBST(EXAMPLE_LIBS)
-
-# Discover where to install the .desktop file:
-HILDON_HOME_DESKTOP_DIR=`pkg-config libhildondesktop-1 --variable=hildonhomedesktopentrydir`
-AC_SUBST(HILDON_HOME_DESKTOP_DIR)
-
-# Discover where to install the status widget's lib file:
-HILDON_DESKTOP_LIB_DIR=`pkg-config libhildondesktop-1 --variable=hildondesktoplibdir`
-AC_SUBST(HILDON_DESKTOP_LIB_DIR) 
-
-
-AC_OUTPUT(Makefile)
-AC_OUTPUT(timeout-home-widget.desktop)
diff --git a/getmehome/coordinate-system.c b/getmehome/coordinate-system.c
deleted file mode 100644 (file)
index ed84894..0000000
+++ /dev/null
@@ -1,156 +0,0 @@
-#include "coordinate-system.h"
-
-#include <math.h>
-
-
-// Degrees to radians
-double radians(double deg) {
-    return deg * M_PI / 180.0;
-}
-
-// Radians to degrees
-double degrees(double rad) {
-    return rad * 180.0 / M_PI;
-}
-
-
-// Constants
-// Longitude0 and Center meridian of KKJ bands
-const double KKJ_ZONE_INFO[6][2] = { {18.0,  500000.0},
-                                     {21.0, 1500000.0},
-                                     {24.0, 2500000.0},
-                                     {27.0, 3500000.0},
-                                     {30.0, 4500000.0},
-                                     {33.0, 5500000.0} };
-
-
-// Function:  KKJ_Zone_I
-int KKJ_Zone_I(KKJ easting) {
-    int zoneNumber = floor(easting / 1000000.0);
-    if (zoneNumber < 0 || zoneNumber > 5) {
-        zoneNumber = -1;
-    }
-
-    return zoneNumber;
-}
-
-
-// Function:  KKJ_Zone_Lo
-int KKJ_Zone_Lo(double kkjlo) {
-    // determine the zonenumber from KKJ easting
-    // takes KKJ zone which has center meridian
-    // longitude nearest (in math value) to
-    // the given KKJ longitude
-    int zoneNumber = 5;
-    while (zoneNumber >= 0) {
-        if (fabs(kkjlo - KKJ_ZONE_INFO[zoneNumber][0]) <= 1.5) {
-            break;
-        }
-        zoneNumber--;
-    }
-
-    return zoneNumber;
-}
-
-
-// Function:  KKJlalo_to_WGS84lalo
-void KKJlola_to_WGS84lola(double kkjlo, double kkjla, double *outLongitude, double *outLatitude) {
-    double dLa = radians(0.124867E+01 + -0.269982E+00 * kkjla + 0.191330E+00 * kkjlo + 0.356119E-02 * kkjla * kkjla + -0.122312E-02 * kkjla * kkjlo + -0.335514E-03 * kkjlo * kkjlo) / 3600.0;
-    double dLo = radians(-0.286111E+02 + 0.114183E+01 * kkjla + -0.581428E+00 * kkjlo + -0.152421E-01 * kkjla * kkjla + 0.118177E-01 * kkjla * kkjlo + 0.826646E-03 * kkjlo * kkjlo) / 3600.0;
-
-    *outLatitude = degrees(radians(kkjla) + dLa);
-    *outLongitude = degrees(radians(kkjlo) + dLo);
-}
-
-
-// Function:  WGS84lalo_to_KKJlalo
-void WGS84lola_to_KKJlola(double longitude, double latitude, double *outLongitude, double *outLatitude) {
-    double dLa = radians(-0.124766E+01 + 0.269941E+00 * latitude + -0.191342E+00 * longitude + -0.356086E-02 * latitude * latitude + 0.122353E-02 * latitude * longitude + 0.335456E-03 * longitude * longitude) / 3600.0;
-    double dLo = radians(0.286008E+02 + -0.114139E+01 * latitude + 0.581329E+00 * longitude + 0.152376E-01 * latitude * latitude + -0.118166E-01 * latitude * longitude + -0.826201E-03 * longitude * longitude) / 3600.0;
-
-    *outLatitude = degrees(radians(latitude) + dLa);
-    *outLongitude = degrees(radians(longitude) + dLo);
-}
-
-
-// Function:  KKJlalo_to_KKJxy
-void KKJlola_to_KKJxy(double lon, double lat, int zoneNumber, KKJ *outX, KKJ *outY) {
-    // Hayford ellipsoid
-    double a = 6378388.0;
-    double f  = 1.0 / 297.0;
-    double b  = (1.0 - f) * a;
-    double bb = b * b;
-    double c  = (a / b) * a;
-    double ee = (a * a - bb) / bb;
-    double n = (a - b) / (a + b);
-    double nn = n * n;
-
-    double Lo = radians(lon) - radians(KKJ_ZONE_INFO[zoneNumber][0]);
-    double cosLa = cos(radians(lat));
-    double NN = ee * cosLa * cosLa;
-    double LaF = atan(tan(radians(lat)) / cos(Lo * sqrt(1.0 + NN)));
-    double cosLaF = cos(LaF);
-    double t = (tan(Lo) * cosLaF) / sqrt(1.0 + ee * cosLaF * cosLaF);
-    double A = a / (1.0 + n);
-    double A1 = A * (1.0 + nn / 4.0 + nn * nn / 64.0);
-    double A2 = A * 1.5 * n * (1.0 - nn / 8.0);
-    double A3 = A * 0.9375 * nn * (1.0 - nn / 4.0);
-    double A4 = A * 35.0 / 48.0 * nn * n;
-
-    *outY = A1 * LaF - A2 * sin(2.0 * LaF) + A3 * sin(4.0 * LaF) - A4 * sin(6.0 * LaF);
-    *outX = c * log(t + sqrt(1.0 + t * t)) + 500000.0 + zoneNumber * 1000000.0;
-}
-
-// Function:  KKJxy_to_KKJlalo
-void KKJxy_to_KKJlola(KKJ x, KKJ y, double *outLongitude, double *outLatitude) {
-    // Scan iteratively the target area, until find matching
-    // KKJ coordinate value.  Area is defined with Hayford Ellipsoid.
-    int zoneNumber = KKJ_Zone_I(x);
-    double minLo = radians(18.5);
-    double maxLo = radians(32.0);
-    double minLa = radians(59.0);
-    double maxLa = radians(70.5);
-
-    int i = 1;
-    KKJ tmpX, tmpY;
-
-    while (i < 35) {
-        double deltaLo = maxLo - minLo;
-        double deltaLa = maxLa - minLa;
-        *outLongitude = degrees(minLo + 0.5 * deltaLo);
-        *outLatitude = degrees(minLa + 0.5 * deltaLa);
-        KKJlola_to_KKJxy(*outLongitude, *outLatitude, zoneNumber, &tmpX, &tmpY);
-        if (tmpY < y) {
-            minLa = minLa + 0.45 * deltaLa;
-        } else {
-            maxLa = minLa + 0.55 * deltaLa;
-        }
-
-        if (tmpX < x) {
-            minLo = minLo + 0.45 * deltaLo;
-        } else {
-            maxLo = minLo + 0.55 * deltaLo;
-        }
-
-        i++;
-    }
-}
-
-  ////////////////////
- // PUBLIC METHODS //
-////////////////////
-
-void WGS84lola_to_KKJxy(double longitude, double latitude, KKJ *outX, KKJ *outY) {
-    double kkjlo, kkjla;
-
-    WGS84lola_to_KKJlola(longitude, latitude, &kkjlo, &kkjla);
-    int zoneNumber = KKJ_Zone_Lo(kkjlo);
-    KKJlola_to_KKJxy(kkjlo, kkjla, zoneNumber, outX, outY);
- }
-
-void KKJxy_to_WGS84lola(KKJ x, KKJ y, double *outLongitude, double *outLatitude) {
-    double kkjlo, kkjla;
-
-    KKJxy_to_KKJlola(x, y, &kkjlo, &kkjla);
-    KKJlola_to_WGS84lola(kkjlo, kkjla, outLongitude, outLatitude);
-}
diff --git a/getmehome/coordinate-system.h b/getmehome/coordinate-system.h
deleted file mode 100644 (file)
index 7c3d100..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifndef COORDINATE_SYSTEM_H
-#define COORDINATE_SYSTEM_H
-
-// Type for KKJ x/y coordinates
-typedef unsigned int KKJ;
-
-/**
- * Transformes WGS84 longitude/latitude coordinates to KKJ x/y coordinates.
- * @param longitude the input longitude in degrees
- * @param latitude the input latitude in degrees
- * @param outX the result x (easting)
- * @param outY the result y (northing)
- */
-void WGS84lola_to_KKJxy(double longitude, double latitude, KKJ *outX, KKJ *outY);
-
-/**
- * Transformes KKJ x/y coordinates to WGS84 longitude/latitude coordinates.
- * @param x the input x (easting)
- * @param y the input y (northing)
- * @param outLongitude the result longitude in degrees
- * @param outLatitude the result latitude in degrees
- */
-void KKJxy_to_WGS84lola(KKJ x, KKJ y, double *outLongitude, double *outLatitude);
-
-#endif
diff --git a/getmehome/debian/changelog b/getmehome/debian/changelog
deleted file mode 100644 (file)
index 2865792..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-hildon-timeout-home-widget-example (0.1-1) unstable; urgency=low
-
-  * Autotoolized and debianized
-
- -- Maemo Team <xxxx@maemo.org>  Wed, 24 Jun 2009 16:22:18 +0300
-
diff --git a/getmehome/debian/compat b/getmehome/debian/compat
deleted file mode 100644 (file)
index 7ed6ff8..0000000
+++ /dev/null
@@ -1 +0,0 @@
-5
diff --git a/getmehome/debian/control b/getmehome/debian/control
deleted file mode 100644 (file)
index 3f5f1df..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-Source: hildon-timeout-home-widget-example
-Section: user/desktop
-Priority: optional
-Maintainer: Maemo Team <xxxx@maemo.org>
-Build-Depends: debhelper (>= 5), autotools-dev, libhildondesktop1-dev (>= 2.1.16)
-Standards-Version: 3.7.2
-
-Package: hildon-timeout-home-widget-example
-Architecture: any
-Depends: ${shlibs:Depends}, ${misc:Depends}
-Description: Example home widget
- An example home widget for Maemo.
diff --git a/getmehome/debian/copyright b/getmehome/debian/copyright
deleted file mode 100644 (file)
index cba57fe..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-This package was debianized by Maemo Team <xxxx@maemo.org> on
-Wed, 24 Jun 2009 16:22:18 +0300.
-
-Copyright (C) 2009 Nokia Corporation. All rights reserved.
-
-This maemo code example is licensed under a following MIT-style license.
-
-Permission is hereby granted, free of charge, to any person obtaining a
-copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE 
diff --git a/getmehome/debian/rules b/getmehome/debian/rules
deleted file mode 100644 (file)
index 399ccd8..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-#!/usr/bin/make -f
-# -*- makefile -*-
-# Sample debian/rules that uses debhelper.
-# This file was originally written by Joey Hess and Craig Small.
-# As a special exception, when this file is copied by dh-make into a
-# dh-make output file, you may use that output file without restriction.
-# This special exception was added by Craig Small in version 0.37 of dh-make.
-
-# Uncomment this to turn on verbose mode.
-#export DH_VERBOSE=1
-
-
-# These are used for cross-compiling and for saving the configure script
-# from having to guess our platform (since we know it already)
-DEB_HOST_GNU_TYPE   ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
-DEB_BUILD_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
-
-
-CFLAGS = -Wall -g
-
-ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
-       CFLAGS += -O0
-else
-       CFLAGS += -O2
-endif
-
-config.status: configure
-       dh_testdir
-       # Add here commands to configure the package.
-       ./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) --prefix=/usr --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info CFLAGS="$(CFLAGS)" LDFLAGS="-Wl,-z,defs"
-
-
-build: build-stamp
-
-build-stamp:  config.status
-       dh_testdir
-
-       # Add here commands to compile the package.
-       $(MAKE)
-       #docbook-to-man debian/hildon-timeout-home-widget-example.sgml > hildon-timeout-home-widget-example.1
-
-       touch $@
-
-clean:
-       dh_testdir
-       dh_testroot
-       rm -f build-stamp 
-
-       # Add here commands to clean up after the build process.
-       -$(MAKE) distclean
-ifneq "$(wildcard /usr/share/misc/config.sub)" ""
-       cp -f /usr/share/misc/config.sub config.sub
-endif
-ifneq "$(wildcard /usr/share/misc/config.guess)" ""
-       cp -f /usr/share/misc/config.guess config.guess
-endif
-
-
-       dh_clean 
-
-install: build
-       dh_testdir
-       dh_testroot
-       dh_clean -k 
-       dh_installdirs
-
-       # Add here commands to install the package into debian/hildon-timeout-home-widget-example.
-       $(MAKE) DESTDIR=$(CURDIR)/debian/hildon-timeout-home-widget-example install
-
-
-# Build architecture-independent files here.
-binary-indep: build install
-# We have nothing to do by default.
-
-# Build architecture-dependent files here.
-binary-arch: build install
-       dh_testdir
-       dh_testroot
-       dh_installchangelogs ChangeLog
-       dh_installdocs
-       dh_installexamples
-#      dh_install
-#      dh_installmenu
-#      dh_installdebconf       
-#      dh_installlogrotate
-#      dh_installemacsen
-#      dh_installpam
-#      dh_installmime
-#      dh_python
-#      dh_installinit
-#      dh_installcron
-#      dh_installinfo
-       dh_installman
-       dh_link
-       dh_strip
-       dh_compress
-       dh_fixperms
-#      dh_perl
-#      dh_makeshlibs
-       dh_installdeb
-       dh_shlibdeps
-       dh_gencontrol
-       dh_md5sums
-       dh_builddeb
-
-binary: binary-indep binary-arch
-.PHONY: build clean binary-indep binary-arch binary install 
diff --git a/getmehome/lib-timeout-home-widget.c b/getmehome/lib-timeout-home-widget.c
deleted file mode 100644 (file)
index 0c04c5d..0000000
+++ /dev/null
@@ -1,206 +0,0 @@
-/*
- * This file is part of hildon-timeout-home-widget-example
- *
- * Copyright (C) 2009 Nokia Corporation. All rights reserved.
- *
- * This maemo code example is licensed under a MIT-style license,
- * that can be found in the file called "COPYING" in the root
- * directory.
- *
- */
-
-#include <gtk/gtk.h>
-#include <hildon/hildon.h>
-#include <time.h>
-#include <stdlib.h>
-
-#include "lib-timeout-home-widget.h"
-
-#include "location-provider.h"
-#include "coordinate-system.h"
-
-HD_DEFINE_PLUGIN_MODULE (TimeOutPlugin, time_out_plugin, HD_TYPE_HOME_PLUGIN_ITEM)
-
-GtkTextBuffer *debugBuffer = NULL;
-
-static void printDebug(const char *msg)
-{
-    if (debugBuffer != NULL) {
-        gtk_text_buffer_insert_at_cursor(debugBuffer, msg, -1);
-        gtk_text_buffer_insert_at_cursor(debugBuffer, "\n", -1);
-    }
-}
-
-char debugStr[1024];
-#define debug(...) sprintf(debugStr, __VA_ARGS__); printDebug(debugStr)
-
-
-
-void start_location_tracking();
-void stop_location_tracking();
-
-// Railway station
-//KKJ destinationX = 2552414;
-//KKJ destinationY = 6673664;
-// Home
-KKJ destinationX = 2544607;
-KKJ destinationY = 6683661;
-
-#define IDLE 0
-#define SEARCHING_LOCATION 1
-#define LOCATION_RECEIVED 2
-
-static int widget_state = IDLE;
-
-void get_me_home(KKJ x, KKJ y)
-{
-    time_t t;
-    struct tm *tmp;
-
-    char hour[4];
-    char minute[4];
-    char day[4];
-    char month[4];
-    char year[6];
-
-    // Get the current time
-    t = time(NULL);
-    tmp = localtime(&t);
-    if (tmp == NULL) {
-        return;
-    }
-
-    // Format needed parts from the current time
-    strftime(hour, sizeof(hour), "%H", tmp);
-    strftime(minute, sizeof(minute), "%M", tmp);
-    strftime(day, sizeof(day), "%d", tmp);
-    strftime(month, sizeof(month), "%m", tmp);
-    strftime(year, sizeof(year), "%Y", tmp);
-
-    debug("Hour %s minute %s", hour, minute);
-
-    // Format the URL
-    char url[1024];
-    // http://www.reittiopas.fi/?from=poi*Current+location*2552414*6673664&to=poi*Home*2544607*6683661&hour=12&minute=18&timetype=departure&day=14&month=02&year=2010
-    sprintf(url, "http://www.reittiopas.fi/?from=poi*Current+location*%u*%u&to=poi*Home*%u*%u&hour=%s&minute=%s&timetype=departure&day=%s&month=%s&year=%s", x, y, destinationX, destinationY, hour, minute, day, month, year);
-
-    // Open the browser
-    char command[1024];
-    sprintf(command, "browser_dbuscmd.sh load_url \"%s\"", url);
-    system(command);
-}
-
-static void location_listener(double latitude, double longitude)
-{
-    KKJ x, y;
-
-//    debug("got location: %f, %f", latitude, longitude);
-
-    if (widget_state == SEARCHING_LOCATION) {
-        widget_state = LOCATION_RECEIVED;
-
-        WGS84lola_to_KKJxy(longitude, latitude, &x, &y);
-
-        get_me_home(x, y);
-
-        stop_location_tracking();
-        widget_state = IDLE;
-    }
-}
-
-int locationTrackingOn = 0;
-void start_location_tracking() {
-    if (!locationTrackingOn) {
-        // Setup location tracking
-        setup_location_provider();
-        set_location_listener(location_listener);
-        start_location_provider();
-
-        locationTrackingOn = 1;
-        debug("Location tracking started");
-    }
-}
-
-void stop_location_tracking() {
-   if (locationTrackingOn)  {
-       stop_location_provider();
-       cleanup_location_provider();
-
-       locationTrackingOn = 0;
-       debug("Location tracking stopped");
-   }
-}
-
-void search_button_clicked(GtkButton *button, gpointer user_data)
-{
-    if (widget_state == IDLE) {
-        widget_state = SEARCHING_LOCATION;
-        start_location_tracking();
-    }
-}
-
-static GtkWidget *build_ui(void)
-{
-    GtkVBox *contents = GTK_VBOX(gtk_vbox_new(0, FALSE));
-    GtkLabel *label = GTK_LABEL(gtk_label_new("Get me home"));
-//     HildonPickerButton *action;
-//     action = HILDON_PICKER_BUTTON (hildon_picker_button_new (HILDON_SIZE_FINGER_HEIGHT,
-//                                         HILDON_BUTTON_ARRANGEMENT_VERTICAL));
-//     HildonTouchSelector *action_selector;
-//     action_selector = HILDON_TOUCH_SELECTOR (hildon_touch_selector_new_text ());
-//     hildon_button_set_title (HILDON_BUTTON (action), "Action");
-//     hildon_touch_selector_append_text (action_selector, "Blank Screen");
-//     hildon_touch_selector_append_text (action_selector, "Suspend");
-//     hildon_touch_selector_append_text (action_selector, "Turn Off");
-//     hildon_picker_button_set_selector (action, action_selector);
-//     hildon_picker_button_set_active (action, 0);
-
-    GtkWidget* getmehomeButton = hildon_gtk_button_new(HILDON_SIZE_AUTO);
-    gtk_button_set_label(GTK_BUTTON(getmehomeButton), "Get Me Home");
-
-    g_signal_connect(getmehomeButton, "clicked", G_CALLBACK(search_button_clicked), NULL);
-
-//     HildonTimeButton *time;
-//     time = HILDON_TIME_BUTTON (hildon_time_button_new (HILDON_SIZE_FINGER_HEIGHT,
-//                                         HILDON_BUTTON_ARRANGEMENT_VERTICAL));
-//     hildon_time_button_set_time (time, 22, 00);
-
-    GtkHBox *buttons = GTK_HBOX(gtk_hbox_new(0, TRUE));
-    gtk_container_add(GTK_CONTAINER(buttons), GTK_WIDGET(getmehomeButton));
-//     gtk_container_add (GTK_CONTAINER (buttons), GTK_WIDGET (action));
-//     gtk_container_add (GTK_CONTAINER (buttons), GTK_WIDGET (time));
-
-    GtkWidget *debugView = hildon_text_view_new();  // gtk_text_view_new();
-    gtk_widget_set_size_request(GTK_WIDGET(debugView), 400, 200);
-    debugBuffer = hildon_text_view_get_buffer(HILDON_TEXT_VIEW(debugView)); // gtk_text_view_get_buffer(GTK_TEXT_VIEW(view));
-    GtkWidget* debugScroller = gtk_scrolled_window_new(NULL, NULL);
-    gtk_container_add(GTK_CONTAINER(debugScroller), GTK_WIDGET(debugView));
-
-    gtk_box_pack_start(GTK_BOX(contents), GTK_WIDGET(label), FALSE, FALSE, 0);
-    gtk_box_pack_end(GTK_BOX(contents), GTK_WIDGET(buttons), FALSE, FALSE, 0);
-    gtk_box_pack_end(GTK_BOX(contents), GTK_WIDGET(debugScroller), FALSE, FALSE, 0);
-    gtk_widget_show_all(GTK_WIDGET(contents));
-
-    return GTK_WIDGET(contents);
-
-    /*GtkWidget* getmehomeButton = hildon_gtk_button_new(HILDON_SIZE_AUTO);
-    gtk_button_set_label(GTK_BUTTON(getmehomeButton), "Get Me Home");
-    g_signal_connect(getmehomeButton, "clicked", G_CALLBACK(search_button_clicked), NULL);
-
-    gtk_widget_show_all(GTK_WIDGET(getmehomeButton));
-
-    return GTK_WIDGET(getmehomeButton);*/
-}
-
-static void
-time_out_plugin_init (TimeOutPlugin *desktop_plugin)
-{
-    GtkWidget *contents = build_ui ();
-    gtk_container_add (GTK_CONTAINER (desktop_plugin), contents);
-}
-
-static void
-time_out_plugin_class_init (TimeOutPluginClass *class) {}
-
-static void
-time_out_plugin_class_finalize (TimeOutPluginClass *class) {}
diff --git a/getmehome/lib-timeout-home-widget.h b/getmehome/lib-timeout-home-widget.h
deleted file mode 100644 (file)
index 3c657aa..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * This file is part of hildon-timeout-home-widget-example
- *
- * Copyright (C) 2009 Nokia Corporation. All rights reserved.
- *
- * This maemo code example is licensed under a MIT-style license,
- * that can be found in the file called "COPYING" in the root
- * directory.
- *
- */
-
-#ifndef TIME_OUT_PLUGIN_H
-#define TIME_OUT_PLUGIN_H
-
-#include <glib-object.h>
-
-#include <libhildondesktop/libhildondesktop.h>
-
-G_BEGIN_DECLS
-
-typedef struct _TimeOutPlugin TimeOutPlugin;
-typedef struct _TimeOutPluginClass TimeOutPluginClass;
-
-#define TIME_OUT_TYPE_HOME_PLUGIN (time_out_home_plugin_get_type ())
-
-#define TIME_OUT_HOME_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \
-                        TIME_OUT_TYPE_HOME_PLUGIN, TimeOutHomePlugin))
-
-#define TIME_OUT_HOME_PLUGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), \
-                        TIME_OUT_TYPE_HOME_PLUGIN, TimeOutHomePluginClass))
-
-#define TIME_OUT_IS_HOME_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
-                        TIME_OUT_TYPE_HOME_PLUGIN))
-
-#define TIME_OUT_IS_HOME_PLUGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \
-                        TIME_OUT_TYPE_HOME_PLUGIN))
-
-#define TIME_OUT_HOME_PLUGIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), \
-                        TIME_OUT_TYPE_HOME_PLUGIN, TimeOutHomePluginClass))
-
-struct _TimeOutPlugin
-{
-    HDHomePluginItem hitem;
-};
-
-struct _TimeOutPluginClass
-{
-    HDHomePluginItemClass parent_class;
-};
-
-GType time_out_home_plugin_get_type(void);
-
-G_END_DECLS
-
-#endif
diff --git a/getmehome/location-provider.c b/getmehome/location-provider.c
deleted file mode 100644 (file)
index 58e3701..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-#include "location-provider.h"
-
-#include <location/location-gps-device.h>
-#include <location/location-gpsd-control.h>
-
-void (*listener)(double, double) = NULL;
-
-/*static void on_error(LocationGPSDControl *control, LocationGPSDControlError error, gpointer data)
-{
-       g_debug("location error: %d... quitting", error);
-       g_main_loop_quit((GMainLoop *) data);
-}*/
-
-static void on_changed(LocationGPSDevice *device, gpointer data)
-{
-    if (device == NULL || listener == NULL) {
-        return;
-    }
-
-    if (device->fix) {
-        if (device->fix->fields & LOCATION_GPS_DEVICE_LATLONG_SET) {
-            listener(device->fix->latitude, device->fix->longitude);
-        }
-    }
-}
-
-/*static void on_stop(LocationGPSDControl *control, gpointer data)
-{
-       g_debug("quitting");
-       g_main_loop_quit((GMainLoop *) data);
-}*/
-
-/*static gboolean start_location(gpointer data)
-{
-       location_gpsd_control_start((LocationGPSDControl *) data);
-       return FALSE;
-}*/
-
-LocationGPSDControl *control = NULL;
-LocationGPSDevice *device = NULL;
-
-void setup_location_provider()
-{
-//     GMainLoop *loop;
-
-//     g_type_init();
-
-//     loop = g_main_loop_new(NULL, FALSE);
-
-    if (control != NULL) {
-        return;
-    }
-
-    control = location_gpsd_control_get_default();
-    device = g_object_new(LOCATION_TYPE_GPS_DEVICE, NULL);
-
-    g_object_set(G_OBJECT(control),
-        "preferred-method", LOCATION_METHOD_USER_SELECTED,
-        "preferred-interval", LOCATION_INTERVAL_DEFAULT,
-        NULL);
-
-//     g_signal_connect(control, "error-verbose", G_CALLBACK(on_error), loop);
-    g_signal_connect(device, "changed", G_CALLBACK(on_changed), control);
-//     g_signal_connect(control, "gpsd-stopped", G_CALLBACK(on_stop), loop);
-
-//     g_idle_add(start_location, control);
-
-//     g_main_loop_run(loop);
-}
-
-void cleanup_location_provider()
-{
-    if (control != NULL) {
-        location_gpsd_control_stop(control);
-
-        g_object_unref(device);
-        g_object_unref(control);
-        device = NULL;
-        control = NULL;
-    }
-}
-
-void start_location_provider()
-{
-    if (control != NULL) {
-        location_gpsd_control_start(control);
-    }
-}
-
-void stop_location_provider()
-{
-    if (control != NULL) {
-        location_gpsd_control_stop(control);
-    }
-}
-
-void set_location_listener(void (*newListener)(double, double))
-{
-    listener = newListener;
-}
diff --git a/getmehome/location-provider.h b/getmehome/location-provider.h
deleted file mode 100644 (file)
index 31df5c7..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#ifndef LOCATION_PROVIDER_H
-#define LOCATION_PROVIDER_H
-
-void setup_location_provider();
-void cleanup_location_provider();
-
-void start_location_provider();
-void stop_location_provider();
-
-void set_location_listener(void (*newListener)(double, double));
-
-#endif
diff --git a/getmehome/timeout-home-widget.desktop.in b/getmehome/timeout-home-widget.desktop.in
deleted file mode 100644 (file)
index a3faf4c..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-[Desktop Entry]
-Name=TimeOut Widget
-Comment=Execute an action at a given time
-Type=default
-X-Path=lib-timeout-home-widget.so
diff --git a/include/QGeoPositionInfo b/include/QGeoPositionInfo
new file mode 100644 (file)
index 0000000..d6feec9
--- /dev/null
@@ -0,0 +1 @@
+#include "qgeopositioninfo.h"
diff --git a/include/QGeoPositionInfoSource b/include/QGeoPositionInfoSource
new file mode 100644 (file)
index 0000000..b7cc338
--- /dev/null
@@ -0,0 +1 @@
+#include "qgeopositioninfosource.h"
diff --git a/include/qgeocoordinate.h b/include/qgeocoordinate.h
new file mode 100644 (file)
index 0000000..9a4902a
--- /dev/null
@@ -0,0 +1,123 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 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$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** 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.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef QGEOCOORDINATE_H
+#define QGEOCOORDINATE_H
+
+#include "qmobilityglobal.h"
+
+#include <QString>
+
+QT_BEGIN_NAMESPACE
+class QDebug;
+class QDataStream;
+QT_END_NAMESPACE
+
+QT_BEGIN_HEADER
+
+QTM_BEGIN_NAMESPACE
+
+class QGeoCoordinatePrivate;
+class Q_LOCATION_EXPORT QGeoCoordinate
+{
+public:
+    enum CoordinateType {
+        InvalidCoordinate,
+        Coordinate2D,
+        Coordinate3D
+    };
+
+    enum CoordinateFormat {
+        Degrees,
+        DegreesWithHemisphere,
+        DegreesMinutes,
+        DegreesMinutesWithHemisphere,
+        DegreesMinutesSeconds,
+        DegreesMinutesSecondsWithHemisphere
+    };
+
+    QGeoCoordinate();
+    QGeoCoordinate(double latitude, double longitude);
+    QGeoCoordinate(double latitude, double longitude, double altitude);
+    QGeoCoordinate(const QGeoCoordinate &other);
+    ~QGeoCoordinate();
+
+    QGeoCoordinate &operator=(const QGeoCoordinate &other);
+
+    bool operator==(const QGeoCoordinate &other) const;
+    inline bool operator!=(const QGeoCoordinate &other) const {
+        return !operator==(other);
+    }
+
+    bool isValid() const;
+    CoordinateType type() const;
+
+    void setLatitude(double latitude);
+    double latitude() const;
+
+    void setLongitude(double longitude);
+    double longitude() const;
+
+    void setAltitude(double altitude);
+    double altitude() const;
+
+    qreal distanceTo(const QGeoCoordinate &other) const;
+    qreal azimuthTo(const QGeoCoordinate &other) const;
+
+    QString toString(CoordinateFormat format = DegreesMinutesSecondsWithHemisphere) const;
+
+private:
+    QGeoCoordinatePrivate *d;
+};
+
+#ifndef QT_NO_DEBUG_STREAM
+Q_LOCATION_EXPORT QDebug operator<<(QDebug, const QGeoCoordinate &);
+#endif
+
+#ifndef QT_NO_DATASTREAM
+Q_LOCATION_EXPORT QDataStream &operator<<(QDataStream &stream, const QGeoCoordinate &coordinate);
+Q_LOCATION_EXPORT QDataStream &operator>>(QDataStream &stream, QGeoCoordinate &coordinate);
+#endif
+
+QTM_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif
diff --git a/include/qgeopositioninfo.h b/include/qgeopositioninfo.h
new file mode 100644 (file)
index 0000000..0d6bee9
--- /dev/null
@@ -0,0 +1,120 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 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$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** 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.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef QGEOPOSITIONINFO_H
+#define QGEOPOSITIONINFO_H
+
+#include "qmobilityglobal.h"
+#include "qgeocoordinate.h"
+
+#include <QDateTime>
+
+QT_BEGIN_NAMESPACE
+class QDebug;
+class QDataStream;
+QT_END_NAMESPACE
+
+QT_BEGIN_HEADER
+
+QTM_BEGIN_NAMESPACE
+
+class QGeoPositionInfoPrivate;
+class Q_LOCATION_EXPORT QGeoPositionInfo
+{
+public:
+    enum Attribute {
+        Direction,
+        GroundSpeed,
+        VerticalSpeed,
+        MagneticVariation,
+        HorizontalAccuracy,
+        VerticalAccuracy
+    };
+
+    QGeoPositionInfo();
+    QGeoPositionInfo(const QGeoCoordinate &coordinate, const QDateTime &updateTime);
+    QGeoPositionInfo(const QGeoPositionInfo &other);
+    ~QGeoPositionInfo();
+
+    QGeoPositionInfo &operator=(const QGeoPositionInfo &other);
+
+    bool operator==(const QGeoPositionInfo &other) const;
+    inline bool operator!=(const QGeoPositionInfo &other) const {
+        return !operator==(other);
+    }
+
+    bool isValid() const;
+
+    void setDateTime(const QDateTime &dateTime);
+    QDateTime dateTime() const;
+
+    void setCoordinate(const QGeoCoordinate &coordinate);
+    QGeoCoordinate coordinate() const;
+
+    void setAttribute(Attribute attribute, qreal value);
+    qreal attribute(Attribute attribute) const;
+    void removeAttribute(Attribute attribute);
+    bool hasAttribute(Attribute attribute) const;
+
+private:
+#ifndef QT_NO_DEBUG_STREAM
+    friend Q_LOCATION_EXPORT QDebug operator<<(QDebug dbg, const QGeoPositionInfo &update);
+#endif
+#ifndef QT_NO_DATASTREAM
+    friend Q_LOCATION_EXPORT QDataStream &operator<<(QDataStream &stream, const QGeoPositionInfo &update);
+    friend Q_LOCATION_EXPORT QDataStream &operator>>(QDataStream &stream, QGeoPositionInfo &update);
+#endif
+    QGeoPositionInfoPrivate *d;
+};
+
+#ifndef QT_NO_DEBUG_STREAM
+Q_LOCATION_EXPORT QDebug operator<<(QDebug dbg, const QGeoPositionInfo &update);
+#endif
+
+#ifndef QT_NO_DATASTREAM
+Q_LOCATION_EXPORT QDataStream &operator<<(QDataStream &stream, const QGeoPositionInfo &update);
+Q_LOCATION_EXPORT QDataStream &operator>>(QDataStream &stream, QGeoPositionInfo &update);
+#endif
+
+QTM_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif
diff --git a/include/qgeopositioninfosource.h b/include/qgeopositioninfosource.h
new file mode 100644 (file)
index 0000000..359302d
--- /dev/null
@@ -0,0 +1,105 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 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$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** 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.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef QGEOPOSITIONINFOSOURCE_H
+#define QGEOPOSITIONINFOSOURCE_H
+
+#include "qmobilityglobal.h"
+#include "qgeopositioninfo.h"
+
+#include <QObject>
+
+QT_BEGIN_HEADER
+
+QTM_BEGIN_NAMESPACE
+
+class QGeoPositionInfoSourcePrivate;
+class Q_LOCATION_EXPORT QGeoPositionInfoSource : public QObject
+{
+    Q_OBJECT
+    Q_PROPERTY(int updateInterval READ updateInterval WRITE setUpdateInterval)
+    Q_PROPERTY(int minimumUpdateInterval READ minimumUpdateInterval)
+
+public:
+    enum PositioningMethod {
+        SatellitePositioningMethods = 0x000000ff,
+        NonSatellitePositioningMethods = 0xffffff00,
+        AllPositioningMethods = 0xffffffff
+    };
+    Q_DECLARE_FLAGS(PositioningMethods, PositioningMethod)
+
+    explicit QGeoPositionInfoSource(QObject *parent);
+    virtual ~QGeoPositionInfoSource();
+
+    virtual void setUpdateInterval(int msec);
+    int updateInterval() const;
+
+    virtual void setPreferredPositioningMethods(PositioningMethods methods);
+    PositioningMethods preferredPositioningMethods() const;
+
+    virtual QGeoPositionInfo lastKnownPosition(bool fromSatellitePositioningMethodsOnly = false) const = 0;
+
+    virtual PositioningMethods supportedPositioningMethods() const = 0;
+    virtual int minimumUpdateInterval() const = 0;
+
+    static QGeoPositionInfoSource *createDefaultSource(QObject *parent);
+
+public Q_SLOTS:
+    virtual void startUpdates() = 0;
+    virtual void stopUpdates() = 0;
+
+    virtual void requestUpdate(int timeout = 0) = 0;
+
+Q_SIGNALS:
+    void positionUpdated(const QGeoPositionInfo &update);
+    void updateTimeout();
+
+private:
+    Q_DISABLE_COPY(QGeoPositionInfoSource)
+    QGeoPositionInfoSourcePrivate *d;
+};
+
+Q_DECLARE_OPERATORS_FOR_FLAGS(QGeoPositionInfoSource::PositioningMethods)
+
+QTM_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif
diff --git a/include/qmobilityglobal.h b/include/qmobilityglobal.h
new file mode 100644 (file)
index 0000000..ac9895d
--- /dev/null
@@ -0,0 +1,188 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 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$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** 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.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef QMOBILITYGLOBAL_H
+#define QMOBILITYGLOBAL_H
+
+
+#define QTM_VERSION_STR   "1.0.0"
+/*
+   QTM_VERSION is (major << 16) + (minor << 8) + patch.
+*/
+#define QTM_VERSION 0x010000
+/*
+   can be used like #if (QTM_VERSION >= QTM_VERSION_CHECK(1, 0, 0))
+*/
+#define QTM_VERSION_CHECK(major, minor, patch) ((major<<16)|(minor<<8)|(patch))
+
+#define QTM_PACKAGEDATE_STR "YYYY-MM-DD"
+
+#define QTM_PACKAGE_TAG ""
+
+#if defined(QTM_BUILD_UNITTESTS)
+# include <qconfig.h>
+# if !defined(QT_BUILD_INTERNAL)
+#   define QT_BUILD_INTERNAL
+# endif
+#endif
+#include <QtCore/qglobal.h>
+
+#if defined(SYMBIAN_DATABASEMANAGER_SERVER)
+#  define Q_SERVICEFW_EXPORT
+#else
+#  if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+#    if defined(QT_NODLL)
+#      undef QT_MAKEDLL
+#      undef QT_DLL
+#    elif defined(QT_MAKEDLL)
+#      if defined(QT_DLL)
+#        undef QT_DLL
+#      endif
+#      if defined(QT_BUILD_BEARER_LIB)
+#        define Q_BEARER_EXPORT Q_DECL_EXPORT
+#      else
+#        define Q_BEARER_EXPORT Q_DECL_IMPORT
+#      endif
+#      if defined(QT_BUILD_CFW_LIB)
+#        define Q_PUBLISHSUBSCRIBE_EXPORT Q_DECL_EXPORT
+#      else
+#        define Q_PUBLISHSUBSCRIBE_EXPORT Q_DECL_IMPORT
+#      endif
+#      if defined(QT_BUILD_CONTACTS_LIB)
+#        define Q_CONTACTS_EXPORT Q_DECL_EXPORT
+#      else
+#        define Q_CONTACTS_EXPORT Q_DECL_IMPORT
+#      endif
+#      if defined(QT_BUILD_VERSIT_LIB)
+#        define Q_VERSIT_EXPORT Q_DECL_EXPORT
+#      else
+#        define Q_VERSIT_EXPORT Q_DECL_IMPORT
+#      endif
+#      if defined(QT_BUILD_LOCATION_LIB)
+#        define Q_LOCATION_EXPORT Q_DECL_EXPORT
+#      else
+#        define Q_LOCATION_EXPORT Q_DECL_IMPORT
+#      endif
+#      if defined(QT_BUILD_MESSAGING_LIB)
+#        define Q_MESSAGING_EXPORT Q_DECL_EXPORT
+#      else
+#        define Q_MESSAGING_EXPORT Q_DECL_IMPORT
+#      endif
+#      if defined(QT_BUILD_MEDIA_LIB)
+#        define Q_MEDIA_EXPORT Q_DECL_EXPORT
+#      else
+#        define Q_MEDIA_EXPORT Q_DECL_IMPORT
+#      endif
+#      if defined(QT_BUILD_SFW_LIB)
+#        define Q_SERVICEFW_EXPORT Q_DECL_EXPORT
+#      else
+#        define Q_SERVICEFW_EXPORT Q_DECL_IMPORT
+#      endif
+#      if defined(QT_BUILD_SYSINFO_LIB)
+#        define Q_SYSINFO_EXPORT Q_DECL_EXPORT
+#      else
+#        define Q_SYSINFO_EXPORT Q_DECL_IMPORT
+#      endif
+#      if defined(QT_BUILD_SENSORS_LIB)
+#        define Q_SENSORS_EXPORT Q_DECL_EXPORT
+#      else
+#        define Q_SENSORS_EXPORT Q_DECL_IMPORT
+#      endif
+#    elif defined(QT_DLL) /* use a Qt DLL library */
+#      define Q_BEARER_EXPORT Q_DECL_IMPORT
+#      define Q_PUBLISHSUBSCRIBE_EXPORT Q_DECL_IMPORT
+#      define Q_CONTACTS_EXPORT Q_DECL_IMPORT
+#      define Q_VERSIT_EXPORT Q_DECL_IMPORT
+#      define Q_LOCATION_EXPORT Q_DECL_IMPORT
+#      define Q_MEDIA_EXPORT Q_DECL_IMPORT
+#      define Q_MESSAGING_EXPORT Q_DECL_IMPORT
+#      define Q_SERVICEFW_EXPORT Q_DECL_IMPORT
+#      define Q_SYSINFO_EXPORT Q_DECL_IMPORT
+#      define Q_SENSORS_EXPORT Q_DECL_IMPORT
+#    endif
+#  else
+#  endif
+#  if !defined(Q_SERVICEFW_EXPORT)
+#    if defined(QT_SHARED)
+#      define Q_BEARER_EXPORT Q_DECL_EXPORT
+#      define Q_PUBLISHSUBSCRIBE_EXPORT Q_DECL_EXPORT
+#      define Q_CONTACTS_EXPORT Q_DECL_EXPORT
+#      define Q_VERSIT_EXPORT Q_DECL_EXPORT
+#      define Q_LOCATION_EXPORT Q_DECL_EXPORT
+#      define Q_MEDIA_EXPORT Q_DECL_EXPORT
+#      define Q_MESSAGING_EXPORT Q_DECL_EXPORT
+#      define Q_SERVICEFW_EXPORT Q_DECL_EXPORT
+#      define Q_SYSINFO_EXPORT Q_DECL_EXPORT
+#      define Q_SENSORS_EXPORT Q_DECL_EXPORT
+#    else
+#      define Q_BEARER_EXPORT
+#      define Q_PUBLISHSUBSCRIBE_EXPORT
+#      define Q_CONTACTS_EXPORT
+#      define Q_VERSIT_EXPORT
+#      define Q_LOCATION_EXPORT
+#      define Q_MEDIA_EXPORT
+#      define Q_MESSAGING_EXPORT
+#      define Q_SERVICEFW_EXPORT
+#      define Q_SYSINFO_EXPORT
+#      define Q_SENSORS_EXPORT
+#    endif
+#  endif
+#endif
+
+// The namespace is hardcoded as moc has issues resolving
+// macros which would be a prerequisite for a dynmamic namespace
+#define QTM_NAMESPACE QtMobility
+
+#ifdef QTM_NAMESPACE
+# define QTM_PREPEND_NAMESPACE(name) ::QTM_NAMESPACE::name
+# define QTM_BEGIN_NAMESPACE namespace QTM_NAMESPACE {
+# define QTM_END_NAMESPACE }
+# define QTM_USE_NAMESPACE using namespace QTM_NAMESPACE;
+#else
+# define QTM_PREPEND_NAMESPACE(name) ::name
+# define QTM_BEGIN_NAMESPACE
+# define QTM_END_NAMESPACE
+# define QTM_USE_NAMESPACE
+#endif
+
+//in case Qt is in namespace
+QT_USE_NAMESPACE
+
+#endif // QMOBILITYGLOBAL_H
diff --git a/prepareGmock.sh b/prepareGmock.sh
deleted file mode 100755 (executable)
index 484c8dd..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/sh
-
-# A script to fetch GMock from source repository, compile it and run the tests.
-
-PRE_WD=`pwd`
-
-# Go to correct directory
-cd `dirname $0`
-
-# Get gmock from svn
-echo "Fetching GMock source from http://googlemock.googlecode.com"
-svn checkout http://googlemock.googlecode.com/svn/trunk/ gmock
-
-cd gmock
-echo "Running autoreconf..."
-AUTOMAKE=automake-1.9 ACLOCAL=aclocal-1.9 autoreconf -f -v -i
-
-mkdir build
-cd build
-
-echo "Running configure..."
-../configure
-
-echo "Running make..."
-make -j3
-echo "Running make check..."
-make check
-
-echo "All done"
-# Go back to original directory
-cd $PRE_WD
diff --git a/src/.gitignore b/src/.gitignore
deleted file mode 100644 (file)
index 97a5344..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-Makefile
-libptascommon.so*
diff --git a/src/coordinatesystemtransformer.cpp b/src/coordinatesystemtransformer.cpp
deleted file mode 100644 (file)
index 5e0c3f4..0000000
+++ /dev/null
@@ -1,348 +0,0 @@
-#include "coordinatesystemtransformer.h"
-
-#include <math.h>
-
-
-using namespace QTM_NAMESPACE;
-
-/**
- * A class representing geographical coordinates from the Finnish KKJ coordinate system.
- */
-class KKJGeoCoordinate {
-    // The latitude of the coordinate
-    double mLatitude;
-    // The longitude of the coordinate
-    double mLongitude;
-
-public:
-    /**
-     * An empty constructor.
-     * Constructs a new KKJ geographical coordinate with default coordinate values.
-     * Note that the constructed coordinate doesn't necessarily represent any real location
-     * on earth.
-     */
-    KKJGeoCoordinate();
-
-    /**
-     * Constructs a new KKJ geographical coordinate.
-     * @param latitude the latitude of the coordinate
-     * @param longitude the longitude of the coordinate
-     */
-    KKJGeoCoordinate(double latitude, double longitude);
-
-    /**
-     * Gets the latitude of this coordinate.
-     * @return the latitude of this coordinate
-     */
-    double latitude() const;
-
-    /**
-     * Gets the longitude of this coordinate.
-     * @return the longitude of this coordinate
-     */
-    double longitude() const;
-
-    /**
-     * Sets the latitude of this coordinate.
-     * @param latitude the new latitude
-     */
-    void setLatitude(double latitude);
-
-    /**
-     * Sets the longitude of this coordinate.
-     * @param longitude the new latitude
-     */
-    void setLongitude(double longitude);
-
-};
-
-
-KKJGeoCoordinate::KKJGeoCoordinate() :
-        mLatitude(0.0),
-        mLongitude(0.0)
-{
-}
-
-KKJGeoCoordinate::KKJGeoCoordinate(double latitude, double longitude) :
-        mLatitude(latitude),
-        mLongitude(longitude)
-{
-}
-
-double KKJGeoCoordinate::latitude() const
-{
-    return mLatitude;
-}
-
-double KKJGeoCoordinate::longitude() const
-{
-    return mLongitude;
-}
-
-void KKJGeoCoordinate::setLatitude(double latitude)
-{
-    mLatitude = latitude;
-}
-
-void KKJGeoCoordinate::setLongitude(double longitude)
-{
-    mLongitude = longitude;
-}
-
-
-/**
- * A Hayford reference ellipsoid
- */
-class HayfordEllipsoid {
-public:
-    // Equatorial radius
-    static const double a;
-    // Flattening
-    static const double f;
-    // Polar radius
-    static const double b;
-    // Polar radius squared
-    static const double bb;
-    // Polar radius of curvature
-    static const double c;
-    // First eccentricity squared
-    static const double ee;
-    // Second flattening
-    static const double n;
-    // Second flattening squared
-    static const double nn;
-};
-
-const double HayfordEllipsoid::a = 6378388.0;
-const double HayfordEllipsoid::f  = 1.0 / 297.0;
-const double HayfordEllipsoid::b  = (1.0 - f) * a;
-const double HayfordEllipsoid::bb = b * b;
-const double HayfordEllipsoid::c  = (a / b) * a;
-const double HayfordEllipsoid::ee = (a * a - bb) / bb; // should probably be (a * a - bb) / (a * a)
-const double HayfordEllipsoid::n = (a - b) / (a + b);
-const double HayfordEllipsoid::nn = n * n;
-
-
-
-// Degrees to radians
-double radians(double deg) {
-    return deg * M_PI / 180.0;
-}
-
-// Radians to degrees
-double degrees(double rad) {
-    return rad * 180.0 / M_PI;
-}
-
-
-/**
- * A class providing KKJ zone information.
- */
-class KKJZone {
-private:
-    // Storage for the central meridians and false eastings of the zones
-    static const double KKJ_ZONE_INFO[6][2];
-
-    // Minimum zone number
-    static const int MIN_ZONE = 0;
-    // Maximum zone number
-    static const int MAX_ZONE = 5;
-
-public:
-    /**
-     * Determines a zone number from the KKJ easting value. If the easting is not within any of
-     * the zones, -1 is returned.
-     * @param kkj the KKJ coordinate
-     * @return the zone number or -1 on error
-     */
-    static int getZoneNumberFromEasting(const KKJGridCoordinate &kkj);
-
-    /**
-     * Determines a zone number from the KKJ longitude value. If the longitude is not within any of
-     * the zones, -1 is returned.
-     * @param kkj the KKJ coordinate
-     * @return the zone number or -1 on error
-     */
-    static int getZoneNumberFromLongitude(const KKJGeoCoordinate &kkj);
-
-    /**
-     * Gets the central meridian in degrees of the given zone. The zone number must be
-     * on the interval [0, 5]. If an invalid zone number is given, 0.0 is returned.
-     * @param zoneNumber the zone number
-     * @return the central meridian of the zone or 0.0 on error
-     */
-    static double getCentralMeridianOfZone(int zoneNumber);
-
-    /**
-     * Gets the false easting in metres of the given zone. The zone number must be
-     * on the interval [0, 5]. If an invalid zone number is given, 0.0 is returned.
-     * @param zoneNumber the zone number
-     * @return the false easting of the zone or 0.0 on error
-     */
-    static double getFalseEastingOfZone(int zoneNumber);
-};
-
-                                        // central meridian
-                                                  // false easting
-const double KKJZone::KKJ_ZONE_INFO[6][2] = { {18.0,  500000.0},  // zone 0
-                                              {21.0, 1500000.0},
-                                              {24.0, 2500000.0},
-                                              {27.0, 3500000.0},
-                                              {30.0, 4500000.0},
-                                              {33.0, 5500000.0} };// zone 5
-
-
-int KKJZone::getZoneNumberFromEasting(const KKJGridCoordinate &kkj) {
-    int zoneNumber = floor(kkj.easting() / 1000000.0);
-    if (zoneNumber < MIN_ZONE || zoneNumber > MAX_ZONE) {
-        zoneNumber = -1;
-    }
-
-    return zoneNumber;
-}
-
-int KKJZone::getZoneNumberFromLongitude(const KKJGeoCoordinate &kkj) {
-    // determine the zonenumber from KKJ easting
-    // takes KKJ zone which has center meridian
-    // longitude nearest (in math value) to
-    // the given KKJ longitude
-    int zoneNumber = MAX_ZONE;
-    while (zoneNumber >= MIN_ZONE) {
-        if (fabs(kkj.longitude() - KKJ_ZONE_INFO[zoneNumber][0]) <= 1.5) {
-            break;
-        }
-        zoneNumber--;
-    }
-
-    return zoneNumber;
-}
-
-double KKJZone::getCentralMeridianOfZone(int zoneNumber)
-{
-    if (zoneNumber >= MIN_ZONE && zoneNumber <= MAX_ZONE) {
-        return KKJ_ZONE_INFO[zoneNumber][0];
-    }
-
-    return 0.0;
-}
-
-double KKJZone::getFalseEastingOfZone(int zoneNumber)
-{
-    if (zoneNumber >= MIN_ZONE && zoneNumber <= MAX_ZONE) {
-        return KKJ_ZONE_INFO[zoneNumber][1];
-    }
-
-    return 0.0;
-}
-
-
-/**
- * Transforms a KKJ geographical coordinate to a WGS84 geographical coordinate.
- * @param fromCoordinate the input coordinate
- * @return the transformed coordinate
- */
-QGeoCoordinate transformToWGS84GeoCoordinate(const KKJGeoCoordinate &fromCoordinate) {
-    double kkjla = fromCoordinate.latitude();
-    double kkjlo = fromCoordinate.longitude();
-
-    double dLa = (0.124867E+01 + -0.269982E+00 * kkjla + 0.191330E+00 * kkjlo + 0.356119E-02 * kkjla * kkjla + -0.122312E-02 * kkjla * kkjlo + -0.335514E-03 * kkjlo * kkjlo) / 3600.0;
-    double dLo = (-0.286111E+02 + 0.114183E+01 * kkjla + -0.581428E+00 * kkjlo + -0.152421E-01 * kkjla * kkjla + 0.118177E-01 * kkjla * kkjlo + 0.826646E-03 * kkjlo * kkjlo) / 3600.0;
-
-    return QGeoCoordinate(kkjla + dLa, kkjlo + dLo);
-}
-
-
-/**
- * Transforms a WGS84 geographical coordinate to a KKJ geographical coordinate.
- * @param fromCoordinate the input coordinate
- * @return the transformed coordinate
- */
-KKJGeoCoordinate transformToKKJGeoCoordinate(const QGeoCoordinate &fromCoordinate) {
-    double longitude = fromCoordinate.longitude();
-    double latitude = fromCoordinate.latitude();
-
-    double dLa = (-0.124766E+01 + 0.269941E+00 * latitude + -0.191342E+00 * longitude + -0.356086E-02 * latitude * latitude + 0.122353E-02 * latitude * longitude + 0.335456E-03 * longitude * longitude) / 3600.0;
-    double dLo = (0.286008E+02 + -0.114139E+01 * latitude + 0.581329E+00 * longitude + 0.152376E-01 * latitude * latitude + -0.118166E-01 * latitude * longitude + -0.826201E-03 * longitude * longitude) / 3600.0;
-
-    return KKJGeoCoordinate(latitude + dLa, longitude + dLo);
-}
-
-
-/**
- * Transforms a KKJ geographical coordinate to a KKJ rectangular grid coordinate.
- * @param fromCoordinate the input coordinate
- * @param zoneNumber the zone number in which the input coordinate resides
- * @return the transformed coordinate
- */
-KKJGridCoordinate transformToKKJGridCoordinate(const KKJGeoCoordinate &fromCoordinate) {
-    int zoneNumber = KKJZone::getZoneNumberFromLongitude(fromCoordinate);
-    double Lo = radians(fromCoordinate.longitude()) - radians(KKJZone::getCentralMeridianOfZone(zoneNumber));
-    double cosLa = cos(radians(fromCoordinate.latitude()));
-    double NN = HayfordEllipsoid::ee * cosLa * cosLa;
-    double LaF = atan(tan(radians(fromCoordinate.latitude())) / cos(Lo * sqrt(1.0 + NN)));
-    double cosLaF = cos(LaF);
-    double t = (tan(Lo) * cosLaF) / sqrt(1.0 + HayfordEllipsoid::ee * cosLaF * cosLaF);
-    double A = HayfordEllipsoid::a / (1.0 + HayfordEllipsoid::n);
-    double A1 = A * (1.0 + HayfordEllipsoid::nn / 4.0 + HayfordEllipsoid::nn * HayfordEllipsoid::nn / 64.0);
-    double A2 = A * 1.5 * HayfordEllipsoid::n * (1.0 - HayfordEllipsoid::nn / 8.0);
-    double A3 = A * 0.9375 * HayfordEllipsoid::nn * (1.0 - HayfordEllipsoid::nn / 4.0);
-    double A4 = A * 35.0 / 48.0 * HayfordEllipsoid::nn * HayfordEllipsoid::n;
-
-    unsigned int outY = A1 * LaF - A2 * sin(2.0 * LaF) + A3 * sin(4.0 * LaF) - A4 * sin(6.0 * LaF);
-    unsigned int outX = HayfordEllipsoid::c * log(t + sqrt(1.0 + t * t)) + 500000.0 + zoneNumber * 1000000.0;
-    return KKJGridCoordinate(outY, outX);
-}
-
-/**
- * Transforms a KKJ rectangular grid coordinate to a KKJ geographical coordinate.
- * @param fromCoordinate the input coordinate
- * @return the transformed coordinate
- */
-KKJGeoCoordinate transformToKKJGeoCoordinate(const KKJGridCoordinate &fromCoordinate) {
-    // Scan iteratively the target area, until find matching
-    // KKJ coordinate value. Area is defined with Hayford Ellipsoid.
-    double minLo = 18.5;
-    double maxLo = 32.0;
-    double minLa = 59.0;
-    double maxLa = 70.5;
-
-    int i = 1;
-
-    KKJGeoCoordinate ret;
-
-    while (i < 35) {
-        double deltaLo = maxLo - minLo;
-        double deltaLa = maxLa - minLa;
-        ret.setLongitude(minLo + 0.5 * deltaLo);
-        ret.setLatitude(minLa + 0.5 * deltaLa);
-        KKJGridCoordinate kkj = transformToKKJGridCoordinate(ret);
-        if (kkj.northing() < fromCoordinate.northing()) {
-            minLa = minLa + 0.45 * deltaLa;
-        } else {
-            maxLa = minLa + 0.55 * deltaLa;
-        }
-
-        if (kkj.easting() < fromCoordinate.easting()) {
-            minLo = minLo + 0.45 * deltaLo;
-        } else {
-            maxLo = minLo + 0.55 * deltaLo;
-        }
-
-        i++;
-    }
-
-    return ret;
-}
-
-
-KKJGridCoordinate CoordinateSystemTransformer::transformToKKJ(const QGeoCoordinate &fromCoordinate)
-{
-    KKJGeoCoordinate tmpKKJ = transformToKKJGeoCoordinate(fromCoordinate);
-    return transformToKKJGridCoordinate(tmpKKJ);
-}
-
-QGeoCoordinate CoordinateSystemTransformer::transformToWGS84(const KKJGridCoordinate &fromCoordinate)
-{
-    KKJGeoCoordinate tmpKKJ = transformToKKJGeoCoordinate(fromCoordinate);
-    return transformToWGS84GeoCoordinate(tmpKKJ);
-}
diff --git a/src/coordinatesystemtransformer.h b/src/coordinatesystemtransformer.h
deleted file mode 100644 (file)
index 4481d64..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-#ifndef COORDINATESYSTEMTRANSFORMER_H
-#define COORDINATESYSTEMTRANSFORMER_H
-
-#include "kkjgridcoordinate.h"
-#include <QGeoCoordinate>
-
-/**
- * A utility class for transforming coordinates from one coordinate system to another.
- */
-class CoordinateSystemTransformer
-{
-public:
-    /**
-     * Makes a coordinate transformation from WGS84 coordinate system to KKJ rectangular
-     * grid coordinates.
-     * @param fromCoordinate the WGS84 coordinate that will be transformed.
-     * @return the transformed coordinate in KKJ coordinate system.
-     */
-    static KKJGridCoordinate transformToKKJ(const QTM_NAMESPACE::QGeoCoordinate &fromCoordinate);
-
-    /**
-     * Makes a coordinate transformation from KKJ rectangular grid coordinate system
-     * to WGS84 coordinate system.
-     * @param fromCoordinate the KKJ coordinate that will be transformed.
-     * @return the transformed coordinate in WGS84 coordinate system.
-     */
-    static QTM_NAMESPACE::QGeoCoordinate transformToWGS84(const KKJGridCoordinate &fromCoordinate);
-};
-
-#endif // COORDINATESYSTEMTRANSFORMER_H
diff --git a/src/gpscontroller.cpp b/src/gpscontroller.cpp
new file mode 100644 (file)
index 0000000..d924564
--- /dev/null
@@ -0,0 +1,65 @@
+#include "gpscontroller.h"
+#include "gpscontroller_p.h"
+
+#include <QObject>
+#include <QGeoPositionInfo>
+#include <QGeoPositionInfoSource>
+#include <QDebug>
+
+GpsController::GpsController() :
+  q( new GpsControllerPrivate() )
+{
+  q->init();
+  q->startGps();
+}
+
+GpsController::GpsController( GpsControllerPrivate *gpsControllerPrivate ) :
+  q( gpsControllerPrivate )
+{
+  q->init();
+  q->startGps();
+}
+
+GpsController::~GpsController()
+{
+  delete q;
+}
+
+void GpsController::getGps()
+{
+  Location *location;
+  Location *previousLocation = q->mostRecentlyReportedLocation();
+
+  if ( q->useFakeLocation() ) {
+    location = q->fakeLocation();
+  } else {
+    location = q->liveLocation();
+  }
+
+  if ( location != previousLocation ) {
+    emit locationChanged( location );
+  }
+}
+
+void GpsController::useLiveGps()
+{
+  q->setUseFakeLocation( false );
+  q->startGps();
+  emit locationChanged( q->liveLocation() );
+}
+
+void GpsController::useFakeGps( const QString &fakeLocationLabel )
+{
+  qDebug() << "using fake gps (" << fakeLocationLabel << ")";
+
+  q->setFakeLocationLabel( fakeLocationLabel );
+  Location  *fakeLocation = q->fakeLocation();
+
+  if ( fakeLocation == 0 ) {
+    qDebug() << "invalid fake location label; cannot use fake location";
+  } else {
+    q->stopGps();
+    q->setUseFakeLocation( true );
+    emit locationChanged( fakeLocation );
+  }
+}
diff --git a/src/gpscontroller.h b/src/gpscontroller.h
new file mode 100644 (file)
index 0000000..438b3f8
--- /dev/null
@@ -0,0 +1,36 @@
+#ifndef GPSCONTROLLER_H
+#define GPSCONTROLLER_H
+
+#include "location.h"
+
+#include "gpscontroller_p.h"
+
+#include <QObject>
+#include <QGeoPositionInfo>
+#include <QGeoPositionInfoSource>
+
+QTM_USE_NAMESPACE
+
+class GpsController : public QObject
+{
+  Q_OBJECT
+
+public:
+  GpsController();
+  GpsController( GpsControllerPrivate *gpsControllerPrivate );
+
+  ~GpsController();
+
+public Q_SLOTS:
+  void getGps();
+  void useFakeGps( const QString &fakeLocationLabel );
+  void useLiveGps();
+
+Q_SIGNALS:
+  void locationChanged( Location *newLocation );
+
+private:
+    GpsControllerPrivate *q;
+};
+
+#endif // GPSCONTROLLER_H
diff --git a/src/gpscontroller_p.cpp b/src/gpscontroller_p.cpp
new file mode 100644 (file)
index 0000000..41086b0
--- /dev/null
@@ -0,0 +1,100 @@
+#include "gpscontroller_p.h"
+
+#include "location.h"
+#include "locations.h"
+
+#include <QObject>
+#include <QGeoPositionInfo>
+#include <QGeoPositionInfoSource>
+#include <QDebug>
+
+QTM_USE_NAMESPACE
+
+GpsControllerPrivate::GpsControllerPrivate() :
+  m_gps(0),
+  m_liveLocation( new Location( "livegps" ) ),
+  m_fakeLocationLabel(),
+  m_useFakeLocation(false)
+{
+}
+
+GpsControllerPrivate::~GpsControllerPrivate()
+{
+  delete m_gps;
+  m_gps = 0;
+  delete m_liveLocation;
+  m_liveLocation = 0;
+}
+
+void GpsControllerPrivate::init()
+{
+  m_gps = QGeoPositionInfoSource::createDefaultSource(this);
+  connect(
+      m_gps, SIGNAL( positionUpdated( QGeoPositionInfo ) ),
+      this, SLOT( updateLocation( QGeoPositionInfo ) )
+  );
+}
+
+void GpsControllerPrivate::startGps()
+{
+  m_gps->startUpdates();
+}
+
+void GpsControllerPrivate::stopGps()
+{
+  m_gps->stopUpdates();
+}
+
+QGeoPositionInfoSource *GpsControllerPrivate::gps()
+{
+  return m_gps;
+}
+
+void GpsControllerPrivate::setGps( QGeoPositionInfoSource *gps )
+{
+  m_gps = gps;
+}
+
+Location *GpsControllerPrivate::liveLocation()
+{
+  m_mostRecentlyReportedLocation = m_liveLocation;
+  return m_liveLocation;
+}
+
+Location *GpsControllerPrivate::fakeLocation()
+{
+  Locations locations;
+  Location  *location = locations.location( fakeLocationLabel() );
+  m_mostRecentlyReportedLocation = location;
+  return location;
+}
+
+QString GpsControllerPrivate::fakeLocationLabel()
+{
+  return m_fakeLocationLabel;
+}
+
+void GpsControllerPrivate::setFakeLocationLabel( const QString &label )
+{
+  m_fakeLocationLabel = label;
+}
+
+bool GpsControllerPrivate::useFakeLocation()
+{
+  return m_useFakeLocation;
+}
+
+void GpsControllerPrivate::setUseFakeLocation( bool useFake )
+{
+  m_useFakeLocation = useFake;
+}
+
+void GpsControllerPrivate::updateLocation( QGeoPositionInfo positionInfo )
+{
+  m_liveLocation->setLocation( positionInfo );
+}
+
+Location *GpsControllerPrivate::mostRecentlyReportedLocation()
+{
+  return m_mostRecentlyReportedLocation;
+}
diff --git a/src/gpscontroller_p.h b/src/gpscontroller_p.h
new file mode 100644 (file)
index 0000000..a101ffe
--- /dev/null
@@ -0,0 +1,45 @@
+#ifndef GPSCONTROLLER_P_H
+#define GPSCONTROLLER_P_H
+
+#include <QGeoPositionInfo>
+#include <QGeoPositionInfoSource>
+
+QTM_USE_NAMESPACE
+
+class Location;
+
+class GpsControllerPrivate : public QObject
+{
+    Q_OBJECT
+
+public:
+    GpsControllerPrivate();
+    ~GpsControllerPrivate();
+
+    virtual void init();
+    virtual void startGps();
+    virtual void stopGps();
+
+    virtual void setGps( QGeoPositionInfoSource *gps );
+    virtual void setFakeLocationLabel( const QString &label );
+    virtual void setUseFakeLocation( bool useFake );
+
+    virtual QGeoPositionInfoSource *gps();
+    virtual Location               *liveLocation();
+    virtual Location               *fakeLocation();
+    virtual Location               *mostRecentlyReportedLocation();
+    virtual QString                 fakeLocationLabel();
+    virtual bool                    useFakeLocation();
+
+private Q_SLOTS:
+    virtual void updateLocation( QGeoPositionInfo positionInfo );
+
+private:
+    QGeoPositionInfoSource *m_gps;
+    Location               *m_liveLocation;
+    QString                 m_fakeLocationLabel;
+    bool                    m_useFakeLocation;
+    Location               *m_mostRecentlyReportedLocation;
+};
+
+#endif //GPSCONTROLLER_P_H
diff --git a/src/kkjgridcoordinate.cpp b/src/kkjgridcoordinate.cpp
deleted file mode 100644 (file)
index f7ae6bf..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-#include "kkjgridcoordinate.h"
-#include "kkjgridcoordinate_p.h"
-
-KKJGridCoordinatePrivate::~KKJGridCoordinatePrivate()
-{
-}
-
-void KKJGridCoordinatePrivate::init(unsigned int northing, unsigned int easting)
-{
-    this->northing = northing;
-    this->easting = easting;
-}
-
-
-KKJGridCoordinate::KKJGridCoordinate(unsigned int northing, unsigned int easting) :
-        d_ptr(new KKJGridCoordinatePrivate)
-{
-    Q_D(KKJGridCoordinate);
-    d->q_ptr = this;
-    d->init(northing, easting);
-}
-
-KKJGridCoordinate::KKJGridCoordinate(KKJGridCoordinatePrivate &dd, unsigned int northing, unsigned int easting) :
-        d_ptr(&dd)
-{
-    Q_D(KKJGridCoordinate);
-    d->q_ptr = this;
-    d->init(northing, easting);
-}
-
-KKJGridCoordinate::~KKJGridCoordinate()
-{
-}
-
-bool KKJGridCoordinate::operator==(const KKJGridCoordinate &rhs) const
-{
-    return northing() == rhs.northing() && easting() == rhs.easting();
-}
-
-KKJGridCoordinate& KKJGridCoordinate::operator=(const KKJGridCoordinate &rhs)
-{
-    Q_D(KKJGridCoordinate);
-    d->northing = rhs.northing();
-    d->easting = rhs.easting();
-
-    return *this;
-}
-
-unsigned int KKJGridCoordinate::northing() const
-{
-    Q_D(const KKJGridCoordinate);
-    return d->northing;
-}
-
-unsigned int KKJGridCoordinate::easting() const
-{
-    Q_D(const KKJGridCoordinate);
-    return d->easting;
-}
diff --git a/src/kkjgridcoordinate.h b/src/kkjgridcoordinate.h
deleted file mode 100644 (file)
index 75c69d2..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-#ifndef KKJGRIDCOORDINATE_H
-#define KKJGRIDCOORDINATE_H
-
-#include <QtGlobal>
-
-class KKJGridCoordinatePrivate;
-
-/**
- * A class representing the Finnish KKJ coordinate.
- * This is the rectangular grid coordinate version.
- */
-class KKJGridCoordinate
-{
-public:
-    /**
-     * Constructs a new KKJ coordinate with the given values.
-     * @param northing the northing coordinate.
-     * @param easting the easting coordinate.
-     */
-    KKJGridCoordinate(unsigned int northing, unsigned int easting);
-
-    /**
-     * Destructor.
-     */
-    virtual ~KKJGridCoordinate();
-
-    /**
-     * Equals operator.
-     * Tests the equality of this coordinate and another coordinate and returns \c true
-     * if the coordinates represent the same position.
-     * @param rhs the other coordinate to test against.
-     * @return \c true if the coordinates are the same, \c false otherwise.
-     */
-    bool operator==(const KKJGridCoordinate &rhs) const;
-
-    /**
-     * Assignment operator.
-     * @param rhs the object that is copied.
-     * @return this object.
-     */
-    KKJGridCoordinate& operator=(const KKJGridCoordinate &rhs);
-
-    /**
-     * Returns the northing of the coordinate.
-     * @return the northing.
-     */
-    unsigned int northing() const;
-
-    /**
-     * Returns the easting of the coordinate.
-     * @return the easting.
-     */
-    unsigned int easting() const;
-
-protected:
-    /**
-     * Constructs a new KKJ coordinate with the given values.
-     * @param dd a private implementation member.
-     * @param northing the northing coordinate.
-     * @param easting the easting coordinate.
-     */
-    KKJGridCoordinate(KKJGridCoordinatePrivate &dd, unsigned int northing, unsigned int easting);
-
-
-private:
-    /// Pointer to the private member
-    KKJGridCoordinatePrivate *const d_ptr;
-
-    Q_DECLARE_PRIVATE(KKJGridCoordinate)
-
-};
-
-#endif // KKJGRIDCOORDINATE_H
diff --git a/src/kkjgridcoordinate_p.h b/src/kkjgridcoordinate_p.h
deleted file mode 100644 (file)
index bc09530..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-#ifndef KKJGRIDCOORDINATE_P_H
-#define KKJGRIDCOORDINATE_P_H
-
-#include <QtGlobal>
-
-class KKJGridCoordinate;
-
-/**
- * A private member class for class KKJGridCoordinate.
- */
-class KKJGridCoordinatePrivate
-{
-public:
-    /**
-     * Destructor.
-     */
-    virtual ~KKJGridCoordinatePrivate();
-
-private:
-    /**
-     * Initializes the private class.
-     * @param northing the northing of the coordinate.
-     * @param easting the easting of the coordinate.
-     */
-    void init(unsigned int northing, unsigned int easting);
-
-    /// The northing of the coordinate.
-    unsigned int northing;
-
-    /// The easting of the coordinate.
-    unsigned int easting;
-
-    /// The concrete class owning this private implementation member.
-    KKJGridCoordinate *q_ptr;
-
-    Q_DECLARE_PUBLIC(KKJGridCoordinate)
-
-};
-
-#endif // KKJGRIDCOORDINATE_P_H
diff --git a/src/location.cpp b/src/location.cpp
new file mode 100644 (file)
index 0000000..c54f65c
--- /dev/null
@@ -0,0 +1,328 @@
+#include "location.h"
+
+#include "location_p.h"
+
+#include "ytv.h"
+
+#include <QString>
+#include <QObject>
+#include <QNetworkAccessManager>
+#include <QUrl>
+#include <QNetworkRequest>
+#include <QNetworkReply>
+#include <QXmlStreamReader>
+#include <QDebug>
+#include <QXmlStreamAttributes>
+#include <QStringRef>
+#include <QGeoPositionInfo>
+
+#include <math.h>
+
+const double Location::KkjZoneInfo[6][2] = {
+  {18.0,  500000.0},
+  {21.0, 1500000.0},
+  {24.0, 2500000.0},
+  {27.0, 3500000.0},
+  {30.0, 4500000.0},
+  {33.0, 5500000.0}
+};
+
+QTM_USE_NAMESPACE
+
+Location::Location( const QString &x, const QString &y, const QString &label ) :
+  q( new LocationPrivate( x, y, label ) ),
+  manager( new QNetworkAccessManager(this) )
+{
+  connect(
+      manager, SIGNAL( finished(QNetworkReply*) ),
+      this, SLOT( replyFinished(QNetworkReply*) )
+      );
+}
+
+Location::Location( const QGeoPositionInfo &positionInfo, const QString &label ) :
+  q( new LocationPrivate( label ) ),
+  manager(0)
+{
+  setLocation( positionInfo );
+}
+
+void Location::setLocation( const QGeoPositionInfo &positionInfo )
+{
+  qreal latitude = positionInfo.coordinate().latitude();
+  qreal longitude = positionInfo.coordinate().longitude();
+
+  KKJ outX(0);
+  KKJ outY(0);
+
+  WGS84lola_to_KKJxy( longitude, latitude, &outX, &outY);
+
+  q->setX( outX );
+  q->setY( outY );
+  q->setValid( true );
+}
+
+Location::Location( const Location &from ) :
+  QObject(0),
+  q( new LocationPrivate( from.label() ) ),
+  manager(0)
+{
+  q->setAddress( from.address() );
+  q->setX( from.x() );
+  q->setY( from.y() );
+  q->setValid( from.isValid() );
+  if ( from.manager != 0 ) {
+    manager = new QNetworkAccessManager(this);
+    connect( manager, SIGNAL( finished(QNetworkReply*) ), this, SLOT( replyFinished(QNetworkReply*) ) );
+  }
+}
+
+Location::Location( const QString &label ) :
+  q( new LocationPrivate( label ) ),
+  manager( new QNetworkAccessManager(this) )
+{
+  connect( manager, SIGNAL( finished(QNetworkReply*) ), this, SLOT( replyFinished(QNetworkReply*) ) );
+}
+
+Location::~Location()
+{
+  delete q;
+  q=0;
+  delete manager;
+  manager=0;
+}
+
+Location &Location::operator=( const Location &from )
+{
+  q = new LocationPrivate( from.label() );
+  q->setAddress( from.address() );
+  q->setX( from.x() );
+  q->setY( from.y() );
+  q->setValid( from.isValid() );
+
+  if ( from.manager != 0 ) {
+    manager = new QNetworkAccessManager(this);
+    connect( manager, SIGNAL( finished(QNetworkReply*) ), this, SLOT( replyFinished(QNetworkReply*) ) );
+  } else {
+    manager = 0;
+  }
+
+  return *this;
+}
+
+void Location::resolveAddress( const QString &address )
+{
+  qDebug() << "resolving address (" << address << ")";
+
+  q->setAddress( address );
+  q->setValid( false );
+
+  QUrl fullUrl( Ytv::Url );
+
+  fullUrl.addEncodedQueryItem( "key", address.toAscii().toPercentEncoding() );
+  fullUrl.addQueryItem( "user", Ytv::Username );
+  fullUrl.addQueryItem( "pass", Ytv::Password );
+
+  manager->get( QNetworkRequest( fullUrl ) );
+  qDebug() << "waiting for reply from Ytv";
+  emit( busy( true ) );
+}
+
+void Location::replyFinished( QNetworkReply * reply )
+{
+  qDebug() << "address resolved";
+  q->parseReply( reply->readAll() );
+
+  if ( isValid() ) {
+    qDebug() << label() << "becomeValid";
+    emit( becomeValid() );
+  } else {
+    qDebug() << label() << "not valid";
+    emit( becomeInValid() );
+  }
+
+  emit( busy( false ) );
+}
+
+QString Location::x() const
+{
+  return q->x();
+}
+
+QString Location::y() const
+{
+  return q->y();
+}
+
+void Location::setLabel( const QString &label ) const
+{
+  q->setLabel( label );
+}
+
+QString Location::label() const
+{
+  return q->label();
+}
+
+void Location::setAddress( const QString &address ) const
+{
+  qDebug() << "setting address to" << address;
+  q->setAddress( address );
+}
+
+QString Location::address() const
+{
+  return q->address();
+}
+
+bool Location::isValid() const
+{
+  return q->isValid();
+}
+
+// Degrees to radians
+double Location::radians(double deg)
+{
+  return deg * M_PI / 180.0;
+}
+
+// Radians to degrees
+double Location::degrees(double rad)
+{
+  return rad * 180.0 / M_PI;
+}
+
+// Function:  KKJ_Zone_I
+int Location::KKJ_Zone_I(KKJ easting)
+{
+  int zoneNumber = floor(easting / 1000000.0);
+  if (zoneNumber < 0 || zoneNumber > 5) {
+    zoneNumber = -1;
+  }
+
+  return zoneNumber;
+}
+
+// Function:  KKJ_Zone_Lo
+int Location::KKJ_Zone_Lo(double kkjlo)
+{
+  // determine the zonenumber from KKJ easting
+  // takes KKJ zone which has center meridian
+  // longitude nearest (in math value) to
+  // the given KKJ longitude
+  int zoneNumber = 5;
+  while (zoneNumber >= 0) {
+    if (fabs(kkjlo - KkjZoneInfo[zoneNumber][0]) <= 1.5) {
+      break;
+    }
+    zoneNumber--;
+  }
+
+  return zoneNumber;
+}
+
+
+// Function:  KKJlalo_to_WGS84lalo
+void Location::KKJlola_to_WGS84lola(double kkjlo, double kkjla, double *outLongitude, double *outLatitude)
+{
+  double dLa = radians(0.124867E+01 + -0.269982E+00 * kkjla + 0.191330E+00 * kkjlo + 0.356119E-02 * kkjla * kkjla + -0.122312E-02 * kkjla * kkjlo + -0.335514E-03 * kkjlo * kkjlo) / 3600.0;
+  double dLo = radians(-0.286111E+02 + 0.114183E+01 * kkjla + -0.581428E+00 * kkjlo + -0.152421E-01 * kkjla * kkjla + 0.118177E-01 * kkjla * kkjlo + 0.826646E-03 * kkjlo * kkjlo) / 3600.0;
+
+  *outLatitude = degrees(radians(kkjla) + dLa);
+  *outLongitude = degrees(radians(kkjlo) + dLo);
+}
+
+
+// Function:  WGS84lalo_to_KKJlalo
+void Location::WGS84lola_to_KKJlola(double longitude, double latitude, double *outLongitude, double *outLatitude)
+{
+  double dLa = radians(-0.124766E+01 + 0.269941E+00 * latitude + -0.191342E+00 * longitude + -0.356086E-02 * latitude * latitude + 0.122353E-02 * latitude * longitude + 0.335456E-03 * longitude * longitude) / 3600.0;
+  double dLo = radians(0.286008E+02 + -0.114139E+01 * latitude + 0.581329E+00 * longitude + 0.152376E-01 * latitude * latitude + -0.118166E-01 * latitude * longitude + -0.826201E-03 * longitude * longitude) / 3600.0;
+
+  *outLatitude = degrees(radians(latitude) + dLa);
+  *outLongitude = degrees(radians(longitude) + dLo);
+}
+
+
+// Function:  KKJlalo_to_KKJxy
+void Location::KKJlola_to_KKJxy(double lon, double lat, int zoneNumber, KKJ *outX, KKJ *outY)
+{
+  // Hayford ellipsoid
+  double a = 6378388.0;
+  double f  = 1.0 / 297.0;
+  double b  = (1.0 - f) * a;
+  double bb = b * b;
+  double c  = (a / b) * a;
+  double ee = (a * a - bb) / bb;
+  double n = (a - b) / (a + b);
+  double nn = n * n;
+
+  double Lo = radians(lon) - radians(KkjZoneInfo[zoneNumber][0]);
+  double cosLa = cos(radians(lat));
+  double NN = ee * cosLa * cosLa;
+  double LaF = atan(tan(radians(lat)) / cos(Lo * sqrt(1.0 + NN)));
+  double cosLaF = cos(LaF);
+  double t = (tan(Lo) * cosLaF) / sqrt(1.0 + ee * cosLaF * cosLaF);
+  double A = a / (1.0 + n);
+  double A1 = A * (1.0 + nn / 4.0 + nn * nn / 64.0);
+  double A2 = A * 1.5 * n * (1.0 - nn / 8.0);
+  double A3 = A * 0.9375 * nn * (1.0 - nn / 4.0);
+  double A4 = A * 35.0 / 48.0 * nn * n;
+
+  *outY = A1 * LaF - A2 * sin(2.0 * LaF) + A3 * sin(4.0 * LaF) - A4 * sin(6.0 * LaF);
+  *outX = c * log(t + sqrt(1.0 + t * t)) + 500000.0 + zoneNumber * 1000000.0;
+}
+
+// Function:  KKJxy_to_KKJlalo
+void Location::KKJxy_to_KKJlola(KKJ x, KKJ y, double *outLongitude, double *outLatitude)
+{
+  // Scan iteratively the target area, until find matching
+  // KKJ coordinate value.  Area is defined with Hayford Ellipsoid.
+  int zoneNumber = KKJ_Zone_I(x);
+  double minLo = radians(18.5);
+  double maxLo = radians(32.0);
+  double minLa = radians(59.0);
+  double maxLa = radians(70.5);
+
+  int i = 1;
+  KKJ tmpX, tmpY;
+
+  while (i < 35) {
+    double deltaLo = maxLo - minLo;
+    double deltaLa = maxLa - minLa;
+    *outLongitude = degrees(minLo + 0.5 * deltaLo);
+    *outLatitude = degrees(minLa + 0.5 * deltaLa);
+    KKJlola_to_KKJxy(*outLongitude, *outLatitude, zoneNumber, &tmpX, &tmpY);
+    if (tmpY < y) {
+      minLa = minLa + 0.45 * deltaLa;
+    } else {
+      maxLa = minLa + 0.55 * deltaLa;
+    }
+
+    if (tmpX < x) {
+      minLo = minLo + 0.45 * deltaLo;
+    } else {
+      maxLo = minLo + 0.55 * deltaLo;
+    }
+
+    i++;
+  }
+}
+
+void Location::WGS84lola_to_KKJxy(double longitude, double latitude, KKJ *outX, KKJ *outY)
+{
+  double kkjlo, kkjla;
+
+  WGS84lola_to_KKJlola(longitude, latitude, &kkjlo, &kkjla);
+  int zoneNumber = KKJ_Zone_Lo(kkjlo);
+  KKJlola_to_KKJxy(kkjlo, kkjla, zoneNumber, outX, outY);
+}
+
+void Location::KKJxy_to_WGS84lola(KKJ x, KKJ y, double *outLongitude, double *outLatitude)
+{
+  double kkjlo, kkjla;
+
+  KKJxy_to_KKJlola(x, y, &kkjlo, &kkjla);
+  KKJlola_to_WGS84lola(kkjlo, kkjla, outLongitude, outLatitude);
+
+}
+
diff --git a/src/location.h b/src/location.h
new file mode 100644 (file)
index 0000000..dfb5d00
--- /dev/null
@@ -0,0 +1,108 @@
+#ifndef LOCATION_H
+#define LOCATION_H
+
+#include "location_p.h"
+
+#include <QString>
+#include <QObject>
+#include <QNetworkAccessManager>
+#include <QNetworkReply>
+#include <QGeoPositionInfo>
+#include <math.h>
+
+QTM_USE_NAMESPACE
+
+class Location : public QObject
+{
+Q_OBJECT
+
+public:
+  Location( const QString &x, const QString &y, const QString &label=QString() );
+  Location( const QGeoPositionInfo &positionInfo, const QString &label=QString() );
+  Location( const Location &from );
+  Location &operator=( const Location &from );
+  Location( const QString &label=QString() );
+
+  ~Location();
+
+  QString x() const;
+
+  QString y() const;
+
+  void setLocation( const QGeoPositionInfo &positionInfo );
+
+  void setAddress( const QString &address ) const;
+  QString address() const;
+
+  void setLabel( const QString &label ) const;
+  QString label() const;
+
+  bool isValid() const;
+
+public Q_SLOTS:
+  void resolveAddress( const QString &address );
+
+Q_SIGNALS:
+  void becomeValid();
+  void becomeInValid();
+  void busy( bool busy );
+
+private Q_SLOTS:
+  void replyFinished( QNetworkReply * reply );
+
+private:
+
+  LocationPrivate *q;
+  QNetworkAccessManager *manager;
+
+  typedef uint KKJ;
+
+  /**
+   * Transformes WGS84 longitude/latitude coordinates to KKJ x/y coordinates.
+   * @param longitude the input longitude in degrees
+   * @param latitude the input latitude in degrees
+   * @param outX the result x (easting)
+   * @param outY the result y (northing)
+   */
+  void WGS84lola_to_KKJxy(double longitude, double latitude, KKJ *outX, KKJ *outY);
+
+  /**
+   * Transformes KKJ x/y coordinates to WGS84 longitude/latitude coordinates.
+   * @param x the input x (easting)
+   * @param y the input y (northing)
+   * @param outLongitude the result longitude in degrees
+   * @param outLatitude the result latitude in degrees
+   */
+  void KKJxy_to_WGS84lola(KKJ x, KKJ y, double *outLongitude, double *outLatitude);
+
+  // Degrees to radians
+  double radians(double deg);
+
+  // Radians to degrees
+  double degrees(double rad);
+
+  // Constants
+  // Longitude0 and Center meridian of KKJ bands
+  static const double KkjZoneInfo[][2];
+
+  // Function:  KKJ_Zone_I
+  int KKJ_Zone_I(KKJ easting);
+
+  // Function:  KKJ_Zone_Lo
+  int KKJ_Zone_Lo(double kkjlo);
+
+  // Function:  KKJlalo_to_WGS84lalo
+  void KKJlola_to_WGS84lola(double kkjlo, double kkjla, double *outLongitude, double *outLatitude);
+
+  // Function:  WGS84lalo_to_KKJlalo
+  void WGS84lola_to_KKJlola(double longitude, double latitude, double *outLongitude, double *outLatitude);
+
+  // Function:  KKJlalo_to_KKJxy
+  void KKJlola_to_KKJxy(double lon, double lat, int zoneNumber, KKJ *outX, KKJ *outY);
+
+  // Function:  KKJxy_to_KKJlalo
+  void KKJxy_to_KKJlola(KKJ x, KKJ y, double *outLongitude, double *outLatitude);
+
+};
+
+#endif // LOCATION_H
diff --git a/src/location_p.cpp b/src/location_p.cpp
new file mode 100644 (file)
index 0000000..fe9d555
--- /dev/null
@@ -0,0 +1,140 @@
+#include <stdio.h>
+#include "location_p.h"
+
+#include <QXmlStreamReader>
+#include <QByteArray>
+#include <QDebug>
+#include <QMaemo5InformationBox>
+
+LocationPrivate::LocationPrivate( const QString &x, const QString &y, const QString &label ) :
+  m_label(label),
+  m_address(),
+  m_x(x),
+  m_y(y),
+  m_valid(true)
+{
+}
+
+LocationPrivate::LocationPrivate( const QString &label ) :
+  m_label(label),
+  m_address(),
+  m_x(0),
+  m_y(0),
+  m_valid(false)
+{
+}
+
+LocationPrivate::~LocationPrivate()
+{
+  m_label="deleted";
+  m_address="";
+  m_x="";
+  m_y="";
+  m_valid=false;
+}
+
+void LocationPrivate::parseReply( const QByteArray &reply )
+{
+  qDebug() << "parsing";
+  QXmlStreamReader xml( reply );
+  bool responseHasError = false;
+
+  while ( !xml.atEnd() ) {
+    xml.readNext();
+
+    if ( xml.isStartElement() ) {
+      QString xmlName( xml.name().toString() );
+
+      if ( xmlName == "LOC" ) {
+        QXmlStreamAttributes attributes( xml.attributes() );
+        QStringRef xAttribute( attributes.value("x") );
+        QStringRef yAttribute( attributes.value("y") );
+        QString newX( xAttribute.toString() );
+        QString newY( yAttribute.toString() );
+
+        m_x = newX;
+        m_y = newY;
+      }
+
+      if ( xmlName == "ERROR" ) {
+        responseHasError = true;
+      }
+
+    }
+  }
+
+  if ( xml.hasError() || responseHasError ) {
+    QMaemo5InformationBox::information( 0, "address resolution error - please check address" );
+    qDebug() << "xml error";
+    m_valid = false;
+  } else {
+    qDebug() << "(" << m_x << "," << m_y << ")";
+    if ( m_x.isEmpty() ||  m_y.isEmpty() ) {
+      qDebug() << "is NOT valid";
+      m_valid = false;
+    } else {
+      qDebug() << "is now valid";
+      m_valid = true;
+    }
+  }
+}
+
+void LocationPrivate::setLabel( const QString &label)
+{
+  m_label = label;
+}
+
+QString LocationPrivate::label() const
+{
+  return m_label;
+}
+
+void LocationPrivate::setAddress( const QString &address)
+{
+  m_address = address;
+}
+
+QString LocationPrivate::address() const
+{
+  return m_address;
+}
+
+void LocationPrivate::setX( uint x )
+{
+  m_x = QString( "%1" ).arg( x );
+}
+
+void LocationPrivate::setX( const QString &x )
+{
+  m_x = x;
+}
+
+QString LocationPrivate::x() const
+{
+  return m_x;
+}
+
+void LocationPrivate::setY( uint y )
+{
+  m_y = QString( "%1" ).arg( y );
+}
+
+void LocationPrivate::setY( const QString &y )
+{
+  m_y = y;
+}
+
+QString LocationPrivate::y() const
+{
+  return m_y;
+}
+
+void LocationPrivate::setValid( bool valid )
+{
+  m_valid = valid;
+}
+
+bool LocationPrivate::isValid() const
+{
+  return m_valid;
+}
diff --git a/src/location_p.h b/src/location_p.h
new file mode 100644 (file)
index 0000000..e32b267
--- /dev/null
@@ -0,0 +1,44 @@
+#ifndef LOCATION_P_H
+#define LOCATION_P_H
+
+#include <QObject>
+#include <QString>
+#include <QByteArray>
+
+class LocationPrivate : public QObject
+{
+    Q_OBJECT
+
+public:
+  LocationPrivate( const QString &x, const QString &y, const QString &label );
+  LocationPrivate( const QString &label );
+  virtual ~LocationPrivate();
+
+  void setX( uint x );
+  void setX( const QString &x );
+  QString x() const;
+
+  void setY( uint y );
+  void setY( const QString &y );
+  QString y() const;
+
+  void setAddress( const QString &address );
+  QString address() const;
+
+  void setLabel( const QString &label );
+  QString label() const;
+
+  void setValid( bool valid );
+  bool isValid() const;
+
+  void parseReply( const QByteArray &reply );
+
+  QString m_label;
+  QString m_address;
+  QString m_x;
+  QString m_y;
+  bool    m_valid;
+};
+
+#endif // LOCATION_P_H
+
diff --git a/src/locations.cpp b/src/locations.cpp
new file mode 100644 (file)
index 0000000..358a2cc
--- /dev/null
@@ -0,0 +1,107 @@
+#include "locations.h"
+
+#include <QDebug>
+#include <QHash>
+#include <QSettings>
+#include <QString>
+#include <QStringList>
+#include <QCoreApplication>
+
+QHash<QString,Location *> Locations::locationHash;
+bool Locations::initialised = false;
+
+Locations::Locations()
+{
+    if ( !initialised ) {
+        QCoreApplication::setOrganizationName("ZouBa");
+        QCoreApplication::setOrganizationDomain("zouba.yi.org");
+        QCoreApplication::setOrganizationName("ZouBa");
+
+        restoreLocations();
+        initialised = true;
+    }
+}
+
+Locations::~Locations()
+{
+}
+
+bool Locations::addLocation( Location *location )
+{
+  bool succeeded=false;
+
+  // if it's valid now, save the setting
+  if ( location->isValid() ) {
+    saveLocation( location );
+  }
+
+  if ( !locationHash.contains( location->label() ) ) {
+    qDebug() << "Adding location" << location->label();
+    locationHash[ location->label() ] = location;
+    succeeded = true;
+  } else {
+    qDebug() << "FAILED to add location" << location->label();
+  }
+
+  return succeeded;
+}
+
+void Locations::restoreLocations()
+{
+  QSettings settings;
+
+  settings.beginGroup( "Locations" );
+  QStringList labels = settings.childGroups();
+
+  for( int i=0; i<labels.size(); ++i ) {
+    QString label = labels[i];
+    settings.beginGroup( label );
+    QString x       = settings.value( "x" ).toString();
+    QString y       = settings.value( "y" ).toString();
+    QString address = settings.value( "address" ).toString();
+    settings.endGroup();
+
+    qDebug() << "restoring" << label;
+    Location *location = new Location( x, y, label );
+    location->setAddress( address );
+
+    locationHash[ label ] = location;
+  }
+
+  settings.endGroup();
+}
+
+void Locations::saveLocation( Location *location )
+{
+  qDebug() << "Saving location" << location->label();
+  QSettings settings;
+  settings.beginGroup( "Locations" );
+  settings.beginGroup( location->label() );
+  settings.setValue( "address", location->address() );
+  settings.setValue( "x", location->x() );
+  settings.setValue( "y", location->y() );
+  settings.endGroup();
+  settings.endGroup();
+}
+
+void Locations::saveLocation()
+{
+  Location *location = qobject_cast<Location*>(sender());
+
+  saveLocation( location );
+}
+
+Location *Locations::location( const QString &label )
+{
+  qDebug() << "requesting location" << label;
+  Location *retVal = 0;
+
+  if ( locationHash.contains( label ) ) {
+    qDebug() << "found location" << label;
+    retVal = locationHash[ label ];
+  } else {
+    qDebug() << "didn't find location" << label;
+  }
+
+  return retVal;
+}
diff --git a/src/locations.h b/src/locations.h
new file mode 100644 (file)
index 0000000..fa74faa
--- /dev/null
@@ -0,0 +1,33 @@
+#ifndef LOCATIONS_H
+#define LOCATIONS_H
+
+#include "location.h"
+
+#include <QHash>
+#include <QString>
+#include <QObject>
+
+class Locations: public QObject
+{
+  Q_OBJECT
+
+public:
+  Locations();
+  ~Locations();
+
+  static Locations *instance();
+  bool addLocation( Location *location );
+
+  Location *location( const QString &label );
+
+public Q_SLOTS:
+  void saveLocation();
+
+private:
+  void restoreLocations();
+  static QHash<QString,Location *> locationHash;
+  static bool initialised;
+
+  void saveLocation( Location *location );
+};
+#endif // LOCATIONS_H
diff --git a/src/main.cpp b/src/main.cpp
new file mode 100644 (file)
index 0000000..bd3898b
--- /dev/null
@@ -0,0 +1,64 @@
+#include "routedata.h"
+#include "route.h"
+#include "ui.h"
+#include "uicontroller.h"
+#include "location.h"
+#include "gpscontroller.h"
+#include "ytv.h"
+
+#include <QDebug>
+#include <QObject>
+#include <QApplication>
+#include <QMainWindow>
+
+int main(int argc, char *argv[] )
+{
+  QApplication app(argc, argv);
+
+  QMainWindow *mainWindow = new QMainWindow;
+  Ui *ui = new Ui;;
+  ui->setupUi(mainWindow);
+
+  UiController  *uiController  = new UiController( ui );
+  Route         *route         = new Route();
+  GpsController *gpsController = new GpsController();
+
+  QObject::connect(
+      route, SIGNAL( routeReady( QList<RouteData> ) ),
+      uiController, SLOT( displayRoute( QList<RouteData> ) )
+      );
+
+  QObject::connect(
+      gpsController, SIGNAL( locationChanged( Location* ) ),
+      route, SLOT( setFromLocation( Location* ) )
+      );
+
+  QObject::connect(
+      uiController, SIGNAL( destinationChanged( Location* ) ),
+      route, SLOT( setToLocation( Location* ) )
+    );
+
+  QObject::connect(
+      uiController, SIGNAL( buttonClicked() ),
+      gpsController, SLOT( getGps() )
+    );
+
+  QObject::connect(
+      ui, SIGNAL( fakeGpsPressed( const QString & ) ),
+      gpsController, SLOT( useFakeGps( const QString & ) )
+    );
+
+  QObject::connect(
+      ui, SIGNAL( liveGpsPressed() ),
+      gpsController, SLOT( useLiveGps() )
+    );
+
+  QObject::connect(
+      route, SIGNAL( busy( bool ) ),
+      ui, SLOT( setBusy( bool ) )
+    );
+
+  mainWindow->show();
+
+  return app.exec();
+}
diff --git a/src/route.cpp b/src/route.cpp
new file mode 100644 (file)
index 0000000..5d5e794
--- /dev/null
@@ -0,0 +1,118 @@
+#include "route_p.h"
+#include "route.h"
+
+#include "routedata.h"
+#include "location.h"
+
+#include <QNetworkAccessManager>
+#include <QNetworkReply>
+#include <QUrl>
+#include <QObject>
+#include <QDebug>
+#include <QStringList>
+#include <QString>
+#include <QXmlStreamReader>
+#include <QWidget>
+
+#include "ytv.h"
+
+Route::Route() :
+  q( new RoutePrivate( this ) ),
+  manager( new QNetworkAccessManager(this) )
+{
+  connect( manager, SIGNAL( finished(QNetworkReply*) ), this, SLOT( replyFinished(QNetworkReply*) ) );
+}
+
+Route::~Route()
+{
+  delete manager;
+  manager = 0;
+}
+
+void Route::getRoute()
+{
+  qDebug() << "getting route from Ytv";
+
+  QUrl fullUrl( Ytv::Url );
+
+  QStringList a;
+  a << q->fromLocation()->x() << q->fromLocation()->y();
+  QStringList b;
+  b << q->toLocation()->x() << q->toLocation()->y();
+
+  fullUrl.addQueryItem( "a", a.join(",") );
+  fullUrl.addQueryItem( "b", b.join(",") );
+  fullUrl.addQueryItem( "show", QString::number(Ytv::ShowFiveResults) );
+  fullUrl.addQueryItem( "walkspeed", QString::number(Ytv::WalkSpeedFast) );
+  fullUrl.addQueryItem( "optimize", QString::number(Ytv::OptimizeLeastWalking) );
+  fullUrl.addQueryItem( "user", Ytv::Username );
+  fullUrl.addQueryItem( "pass", Ytv::Password );
+
+  manager->get( QNetworkRequest( fullUrl ) );
+  qDebug() << "getting url" << fullUrl.toEncoded();
+  qDebug() << "waiting for reply from Ytv";
+  emit( busy( true ) );
+}
+
+void Route::replyFinished( QNetworkReply * reply )
+{
+  qDebug() << "have reply from Ytv";
+  QList<RouteData> routeData = q->parseReply( reply->readAll() );
+
+  emit( routeReady( routeData ) );
+  emit( busy( false ) );
+}
+
+void Route::setFromLocation( Location *location )
+{
+  qDebug() << "setting new From location (" << location->label() << ")";
+
+  if ( location && location->isValid() ) {
+    qDebug() << "From is valid";
+    q->setFromLocation( location );
+    if ( q->toValid() ) {
+      qDebug() << "To is also valid";
+      getRoute();
+    } else {
+      qDebug() << "To not valid - waiting";
+    }
+  } else {
+    qDebug() << "ERROR:From is not valid";
+    qDebug() << "location=" << location;
+    if ( location ) {
+      qDebug() << "location->isValid()=" << location->isValid();
+    }
+  }
+}
+
+Location *Route::fromLocation() const
+{
+  return q->fromLocation();
+}
+
+void Route::setToLocation( Location *location )
+{
+  qDebug() << "setting new To location (" << location->label() << ")";
+
+  if ( location && location->isValid() ) {
+    qDebug() << "To is valid";
+    q->setToLocation( location );
+    if ( q->fromValid() ) {
+      qDebug() << "From is also valid";
+      getRoute();
+    } else {
+      qDebug() << "From not valid - waiting";
+    }
+  } else {
+    qDebug() << "ERROR:From is not valid";
+    qDebug() << "location=" << location;
+    if ( location ) {
+      qDebug() << "location->isValid()=" << location->isValid();
+    }
+  }
+}
+
+Location *Route::toLocation() const
+{
+  return q->toLocation();
+}
diff --git a/src/route.h b/src/route.h
new file mode 100644 (file)
index 0000000..9a311b5
--- /dev/null
@@ -0,0 +1,63 @@
+#ifndef ROUTE_H
+#define ROUTE_H
+
+#include "routedata.h"
+#include "location.h"
+
+#include <QObject>
+#include <QNetworkReply>
+#include <QNetworkAccessManager>
+
+class RoutePrivate;
+
+class Route: public QObject
+{
+  Q_OBJECT
+
+public:
+  Route();
+  ~Route();
+
+  /*!
+    * \brief Gets the route data from the server
+    */
+  void getRoute();
+
+  /*!
+    \brief Get the from location
+    \return The from location
+    */
+  Location *fromLocation() const;
+
+  /*!
+    \brief Get the to location
+    \return The to location
+    */
+  Location *toLocation() const;
+
+public Q_SLOTS:
+
+  /*!
+    * \brief Sets the from location
+    * \param fromLocation The from location
+    */
+  void setFromLocation( Location *location=0 );
+
+  /*!
+    * \brief Sets the to location
+    * \param toLocation The to location
+    */
+  void setToLocation( Location *location=0 );
+
+Q_SIGNALS:
+  void routeReady( QList<RouteData> );
+  void busy( bool busy );
+
+private Q_SLOTS:
+  void replyFinished( QNetworkReply* );
+
+private:
+  RoutePrivate *q;
+  QNetworkAccessManager *manager;
+};
+#endif // ROUTE_H
diff --git a/src/route_p.cpp b/src/route_p.cpp
new file mode 100644 (file)
index 0000000..d2125da
--- /dev/null
@@ -0,0 +1,230 @@
+#include "route_p.h"
+#include "location.h"
+
+#include <QXmlStreamReader>
+#include <QDebug>
+#include <QList>
+#include <QFile>
+#include <QStringList>
+#include <QMaemo5InformationBox>
+
+RoutePrivate::RoutePrivate( QObject *parent ) :
+    m_fromValid(false),
+    m_toValid(false),
+    m_fromLocation(0),
+    m_toLocation(0)
+{
+  Q_UNUSED( parent )
+}
+
+RoutePrivate::~RoutePrivate()
+{
+}
+
+QList<RouteData> RoutePrivate::parseReply( const QByteArray &reply )
+{
+  qDebug() << "parsing route";
+
+  QList<RouteData> retVal;
+  RouteData routeData;
+  LegData legData;
+
+  QXmlStreamReader xml( reply );
+
+  QHash<QString, bool> in;
+  QHash<QString, bool> have;
+
+  QStringList haveKeys;
+  QStringList inKeys;
+
+  haveKeys
+    << "LINE"
+    << "TIME"
+    << "TRIP"
+    << "DEPARTURE"
+    << "ARRIVAL"
+    ;
+
+  inKeys
+    << "ROUTE"
+    << "LINE"
+    << "STOP"
+    << "WALK"
+    << "POINT"
+    ;
+
+  foreach( QString key, haveKeys ) {
+    have[ key ] = false;
+  }
+
+  foreach( QString key, inKeys ) {
+    in[ key ] = false;
+  }
+
+  while ( !xml.atEnd() ) {
+    xml.readNext();
+
+    QString xmlName = xml.name().toString();
+
+    if ( xml.isStartElement() ) {
+      if ( inKeys.contains( xmlName ) ) {
+        in[ xmlName ] = true;
+        //qDebug() << "in[" << xmlName << "] = true";
+      }
+
+      if ( xmlName == "ROUTE" ) {
+        foreach( QString key, haveKeys ) {
+          have[ key ] = false;
+        }
+      }
+
+      if ( xmlName == "WALK" ) {
+        legData.m_how = "WALK";
+        have[ "DEPARTURE" ] = false;
+        have[ "ARRIVAL" ]   = false;
+        have[ "LENGTH" ]    = false;
+      }
+
+      if ( xmlName == "LINE" ) {
+        legData.m_how = "LINE";
+        QString lineCode( xml.attributes().value("code").toString() );
+        legData.m_lineCode = parseJORECode( lineCode );
+        have[ "DEPARTURE" ] = false;
+        have[ "ARRIVAL" ]   = false;
+        have[ "LENGTH" ]    = false;
+      }
+    }
+
+    if ( xml.isEndElement() ) {
+      if ( inKeys.contains( xmlName ) ) {
+        in[ xmlName ] = false;
+        //qDebug() << "in[" << xmlName << "] = false";
+      }
+
+      if ( xmlName == "ROUTE" ) {
+        retVal.append( routeData );
+        routeData.clear();
+      }
+
+      if ( xmlName == "WALK" || xmlName == "LINE" ) {
+        routeData.m_legData.append( legData );
+        legData.clear();
+        have[ "LENGTH" ] = false;
+      }
+    }
+
+    if ( !have[ "ARRIVAL" ] && ( in[ "WALK" ] || in[ "LINE" ] ) && ( in[ "STOP" ] || in[ "POINT" ] ) && xml.isStartElement() && xmlName == "ARRIVAL" ) {
+      QString arrivalTime( xml.attributes().value("time").toString() );
+      legData.m_arrivalTime = arrivalTime.rightJustified(4).insert(2,":");
+
+      // don't set have[ "ARRIVAL" ] since we want the last one of many STOPs
+    }
+
+    if ( !have[ "DEPARTURE" ] && in[ "LINE" ] && in[ "STOP" ] && xml.isStartElement() && xmlName == "DEPARTURE" ) {
+      QString departureTime( xml.attributes().value("time").toString() );
+      legData.m_departureTime = departureTime.rightJustified(4).insert(2,":");
+
+      have[ "DEPARTURE" ] = true;
+    }
+
+    if ( !have[ "DEPARTURE" ] && in[ "WALK" ] && ( in[ "POINT" ] || in[ "STOP" ] ) && xml.isStartElement() && xmlName == "DEPARTURE" ) {
+      QString departureTime( xml.attributes().value("time").toString() );
+      legData.m_departureTime = departureTime.rightJustified(4).insert(2,":");
+
+      have[ "DEPARTURE" ] = true;
+    }
+
+    if ( !have[ "LENGTH" ] && ( in[ "WALK" ] || in[ "LINE" ] ) && xml.isStartElement() && xmlName == "LENGTH" ) {
+      legData.m_tripTime     = xml.attributes().value("time").toString();
+      legData.m_tripDistance = xml.attributes().value("dist").toString();
+
+      have[ "LENGTH" ] = true;
+    }
+
+    if ( !have[ "TRIP" ] && in[ "ROUTE" ] && xml.isStartElement() && xmlName == "LENGTH" ) {
+      routeData.m_tripTime     = xml.attributes().value("time").toString();
+      routeData.m_tripDistance = xml.attributes().value("dist").toString();
+
+      have[ "TRIP" ] = true;
+    }
+
+    if ( !have[ "LINE" ] && in[ "ROUTE" ] && xml.isStartElement() && xmlName == "LINE" ) {
+      QString lineCode( xml.attributes().value("code").toString() );
+
+      routeData.m_lineCode = parseJORECode( lineCode );
+      have[ "LINE" ] = true;
+    }
+
+    if ( !have[ "TIME" ] && in[ "ROUTE" ] && in[ "LINE" ] && in[ "STOP" ] && xmlName == "DEPARTURE" ) {
+      QString departureTime( xml.attributes().value("time").toString() );
+
+      routeData.m_departureTime = departureTime.rightJustified(4).insert(2,":");
+      have[ "TIME" ] = true;
+    }
+
+  }
+
+  if ( xml.hasError() ) {
+    qDebug() << "xml error:" << xml.errorString();
+  }
+
+  if ( retVal.isEmpty() ) {
+    qDebug() << "no routes found";
+    QMaemo5InformationBox::information( 0, "no routes found" );
+  }
+
+  return retVal;
+}
+
+void RoutePrivate::setFromLocation( Location *location )
+{
+  m_fromLocation = location;
+  m_fromValid = true;
+}
+
+Location *RoutePrivate::fromLocation() const
+{
+  return m_fromLocation;
+}
+
+void RoutePrivate::setToLocation( Location *toLocation )
+{
+  m_toLocation = toLocation;
+  m_toValid = true;
+}
+
+QString RoutePrivate::parseJORECode( const QString &joreCode ) const
+{
+  QString retVal;
+
+  QString areaTransportTypeCode( joreCode.mid(0,1) );
+  QString lineCode( joreCode.mid(1,3) );
+  QString letterVariant( joreCode.mid(4,1) );
+  QString letterNumberVariant( joreCode.mid(5,1) );
+  QString direction( joreCode.mid(6,1) );
+
+  lineCode.setNum( lineCode.toInt() );
+
+  retVal = lineCode;
+
+  if ( letterVariant != " " ) {
+    retVal += letterVariant;
+  }
+
+  return retVal;
+}
+
+Location *RoutePrivate::toLocation() const
+{
+  return m_toLocation;
+}
+
+bool RoutePrivate::fromValid()
+{
+  return m_fromValid;
+}
+
+bool RoutePrivate::toValid()
+{
+  return m_toValid;
+}
diff --git a/src/route_p.h b/src/route_p.h
new file mode 100644 (file)
index 0000000..fddce34
--- /dev/null
@@ -0,0 +1,42 @@
+#ifndef ROUTE_P_H
+#define ROUTE_P_H
+
+#include "routedata.h"
+
+#include "location.h"
+
+#include <QObject>
+
+class RoutePrivate: public QObject
+{
+  Q_OBJECT
+
+public:
+  RoutePrivate( QObject *parent=0 );
+  ~RoutePrivate();
+
+  QList<RouteData> parseReply( const QByteArray &reply );
+
+  Q_PROPERTY(Location* fromLocation READ fromLocation WRITE setFromLocation);
+  Q_PROPERTY(Location* toLocation READ toLocation WRITE setToLocation);
+
+  void setFromLocation( Location *fromLocation );
+
+  Location *fromLocation() const;
+
+  void setToLocation( Location *toLocation );
+
+  Location *toLocation() const;
+
+  bool toValid();
+  bool fromValid();
+
+private:
+  bool     m_fromValid;
+  bool     m_toValid;
+  Location *m_fromLocation;
+  Location *m_toLocation;
+
+  QString parseJORECode( const QString &joreCode ) const;
+};
+#endif // ROUTE_P_H
diff --git a/src/routedata.h b/src/routedata.h
new file mode 100644 (file)
index 0000000..b1bec0b
--- /dev/null
@@ -0,0 +1,91 @@
+#ifndef ROUTEDATA_H
+#define ROUTEDATA_H
+
+#include <QString>
+#include <QList>
+
+struct LegData
+{
+  LegData() :
+    m_how(),
+    m_tripTime(),
+    m_tripDistance(),
+    m_departureTime(),
+    m_arrivalTime(),
+    m_lineCode()
+  {
+  };
+
+  LegData( QString how, QString tripTime, QString tripDistance, QString departureTime, QString arrivalTime, QString lineCode=QString() ) :
+    m_how(how),
+    m_tripTime(tripTime),
+    m_tripDistance(tripDistance),
+    m_departureTime(departureTime),
+    m_arrivalTime(arrivalTime),
+    m_lineCode(lineCode)
+  {
+  };
+
+  void clear()
+  {
+    m_how = "";
+    m_tripTime = "";
+    m_tripDistance = "";
+    m_departureTime = "";
+    m_arrivalTime = "";
+    m_lineCode = "";
+  };
+
+  QString m_how;
+  QString m_tripTime;
+  QString m_tripDistance;
+  QString m_departureTime;
+  QString m_arrivalTime;
+  QString m_lineCode;
+
+};
+
+struct RouteData
+{
+  RouteData():
+    m_tripTime(),
+    m_tripDistance(),
+    m_departureTime(),
+    m_lineCode(),
+    m_legData()
+  {
+  };
+
+  RouteData( QString tripTime, QString tripDistance, QString departureTime, QString lineCode ):
+    m_tripTime(tripTime),
+    m_tripDistance(tripDistance),
+    m_departureTime(departureTime),
+    m_lineCode(lineCode),
+    m_legData()
+  {
+  };
+
+  RouteData &operator <<(const LegData &legData)
+  {
+    m_legData.append( legData );
+    return *this;
+  };
+
+  void clear()
+  {
+    m_tripTime = "";
+    m_tripDistance = "";
+    m_departureTime = "";
+    m_lineCode = "";
+    m_legData.clear();
+  };
+
+  QString m_tripTime;
+  QString m_tripDistance;
+  QString m_departureTime;
+  QString m_lineCode;
+  QList<LegData> m_legData;
+
+};
+
+#endif // ROUTEDATA_H
diff --git a/src/src.pro b/src/src.pro
deleted file mode 100644 (file)
index 05fcc2a..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-TEMPLATE = lib
-TARGET = ptascommon
-OBJECTS_DIR = .obj
-MOC_DIR = .moc
-
-INSTALL_HEADERS = \
-    coordinatesystemtransformer.h \
-    kkjgridcoordinate.h \
-
-PRIVATE_HEADERS = \
-    kkjgridcoordinate_p.h
-HEADERS += \
-    $$INSTALL_HEADERS \
-    $$PRIVATE_HEADERS
-SOURCES += \
-    coordinatesystemtransformer.cpp \
-    kkjgridcoordinate.cpp
diff --git a/src/ui.cpp b/src/ui.cpp
new file mode 100644 (file)
index 0000000..ee18f3a
--- /dev/null
@@ -0,0 +1,177 @@
+#include "ui.h"
+
+#include "locations.h"
+#include "ytv.h"
+
+#include <QMainWindow>
+#include <QRadioButton>
+#include <QTableWidget>
+#include <QString>
+#include <QRect>
+#include <QButtonGroup>
+#include <QHeaderView>
+#include <QObject>
+#include <QMenuBar>
+#include <QHBoxLayout>
+#include <QVBoxLayout>
+#include <QGridLayout>
+#include <QSizePolicy>
+#include <QInputDialog>
+#include <QDebug>
+
+Ui::Ui() :
+  m_centralWidget(0),
+  m_destinationButtons(0),
+  m_routeStack(0),
+  m_usingFakeGps( false ),
+  m_fakeLocationLabel( "work" )
+{
+}
+
+Ui::~Ui()
+{
+}
+
+void Ui::setupUi( QMainWindow *mainWindow )
+{
+  m_mainWindow = mainWindow;
+  m_mainWindow->resize(800,480);
+
+  m_menu = mainWindow->menuBar()->addMenu("Settings");
+
+  QAction *setHomeAddressAction = new QAction("Set home address", this);
+  QAction *setWorkAddressAction = new QAction("Set work address", this);
+  m_toggleFakeGpsAction  = new QAction("Use fake GPS", this);
+  m_menu->addAction(setHomeAddressAction);
+  m_menu->addAction(setWorkAddressAction);
+  m_menu->addAction(m_toggleFakeGpsAction);
+
+  connect(
+      setHomeAddressAction, SIGNAL(triggered()),
+      this, SLOT(setHomeAddress())
+      );
+  connect(
+      setWorkAddressAction, SIGNAL(triggered()),
+      this, SLOT(setWorkAddress())
+      );
+  connect(
+      m_toggleFakeGpsAction, SIGNAL(triggered()),
+      this, SLOT(toggleFakeGps())
+      );
+
+  m_centralWidget = new QWidget( m_mainWindow );
+  m_mainWindow->setCentralWidget( m_centralWidget);
+
+  QRadioButton *homeButton = new QRadioButton();
+  homeButton->setObjectName( QString::fromUtf8("homeButton") );
+  homeButton->setText( "GPS->HOME" );
+  homeButton->setEnabled(false);
+
+  QRadioButton *workButton = new QRadioButton();
+  workButton->setObjectName( QString::fromUtf8("workButton") );
+  workButton->setText( "GPS->WORK" );
+  workButton->setEnabled(false);
+
+  m_destinationButtons = new QButtonGroup();
+  m_destinationButtons->addButton( homeButton, HomeButtonId );
+  m_destinationButtons->addButton( workButton, WorkButtonId );
+  m_destinationButtons->setExclusive( true );
+
+  m_routeButtons = new QButtonGroup();
+  m_routeButtons->setExclusive( true );
+  m_routeStack = new QVBoxLayout();
+  for ( int i=0; i<Ytv::ShowFiveResults; ++i ) {
+    QRadioButton *button = new QRadioButton();
+    button->setObjectName( "routeButton"+i );
+    button->setEnabled( false );
+
+    m_routeStack->addWidget( button, i );
+    m_routeButtons->addButton( button, i );
+  }
+  m_routeStack->addStretch();
+
+  QStringList headers( QStringList() << "How" << "Time" << "Dist" << "Dep" << "Arr" );
+  m_routeDetailTable = new QTableWidget();
+  m_routeDetailTable->setColumnCount( headers.count() );
+  m_routeDetailTable->setHorizontalHeaderLabels( headers );
+  m_routeDetailTable->resizeColumnsToContents();
+  m_routeDetailTable->setSelectionMode( QAbstractItemView::NoSelection );
+
+  QHBoxLayout *topLayout = new QHBoxLayout();
+  topLayout->addLayout( m_routeStack );
+  topLayout->addWidget( m_routeDetailTable );
+
+  m_buttonLayout = new QGridLayout();
+  m_buttonLayout->addWidget( homeButton, 0, 0 );
+  m_buttonLayout->addWidget( workButton, 0, 1 );
+
+  m_mainLayout = new QVBoxLayout();
+  m_mainLayout->addLayout( topLayout );
+  m_mainLayout->addLayout( m_buttonLayout );
+
+  m_centralWidget->setLayout( m_mainLayout );
+}
+
+void Ui::setHomeAddress()
+{
+  setAddress( "home" );
+}
+
+void Ui::setWorkAddress()
+{
+  setAddress( "work" );
+}
+
+void Ui::toggleFakeGps()
+{
+  m_usingFakeGps = !m_usingFakeGps;
+
+  if ( m_usingFakeGps ) {
+    useFakeGps();
+  } else {
+    useLiveGps();
+  }
+}
+
+void Ui::useFakeGps()
+{
+  emit fakeGpsPressed( m_fakeLocationLabel );
+  m_toggleFakeGpsAction->setText( "Use Live GPS" );
+}
+
+void Ui::useLiveGps()
+{
+  emit liveGpsPressed();
+  m_toggleFakeGpsAction->setText( "Use Fake GPS" );
+}
+
+void Ui::setAddress( const QString &label )
+{
+  Locations locations;
+  Location *location=locations.location( label );
+
+  bool ok;
+  QString address = QInputDialog::getText(
+     m_centralWidget,
+     tr("Enter address for \""+QString(label).toLatin1()+"\""),
+     tr("Address"),
+     QLineEdit::Normal,
+     location->address(),
+     &ok
+     );
+
+  if ( ok ) {
+    qDebug() << "new address" << address;
+    Locations locations;
+    Location  *location  = locations.location( label );
+    qDebug() << "location" << location;
+    if ( location ) {
+      location->resolveAddress( address );
+    }
+  }
+}
+
+void Ui::setBusy( bool busy )
+{
+  m_mainWindow->setAttribute(Qt::WA_Maemo5ShowProgressIndicator, busy);
+}
diff --git a/src/ui.h b/src/ui.h
new file mode 100644 (file)
index 0000000..94dc687
--- /dev/null
+++ b/src/ui.h
@@ -0,0 +1,67 @@
+#ifndef UI_H
+#define UI_H
+
+#include <QObject>
+
+class QMainWindow;
+class QWidget;
+class QTableWidget;
+class QButtonGroup;
+class QHBoxLayout;
+class QVBoxLayout;
+class QGridLayout;
+class QMenu;
+class QAction;
+class Location;
+
+class Ui : public QObject
+{
+  Q_OBJECT
+
+public:
+  Ui();
+  ~Ui();
+  void setupUi( QMainWindow *mainWindow );
+
+  enum {
+    HomeButtonId=0,
+    WorkButtonId=1
+  };
+
+  enum {
+    ScreenWidth=800,
+    ScreenHeight=480
+  };
+
+  QMainWindow *m_mainWindow;
+  QWidget *m_centralWidget;
+  QButtonGroup *m_destinationButtons;
+  QButtonGroup *m_routeButtons;
+  QVBoxLayout *m_routeStack;
+  QTableWidget *m_routeDetailTable;
+  QVBoxLayout *m_mainLayout;
+  QGridLayout *m_buttonLayout;
+  QMenu       *m_menu;
+  QAction     *m_toggleFakeGpsAction;
+  QAction     *m_useLiveGpsAction;
+  bool        m_usingFakeGps;
+  QString     m_fakeLocationLabel;
+
+Q_SIGNALS:
+  void homeAddressChanged( QString address );
+  void workAddressChanged( QString address );
+  void fakeGpsPressed( const QString &fakeLocationLabel );
+  void liveGpsPressed();
+
+private Q_SLOTS:
+  void setHomeAddress();
+  void setWorkAddress();
+  void toggleFakeGps();
+  void setBusy( bool busy );
+
+private:
+  void useFakeGps();
+  void useLiveGps();
+  void setAddress( const QString &label );
+};
+#endif //UI_H
diff --git a/src/uicontroller.cpp b/src/uicontroller.cpp
new file mode 100644 (file)
index 0000000..8365378
--- /dev/null
@@ -0,0 +1,219 @@
+#include "uicontroller.h"
+#include "route.h"
+#include "ui.h"
+#include "ytv.h"
+#include "location.h"
+#include "locations.h"
+
+#include <QObject>
+#include <QPushButton>
+#include <QDebug>
+#include <QButtonGroup>
+#include <QRadioButton>
+#include <QVBoxLayout>
+#include <QTableWidgetItem>
+
+UiController::UiController( Ui *ui ) :
+  m_routeData(),
+  m_destination(),
+  m_ui(ui),
+  m_currentDestination(-1),
+  m_currentRoute(-1)
+{
+  Locations locations;
+  Location *homeLocation = locations.location( "home" );
+  Location *workLocation = locations.location( "work" );
+
+  if ( homeLocation==0 ) {
+    homeLocation = new Location( "home" );
+    locations.addLocation( homeLocation );
+  } else if ( homeLocation->isValid() ) {
+    setHomeButtonValid();
+  }
+
+  if ( workLocation==0 ) {
+    workLocation = new Location( "work" );
+    locations.addLocation( workLocation );
+  } else if ( workLocation->isValid() ) {
+    setWorkButtonValid();
+  }
+
+  connect(
+      homeLocation, SIGNAL( becomeValid() ),
+      this, SLOT( setHomeButtonValid() )
+  );
+  connect(
+      homeLocation, SIGNAL( becomeInValid() ),
+      this, SLOT( setHomeButtonInValid() )
+  );
+  connect(
+      homeLocation, SIGNAL( becomeValid() ),
+      &locations, SLOT( saveLocation() )
+      );
+  connect(
+      homeLocation, SIGNAL( busy( bool ) ),
+      ui, SLOT( setBusy( bool ) )
+      );
+
+  connect(
+      workLocation, SIGNAL( becomeValid() ),
+      this, SLOT( setWorkButtonValid() )
+  );
+  connect(
+      workLocation, SIGNAL( becomeInValid() ),
+      this, SLOT( setWorkButtonInValid() )
+  );
+  connect(
+      workLocation, SIGNAL( becomeValid() ),
+      &locations, SLOT( saveLocation() )
+      );
+  connect(
+      workLocation, SIGNAL( busy( bool ) ),
+      ui, SLOT( setBusy( bool ) )
+      );
+
+  m_destination.append( homeLocation );
+  m_destination.append( workLocation );
+
+  connect(
+      m_ui->m_destinationButtons, SIGNAL( buttonClicked( int ) ),
+      this, SLOT( changeDestination( int ) )
+  );
+
+  connect(
+      m_ui->m_routeButtons, SIGNAL( buttonClicked( int ) ),
+      this, SLOT( changeRoute( int ) )
+  );
+}
+
+UiController::~UiController()
+{
+}
+
+void UiController::setHomeButtonInValid()
+{
+  qDebug() << "setting home button invalid";
+  setButtonValid( Ui::HomeButtonId, false );
+}
+
+void UiController::setHomeButtonValid()
+{
+  qDebug() << "setting home button valid";
+  setButtonValid( Ui::HomeButtonId, true );
+}
+
+void UiController::setWorkButtonInValid()
+{
+  qDebug() << "setting work button invalid";
+  setButtonValid( Ui::WorkButtonId, false );
+}
+
+void UiController::setWorkButtonValid()
+{
+  qDebug() << "setting work button valid";
+  setButtonValid( Ui::WorkButtonId, true );
+}
+
+void UiController::setButtonValid( int id, bool isValid )
+{
+  m_ui->m_destinationButtons->button( id )->setEnabled( isValid );
+}
+
+void UiController::changeDestination( int id )
+{
+  bool destinationHasChanged = ( m_currentDestination != id );
+  qDebug() << "Destination has changed=" << destinationHasChanged;
+  if ( destinationHasChanged ) {
+    qDebug() << "Emitting destination changed (" << m_destination[id]->label() << ")";
+    emit destinationChanged( m_destination[id] );
+    m_currentDestination = id;
+  }
+
+  // always want to emit this so that the gps position is updated
+  // and the user gets new information
+  emit buttonClicked();
+}
+
+void UiController::changeRoute( int id )
+{
+  bool routeHasChanged = ( m_currentRoute != id );
+  if ( routeHasChanged ) {
+    displayRouteDetail( id );
+  }
+}
+
+void UiController::displayRouteDetail( int id )
+{
+  QTableWidget *table = m_ui->m_routeDetailTable;
+
+  if ( id < m_routeData.count() ) {
+    QList<LegData> &legDataList = m_routeData[ id ].m_legData;
+    table->setRowCount( legDataList.count() );
+
+    int row=0;
+    foreach( LegData thisLegData, legDataList ) {
+      QString thisHow = thisLegData.m_how;
+
+      bool thisIsLine = ( thisHow == "LINE" );
+      if ( thisIsLine ) {
+        thisHow = thisLegData.m_lineCode;
+      }
+
+      QStringList tableStrings;
+      tableStrings
+        << thisHow
+        << thisLegData.m_tripTime
+        << thisLegData.m_tripDistance
+        << thisLegData.m_departureTime
+        << thisLegData.m_arrivalTime;
+
+      int col=0;
+      foreach( QString thisString, tableStrings ) {
+        QTableWidgetItem *newItem = new QTableWidgetItem();
+        newItem->setText( thisString );
+        table->setItem( row,col, newItem );
+        ++col;
+      }
+
+      ++row;
+    }
+  } else {
+    table->setRowCount( 0 );
+  }
+
+  table->resizeColumnsToContents();
+}
+
+void UiController::displayRoute( const QList<RouteData> &routeData )
+{
+  m_routeData = routeData;
+
+  qDebug() << "displaying route";
+
+  for ( int i=0; i<Ytv::ShowFiveResults; ++i ) {
+    QString label;
+
+    QWidget *widget = m_ui->m_routeStack->itemAt( i )->widget();
+    QRadioButton *button = qobject_cast<QRadioButton *>(widget);
+
+    if ( i<routeData.count() ) {
+      RouteData thisRouteData = routeData.at(i);
+      label = ( QStringList()
+          << thisRouteData.m_departureTime
+          << thisRouteData.m_lineCode ).join( "/" );
+      button->setEnabled( true );
+    } else {
+      button->setEnabled( false );
+    }
+
+    if ( i==0 ) {
+      button->setChecked( true );
+    } else {
+      button->setChecked( false );
+    }
+
+    button->setText( label );
+  }
+
+  displayRouteDetail( 0 );
+}
diff --git a/src/uicontroller.h b/src/uicontroller.h
new file mode 100644 (file)
index 0000000..7cbbbf5
--- /dev/null
@@ -0,0 +1,46 @@
+#ifndef UICONTROLLER_H
+#define UICONTROLLER_H
+
+#include "routedata.h"
+#include "location.h"
+
+#include <QObject>
+
+class Ui;
+
+class UiController : public QObject
+{
+  Q_OBJECT
+
+public:
+  UiController( Ui *ui );
+  ~UiController();
+
+public Q_SLOTS:
+  void displayRoute( const QList<RouteData> &routeData );
+
+Q_SIGNALS:
+  void buttonClicked();
+  void destinationChanged( Location *newDestination );
+
+private Q_SLOTS:
+  void changeDestination( int id );
+  void changeRoute( int id );
+  void setHomeButtonValid();
+  void setWorkButtonValid();
+  void setHomeButtonInValid();
+  void setWorkButtonInValid();
+  void displayRouteDetail( int id );
+
+private:
+  void setButtonValid( int id, bool isValid );
+
+private:
+  QList<RouteData> m_routeData;
+  QList<Location*> m_destination;
+  Ui *m_ui;
+  int m_currentDestination;
+  int m_currentRoute;
+};
+#endif // UICONTROLLER_H
+
diff --git a/src/ytv.h b/src/ytv.h
new file mode 100644 (file)
index 0000000..9e34102
--- /dev/null
+++ b/src/ytv.h
@@ -0,0 +1,35 @@
+#include <QUrl>
+#include <QString>
+
+namespace Ytv {
+  const QString Url( "http://api.reittiopas.fi/public-ytv/fi/api/" );
+  const QString Username( "zouba" );
+  const QString Password( "caf9r3ee" );
+
+  //const QString Home( QByteArray::fromPercentEncoding( "Taivaanvuohentie%207%2CHelsinki" ) );
+  //const QString Work( QByteArray::fromPercentEncoding( "It%E4merenkatu%2011%2CHelsinki" ) );
+
+  enum {
+    WalkSpeedSlow=1,
+    WalkSpeedFast=2,
+    WalkSpeedNormal=3,
+    WalkSpeedRunning=4,
+    WalkSpeedCycling=5,
+    NoWalkSpeeds=5
+  };
+
+  enum {
+    ShowOneResult=1,
+    ShowThreeResults=3,
+    ShowFiveResults=5
+  };
+
+  enum {
+    OptimizeDefault=1,
+    OptimizeFastest=2,
+    OptimizeLeastTransfers=3,
+    OptimizeLeastWalking=4
+  };
+
+};
+
diff --git a/tests/.gitignore b/tests/.gitignore
deleted file mode 100644 (file)
index f3c7a7c..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Makefile
diff --git a/tests/check.pri b/tests/check.pri
deleted file mode 100644 (file)
index 6c95097..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-QMAKE_EXTRA_TARGETS += check
-check.depends = $$TARGET
-check.commands = ./$$TARGET
diff --git a/tests/coord_trans_proto/coord_trans_proto.py b/tests/coord_trans_proto/coord_trans_proto.py
deleted file mode 100644 (file)
index 5ac26c9..0000000
+++ /dev/null
@@ -1,248 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Adapted from http://positio.rista.net/en/pys60gps/src/KKJWGS84.py
-
-import math
-
-
-# Constants
-# Longitude0 and Center meridian of KKJ bands
-KKJ_ZONE_INFO = { 0: (18.0,  500000.0), \
-                  1: (21.0, 1500000.0), \
-                  2: (24.0, 2500000.0), \
-                  3: (27.0, 3500000.0), \
-                  4: (30.0, 4500000.0), \
-                  5: (33.0, 5500000.0), \
-                }
-
-###########################################################################
-# Function:  KKJ_Zone_I
-###########################################################################
-def KKJ_Zone_I(KKJI):
-    ZoneNumber = math.floor((KKJI/1000000.0))
-    if ZoneNumber < 0 or ZoneNumber > 5:
-        ZoneNumber = -1
-    return ZoneNumber
-
-###########################################################################
-# Function:  KKJ_Zone_Lo
-###########################################################################
-def KKJ_Zone_Lo(KKJlo):
-    # determine the zonenumber from KKJ easting
-    # takes KKJ zone which has center meridian
-    # longitude nearest (in math value) to
-    # the given KKJ longitude
-    ZoneNumber = 5
-    while ZoneNumber >= 0:
-        if math.fabs(KKJlo - KKJ_ZONE_INFO[ZoneNumber][0]) <= 1.5:
-            break
-        ZoneNumber = ZoneNumber - 1
-    return ZoneNumber
-
-###########################################################################
-# Function:  KKJlalo_to_KKJxy
-###########################################################################
-def KKJlalo_to_KKJxy(INP, ZoneNumber):
-    Lo = math.radians(INP['Lo']) - math.radians(KKJ_ZONE_INFO[ZoneNumber][0])
-    a  = 6378388.0            # Hayford ellipsoid
-    f  = 1/297.0
-    b  = (1.0 - f) * a
-    bb = b * b
-    c  = (a / b) * a
-    ee = (a * a - bb) / bb
-    n = (a - b)/(a + b)
-    nn = n * n
-    cosLa = math.cos(math.radians(INP['La']))
-    NN = ee * cosLa * cosLa
-    LaF = math.atan(math.tan(math.radians(INP['La'])) / math.cos(Lo * math.sqrt(1 + NN)))
-    cosLaF = math.cos(LaF)
-    t   = (math.tan(Lo) * cosLaF) / math.sqrt(1 + ee * cosLaF * cosLaF)
-    A   = a / ( 1 + n )
-    A1  = A * (1 + nn / 4 + nn * nn / 64)
-    A2  = A * 1.5 * n * (1 - nn / 8)
-    A3  = A * 0.9375 * nn * (1 - nn / 4)
-    A4  = A * 35/48.0 * nn * n
-    OUT = {}
-    OUT['P'] = A1 * LaF - \
-        A2 * math.sin(2 * LaF) + \
-            A3 * math.sin(4 * LaF) - \
-                A4 * math.sin(6 * LaF)
-    OUT['I'] = c * math.log(t + math.sqrt(1+t*t)) + \
-        500000.0 + ZoneNumber * 1000000.0
-    return OUT
-      
-###########################################################################
-# Function:  KKJxy_to_KKJlalo
-###########################################################################
-def KKJxy_to_KKJlalo(KKJ):
-    # Scan iteratively the target area, until find matching
-    # KKJ coordinate value.  Area is defined with Hayford Ellipsoid.
-
-    LALO = {}
-    ZoneNumber = KKJ_Zone_I(KKJ['I'])
-    MinLa = math.radians(59.0)
-    MaxLa = math.radians(70.5)
-    MinLo = math.radians(18.5)
-    MaxLo = math.radians(32.0)
-    
-    i = 1
-    while (i < 35):
-        DeltaLa = MaxLa - MinLa
-        DeltaLo = MaxLo - MinLo
-        LALO['La'] = math.degrees(MinLa + 0.5 * DeltaLa)
-        LALO['Lo'] = math.degrees(MinLo + 0.5 * DeltaLo)
-        KKJt = KKJlalo_to_KKJxy(LALO, ZoneNumber)
-        if (KKJt['P'] < KKJ['P']):
-            MinLa = MinLa + 0.45 * DeltaLa
-        else:
-            MaxLa = MinLa + 0.55 * DeltaLa
-        if (KKJt['I'] < KKJ['I']):
-            MinLo = MinLo + 0.45 * DeltaLo
-        else:
-            MaxLo = MinLo + 0.55 * DeltaLo
-        i = i + 1
-        
-    return LALO
-
-###########################################################################
-# Function:  KKJlalo_to_WGS84lalo
-###########################################################################
-def KKJlalo_to_WGS84lalo(KKJ):
-    La = KKJ['La']
-    Lo = KKJ['Lo']
-    dLa = math.radians( 0.124867E+01      + \
-                        -0.269982E+00 * La + \
-                        0.191330E+00 * Lo + \
-                        0.356119E-02 * La * La + \
-                        -0.122312E-02 * La * Lo + \
-                        -0.335514E-03 * Lo * Lo ) / 3600.0
-    dLo = math.radians(-0.286111E+02      + \
-                        0.114183E+01 * La + \
-                        -0.581428E+00 * Lo + \
-                        -0.152421E-01 * La * La + \
-                        0.118177E-01 * La * Lo + \
-                        0.826646E-03 * Lo * Lo ) / 3600.0
-    WGS = {}
-    WGS['La'] = math.degrees(math.radians(KKJ['La']) + dLa)
-    WGS['Lo'] = math.degrees(math.radians(KKJ['Lo']) + dLo)
-    return WGS
-
-###########################################################################
-# Function:  WGS84lalo_to_KKJlalo
-###########################################################################
-def WGS84lalo_to_KKJlalo(WGS):
-    La = WGS['La']
-    Lo = WGS['Lo']
-    dLa = math.radians(-0.124766E+01      +           0.269941E+00 * La +                          -0.191342E+00 * Lo +  -0.356086E-02 * La * La +                          0.122353E-02 * La * Lo +                           0.335456E-03 * Lo * Lo ) / 3600.0
-    dLo = math.radians( 0.286008E+02      + \
-                        -0.114139E+01 * La + \
-                        0.581329E+00 * Lo + \
-                        0.152376E-01 * La * La + \
-                        -0.118166E-01 * La * Lo + \
-                        -0.826201E-03 * Lo * Lo ) / 3600.0
-    KKJ = {}
-    KKJ['La'] = math.degrees(math.radians(WGS['La']) + dLa)
-    KKJ['Lo'] = math.degrees(math.radians(WGS['Lo']) + dLo)
-    return KKJ
-      
-###########################################################################
-# Function:  KKJxy_to_WGS84lalo
-###########################################################################
-# Input:     dictionary with ['P'] is KKJ Northing
-#                            ['I'] in KKJ Eeasting
-# Output:    dictionary with ['La'] is latitude in degrees (WGS84)
-#                            ['Lo'] is longitude in degrees (WGS84)
-###########################################################################
-def KKJxy_to_WGS84lalo(KKJin):
-    KKJz = KKJxy_to_KKJlalo(KKJin)
-    WGS = KKJlalo_to_WGS84lalo(KKJz)
-    return WGS
-
-###########################################################################
-# Function:  WGS84lalo_to_KKJxy
-###########################################################################
-# Input:     dictionary with ['La'] is latitude in degrees (WGS84)
-#                            ['Lo'] is longitude in degrees (WGS84)
-# Output:    dictionary with ['P'] is KKJ Northing
-#                            ['I'] in KKJ Eeasting
-###########################################################################
-def WGS84lalo_to_KKJxy(WGSin):
-    KKJlalo = WGS84lalo_to_KKJlalo(WGSin)
-    ZoneNumber = KKJ_Zone_Lo(KKJlalo['Lo'])
-    KKJxy = KKJlalo_to_KKJxy(KKJlalo, ZoneNumber)
-    return KKJxy
-
-###########
-# Test code
-###########
-
-class testCoordinate:
-    def __init__(self, x, y, lon, lat):
-        self.x = x
-        self.y = y
-        self.lon = lon
-        self.lat = lat
-
-testData = []
-# Test data extracted from example on page
-# http://developer.reittiopas.fi/pages/fi/http-get-interface.php
-testData.append(testCoordinate(2556686, 6682815, 25.02051, 60.2528))
-testData.append(testCoordinate(2546340, 6675352, 24.832, 60.18713))
-testData.append(testCoordinate(2557985, 6685213, 25.04465, 60.27414))
-testData.append(testCoordinate(2556532, 6682578, 25.01767, 60.2507))
-testData.append(testCoordinate(2524959, 6686629, 24.44804, 60.2902))
-testData.append(testCoordinate(2559094, 6693721, 25.06718, 60.35033))
-testData.append(testCoordinate(2556861, 6683030, 25.02373, 60.25471))
-testData.append(testCoordinate(2556888, 6682971, 25.0242, 60.25417))
-testData.append(testCoordinate(2560257, 6698983, 25.08981, 60.39737))
-testData.append(testCoordinate(2562518, 6686969, 25.12709, 60.28923))
-testData.append(testCoordinate(2536615, 6673635, 24.65643, 60.1727))
-testData.append(testCoordinate(2559118, 6693833, 25.06764, 60.35133))
-testData.append(testCoordinate(2559182, 6693629, 25.06874, 60.34949))
-testData.append(testCoordinate(2556947, 6682640, 25.02518, 60.25119))
-testData.append(testCoordinate(2556822, 6682723, 25.02294, 60.25196))
-testData.append(testCoordinate(2559089, 6693605, 25.06705, 60.34929))
-testData.append(testCoordinate(2546445, 6675512, 24.83393, 60.18855))
-testData.append(testCoordinate(2556964, 6682609, 25.02547, 60.25091))
-testData.append(testCoordinate(2556740, 6682861, 25.0215, 60.25321))
-testData.append(testCoordinate(2559002, 6694007, 25.06559, 60.35291))
-
-
-def testKKJxytoWGS84lalo(x, y):
-    test = { 'P': y, 'I': x }
-    result = KKJxy_to_WGS84lalo(test)
-    return [result['Lo'], result['La']]
-
-testsPass = True
-
-# Test transforming from KKJxy to WGS84latlon
-for t in testData:
-    [lon, lat] = testKKJxytoWGS84lalo(t.x, t.y)
-    if math.fabs(t.lon - lon) < 0.001 and math.fabs(t.lat - lat) < 0.001:
-        pass
-    else:
-        print "Got: (",lon,lat,"), expected: (",t.lon,t.lat,")"
-        testsPass = False
-
-if testsPass:
-    print "All tests in testKKJxytoWGS84lalo passed"
-
-
-def testWGS84lalotoKKJxy(lon, lat):
-    test = { 'La': lat, 'Lo': lon }
-    result = WGS84lalo_to_KKJxy(test)
-    return [result['I'], result['P']]
-
-testsPass = True
-
-# Test transforming from WGS84latlon to KKJxy
-for t in testData:
-    [x, y] = testWGS84lalotoKKJxy(t.lon, t.lat)
-    if abs(t.x - x) < 2 and abs(t.y - y) < 2:
-        pass
-    else:
-        print "Got: (",x,y,"), expected: (",t.x,t.y,")"
-        testsPass = False
-
-if testsPass:
-    print "All tests in testWGS84lalotoKKJxy passed"
diff --git a/tests/gmock.pri b/tests/gmock.pri
deleted file mode 100644 (file)
index 9596887..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-GMOCKBUILDDIR = ../gmock/build
-QMAKE_CXXFLAGS += $$system($$GMOCKBUILDDIR/scripts/gmock-config --cppflags --cxxflags)
-QMAKE_LIBS += ../$$GMOCKBUILDDIR/lib/.libs/libgmock.a ../$$GMOCKBUILDDIR/gtest/lib/.libs/libgtest.a
diff --git a/tests/testSummary b/tests/testSummary
new file mode 100755 (executable)
index 0000000..3766d93
--- /dev/null
@@ -0,0 +1,310 @@
+#! /usr/bin/perl
+require 5.008_004; # we need at least Perl version v5.8.4
+$ENV{MALLOC_CHECK_} = 2;
+
+use Term::ANSIColor;
+
+my $startTime = time();
+
+my %opts = (
+    "a" => 0, # all directories, irrespective of if they're in tests.pro
+    "r" => 0, # don't reverse sort
+    "s" => "D", # by default, sort by directory name
+    "j" => 1, # one make job at a time by default
+);
+
+for ( my $argNo=0; $argNo<@ARGV; $argNo++ ) {
+    my $arg = $ARGV[ $argNo ];
+    if ( $arg eq "-h" ) {
+        print "usage: $0 [-a] [-s letter] [-r] [-j number] [-h]\n";
+        print "       -a            include all ut_*/ directories - default is just the ones in tests.pro\n";
+        print "       -s [DTPFS]    sort by column (Dirs, Tests, P(ass), F(ail), S(kipped)\n";
+        print "       -r            reverse sort\n";
+        print "       -j <number>   use <number> make jobs. Default is 1\n";
+        print "       -h            this help\n";
+        exit;
+    } elsif ( $arg eq "-r" ) {
+        $opts{ "r" } = 1;
+    } elsif ( $arg eq "-a" ) {
+        $opts{ "a" } = 1;
+    } elsif ( $arg eq "-s" ) {
+        $opts{ "s" } = $ARGV[ ++$argNo ];
+        if ( $opts{ "s" } !~ /[DTPFS]/ ) {
+            print "Unrecognised column identifier\n";
+            print "Must be one of [DTPFS] :\n";
+            print "  D = Dirs\n";
+            print "  T = Tests\n";
+            print "  P = Pass\n";
+            print "  F = Fail\n";
+            print "  S = Skipped\n";
+            exit(-1);
+        }
+    } elsif ( $arg eq "-j" ) {
+        my $jobs = $ARGV[ ++$argNo ];
+        # Test that the argument is a positive integer number
+        if ( $jobs * 1 eq $jobs && $jobs > 0 ) {
+            $opts{ "j" } = $jobs;
+        }
+    }
+}
+
+# some globals to help sort be faster
+$sortCol = $opts{ "s" };
+$sortIsNumeric = ( $sortCol =~ /[PFS]/ );
+$reverseSort = $opts{ "r" };
+# helper variable for the number of jobs
+$numJobs = $opts{ "j" };
+
+%maxLen = ();
+%segFault = ();
+
+my @rowHeaders = (
+    "D", # Dirs
+    "T", # Tests
+);
+my @rowData = (
+    "P", # Passed
+    "F", # Failed
+    "S", # Skipped
+);
+
+my @keys = ( @rowHeaders, @rowData );
+
+my %title = (
+    "D"=>"Dirs",
+    "T"=>"Tests",
+    "P"=>"P",
+    "F"=>"F",
+    "S"=>"S",
+);
+
+my $headerLabelFormat = "%-*s";
+my $headerDataFormat = "%*s";
+
+my $labelFormat = "%s%-*s%s%*s";
+my $dataFormat   = "%*s%s%*s%s";
+
+my %format = (
+  "D" => $labelFormat,
+  "T" => $labelFormat,
+  "P" => $dataFormat,
+  "F" => $dataFormat,
+  "S" => $dataFormat,
+);
+
+my %separator = (
+  "D" => " ",
+  "T" => " : ",
+  "P" => " ",
+  "F" => " ",
+  "S" => " ",
+);
+
+my %data = (
+);
+
+foreach $key ( @keys ) {
+    $maxLen{ $key } = length( $title{ key } );
+}
+
+# set the maximum length of the directories
+if ( $opts{ "a" } ) {
+    push @allDirs, <ut_*>;
+    push @allDirs, <ft_*>;
+    foreach ( @allDirs ) {
+        setMaxLen( "D", length( $_ ) );
+        $tested{ $_ } = 0;
+    }
+}
+
+# Compile first with possibly multiple jobs
+print "Compiling...";
+`make -j$numJobs -k > /dev/null 2>&1`;
+print "done.\nNow checking...\n";
+
+# then check with only one job so that the parsing succeeds
+open( MAKE, "make -k check 2>&1|" ) || die( "Could not run make:$!" );
+
+#$|=1;
+
+my $thisDir = "";
+while (<MAKE>) {
+    chomp;
+
+    if ( /Entering directory \`.*tests\/(\w+)\'/ ) {
+        $thisDir = $1;
+        print STDERR "Tests: $thisDir", ' 'x( $maxLen{ "D" }-length( $thisDir )+length("Tests: ") ), "\r";
+        $tested{ $thisDir } = 1;
+        push @allDirs, $thisDir if ( !grep( /^$thisDir$/, @allDirs ) );
+        setMaxLen( "D", length( $thisDir ) );
+    } elsif ( /Segmentation fault/ ) {
+        $segFault{ $thisDir } = $_;
+    } elsif ( /Start testing of (\w+)/ ) {
+        $thisTest = $1;
+        $data{ "T" }{ $thisDir } = $thisTest;
+        setMaxLen( "T", length( $data{ "T" }{ $thisDir } ) );
+    } elsif ( /^Totals: (\d+) passed, (\d+) failed, (\d+) skipped/ ) {
+        $data{ "P" }{ $thisDir } = "$1";
+        $data{ "F" }{ $thisDir } = "$2";
+        $data{ "S" }{ $thisDir } = "$3";
+        setMaxLen( "P", length( $data{ "P" }{ $thisDir } ) );
+        setMaxLen( "F", length( $data{ "F" }{ $thisDir } ) );
+        setMaxLen( "S", length( $data{ "S" }{ $thisDir } ) );
+    }
+}
+
+close( MAKE );
+
+print STDERR ' 'x( $maxLen{ "D" } + length( "Tests: " ) ), "\r";
+
+foreach $thisDir ( @allDirs ) {
+    if ( !defined( $data{ "P" }{ $thisDir } ) || $data{ "P" }{ $thisDir } eq "" ) {
+        $data{ "P" }{ $thisDir } = "0";
+        setMaxLen( "P", length( $data{ "P" }{ $thisDir } ) );
+    }
+    if ( !defined( $data{ "F" }{ $thisDir } ) ) {
+        $data{ "F" }{ $thisDir } = "0";
+        setMaxLen( "F", length( $data{ "F" }{ $thisDir } ) );
+    }
+    if ( !defined( $data{ "S" }{ $thisDir } ) ) {
+        $data{ "S" }{ $thisDir } = "0";
+        setMaxLen( "S", length( $data{ "S" }{ $thisDir } ) );
+    }
+
+    $data{ "D" }{ $thisDir } = $thisDir;
+}
+
+my ( $testsPassed, $testsNeedWork ) = ( 0, 0 );
+my $noTests = scalar( @allDirs );
+my $noDigits = ($noTests>0)?int( log( $noTests )/log( 10 ) )+1:1;
+
+my $header = sprintf( "%*s ", $noDigits, "" );
+
+foreach ( @rowHeaders ) {
+    $header .= sprintf( $headerLabelFormat.$separator{ $_ }, $maxLen{ $_ }, $title{ $_ } );
+}
+
+foreach ( @rowData ) {
+    $header .= sprintf( $headerDataFormat.$separator{ $_ }, $maxLen{ $_ }, $title{ $_ } );
+}
+
+my $headerLen = length( $header );
+
+my $headerColor = color( 'reset' );
+
+print "P = Pass, F = Fail, S = Skip\n";
+print $headerColor, "$header\n";
+print '-'x$headerLen, "\n";
+
+my $testNo = 1;
+
+foreach $thisDir ( sort byCol @allDirs ) {
+    my %colors = ();
+
+    foreach $key ( @keys ) {
+        $colors{ $key } = color( 'reset' );
+    }
+
+    if (
+        ( defined( $data{ "P" }{ $thisDir } ) && $data{ "P" }{ $thisDir } ne "0" ) &&
+        ( defined( $data{ "F" }{ $thisDir } ) && $data{ "F" }{ $thisDir } eq "0" ) &&
+        ( defined( $data{ "S" }{ $thisDir } ) && $data{ "S" }{ $thisDir } eq "0" ) &&
+        ( defined( $data{ "T" }{ $thisDir } ) && $data{ "T" }{ $thisDir } ne "" )
+    ) {
+        $testsPassed++;
+    } else {
+        $testsNeedWork++;
+    }
+
+    if ( defined( $data{ "P" }{ $thisDir } ) && $data{ "P" }{ $thisDir } eq "0" ) {
+        $colors{ "D" } .= color( 'reverse green' );
+        $colors{ "T" } .= color( 'reverse green' );
+        $colors{ "P" } .= color( 'reverse green' );
+    } else {
+        $colors{ "D" } .= color( 'green' );
+        $colors{ "T" } .= color( 'green' );
+        $colors{ "P" } .= color( 'green' );
+    }
+
+    if ( defined( $data{ "F" }{ $thisDir} ) && $data{ "F" }{ $thisDir } eq "0" ) {
+        $colors{ "F" } .= color( 'red' );
+    } else {
+        $colors{ "F" } .= color( 'reverse red' );
+    }
+
+    if ( defined( $data{ "S" }{ $thisDir } ) && $data{ "S" }{ $thisDir } eq "0" ) {
+        $colors{ "S" } .= color( 'blue' );
+    } else {
+        $colors{ "S" } .= color( 'reverse blue' );
+    }
+
+    if ( !defined( $data{ "T" }{ $thisDir } ) || $data{ "T" }{ $thisDir } eq "" || $segFault{ $thisDir } ) {
+        $colors{ "T" } .= color( 'reverse red' );
+    }
+
+    printf( "%*s ", $noDigits, $testNo );
+
+    foreach ( @rowHeaders ) {
+        my $thisData = $data{ $_ }{ $thisDir };
+        my $dataLength = length( $thisData );
+        my $spaceLength = $maxLen{ $_ }-$dataLength;
+
+        printf(
+            $format{ $_ }.$separator{ $_ },
+            $colors{ $_ }, $dataLength, $thisData,
+            color( 'reset' ), $spaceLength, "" );
+    }
+
+    foreach ( @rowData ) {
+        my $thisData = $data{ $_ }{ $thisDir };
+        my $dataLength = length( $thisData );
+        my $spaceLength = $maxLen{ $_ }-$dataLength;
+
+        printf(
+            $format{ $_ }.$separator{ $_ },
+            $spaceLength, "",
+            $colors{ $_ }, $dataLength, $thisData,
+            color( 'reset' ) );
+    }
+
+    printf( $headerColor."\n" );
+
+    $testNo++;
+}
+
+print '-'x$headerLen, "\n";
+print( "Tests with zero fails/skips : $testsPassed\n" );
+print( "Tests needing further work  : $testsNeedWork\n" );
+
+printf( "Elapsed time : %d seconds\n", time() - $startTime );
+
+sub setMaxLen
+{
+    my ( $test, $length ) = @_;
+
+    $maxLen{ $test } = $length if ( defined( $maxLen{ $test} ) && $length > $maxLen{ $test } );
+}
+
+sub byCol
+{
+    my $retVal = 0;
+
+    my $localA = $a;
+    my $localB = $b;
+
+    if ( $reverseSort ) {
+        my $tmp = $localA;
+        $localA = $localB;
+        $localB = $tmp;
+    }
+
+    if ( $sortIsNumeric ) {
+        # numeric comparison
+        $retVal = $data{ $sortCol }{ $localA } <=> $data{ $sortCol }{ $localB };
+    } else {
+        # string comparison
+        $retVal = $data{ $sortCol }{ $localA } cmp $data{ $sortCol }{ $localB };
+    }
+
+    return $retVal;
+}
diff --git a/tests/tests.pri b/tests/tests.pri
new file mode 100644 (file)
index 0000000..c8e85f1
--- /dev/null
@@ -0,0 +1,2 @@
+ZOUBASRC = ../../src
+
index dec74ce..c81345e 100644 (file)
@@ -1,7 +1,8 @@
-TEMPLATE = subdirs
+TEMPLATE=subdirs
 SUBDIRS = \
-    ut_coordinatesystemtransformer \
-    ut_kkjgridcoordinate
+       ut_location/ \
+       ut_route/ \
+       ut_gpscontroller/ \
 
 check.target = check
 check.CONFIG = recursive
diff --git a/tests/ut_common.pri b/tests/ut_common.pri
deleted file mode 100644 (file)
index 0653b21..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-QT -= gui
-CONFIG += console
-CONFIG -= app_bundle
-TEMPLATE = app
-OBJECTS_DIR = .obj
-MOC_DIR = .moc
-SRCDIR = ../../src
-MOCKSDIR = ../mocks
-INCLUDEPATH += ../util \
-    $$SRCDIR \
-    $$MOCKSDIR
diff --git a/tests/ut_coord_trans/.gitignore b/tests/ut_coord_trans/.gitignore
deleted file mode 100644 (file)
index 4ec7554..0000000
+++ /dev/null
@@ -1 +0,0 @@
-ut_coord_trans
diff --git a/tests/ut_coord_trans/Makefile b/tests/ut_coord_trans/Makefile
deleted file mode 100644 (file)
index 31ddbc4..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-CC=gcc
-RM=rm -f
-INCDIR=../../getmehome/
-CFLAGS=-I$(INCDIR)
-LDFLAGS=-lm
-DEPS=$(INCDIR)coordinate-system.h
-
-UNIT_TEST_SOURCES=ut_coord_trans.c
-SOURCES=$(UNIT_TEST_SOURCES) \
-  $(INCDIR)coordinate-system.c
-TARGET=ut_coord_trans
-
-OBJS=$(SOURCES:%.c=%.o)
-
-all: $(TARGET)
-
-%.o: %.c $(DEPS)
-       $(CC) -c -o $@ $(CFLAGS) $<
-
-$(TARGET): $(OBJS)
-       $(CC) -o $(TARGET) $(LDFLAGS) $(OBJS)
-
-.PHONY: clean
-
-clean:
-       $(RM) *.o *~ core $(TARGET) 
-
-check: $(TARGET)
-       @./$(TARGET)
diff --git a/tests/ut_coord_trans/ut_coord_trans.c b/tests/ut_coord_trans/ut_coord_trans.c
deleted file mode 100644 (file)
index 425d629..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-#include "coordinate-system.h"
-
-#include <math.h>
-#include <stdio.h>
-
-struct TestCoordinate {
-    KKJ x, y;
-    double lon, lat;
-};
-
-// Test data extracted from example on page
-// http://developer.reittiopas.fi/pages/fi/http-get-interface.php
-struct TestCoordinate testData[] = {
-    { 2556686, 6682815, 25.02051, 60.2528 },
-    { 2546340, 6675352, 24.832, 60.18713 },
-    { 2557985, 6685213, 25.04465, 60.27414 },
-    { 2556532, 6682578, 25.01767, 60.2507 },
-    { 2524959, 6686629, 24.44804, 60.2902 },
-    { 2559094, 6693721, 25.06718, 60.35033 },
-    { 2556861, 6683030, 25.02373, 60.25471 },
-    { 2556888, 6682971, 25.0242, 60.25417 },
-    { 2560257, 6698983, 25.08981, 60.39737 },
-    { 2562518, 6686969, 25.12709, 60.28923 },
-    { 2536615, 6673635, 24.65643, 60.1727 },
-    { 2559118, 6693833, 25.06764, 60.35133 },
-    { 2559182, 6693629, 25.06874, 60.34949 },
-    { 2556947, 6682640, 25.02518, 60.25119 },
-    { 2556822, 6682723, 25.02294, 60.25196 },
-    { 2559089, 6693605, 25.06705, 60.34929 },
-    { 2546445, 6675512, 24.83393, 60.18855 },
-    { 2556964, 6682609, 25.02547, 60.25091 },
-    { 2556740, 6682861, 25.0215, 60.25321 },
-    { 2559002, 6694007, 25.06559, 60.35291 }};
-
-
-int testKKJxytoWGS84lola() {
-    double lon, lat;
-    int result = 0;
-    int i;
-
-    for (i = 0; i < sizeof(testData) / sizeof(struct TestCoordinate); ++i) {
-        KKJxy_to_WGS84lola(testData[i].x, testData[i].y, &lon, &lat);
-
-        if (fabs(testData[i].lon - lon) < 0.001 && fabs(testData[i].lat - lat) < 0.001) {
-            ;
-        } else {
-            printf("Got: (%f, %f), expected: (%f, %f)\n", lon, lat, testData[i].lon, testData[i].lat);
-            result = -1;
-        }
-    }
-
-    return result;
-}
-
-
-int testWGS84lolatoKKJxy() {
-    KKJ x, y;
-    int result = 0;
-    int i;
-
-    for (i = 0; i < sizeof(testData) / sizeof(struct TestCoordinate); ++i) {
-        WGS84lola_to_KKJxy(testData[i].lon, testData[i].lat, &x, &y);
-
-        if (abs(testData[i].x - x) < 2 && abs(testData[i].y - y) < 2) {
-            ;
-        } else {
-            printf("Got: (%u, %u), expected: (%u, %u)\n", x, y, testData[i].x, testData[i].y);
-            result = -1;
-        }
-    }
-
-    return result;
-}
-
-
-
-int main(int argc, char* argv[]) {
-    int testResult = 0;
-
-    // Test transforming from KKJxy to WGS84lonlat
-    testResult = testKKJxytoWGS84lola();
-
-    if (testResult == 0) {
-        printf("All tests in testKKJxytoWGS84lola passed\n");
-    }
-
-    // Test transforming from WGS84lonlat to KKJxy
-    testResult = testWGS84lolatoKKJxy();
-
-    if (testResult == 0) {
-        printf("All tests in testWGS84lolatoKKJxy passed\n");
-    }
-
-
-    return 0;
-}
diff --git a/tests/ut_coordinatesystemtransformer/.gitignore b/tests/ut_coordinatesystemtransformer/.gitignore
deleted file mode 100644 (file)
index dd22e19..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-Makefile
-ut_coordinatesystemtransformer
diff --git a/tests/ut_coordinatesystemtransformer/ut_coordinatesystemtransformer.cpp b/tests/ut_coordinatesystemtransformer/ut_coordinatesystemtransformer.cpp
deleted file mode 100644 (file)
index 691bfa3..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-#include "coordinatesystemtransformer.h"
-
-#include <gmock/gmock.h>
-#include <gtest/gtest.h>
-
-#include "stlhelpers.h"
-
-#include <QPair>
-
-class CoordinateSystemTransformerTest : public ::testing::Test
-{
-public:
-    QList<QPair<QTM_NAMESPACE::QGeoCoordinate, KKJGridCoordinate> > testData;
-
-    CoordinateSystemTransformerTest() {
-        testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.2528, 25.02051), KKJGridCoordinate(6682815, 2556686));
-        testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.18713, 24.832), KKJGridCoordinate(6675352, 2546340));
-        testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.27414, 25.04465), KKJGridCoordinate(6685213, 2557985));
-        testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.2507, 25.01767), KKJGridCoordinate(6682578, 2556532));
-        testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.2902, 24.44804), KKJGridCoordinate(6686629, 2524959));
-        testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.35033, 25.06718), KKJGridCoordinate(6693721, 2559094));
-        testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.25471, 25.02373), KKJGridCoordinate(6683030, 2556861));
-        testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.25417, 25.0242), KKJGridCoordinate(6682971, 2556888));
-        testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.39737, 25.08981), KKJGridCoordinate(6698983, 2560257));
-        testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.28923, 25.12709), KKJGridCoordinate(6686969, 2562518));
-        testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.1727, 24.65643), KKJGridCoordinate(6673635, 2536615));
-        testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.35133, 25.06764), KKJGridCoordinate(6693833, 2559118));
-        testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.34949, 25.06874), KKJGridCoordinate(6693629, 2559182));
-        testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.25119, 25.02518), KKJGridCoordinate(6682640, 2556947));
-        testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.25196, 25.02294), KKJGridCoordinate(6682723, 2556822));
-        testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.34929, 25.06705), KKJGridCoordinate(6693605, 2559089));
-        testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.18855, 24.83393), KKJGridCoordinate(6675512, 2546445));
-        testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.25091, 25.02547), KKJGridCoordinate(6682609, 2556964));
-        testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.25321, 25.0215), KKJGridCoordinate(6682861, 2556740));
-        testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.35291, 25.06559), KKJGridCoordinate(6694007, 2559002));
-    }
-};
-
-TEST_F(CoordinateSystemTransformerTest, WGS84CoordinatesToKKJCoordinates)
-{
-    QListIterator<QPair<QTM_NAMESPACE::QGeoCoordinate, KKJGridCoordinate> > it(testData);
-    while (it.hasNext()) {
-        const QPair<QTM_NAMESPACE::QGeoCoordinate, KKJGridCoordinate> &datum = it.next();
-        KKJGridCoordinate result = CoordinateSystemTransformer::transformToKKJ(datum.first);
-        KKJGridCoordinate expected = datum.second;
-        // Allow one unit difference from the expected
-        int northDiff = abs((long)expected.northing() - (long)result.northing());
-        int eastDiff = abs((long)expected.easting() - (long)result.easting());
-        EXPECT_LE(northDiff, 1);
-        EXPECT_LE(eastDiff, 1);
-    }
-}
-
-TEST_F(CoordinateSystemTransformerTest, KKJCoordinatesToWGS84Coordinates)
-{
-    QListIterator<QPair<QTM_NAMESPACE::QGeoCoordinate, KKJGridCoordinate> > it(testData);
-    while (it.hasNext()) {
-        const QPair<QTM_NAMESPACE::QGeoCoordinate, KKJGridCoordinate> &datum = it.next();
-        QTM_NAMESPACE::QGeoCoordinate result = CoordinateSystemTransformer::transformToWGS84(datum.second);
-        QTM_NAMESPACE::QGeoCoordinate expected = datum.first;
-        // Allow small difference from the expected
-        double latitudeDiff = fabs(expected.latitude() - result.latitude());
-        double longitudeDiff = fabs(expected.longitude() - result.longitude());
-        EXPECT_LE(latitudeDiff, 0.00001);
-        EXPECT_LE(longitudeDiff, 0.00001);
-    }
-}
-
-int main(int argc, char *argv[])
-{
-    ::testing::InitGoogleMock(&argc, argv);
-    return RUN_ALL_TESTS();
-}
diff --git a/tests/ut_coordinatesystemtransformer/ut_coordinatesystemtransformer.pro b/tests/ut_coordinatesystemtransformer/ut_coordinatesystemtransformer.pro
deleted file mode 100644 (file)
index 0926e82..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-include(../ut_common.pri)
-
-TARGET = ut_coordinatesystemtransformer
-CONFIG += \
-    mobility
-MOBILITY = location
-SOURCES += \
-    ut_coordinatesystemtransformer.cpp \
-    $$SRCDIR/coordinatesystemtransformer.cpp \
-    $$SRCDIR/kkjgridcoordinate.cpp
-HEADERS += \
-    $$SRCDIR/coordinatesystemtransformer.h \
-    $$SRCDIR/kkjgridcoordinate.h
-
-include(../gmock.pri)
-include(../check.pri)
diff --git a/tests/ut_gmocktemplate/.gitignore b/tests/ut_gmocktemplate/.gitignore
deleted file mode 100644 (file)
index 61efd94..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-Makefile
-ut_gmocktemplate
diff --git a/tests/ut_gmocktemplate/ut_gmocktemplate.cpp b/tests/ut_gmocktemplate/ut_gmocktemplate.cpp
deleted file mode 100644 (file)
index c4f58f9..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#include <gmock/gmock.h>
-#include <gtest/gtest.h>
-
-TEST(TestSuiteName, TestMethodName)
-{
-}
-
-int main(int argc, char *argv[])
-{
-    ::testing::InitGoogleMock(&argc, argv);
-    return RUN_ALL_TESTS();
-}
diff --git a/tests/ut_gmocktemplate/ut_gmocktemplate.pro b/tests/ut_gmocktemplate/ut_gmocktemplate.pro
deleted file mode 100644 (file)
index a4beb4f..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-include(../ut_common.pri)
-
-TARGET = ut_gmocktemplate
-SOURCES += ut_gmocktemplate.cpp \
-    $$SRCDIR/gmocktemplate.cpp
-HEADERS += \
-    $$SRCDIR/gmocktemplate.h
-
-include(../gmock.pri)
-include(../check.pri)
diff --git a/tests/ut_gmocktest/.gitignore b/tests/ut_gmocktest/.gitignore
deleted file mode 100644 (file)
index b74f358..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-Makefile
-ut_gmocktest
diff --git a/tests/ut_gmocktest/mock_turtle.h b/tests/ut_gmocktest/mock_turtle.h
deleted file mode 100644 (file)
index aea8904..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifndef MOCK_TURTLE_H
-#define MOCK_TURTLE_H
-
-#include "turtle.h"
-#include <gmock/gmock.h>
-
-class MockTurtle : public Turtle {
-public:
-    MOCK_METHOD0(PenUp, void());
-    MOCK_METHOD0(PenDown, void());
-    MOCK_METHOD1(Forward, void(int distance));
-    MOCK_METHOD1(Turn, void(int degrees));
-    MOCK_METHOD2(GoTo, void(int x, int y));
-    MOCK_CONST_METHOD0(GetX, int());
-    MOCK_CONST_METHOD0(GetY, int());
-};
-
-#endif // MOCK_TURTLE_H
diff --git a/tests/ut_gmocktest/painter.cpp b/tests/ut_gmocktest/painter.cpp
deleted file mode 100644 (file)
index 66c456b..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-#include "painter.h"
-#include "turtle.h"
-
-Painter::Painter(Turtle *turtle) :
-        turtle(turtle)
-{
-}
-
-Painter::~Painter() {
-}
-
-bool Painter::DrawCircle(int x, int y, int radius) {
-    turtle->PenDown();
-    emit DrawCircleCalled(x, y, radius);
-    return true;
-}
diff --git a/tests/ut_gmocktest/painter.h b/tests/ut_gmocktest/painter.h
deleted file mode 100644 (file)
index 9e76bdc..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef PAINTER_H
-#define PAINTER_H
-
-#include <QObject>
-
-class Turtle;
-
-class Painter : public QObject
-{
-    Q_OBJECT
-
-    Turtle *turtle;
-
-public:
-    Painter(Turtle *turtle);
-    virtual ~Painter();
-
-    bool DrawCircle(int x, int y, int radius);
-
-signals:
-    void DrawCircleCalled(int x, int y, int radius);
-};
-
-#endif // PAINTER_H
diff --git a/tests/ut_gmocktest/turtle.h b/tests/ut_gmocktest/turtle.h
deleted file mode 100644 (file)
index 416b7cd..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-#ifndef TURTLE_H
-#define TURTLE_H
-
-class Turtle {
-public:
-    virtual ~Turtle() {}
-    virtual void PenUp() = 0;
-    virtual void PenDown() = 0;
-    virtual void Forward(int distance) = 0;
-    virtual void Turn(int degrees) = 0;
-    virtual void GoTo(int x, int y) = 0;
-    virtual int GetX() const = 0;
-    virtual int GetY() const = 0;
-};
-
-#endif // TURTLE_H
diff --git a/tests/ut_gmocktest/ut_gmocktest.cpp b/tests/ut_gmocktest/ut_gmocktest.cpp
deleted file mode 100644 (file)
index e756c8c..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-#include "mock_turtle.h"
-#include "painter.h"
-
-#include <gmock/gmock.h>
-#include <gtest/gtest.h>
-
-#include <QSignalSpy>
-#include "stlhelpers4qt.h"
-
-using ::testing::AtLeast;
-
-TEST(PainterTest, TestTurtlePenDownCalledAtLeastOnceWhenDrawCircleCalled)
-{
-    MockTurtle turtle;
-    EXPECT_CALL(turtle, PenDown()).Times(AtLeast(1));
-
-    Painter painter(&turtle);
-
-    EXPECT_TRUE(painter.DrawCircle(0, 0, 10));
-}
-
-TEST(PainterTest, TestSignalEmittedWhenDrawCircleCalled)
-{
-    MockTurtle turtle;
-
-    Painter painter(&turtle);
-
-    QSignalSpy spy(&painter, SIGNAL(DrawCircleCalled(int,int,int)));
-
-    painter.DrawCircle(0, 0, 10);
-    ASSERT_EQ(1, spy.count());
-    QList<QVariant> expected = QList<QVariant>() << 0 << 0 << 10;
-    ASSERT_EQ(expected, spy.at(0));
-}
-
-int main(int argc, char *argv[])
-{
-    ::testing::InitGoogleMock(&argc, argv);
-    return RUN_ALL_TESTS();
-}
diff --git a/tests/ut_gmocktest/ut_gmocktest.pro b/tests/ut_gmocktest/ut_gmocktest.pro
deleted file mode 100644 (file)
index 77fcf85..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-include(../ut_common.pri)
-
-TARGET = ut_gmocktest
-QT += testlib
-QT -= gui
-CONFIG += console
-CONFIG -= app_bundle
-TEMPLATE = app
-OBJECTS_DIR = .obj
-MOC_DIR = .moc
-SOURCES += ut_gmocktest.cpp \
-    painter.cpp
-HEADERS += \
-    turtle.h \
-    mock_turtle.h \
-    painter.h
-
-include(../gmock.pri)
-include(../check.pri)
diff --git a/tests/ut_gpscontroller/ut_gpscontroller.cpp b/tests/ut_gpscontroller/ut_gpscontroller.cpp
new file mode 100644 (file)
index 0000000..e391645
--- /dev/null
@@ -0,0 +1,222 @@
+#include <QObject>
+#include <QtDebug>
+#include "ut_gpscontroller.h"
+
+#include "gpscontroller.h"
+#include "gpscontroller_p.h"
+
+class MyGpsControllerPrivate: public GpsControllerPrivate
+{
+public:
+  MyGpsControllerPrivate();
+  ~MyGpsControllerPrivate();
+
+  void init();
+  void startGps();
+  void stopGps();
+
+  void setGps( QGeoPositionInfoSource *gps );
+  void setFakeLocationLabel( const QString &label );
+  void setUseFakeLocation( bool useFake );
+  void updateLocation();
+
+  QGeoPositionInfoSource *gps();
+  Location               *liveLocation();
+  Location               *fakeLocation();
+  bool                    useFakeLocation();
+
+  bool                    m_gpsOn;
+  Location               *m_liveLocation;
+  Location               *m_fakeLocation;
+  QString                 m_fakeLocationLabel;
+  bool                    m_useFakeLocation;
+};
+
+MyGpsControllerPrivate::MyGpsControllerPrivate() :
+  m_gpsOn(false),
+  m_liveLocation( new Location( "livegps" ) ),
+  m_fakeLocation( new Location( "fakegps" ) ),
+  m_fakeLocationLabel(),
+  m_useFakeLocation(false)
+{
+}
+
+MyGpsControllerPrivate::~MyGpsControllerPrivate()
+{
+  delete m_liveLocation;
+  m_liveLocation = 0;
+  delete m_fakeLocation;
+  m_fakeLocation = 0;
+}
+
+void MyGpsControllerPrivate::init()
+{
+}
+
+void MyGpsControllerPrivate::startGps()
+{
+  m_gpsOn=true;
+}
+
+void MyGpsControllerPrivate::stopGps()
+{
+  m_gpsOn=false;
+}
+
+QGeoPositionInfoSource *MyGpsControllerPrivate::gps()
+{
+  return 0;
+}
+
+void MyGpsControllerPrivate::setGps( QGeoPositionInfoSource *gps )
+{
+  Q_UNUSED( gps );
+}
+
+Location *MyGpsControllerPrivate::liveLocation()
+{
+  return m_liveLocation;
+}
+
+Location *MyGpsControllerPrivate::fakeLocation()
+{
+  return m_fakeLocation;
+}
+
+void MyGpsControllerPrivate::setFakeLocationLabel( const QString &label )
+{
+  m_fakeLocationLabel = label;
+  m_fakeLocation->setLabel( label );
+}
+
+bool MyGpsControllerPrivate::useFakeLocation()
+{
+  return m_useFakeLocation;
+}
+
+void MyGpsControllerPrivate::setUseFakeLocation( bool useFake )
+{
+  m_useFakeLocation = useFake;
+}
+
+void MyGpsControllerPrivate::updateLocation()
+{
+}
+
+void Ut_GpsController::init()
+{
+  qRegisterMetaType<Location *>( "Location*" );
+
+  m_subject_p = new MyGpsControllerPrivate();
+  m_subject = new GpsController( m_subject_p ); // private ownership transferred
+}
+
+void Ut_GpsController::cleanup()
+{
+    delete m_subject;
+    m_subject = 0;
+}
+
+void Ut_GpsController::initTestCase()
+{
+}
+
+void Ut_GpsController::cleanupTestCase()
+{
+}
+
+void Ut_GpsController::testGetGpsWithNoGpsUpdates()
+{
+  QSignalSpy spy(m_subject, SIGNAL(locationChanged(Location*)));
+
+  // this should start the gps,
+  // one signal to invalidate the previous display
+  // (which could be showing fake results, for example
+  m_subject->getGps();
+
+  QCOMPARE(m_subject_p->m_gpsOn, true);
+  QCOMPARE(spy.count(), 1);
+}
+
+void Ut_GpsController::testGetGpsWithGpsUpdates()
+{
+  QSignalSpy spy(m_subject, SIGNAL(locationChanged(Location*)));
+
+  // make test call
+  m_subject->getGps();
+
+  // check effect
+  QCOMPARE(m_subject_p->m_gpsOn, true);
+  QCOMPARE(spy.count(), 1);
+  QList<QVariant> arguments = spy.takeFirst();
+  QCOMPARE(arguments.at(0).value<Location*>(), m_subject_p->m_liveLocation);
+}
+
+void Ut_GpsController::testFakeGps()
+{
+  QSignalSpy spy(m_subject, SIGNAL(locationChanged(Location*)));
+
+  Location *gpsLocation = m_subject_p->m_liveLocation; // position from GPS
+
+  // make test call
+  m_subject->useFakeGps( "fakegps" );
+  m_subject->getGps();
+
+  // check effect
+  QList<QVariant> arguments;
+
+  // gps should be off
+  QCOMPARE(m_subject_p->m_gpsOn, false);
+
+  // should get two signals, one from useFakeGps() and one from getGps()
+  QVERIFY2(spy.count()==2, "Should receive two signals" );
+
+  // both args should be the fake gps position supplied to useFakeGps()
+  arguments = spy.takeFirst();
+  QCOMPARE( arguments.at(0).value<Location*>(), m_subject_p->m_fakeLocation );
+  QCOMPARE( arguments.at(0).value<Location*>()->label(), QString( "fakegps" ) );
+  arguments = spy.takeFirst();
+  QCOMPARE( arguments.at(0).value<Location*>(), m_subject_p->m_fakeLocation );
+  QCOMPARE( arguments.at(0).value<Location*>()->label(), QString( "fakegps" ) );
+
+  // switch back to GPS
+  m_subject->useLiveGps();
+  m_subject->getGps();
+
+  // gps should be on
+  QCOMPARE(m_subject_p->m_gpsOn, true);
+
+  QVERIFY2(spy.count()==2, "should get two locationChanged signals" );
+  arguments = spy.takeFirst();
+  QCOMPARE(arguments.at(0).value<Location*>(), m_subject_p->m_liveLocation);
+  QCOMPARE( arguments.at(0).value<Location*>()->label(), QString( "livegps" ) );
+  arguments = spy.takeFirst();
+  QCOMPARE(arguments.at(0).value<Location*>(), m_subject_p->m_liveLocation);
+  QCOMPARE( arguments.at(0).value<Location*>()->label(), QString( "livegps" ) );
+
+  // get GPS location
+  m_subject->getGps();
+
+  // check effect
+  QCOMPARE(spy.count(), 1);
+  arguments = spy.takeFirst();
+  QCOMPARE(arguments.at(0).value<Location*>(), m_subject_p->m_liveLocation);
+  QCOMPARE( arguments.at(0).value<Location*>()->label(), QString( "livegps" ) );
+}
+
+void Ut_GpsController::testLiveToFakeToLive()
+{
+  m_subject_p->updateLocation(); // pretend GPS has given an update
+
+  m_subject->useFakeGps( "fakegps" );
+  m_subject->getGps();
+
+  // switch back to live GPS
+  m_subject->useLiveGps();
+  m_subject->getGps();
+
+  m_subject->useFakeGps( "fakegps" );
+  m_subject->getGps();
+}
+
+QTEST_APPLESS_MAIN(Ut_GpsController)
diff --git a/tests/ut_gpscontroller/ut_gpscontroller.h b/tests/ut_gpscontroller/ut_gpscontroller.h
new file mode 100644 (file)
index 0000000..50fdcb7
--- /dev/null
@@ -0,0 +1,35 @@
+#ifndef UT_GPSCONTROLLER_H
+#define UT_GPSCONTROLLER_H
+
+#include <QtTest/QtTest>
+#include <QObject>
+
+class GpsController;
+class MyGpsControllerPrivate;
+class Location;
+
+Q_DECLARE_METATYPE(GpsController*);
+Q_DECLARE_METATYPE(MyGpsControllerPrivate*);
+Q_DECLARE_METATYPE(Location*);
+
+class Ut_GpsController : public QObject
+{
+Q_OBJECT
+
+public:
+
+private slots:
+  void init();
+  void cleanup();
+  void initTestCase();
+  void cleanupTestCase();
+  void testGetGpsWithNoGpsUpdates();
+  void testGetGpsWithGpsUpdates();
+  void testFakeGps();
+  void testLiveToFakeToLive();
+
+private:
+  GpsController *m_subject;
+  MyGpsControllerPrivate *m_subject_p;
+};
+#endif // UT_GPSCONTROLLER_H
diff --git a/tests/ut_gpscontroller/ut_gpscontroller.pro b/tests/ut_gpscontroller/ut_gpscontroller.pro
new file mode 100644 (file)
index 0000000..9021c16
--- /dev/null
@@ -0,0 +1,44 @@
+include( ../tests.pri )
+CONFIG += \
+  qt \
+  debug \
+  mobility \
+
+MOBILITY = \
+   location \
+   bearer \
+
+QT += \
+  testlib \
+  network \
+  maemo5 \
+
+INCLUDEPATH += \
+  $$ZOUBASRC \
+
+DEPENDPATH += $INCLUDEPATH
+
+TEMPLATE = app
+
+LIBS += \
+   /usr/lib/libQtLocation.so \
+
+SOURCES  = \
+  ut_gpscontroller.cpp \
+  $$ZOUBASRC/gpscontroller.cpp \
+  $$ZOUBASRC/gpscontroller_p.cpp \
+  $$ZOUBASRC/locations.cpp \
+  $$ZOUBASRC/location.cpp \
+  $$ZOUBASRC/location_p.cpp \
+
+HEADERS += \
+  ut_gpscontroller.h \
+  $$ZOUBASRC/gpscontroller.h \
+  $$ZOUBASRC/gpscontroller_p.h \
+  $$ZOUBASRC/locations.h \
+  $$ZOUBASRC/location.h \
+  $$ZOUBASRC/location_p.h \
+
+QMAKE_EXTRA_TARGETS += check
+check.depends = $$TARGET
+check.commands = ./$$TARGET
diff --git a/tests/ut_kkjgridcoordinate/.gitignore b/tests/ut_kkjgridcoordinate/.gitignore
deleted file mode 100644 (file)
index 6e53cac..0000000
+++ /dev/null
@@ -1 +0,0 @@
-ut_kkjgridcoordinate
diff --git a/tests/ut_kkjgridcoordinate/ut_kkjgridcoordinate.cpp b/tests/ut_kkjgridcoordinate/ut_kkjgridcoordinate.cpp
deleted file mode 100644 (file)
index 4468115..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-#include "kkjgridcoordinate.h"
-
-#include <gmock/gmock.h>
-#include <gtest/gtest.h>
-
-#include "stlhelpers.h"
-
-class KKJGridCoordinateTest : public ::testing::Test
-{
-public:
-    const unsigned int northing;
-    const unsigned int easting;
-
-    KKJGridCoordinateTest() :
-        northing(6682815),
-        easting(2556686)
-    {
-    }
-};
-
-TEST_F(KKJGridCoordinateTest, ConstructorValuesReceivedViaGetters)
-{
-    KKJGridCoordinate kkj(northing , easting);
-    ASSERT_EQ(northing, kkj.northing());
-    ASSERT_EQ(easting, kkj.easting());
-}
-
-TEST_F(KKJGridCoordinateTest, EqualsOperatorReturnsTrueForEqualCoordinates)
-{
-    KKJGridCoordinate kkj1(northing, easting);
-    KKJGridCoordinate kkj2(northing, easting);
-    ASSERT_TRUE(kkj1 == kkj2);
-}
-
-TEST_F(KKJGridCoordinateTest, EqualsOperatorReturnsFalseForCoordinatesWithDifferentNorthing)
-{
-    KKJGridCoordinate kkj1(northing - 1, easting);
-    KKJGridCoordinate kkj2(northing, easting);
-    ASSERT_FALSE(kkj1 == kkj2);
-}
-
-TEST_F(KKJGridCoordinateTest, EqualsOperatorReturnsFalseForCoordinatesWithDifferentEasting)
-{
-    KKJGridCoordinate kkj1(northing, easting - 1);
-    KKJGridCoordinate kkj2(northing, easting);
-    ASSERT_FALSE(kkj1 == kkj2);
-}
-
-TEST_F(KKJGridCoordinateTest, AssignmentOperator)
-{
-    const KKJGridCoordinate kkj1(northing, easting);
-    KKJGridCoordinate kkj2(0, 0);
-    kkj2 = kkj1;
-    ASSERT_EQ(northing, kkj2.northing());
-    ASSERT_EQ(easting, kkj2.easting());
-}
-
-int main(int argc, char *argv[])
-{
-    ::testing::InitGoogleMock(&argc, argv);
-    return RUN_ALL_TESTS();
-}
diff --git a/tests/ut_kkjgridcoordinate/ut_kkjgridcoordinate.pro b/tests/ut_kkjgridcoordinate/ut_kkjgridcoordinate.pro
deleted file mode 100644 (file)
index b537605..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-include(../ut_common.pri)
-
-TARGET = ut_kkjgridcoordinate
-CONFIG += \
-    mobility
-MOBILITY = location
-SOURCES += ut_kkjgridcoordinate.cpp \
-    $$SRCDIR/kkjgridcoordinate.cpp
-HEADERS += \
-    $$SRCDIR/kkjgridcoordinate.h
-
-include(../gmock.pri)
-include(../check.pri)
diff --git a/tests/ut_location/ut_location.cpp b/tests/ut_location/ut_location.cpp
new file mode 100644 (file)
index 0000000..e7e4ca6
--- /dev/null
@@ -0,0 +1,80 @@
+#include <QObject>
+#include <QtDebug>
+#include <QByteArray>
+#include <QGeoPositionInfo>
+#include "location.h"
+#include "location_p.h"
+#include "ut_location.h"
+
+QTM_USE_NAMESPACE
+
+QByteArray sampleInput(
+"\
+<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?><MTRXML version=\"1.0\">\
+<GEOCODE key=\"taivaanvuohentie 7,helsinki\">\
+<LOC name1=\"Taivaanvuohentie\" number=\"7\" city=\"Helsinki\" code=\"\" address=\"\" type=\"900\" category=\"street\" x=\"2549182\" y=\"6672569\" lon=\"24.88256\" lat=\"60.16183\" />\
+</GEOCODE>\
+</MTRXML>\
+"
+
+);
+
+void Ut_Location::init()
+{
+}
+
+void Ut_Location::cleanup()
+{
+}
+
+void Ut_Location::initTestCase()
+{
+}
+
+void Ut_Location::cleanupTestCase()
+{
+}
+
+void Ut_Location::testParseReply()
+{
+  QString label("home");
+  LocationPrivate m_subject(label);
+
+  m_subject.parseReply( sampleInput );
+
+  QCOMPARE( m_subject.label(), label );
+  QCOMPARE( m_subject.x(), QString( "2549182" ) );
+  QCOMPARE( m_subject.y(), QString( "6672569" ) );
+}
+
+void Ut_Location::testSet()
+{
+  QString label( "home" );
+  LocationPrivate m_subject(label);
+
+  label = "work";
+  QString address( "Taivaanvuohentie 7 B 27, Helsinki" );
+  QString x( "2549182" );
+  QString y( "6672569" );
+  m_subject.setAddress( address );
+  m_subject.setLabel( label );
+  m_subject.setX( x );
+  m_subject.setY( y );
+  QCOMPARE( m_subject.address(), address );
+  QCOMPARE( m_subject.label(), label );
+  QCOMPARE( m_subject.x(), x );
+  QCOMPARE( m_subject.y(), y );
+}
+
+void Ut_Location::testConstructorQGeoPositionInfo()
+{
+  QGeoPositionInfo thisPositionInfo( QGeoCoordinate( 60.16183, 24.88256 ), QDateTime( QDate( 1965, 11, 11 ) ) );
+  Location subject( thisPositionInfo );
+
+  QString x( "2549182" );
+  QString y( "6672569" );
+  QCOMPARE( subject.x(), x );
+  QCOMPARE( subject.y(), y );
+}
+
+QTEST_APPLESS_MAIN(Ut_Location)
diff --git a/tests/ut_location/ut_location.h b/tests/ut_location/ut_location.h
new file mode 100644 (file)
index 0000000..552c4eb
--- /dev/null
@@ -0,0 +1,29 @@
+#ifndef UT_LOCATION_H
+#define UT_LOCATION_H
+
+#include <QtTest/QtTest>
+#include <QObject>
+
+#include <location_p.h>
+
+Q_DECLARE_METATYPE(LocationPrivate*);
+
+class Ut_Location : public QObject
+{
+Q_OBJECT
+
+public:
+
+private slots:
+  void init();
+  void cleanup();
+  void initTestCase();
+  void cleanupTestCase();
+  void testParseReply();
+  void testSet();
+  void testConstructorQGeoPositionInfo();
+
+private:
+  LocationPrivate *m_subject;
+};
+#endif // UT_LOCATION_H
diff --git a/tests/ut_location/ut_location.pro b/tests/ut_location/ut_location.pro
new file mode 100644 (file)
index 0000000..9a3fdc0
--- /dev/null
@@ -0,0 +1,38 @@
+include( ../tests.pri )
+CONFIG += \
+  qt \
+  debug \
+  mobility \
+
+MOBILITY = \
+   location \
+   bearer \
+
+QT += \
+  testlib \
+  network \
+  maemo5 \
+
+INCLUDEPATH += \
+  $$ZOUBASRC \
+
+DEPENDPATH += $$INCLUDEPATH
+
+LIBS += \
+   /usr/lib/libQtLocation.so \
+
+TEMPLATE = app
+
+SOURCES  = \
+  ut_location.cpp \
+  $$ZOUBASRC/location.cpp \
+  $$ZOUBASRC/location_p.cpp \
+
+HEADERS += \
+  ut_location.h \
+  $$ZOUBASRC/location.h \
+  $$ZOUBASRC/location_p.h \
+
+QMAKE_EXTRA_TARGETS += check
+check.depends = $$TARGET
+check.commands = ./$$TARGET
diff --git a/tests/ut_route/ut_route.cpp b/tests/ut_route/ut_route.cpp
new file mode 100644 (file)
index 0000000..0a47349
--- /dev/null
@@ -0,0 +1,158 @@
+#include <QObject>
+#include <QtDebug>
+#include <QByteArray>
+#include "ut_route.h"
+
+#include "ut_sampleinput.h"
+
+void Ut_Route::init()
+{
+    m_subject = new RoutePrivate();
+}
+
+void Ut_Route::cleanup()
+{
+    delete m_subject;
+    m_subject = 0;
+}
+
+void Ut_Route::initTestCase()
+{
+}
+
+void Ut_Route::cleanupTestCase()
+{
+}
+
+void Ut_Route::testParseReply()
+{
+  QFETCH(QByteArray, xmlInput);
+  QFETCH(QList<RouteData>, expectedResults);
+
+  QList<RouteData> routeData = m_subject->parseReply( xmlInput );
+
+  QCOMPARE( routeData.count(), expectedResults.count() );
+
+  for( int routeIndex=0; routeIndex<routeData.count(); ++routeIndex ) {
+    const RouteData &thisRouteData     = routeData.at( routeIndex );
+    const RouteData &thisExpectedRoute = expectedResults.at( routeIndex );
+
+    QCOMPARE( thisRouteData.m_tripTime,        thisExpectedRoute.m_tripTime );
+    QCOMPARE( thisRouteData.m_tripDistance,    thisExpectedRoute.m_tripDistance );
+    QCOMPARE( thisRouteData.m_departureTime,   thisExpectedRoute.m_departureTime );
+    QCOMPARE( thisRouteData.m_lineCode,        thisExpectedRoute.m_lineCode );
+    QCOMPARE( thisRouteData.m_legData.count(), thisExpectedRoute.m_legData.count() );
+
+    for( int legIndex=0; legIndex<thisRouteData.m_legData.count(); ++legIndex ) {
+      const LegData &thisLegData     = thisRouteData.m_legData.at( legIndex );
+      const LegData &thisExpectedLeg = thisExpectedRoute.m_legData.at( legIndex );
+
+      QCOMPARE( thisLegData.m_how,           thisExpectedLeg.m_how );
+      QCOMPARE( thisLegData.m_tripTime,      thisExpectedLeg.m_tripTime );
+      QCOMPARE( thisLegData.m_tripDistance,  thisExpectedLeg.m_tripDistance );
+      QCOMPARE( thisLegData.m_departureTime, thisExpectedLeg.m_departureTime );
+      QCOMPARE( thisLegData.m_arrivalTime,   thisExpectedLeg.m_arrivalTime );
+      QCOMPARE( thisLegData.m_lineCode,      thisExpectedLeg.m_lineCode );
+    }
+  }
+}
+
+void Ut_Route::testParseReply_data()
+{
+  QTest::addColumn<QByteArray>("xmlInput");
+  QTest::addColumn< QList<RouteData> >("expectedResults");
+
+  QTest::newRow("single route")
+    << sampleInput[0]
+    << ( QList<RouteData>()
+        // Summary :    TTime     TDist       First Vehicle
+        << ( RouteData( "14.411", "2510.063", "18:20", "65A" )
+          //          How     TTime    TDist       Depart   Arrive   Line
+          << LegData( "WALK", "4.475", "357.069",  "18:15", "18:20" )
+          << LegData( "LINE", "5.000", "1760.931", "18:20", "18:25", "65A" )
+          << LegData( "WALK", "4.936", "392.062",  "18:25", "18:29" )
+          )
+        // Summary :    TTime     TDist       First Vehicle
+        << ( RouteData( "13.411", "2501.497", "18:26", "102T" )
+          //          How     TTime    TDist       Depart   Arrive   Line
+          << LegData( "WALK", "4.475", "357.069",  "18:21", "18:26" )
+          << LegData( "LINE", "4.000", "1751.582", "18:26", "18:30", "102T" )
+          << LegData( "WALK", "4.936", "392.846",  "18:30", "18:34" )
+          )
+        // Summary :    TTime     TDist       First Vehicle
+        << ( RouteData( "13.411", "2501.497", "18:34", "110T" )
+          //          How     TTime    TDist       Depart   Arrive   Line
+          << LegData( "WALK", "4.475", "357.069",  "18:29", "18:34" )
+          << LegData( "LINE", "4.000", "1751.582", "18:34", "18:38", "110T" )
+          << LegData( "WALK", "4.936", "392.846",  "18:38", "18:42" )
+          )
+        );
+
+  QTest::newRow("route with bus change")
+    << sampleInput[1]
+    << ( QList<RouteData>()
+        // Summary :    TTime     TDist       First Vehicle
+        << ( RouteData( "28.633", "8902.040", "08:18",  "111" )
+          //          How     TTime    TDist       Depart   Arrive   Line
+          << LegData( "WALK", "3.479", "254.753",  "08:14", "08:18" )
+          << LegData( "LINE", "8.000", "5225.092", "08:18", "08:26", "111" )
+          << LegData( "LINE", "5.000", "2926.431", "08:32", "08:37", "121T" )
+          << LegData( "WALK", "6.154", "495.764",  "08:37", "08:43" )
+          )
+        // Summary :    TTime     TDist       First Vehicle
+        << ( RouteData( "25.633", "8902.040", "08:33",  "111" )
+          //          How     TTime    TDist       Depart   Arrive   Line
+          << LegData( "WALK", "3.479", "254.753",  "08:29", "08:33" )
+          << LegData( "LINE", "8.000", "5225.092", "08:33", "08:41", "111" )
+          << LegData( "LINE", "5.000", "2926.431", "08:44", "08:49", "102T" )
+          << LegData( "WALK", "6.154", "495.764",  "08:49", "08:55" )
+          )
+        // Summary :    TTime     TDist        First Vehicle
+        << ( RouteData( "33.510", "11193.458", "08:34", "111T" )
+          //          How     TTime    TDist       Depart   Arrive   Line
+          << LegData( "WALK", "2.356", "172.693",  "08:31", "08:34" )
+          << LegData( "LINE", "6.000", "3392.054", "08:34", "08:40", "111T" )
+          << LegData( "LINE", "5.000", "4206.516", "08:43", "08:48", "112" )
+          << LegData( "LINE", "5.000", "2926.431", "08:54", "08:59", "102T" )
+          << LegData( "WALK", "6.154", "495.764",  "08:59", "09:05" )
+          )
+        // Summary :    TTime     TDist       First Vehicle
+        << ( RouteData( "29.633", "8902.040", "08:50",  "111" )
+          //          How     TTime    TDist       Depart   Arrive   Line
+          << LegData( "WALK", "3.479", "254.753",  "08:46", "08:50" )
+          << LegData( "LINE", "8.000", "5225.092", "08:50", "08:58", "111" )
+          << LegData( "LINE", "5.000", "2926.431", "09:05", "09:10", "102T" )
+          << LegData( "WALK", "6.154", "495.764",  "09:10", "09:16" )
+          )
+        // Summary :    TTime     TDist       First Vehicle
+        << ( RouteData( "29.633", "8902.040", "09:07",  "111" )
+          //          How     TTime    TDist       Depart   Arrive   Line
+          << LegData( "WALK", "3.479", "254.753",  "09:03", "09:07" )
+          << LegData( "LINE", "8.000", "5225.092", "09:07", "09:15", "111" )
+          << LegData( "LINE", "5.000", "2926.431", "09:22", "09:27", "160T" )
+          << LegData( "WALK", "6.154", "495.764",  "09:27", "09:33" )
+          )
+        );
+}
+
+void Ut_Route::testSetFromLocation()
+{
+  Location work( "2551042", "6672829" );
+  QCOMPARE( m_subject->fromValid(), false );
+  m_subject->setFromLocation( &work );
+  QCOMPARE( m_subject->fromLocation()->x(), work.x() );
+  QCOMPARE( m_subject->fromLocation()->y(), work.y() );
+  QCOMPARE( m_subject->fromValid(), true );
+}
+
+void Ut_Route::testSetToLocation()
+{
+  Location work( "2551042", "6672829" );
+  QCOMPARE( m_subject->toValid(), false );
+  m_subject->setToLocation( &work );
+  QCOMPARE( m_subject->toLocation()->x(), work.x() );
+  QCOMPARE( m_subject->toLocation()->y(), work.y() );
+  QCOMPARE( m_subject->toValid(), true );
+}
+
+QTEST_APPLESS_MAIN(Ut_Route)
diff --git a/tests/ut_route/ut_route.h b/tests/ut_route/ut_route.h
new file mode 100644 (file)
index 0000000..a444405
--- /dev/null
@@ -0,0 +1,31 @@
+#ifndef UT_ROUTE_H
+#define UT_ROUTE_H
+
+#include <QtTest/QtTest>
+#include <QObject>
+
+#include <route_p.h>
+
+Q_DECLARE_METATYPE(RoutePrivate*);
+Q_DECLARE_METATYPE(QList<RouteData>);
+
+class Ut_Route : public QObject
+{
+    Q_OBJECT
+
+public:
+
+private slots:
+    void init();
+    void cleanup();
+    void initTestCase();
+    void cleanupTestCase();
+    void testParseReply();
+    void testParseReply_data();
+    void testSetFromLocation();
+    void testSetToLocation();
+
+private:
+    RoutePrivate *m_subject;
+};
+#endif // UT_ROUTE_H
diff --git a/tests/ut_route/ut_route.pro b/tests/ut_route/ut_route.pro
new file mode 100644 (file)
index 0000000..00aeaa8
--- /dev/null
@@ -0,0 +1,40 @@
+include( ../tests.pri )
+CONFIG += \
+  qt \
+  debug \
+  mobility \
+
+MOBILITY = \
+   location \
+   bearer \
+
+QT += \
+  testlib \
+  network \
+  maemo5 \
+
+INCLUDEPATH += \
+  $$ZOUBASRC \
+
+DEPENDPATH += $INCLUDEPATH
+
+TEMPLATE = app
+
+LIBS += \
+   /usr/lib/libQtLocation.so \
+
+SOURCES  = \
+  ut_route.cpp \
+  $$ZOUBASRC/route_p.cpp \
+  $$ZOUBASRC/location.cpp \
+  $$ZOUBASRC/location_p.cpp \
+
+HEADERS += \
+  ut_route.h \
+  $$ZOUBASRC/route_p.h \
+  $$ZOUBASRC/location.h \
+  $$ZOUBASRC/location_p.h \
+
+QMAKE_EXTRA_TARGETS += check
+check.depends = $$TARGET
+check.commands = ./$$TARGET
diff --git a/tests/ut_route/ut_sampleinput.h b/tests/ut_route/ut_sampleinput.h
new file mode 100644 (file)
index 0000000..ec38afe
--- /dev/null
@@ -0,0 +1,1238 @@
+
+QByteArray sampleInput[2] = {
+"<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>\
+<MTRXML version=\"1.0\">\
+       <ROUTE from=\"start\" to=\"dest\">\
+               <LENGTH time=\"14.411\" dist=\"2510.063\"/>\
+               <POINT uid=\"start\" x=\"2551042.0\" y=\"6672829.0\">\
+                       <ARRIVAL date=\"20100207\" time=\"1815\"/>\
+                       <DEPARTURE date=\"20100207\" time=\"1815\"/>\
+               </POINT>\
+               <WALK>\
+                       <LENGTH time=\"4.475\" dist=\"357.069\"/>\
+                       <POINT uid=\"start\" x=\"2551042.0\" y=\"6672829.0\">\
+                               <ARRIVAL date=\"20100207\" time=\"1815\"/>\
+                               <DEPARTURE date=\"20100207\" time=\"1815\"/>\
+                       </POINT>\
+                       <MAPLOC x=\"2551034.9\" y=\"6672875.6\" type=\"7\">\
+                               <ARRIVAL date=\"20100207\" time=\"1816\"/>\
+                               <DEPARTURE date=\"20100207\" time=\"1816\"/>\
+                               <NAME lang=\"1\" val=\"Porkkalankatu\"/>\
+                       </MAPLOC>\
+                       <MAPLOC x=\"2550977.7\" y=\"6672869.1\" type=\"15\">\
+                               <ARRIVAL date=\"20100207\" time=\"1817\"/>\
+                               <DEPARTURE date=\"20100207\" time=\"1817\"/>\
+                       </MAPLOC>\
+                       <MAPLOC x=\"2550949.3\" y=\"6672867.5\" type=\"7\">\
+                               <ARRIVAL date=\"20100207\" time=\"1817\"/>\
+                               <DEPARTURE date=\"20100207\" time=\"1817\"/>\
+                               <NAME lang=\"1\" val=\"Porkkalankatu\"/>\
+                       </MAPLOC>\
+                       <MAPLOC x=\"2550817.2\" y=\"6672859.3\" type=\"7\">\
+                               <ARRIVAL date=\"20100207\" time=\"1819\"/>\
+                               <DEPARTURE date=\"20100207\" time=\"1819\"/>\
+                       </MAPLOC>\
+                       <MAPLOC x=\"2550808.5\" y=\"6672889.3\" type=\"11\">\
+                               <ARRIVAL date=\"20100207\" time=\"1820\"/>\
+                               <DEPARTURE date=\"20100207\" time=\"1820\"/>\
+                               <NAME lang=\"1\" val=\"Porkkalankatu\"/>\
+                       </MAPLOC>\
+                       <STOP code=\"6:1201129\" x=\"2550765.0\" y=\"6672886.0\" id=\"745\">\
+                               <ARRIVAL date=\"20100207\" time=\"1820\"/>\
+                               <DEPARTURE date=\"20100207\" time=\"1820\"/>\
+                               <NAME lang=\"1\" val=\"Länsiväylä\"/>\
+                               <NAME lang=\"2\" val=\"Västerleden\"/>\
+                       </STOP>\
+               </WALK>\
+               <LINE id=\"200\" code=\"1065A 2\" type=\"1\" mobility=\"3\">\
+                       <LENGTH time=\"5.000\" dist=\"1760.931\"/>\
+                       <STOP code=\"6:1201129\" x=\"2550765.0\" y=\"6672886.0\" id=\"745\" ord=\"30\">\
+                               <ARRIVAL date=\"20100207\" time=\"1820\"/>\
+                               <DEPARTURE date=\"20100207\" time=\"1820\"/>\
+                               <NAME lang=\"1\" val=\"Länsiväylä\"/>\
+                               <NAME lang=\"2\" val=\"Västerleden\"/>\
+                       </STOP>\
+                       <STOP code=\"6:1201131\" x=\"2550385.0\" y=\"6672760.0\" id=\"747\">\
+                               <ARRIVAL date=\"20100207\" time=\"1821\"/>\
+                               <DEPARTURE date=\"20100207\" time=\"1821\"/>\
+                               <NAME lang=\"1\" val=\"Salmisaari\"/>\
+                               <NAME lang=\"2\" val=\"Sundholmen\"/>\
+                       </STOP>\
+                       <STOP code=\"6:1310101\" x=\"2549608.0\" y=\"6672522.0\" id=\"1356\">\
+                               <ARRIVAL date=\"20100207\" time=\"1824\"/>\
+                               <DEPARTURE date=\"20100207\" time=\"1824\"/>\
+                               <NAME lang=\"1\" val=\"Lauttasaaren silta\"/>\
+                               <NAME lang=\"2\" val=\"Drumsö bro\"/>\
+                       </STOP>\
+                       <STOP code=\"6:1310103\" x=\"2549247.0\" y=\"6672446.0\" id=\"1358\" ord=\"33\">\
+                               <ARRIVAL date=\"20100207\" time=\"1825\"/>\
+                               <DEPARTURE date=\"20100207\" time=\"1825\"/>\
+                               <NAME lang=\"1\" val=\"Koillisväylä\"/>\
+                               <NAME lang=\"2\" val=\"Nordostpassagen\"/>\
+                       </STOP>\
+               </LINE>\
+               <WALK>\
+                       <LENGTH time=\"4.936\" dist=\"392.062\"/>\
+                       <STOP code=\"6:1310103\" x=\"2549247.0\" y=\"6672446.0\" id=\"1358\">\
+                               <ARRIVAL date=\"20100207\" time=\"1825\"/>\
+                               <DEPARTURE date=\"20100207\" time=\"1825\"/>\
+                               <NAME lang=\"1\" val=\"Koillisväylä\"/>\
+                               <NAME lang=\"2\" val=\"Nordostpassagen\"/>\
+                       </STOP>\
+                       <MAPLOC x=\"2549200.4\" y=\"6672433.4\" type=\"0\">\
+                               <ARRIVAL date=\"20100207\" time=\"1825\"/>\
+                               <DEPARTURE date=\"20100207\" time=\"1825\"/>\
+                               <NAME lang=\"1\" val=\"Taivaanvuohenkuja\"/>\
+                       </MAPLOC>\
+                       <MAPLOC x=\"2549151.2\" y=\"6672527.3\" type=\"0\">\
+                               <ARRIVAL date=\"20100207\" time=\"1827\"/>\
+                               <DEPARTURE date=\"20100207\" time=\"1827\"/>\
+                               <NAME lang=\"1\" val=\"Taivaanvuohentie\"/>\
+                       </MAPLOC>\
+                       <MAPLOC x=\"2549105.4\" y=\"6672573.6\" type=\"0\">\
+                               <ARRIVAL date=\"20100207\" time=\"1828\"/>\
+                               <DEPARTURE date=\"20100207\" time=\"1828\"/>\
+                       </MAPLOC>\
+                       <MAPLOC x=\"2549115.4\" y=\"6672595.1\" type=\"0\">\
+                               <ARRIVAL date=\"20100207\" time=\"1828\"/>\
+                               <DEPARTURE date=\"20100207\" time=\"1828\"/>\
+                       </MAPLOC>\
+                       <MAPLOC x=\"2549162.6\" y=\"6672633.1\" type=\"0\">\
+                               <ARRIVAL date=\"20100207\" time=\"1829\"/>\
+                               <DEPARTURE date=\"20100207\" time=\"1829\"/>\
+                       </MAPLOC>\
+                       <POINT uid=\"dest\" x=\"2549183.0\" y=\"6672570.0\">\
+                               <ARRIVAL date=\"20100207\" time=\"1829\"/>\
+                               <DEPARTURE date=\"20100207\" time=\"1829\"/>\
+                       </POINT>\
+               </WALK>\
+               <POINT uid=\"dest\" x=\"2549183.0\" y=\"6672570.0\">\
+                       <ARRIVAL date=\"20100207\" time=\"1829\"/>\
+                       <DEPARTURE date=\"20100207\" time=\"1829\"/>\
+               </POINT>\
+       </ROUTE>\
+       <ROUTE from=\"start\" to=\"dest\">\
+               <LENGTH time=\"13.411\" dist=\"2501.497\"/>\
+               <POINT uid=\"start\" x=\"2551042.0\" y=\"6672829.0\">\
+                       <ARRIVAL date=\"20100207\" time=\"1821\"/>\
+                       <DEPARTURE date=\"20100207\" time=\"1821\"/>\
+               </POINT>\
+               <WALK>\
+                       <LENGTH time=\"4.475\" dist=\"357.069\"/>\
+                       <POINT uid=\"start\" x=\"2551042.0\" y=\"6672829.0\">\
+                               <ARRIVAL date=\"20100207\" time=\"1821\"/>\
+                               <DEPARTURE date=\"20100207\" time=\"1821\"/>\
+                       </POINT>\
+                       <MAPLOC x=\"2551034.9\" y=\"6672875.6\" type=\"7\">\
+                               <ARRIVAL date=\"20100207\" time=\"1822\"/>\
+                               <DEPARTURE date=\"20100207\" time=\"1822\"/>\
+                               <NAME lang=\"1\" val=\"Porkkalankatu\"/>\
+                       </MAPLOC>\
+                       <MAPLOC x=\"2550977.7\" y=\"6672869.1\" type=\"15\">\
+                               <ARRIVAL date=\"20100207\" time=\"1823\"/>\
+                               <DEPARTURE date=\"20100207\" time=\"1823\"/>\
+                       </MAPLOC>\
+                       <MAPLOC x=\"2550949.3\" y=\"6672867.5\" type=\"7\">\
+                               <ARRIVAL date=\"20100207\" time=\"1823\"/>\
+                               <DEPARTURE date=\"20100207\" time=\"1823\"/>\
+                               <NAME lang=\"1\" val=\"Porkkalankatu\"/>\
+                       </MAPLOC>\
+                       <MAPLOC x=\"2550817.2\" y=\"6672859.3\" type=\"7\">\
+                               <ARRIVAL date=\"20100207\" time=\"1825\"/>\
+                               <DEPARTURE date=\"20100207\" time=\"1825\"/>\
+                       </MAPLOC>\
+                       <MAPLOC x=\"2550808.5\" y=\"6672889.3\" type=\"11\">\
+                               <ARRIVAL date=\"20100207\" time=\"1826\"/>\
+                               <DEPARTURE date=\"20100207\" time=\"1826\"/>\
+                               <NAME lang=\"1\" val=\"Porkkalankatu\"/>\
+                       </MAPLOC>\
+                       <STOP code=\"6:1201227\" x=\"2550765.0\" y=\"6672886.0\" id=\"755\">\
+                               <ARRIVAL date=\"20100207\" time=\"1826\"/>\
+                               <DEPARTURE date=\"20100207\" time=\"1826\"/>\
+                               <NAME lang=\"1\" val=\"Länsiväylä\"/>\
+                               <NAME lang=\"2\" val=\"Västerleden\"/>\
+                       </STOP>\
+               </WALK>\
+               <LINE id=\"579\" code=\"2102T 1\" type=\"5\" mobility=\"3\">\
+                       <LENGTH time=\"4.000\" dist=\"1751.582\"/>\
+                       <STOP code=\"6:1201227\" x=\"2550765.0\" y=\"6672886.0\" id=\"755\" ord=\"3\">\
+                               <ARRIVAL date=\"20100207\" time=\"1826\"/>\
+                               <DEPARTURE date=\"20100207\" time=\"1826\"/>\
+                               <NAME lang=\"1\" val=\"Länsiväylä\"/>\
+                               <NAME lang=\"2\" val=\"Västerleden\"/>\
+                       </STOP>\
+                       <STOP code=\"6:1201231\" x=\"2550387.0\" y=\"6672761.0\" id=\"759\">\
+                               <ARRIVAL date=\"20100207\" time=\"1827\"/>\
+                               <DEPARTURE date=\"20100207\" time=\"1827\"/>\
+                               <NAME lang=\"1\" val=\"Salmisaari\"/>\
+                               <NAME lang=\"2\" val=\"Sundholmen\"/>\
+                       </STOP>\
+                       <STOP code=\"6:1310201\" x=\"2549630.0\" y=\"6672524.0\" id=\"1402\">\
+                               <ARRIVAL date=\"20100207\" time=\"1829\"/>\
+                               <DEPARTURE date=\"20100207\" time=\"1829\"/>\
+                               <NAME lang=\"1\" val=\"Lauttasaaren silta\"/>\
+                               <NAME lang=\"2\" val=\"Drumsö bro\"/>\
+                       </STOP>\
+                       <STOP code=\"6:1310203\" x=\"2549248.0\" y=\"6672446.0\" id=\"1404\" ord=\"6\">\
+                               <ARRIVAL date=\"20100207\" time=\"1830\"/>\
+                               <DEPARTURE date=\"20100207\" time=\"1830\"/>\
+                               <NAME lang=\"1\" val=\"Koillisväylä\"/>\
+                               <NAME lang=\"2\" val=\"Nordostpassagen\"/>\
+                       </STOP>\
+               </LINE>\
+               <WALK>\
+                       <LENGTH time=\"4.936\" dist=\"392.846\"/>\
+                       <STOP code=\"6:1310203\" x=\"2549248.0\" y=\"6672446.0\" id=\"1404\">\
+                               <ARRIVAL date=\"20100207\" time=\"1830\"/>\
+                               <DEPARTURE date=\"20100207\" time=\"1830\"/>\
+                               <NAME lang=\"1\" val=\"Koillisväylä\"/>\
+                               <NAME lang=\"2\" val=\"Nordostpassagen\"/>\
+                       </STOP>\
+                       <MAPLOC x=\"2549200.4\" y=\"6672433.4\" type=\"0\">\
+                               <ARRIVAL date=\"20100207\" time=\"1830\"/>\
+                               <DEPARTURE date=\"20100207\" time=\"1830\"/>\
+                               <NAME lang=\"1\" val=\"Taivaanvuohenkuja\"/>\
+                       </MAPLOC>\
+                       <MAPLOC x=\"2549151.2\" y=\"6672527.3\" type=\"0\">\
+                               <ARRIVAL date=\"20100207\" time=\"1832\"/>\
+                               <DEPARTURE date=\"20100207\" time=\"1832\"/>\
+                               <NAME lang=\"1\" val=\"Taivaanvuohentie\"/>\
+                       </MAPLOC>\
+                       <MAPLOC x=\"2549105.4\" y=\"6672573.6\" type=\"0\">\
+                               <ARRIVAL date=\"20100207\" time=\"1833\"/>\
+                               <DEPARTURE date=\"20100207\" time=\"1833\"/>\
+                       </MAPLOC>\
+                       <MAPLOC x=\"2549115.4\" y=\"6672595.1\" type=\"0\">\
+                               <ARRIVAL date=\"20100207\" time=\"1833\"/>\
+                               <DEPARTURE date=\"20100207\" time=\"1833\"/>\
+                       </MAPLOC>\
+                       <MAPLOC x=\"2549162.6\" y=\"6672633.1\" type=\"0\">\
+                               <ARRIVAL date=\"20100207\" time=\"1834\"/>\
+                               <DEPARTURE date=\"20100207\" time=\"1834\"/>\
+                       </MAPLOC>\
+                       <POINT uid=\"dest\" x=\"2549183.0\" y=\"6672570.0\">\
+                               <ARRIVAL date=\"20100207\" time=\"1834\"/>\
+                               <DEPARTURE date=\"20100207\" time=\"1834\"/>\
+                       </POINT>\
+               </WALK>\
+               <POINT uid=\"dest\" x=\"2549183.0\" y=\"6672570.0\">\
+                       <ARRIVAL date=\"20100207\" time=\"1834\"/>\
+                       <DEPARTURE date=\"20100207\" time=\"1834\"/>\
+               </POINT>\
+       </ROUTE>\
+       <ROUTE from=\"start\" to=\"dest\">\
+               <LENGTH time=\"13.411\" dist=\"2501.497\"/>\
+               <POINT uid=\"start\" x=\"2551042.0\" y=\"6672829.0\">\
+                       <ARRIVAL date=\"20100207\" time=\"1829\"/>\
+                       <DEPARTURE date=\"20100207\" time=\"1829\"/>\
+               </POINT>\
+               <WALK>\
+                       <LENGTH time=\"4.475\" dist=\"357.069\"/>\
+                       <POINT uid=\"start\" x=\"2551042.0\" y=\"6672829.0\">\
+                               <ARRIVAL date=\"20100207\" time=\"1829\"/>\
+                               <DEPARTURE date=\"20100207\" time=\"1829\"/>\
+                       </POINT>\
+                       <MAPLOC x=\"2551034.9\" y=\"6672875.6\" type=\"7\">\
+                               <ARRIVAL date=\"20100207\" time=\"1830\"/>\
+                               <DEPARTURE date=\"20100207\" time=\"1830\"/>\
+                               <NAME lang=\"1\" val=\"Porkkalankatu\"/>\
+                       </MAPLOC>\
+                       <MAPLOC x=\"2550977.7\" y=\"6672869.1\" type=\"15\">\
+                               <ARRIVAL date=\"20100207\" time=\"1831\"/>\
+                               <DEPARTURE date=\"20100207\" time=\"1831\"/>\
+                       </MAPLOC>\
+                       <MAPLOC x=\"2550949.3\" y=\"6672867.5\" type=\"7\">\
+                               <ARRIVAL date=\"20100207\" time=\"1831\"/>\
+                               <DEPARTURE date=\"20100207\" time=\"1831\"/>\
+                               <NAME lang=\"1\" val=\"Porkkalankatu\"/>\
+                       </MAPLOC>\
+                       <MAPLOC x=\"2550817.2\" y=\"6672859.3\" type=\"7\">\
+                               <ARRIVAL date=\"20100207\" time=\"1833\"/>\
+                               <DEPARTURE date=\"20100207\" time=\"1833\"/>\
+                       </MAPLOC>\
+                       <MAPLOC x=\"2550808.5\" y=\"6672889.3\" type=\"11\">\
+                               <ARRIVAL date=\"20100207\" time=\"1834\"/>\
+                               <DEPARTURE date=\"20100207\" time=\"1834\"/>\
+                               <NAME lang=\"1\" val=\"Porkkalankatu\"/>\
+                       </MAPLOC>\
+                       <STOP code=\"6:1201227\" x=\"2550765.0\" y=\"6672886.0\" id=\"755\">\
+                               <ARRIVAL date=\"20100207\" time=\"1834\"/>\
+                               <DEPARTURE date=\"20100207\" time=\"1834\"/>\
+                               <NAME lang=\"1\" val=\"Länsiväylä\"/>\
+                               <NAME lang=\"2\" val=\"Västerleden\"/>\
+                       </STOP>\
+               </WALK>\
+               <LINE id=\"603\" code=\"2110T 1\" type=\"5\" mobility=\"3\">\
+                       <LENGTH time=\"4.000\" dist=\"1751.582\"/>\
+                       <STOP code=\"6:1201227\" x=\"2550765.0\" y=\"6672886.0\" id=\"755\" ord=\"3\">\
+                               <ARRIVAL date=\"20100207\" time=\"1834\"/>\
+                               <DEPARTURE date=\"20100207\" time=\"1834\"/>\
+                               <NAME lang=\"1\" val=\"Länsiväylä\"/>\
+                               <NAME lang=\"2\" val=\"Västerleden\"/>\
+                       </STOP>\
+                       <STOP code=\"6:1201231\" x=\"2550387.0\" y=\"6672761.0\" id=\"759\">\
+                               <ARRIVAL date=\"20100207\" time=\"1835\"/>\
+                               <DEPARTURE date=\"20100207\" time=\"1835\"/>\
+                               <NAME lang=\"1\" val=\"Salmisaari\"/>\
+                               <NAME lang=\"2\" val=\"Sundholmen\"/>\
+                       </STOP>\
+                       <STOP code=\"6:1310201\" x=\"2549630.0\" y=\"6672524.0\" id=\"1402\">\
+                               <ARRIVAL date=\"20100207\" time=\"1837\"/>\
+                               <DEPARTURE date=\"20100207\" time=\"1837\"/>\
+                               <NAME lang=\"1\" val=\"Lauttasaaren silta\"/>\
+                               <NAME lang=\"2\" val=\"Drumsö bro\"/>\
+                       </STOP>\
+                       <STOP code=\"6:1310203\" x=\"2549248.0\" y=\"6672446.0\" id=\"1404\" ord=\"6\">\
+                               <ARRIVAL date=\"20100207\" time=\"1838\"/>\
+                               <DEPARTURE date=\"20100207\" time=\"1838\"/>\
+                               <NAME lang=\"1\" val=\"Koillisväylä\"/>\
+                               <NAME lang=\"2\" val=\"Nordostpassagen\"/>\
+                       </STOP>\
+               </LINE>\
+               <WALK>\
+                       <LENGTH time=\"4.936\" dist=\"392.846\"/>\
+                       <STOP code=\"6:1310203\" x=\"2549248.0\" y=\"6672446.0\" id=\"1404\">\
+                               <ARRIVAL date=\"20100207\" time=\"1838\"/>\
+                               <DEPARTURE date=\"20100207\" time=\"1838\"/>\
+                               <NAME lang=\"1\" val=\"Koillisväylä\"/>\
+                               <NAME lang=\"2\" val=\"Nordostpassagen\"/>\
+                       </STOP>\
+                       <MAPLOC x=\"2549200.4\" y=\"6672433.4\" type=\"0\">\
+                               <ARRIVAL date=\"20100207\" time=\"1838\"/>\
+                               <DEPARTURE date=\"20100207\" time=\"1838\"/>\
+                               <NAME lang=\"1\" val=\"Taivaanvuohenkuja\"/>\
+                       </MAPLOC>\
+                       <MAPLOC x=\"2549151.2\" y=\"6672527.3\" type=\"0\">\
+                               <ARRIVAL date=\"20100207\" time=\"1840\"/>\
+                               <DEPARTURE date=\"20100207\" time=\"1840\"/>\
+                               <NAME lang=\"1\" val=\"Taivaanvuohentie\"/>\
+                       </MAPLOC>\
+                       <MAPLOC x=\"2549105.4\" y=\"6672573.6\" type=\"0\">\
+                               <ARRIVAL date=\"20100207\" time=\"1841\"/>\
+                               <DEPARTURE date=\"20100207\" time=\"1841\"/>\
+                       </MAPLOC>\
+                       <MAPLOC x=\"2549115.4\" y=\"6672595.1\" type=\"0\">\
+                               <ARRIVAL date=\"20100207\" time=\"1841\"/>\
+                               <DEPARTURE date=\"20100207\" time=\"1841\"/>\
+                       </MAPLOC>\
+                       <MAPLOC x=\"2549162.6\" y=\"6672633.1\" type=\"0\">\
+                               <ARRIVAL date=\"20100207\" time=\"1842\"/>\
+                               <DEPARTURE date=\"20100207\" time=\"1842\"/>\
+                       </MAPLOC>\
+                       <POINT uid=\"dest\" x=\"2549183.0\" y=\"6672570.0\">\
+                               <ARRIVAL date=\"20100207\" time=\"1842\"/>\
+                               <DEPARTURE date=\"20100207\" time=\"1842\"/>\
+                       </POINT>\
+               </WALK>\
+               <POINT uid=\"dest\" x=\"2549183.0\" y=\"6672570.0\">\
+                       <ARRIVAL date=\"20100207\" time=\"1842\"/>\
+                       <DEPARTURE date=\"20100207\" time=\"1842\"/>\
+               </POINT>\
+       </ROUTE>\
+</MTRXML>\
+",
+
+"<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>\
+<MTRXML version=\"1.0\">\
+       <ROUTE from=\"start\" to=\"dest\">\
+               <LENGTH time=\"28.633\" dist=\"8902.040\"/>\
+               <POINT uid=\"start\" x=\"2543560.0\" y=\"6672630.0\">\
+                       <ARRIVAL date=\"20100416\" time=\"0814\"/>\
+                       <DEPARTURE date=\"20100416\" time=\"0814\"/>\
+               </POINT>\
+               <WALK>\
+                       <LENGTH time=\"3.479\" dist=\"254.753\"/>\
+                       <POINT uid=\"start\" x=\"2543560.0\" y=\"6672630.0\">\
+                               <ARRIVAL date=\"20100416\" time=\"0814\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0814\"/>\
+                       </POINT>\
+                       <MAPLOC x=\"2543588.4\" y=\"6672573.9\" type=\"0\">\
+                               <ARRIVAL date=\"20100416\" time=\"0815\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0815\"/>\
+                               <NAME lang=\"1\" val=\"Haukilahdenkatu\"/>\
+                       </MAPLOC>\
+                       <MAPLOC x=\"2543529.4\" y=\"6672574.0\" type=\"0\">\
+                               <ARRIVAL date=\"20100416\" time=\"0816\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0816\"/>\
+                               <NAME lang=\"1\" val=\"Haukilahdenkatu\"/>\
+                       </MAPLOC>\
+                       <MAPLOC x=\"2543529.0\" y=\"6672569.9\" type=\"0\">\
+                               <ARRIVAL date=\"20100416\" time=\"0816\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0816\"/>\
+                       </MAPLOC>\
+                       <MAPLOC x=\"2543494.7\" y=\"6672557.4\" type=\"0\">\
+                               <ARRIVAL date=\"20100416\" time=\"0816\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0816\"/>\
+                               <NAME lang=\"1\" val=\"Toppelundintie\"/>\
+                       </MAPLOC>\
+                       <MAPLOC x=\"2543506.2\" y=\"6672490.4\" type=\"0\">\
+                               <ARRIVAL date=\"20100416\" time=\"0817\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0817\"/>\
+                               <NAME lang=\"1\" val=\"Toppelundintie\"/>\
+                       </MAPLOC>\
+                       <MAPLOC x=\"2543496.2\" y=\"6672492.1\" type=\"0\">\
+                               <ARRIVAL date=\"20100416\" time=\"0818\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0818\"/>\
+                               <NAME lang=\"1\" val=\"Toppelundintie\"/>\
+                       </MAPLOC>\
+                       <STOP code=\"6:2232220\" x=\"2543501.0\" y=\"6672486.0\" id=\"3375\">\
+                               <ARRIVAL date=\"20100416\" time=\"0818\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0818\"/>\
+                               <NAME lang=\"1\" val=\"Säynävätie\"/>\
+                               <NAME lang=\"2\" val=\"Idvägen\"/>\
+                       </STOP>\
+               </WALK>\
+               <LINE id=\"620\" code=\"2111  2\" type=\"5\" mobility=\"3\">\
+                       <LENGTH time=\"8.000\" dist=\"5225.092\"/>\
+                       <STOP code=\"6:2232220\" x=\"2543501.0\" y=\"6672486.0\" id=\"3375\" ord=\"12\">\
+                               <ARRIVAL date=\"20100416\" time=\"0818\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0818\"/>\
+                               <NAME lang=\"1\" val=\"Säynävätie\"/>\
+                               <NAME lang=\"2\" val=\"Idvägen\"/>\
+                       </STOP>\
+                       <STOP code=\"6:2232218\" x=\"2543666.0\" y=\"6672186.0\" id=\"3373\">\
+                               <ARRIVAL date=\"20100416\" time=\"0819\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0819\"/>\
+                               <NAME lang=\"1\" val=\"Mellstenintie\"/>\
+                               <NAME lang=\"2\" val=\"Mellstensvägen\"/>\
+                       </STOP>\
+                       <STOP code=\"6:2232216\" x=\"2543877.0\" y=\"6672218.0\" id=\"3371\">\
+                               <ARRIVAL date=\"20100416\" time=\"0819\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0819\"/>\
+                               <NAME lang=\"1\" val=\"Toppelund\"/>\
+                               <NAME lang=\"2\" val=\"Toppelund\"/>\
+                       </STOP>\
+                       <STOP code=\"6:2231232\" x=\"2544055.0\" y=\"6672304.0\" id=\"3353\">\
+                               <ARRIVAL date=\"20100416\" time=\"0820\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0820\"/>\
+                               <NAME lang=\"1\" val=\"Linnake\"/>\
+                               <NAME lang=\"2\" val=\"Fortet\"/>\
+                       </STOP>\
+                       <STOP code=\"6:2231230\" x=\"2544152.0\" y=\"6672559.0\" id=\"3351\">\
+                               <ARRIVAL date=\"20100416\" time=\"0821\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0821\"/>\
+                               <NAME lang=\"1\" val=\"Alalinnake\"/>\
+                               <NAME lang=\"2\" val=\"Nedre fortet\"/>\
+                       </STOP>\
+                       <STOP code=\"6:2231220\" x=\"2544059.0\" y=\"6672912.0\" id=\"3350\">\
+                               <ARRIVAL date=\"20100416\" time=\"0822\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0822\"/>\
+                               <NAME lang=\"1\" val=\"Westendinpolku\"/>\
+                               <NAME lang=\"2\" val=\"Westendstigen\"/>\
+                       </STOP>\
+                       <STOP code=\"6:2231218\" x=\"2544263.0\" y=\"6673139.0\" id=\"3348\">\
+                               <ARRIVAL date=\"20100416\" time=\"0823\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0823\"/>\
+                               <NAME lang=\"1\" val=\"Golfpolku\"/>\
+                               <NAME lang=\"2\" val=\"Golfstigen\"/>\
+                       </STOP>\
+                       <STOP code=\"6:2231212\" x=\"2544835.0\" y=\"6673222.0\" id=\"3343\">\
+                               <ARRIVAL date=\"20100416\" time=\"0824\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0824\"/>\
+                               <NAME lang=\"1\" val=\"Ankkurisaarentie\"/>\
+                               <NAME lang=\"2\" val=\"Ankarholmsvägen\"/>\
+                       </STOP>\
+                       <STOP code=\"6:2231211\" x=\"2544938.0\" y=\"6673277.0\" id=\"3342\">\
+                               <ARRIVAL date=\"20100416\" time=\"0824\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0824\"/>\
+                               <NAME lang=\"1\" val=\"Kuninkaansatama\"/>\
+                               <NAME lang=\"2\" val=\"Konungshamnen\"/>\
+                       </STOP>\
+                       <STOP code=\"6:2231201\" x=\"2546031.0\" y=\"6673305.0\" id=\"3332\">\
+                               <ARRIVAL date=\"20100416\" time=\"0825\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0825\"/>\
+                               <NAME lang=\"1\" val=\"Karhusaari\"/>\
+                               <NAME lang=\"2\" val=\"Björnholm\"/>\
+                       </STOP>\
+                       <STOP code=\"6:2232204\" x=\"2546939.0\" y=\"6672964.0\" id=\"3360\" ord=\"22\">\
+                               <ARRIVAL date=\"20100416\" time=\"0826\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0832\"/>\
+                               <NAME lang=\"1\" val=\"Hanasaari\"/>\
+                               <NAME lang=\"2\" val=\"Hanaholmen\"/>\
+                       </STOP>\
+               </LINE>\
+               <LINE id=\"642\" code=\"2121T 2\" type=\"5\" mobility=\"3\">\
+                       <LENGTH time=\"5.000\" dist=\"2926.431\"/>\
+                       <STOP code=\"6:2232204\" x=\"2546939.0\" y=\"6672964.0\" id=\"3360\" ord=\"13\">\
+                               <ARRIVAL date=\"20100416\" time=\"0826\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0832\"/>\
+                               <NAME lang=\"1\" val=\"Hanasaari\"/>\
+                               <NAME lang=\"2\" val=\"Hanaholmen\"/>\
+                       </STOP>\
+                       <STOP code=\"6:1310299\" x=\"2547953.0\" y=\"6672552.0\" id=\"1424\">\
+                               <ARRIVAL date=\"20100416\" time=\"0833\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0833\"/>\
+                               <NAME lang=\"1\" val=\"Katajaharju\"/>\
+                               <NAME lang=\"2\" val=\"Enåsen\"/>\
+                       </STOP>\
+                       <STOP code=\"6:1310225\" x=\"2548497.0\" y=\"6672477.0\" id=\"1411\">\
+                               <ARRIVAL date=\"20100416\" time=\"0834\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0834\"/>\
+                               <NAME lang=\"1\" val=\"Lahnalahdentie\"/>\
+                               <NAME lang=\"2\" val=\"Braxviksvägen\"/>\
+                       </STOP>\
+                       <STOP code=\"6:1310223\" x=\"2548836.0\" y=\"6672441.0\" id=\"1409\">\
+                               <ARRIVAL date=\"20100416\" time=\"0835\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0835\"/>\
+                               <NAME lang=\"1\" val=\"Lahnalahden puisto\"/>\
+                               <NAME lang=\"2\" val=\"Braxviksparken\"/>\
+                       </STOP>\
+                       <STOP code=\"6:1310204\" x=\"2549393.0\" y=\"6672438.0\" id=\"1405\" ord=\"17\">\
+                               <ARRIVAL date=\"20100416\" time=\"0837\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0837\"/>\
+                               <NAME lang=\"1\" val=\"Koillisväylä\"/>\
+                               <NAME lang=\"2\" val=\"Nordostpassagen\"/>\
+                       </STOP>\
+               </LINE>\
+               <WALK>\
+                       <LENGTH time=\"6.154\" dist=\"495.764\"/>\
+                       <STOP code=\"6:1310204\" x=\"2549393.0\" y=\"6672438.0\" id=\"1405\">\
+                               <ARRIVAL date=\"20100416\" time=\"0837\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0837\"/>\
+                               <NAME lang=\"1\" val=\"Koillisväylä\"/>\
+                               <NAME lang=\"2\" val=\"Nordostpassagen\"/>\
+                       </STOP>\
+                       <MAPLOC x=\"2549326.7\" y=\"6672446.7\" type=\"0\">\
+                               <ARRIVAL date=\"20100416\" time=\"0838\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0838\"/>\
+                               <NAME lang=\"1\" val=\"Koillisväylä\"/>\
+                       </MAPLOC>\
+                       <MAPLOC x=\"2549376.8\" y=\"6672603.7\" type=\"0\">\
+                               <ARRIVAL date=\"20100416\" time=\"0840\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0840\"/>\
+                       </MAPLOC>\
+                       <POINT uid=\"dest\" x=\"2549183.0\" y=\"6672570.0\">\
+                               <ARRIVAL date=\"20100416\" time=\"0843\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0843\"/>\
+                       </POINT>\
+               </WALK>\
+               <POINT uid=\"dest\" x=\"2549183.0\" y=\"6672570.0\">\
+                       <ARRIVAL date=\"20100416\" time=\"0843\"/>\
+                       <DEPARTURE date=\"20100416\" time=\"0843\"/>\
+               </POINT>\
+       </ROUTE>\
+       <ROUTE from=\"start\" to=\"dest\">\
+               <LENGTH time=\"25.633\" dist=\"8902.040\"/>\
+               <POINT uid=\"start\" x=\"2543560.0\" y=\"6672630.0\">\
+                       <ARRIVAL date=\"20100416\" time=\"0829\"/>\
+                       <DEPARTURE date=\"20100416\" time=\"0829\"/>\
+               </POINT>\
+               <WALK>\
+                       <LENGTH time=\"3.479\" dist=\"254.753\"/>\
+                       <POINT uid=\"start\" x=\"2543560.0\" y=\"6672630.0\">\
+                               <ARRIVAL date=\"20100416\" time=\"0829\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0829\"/>\
+                       </POINT>\
+                       <MAPLOC x=\"2543588.4\" y=\"6672573.9\" type=\"0\">\
+                               <ARRIVAL date=\"20100416\" time=\"0830\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0830\"/>\
+                               <NAME lang=\"1\" val=\"Haukilahdenkatu\"/>\
+                       </MAPLOC>\
+                       <MAPLOC x=\"2543529.4\" y=\"6672574.0\" type=\"0\">\
+                               <ARRIVAL date=\"20100416\" time=\"0831\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0831\"/>\
+                               <NAME lang=\"1\" val=\"Haukilahdenkatu\"/>\
+                       </MAPLOC>\
+                       <MAPLOC x=\"2543529.0\" y=\"6672569.9\" type=\"0\">\
+                               <ARRIVAL date=\"20100416\" time=\"0831\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0831\"/>\
+                       </MAPLOC>\
+                       <MAPLOC x=\"2543494.7\" y=\"6672557.4\" type=\"0\">\
+                               <ARRIVAL date=\"20100416\" time=\"0831\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0831\"/>\
+                               <NAME lang=\"1\" val=\"Toppelundintie\"/>\
+                       </MAPLOC>\
+                       <MAPLOC x=\"2543506.2\" y=\"6672490.4\" type=\"0\">\
+                               <ARRIVAL date=\"20100416\" time=\"0832\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0832\"/>\
+                               <NAME lang=\"1\" val=\"Toppelundintie\"/>\
+                       </MAPLOC>\
+                       <MAPLOC x=\"2543496.2\" y=\"6672492.1\" type=\"0\">\
+                               <ARRIVAL date=\"20100416\" time=\"0833\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0833\"/>\
+                               <NAME lang=\"1\" val=\"Toppelundintie\"/>\
+                       </MAPLOC>\
+                       <STOP code=\"6:2232220\" x=\"2543501.0\" y=\"6672486.0\" id=\"3375\">\
+                               <ARRIVAL date=\"20100416\" time=\"0833\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0833\"/>\
+                               <NAME lang=\"1\" val=\"Säynävätie\"/>\
+                               <NAME lang=\"2\" val=\"Idvägen\"/>\
+                       </STOP>\
+               </WALK>\
+               <LINE id=\"620\" code=\"2111  2\" type=\"5\" mobility=\"3\">\
+                       <LENGTH time=\"8.000\" dist=\"5225.092\"/>\
+                       <STOP code=\"6:2232220\" x=\"2543501.0\" y=\"6672486.0\" id=\"3375\" ord=\"12\">\
+                               <ARRIVAL date=\"20100416\" time=\"0833\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0833\"/>\
+                               <NAME lang=\"1\" val=\"Säynävätie\"/>\
+                               <NAME lang=\"2\" val=\"Idvägen\"/>\
+                       </STOP>\
+                       <STOP code=\"6:2232218\" x=\"2543666.0\" y=\"6672186.0\" id=\"3373\">\
+                               <ARRIVAL date=\"20100416\" time=\"0834\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0834\"/>\
+                               <NAME lang=\"1\" val=\"Mellstenintie\"/>\
+                               <NAME lang=\"2\" val=\"Mellstensvägen\"/>\
+                       </STOP>\
+                       <STOP code=\"6:2232216\" x=\"2543877.0\" y=\"6672218.0\" id=\"3371\">\
+                               <ARRIVAL date=\"20100416\" time=\"0834\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0834\"/>\
+                               <NAME lang=\"1\" val=\"Toppelund\"/>\
+                               <NAME lang=\"2\" val=\"Toppelund\"/>\
+                       </STOP>\
+                       <STOP code=\"6:2231232\" x=\"2544055.0\" y=\"6672304.0\" id=\"3353\">\
+                               <ARRIVAL date=\"20100416\" time=\"0835\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0835\"/>\
+                               <NAME lang=\"1\" val=\"Linnake\"/>\
+                               <NAME lang=\"2\" val=\"Fortet\"/>\
+                       </STOP>\
+                       <STOP code=\"6:2231230\" x=\"2544152.0\" y=\"6672559.0\" id=\"3351\">\
+                               <ARRIVAL date=\"20100416\" time=\"0836\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0836\"/>\
+                               <NAME lang=\"1\" val=\"Alalinnake\"/>\
+                               <NAME lang=\"2\" val=\"Nedre fortet\"/>\
+                       </STOP>\
+                       <STOP code=\"6:2231220\" x=\"2544059.0\" y=\"6672912.0\" id=\"3350\">\
+                               <ARRIVAL date=\"20100416\" time=\"0837\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0837\"/>\
+                               <NAME lang=\"1\" val=\"Westendinpolku\"/>\
+                               <NAME lang=\"2\" val=\"Westendstigen\"/>\
+                       </STOP>\
+                       <STOP code=\"6:2231218\" x=\"2544263.0\" y=\"6673139.0\" id=\"3348\">\
+                               <ARRIVAL date=\"20100416\" time=\"0838\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0838\"/>\
+                               <NAME lang=\"1\" val=\"Golfpolku\"/>\
+                               <NAME lang=\"2\" val=\"Golfstigen\"/>\
+                       </STOP>\
+                       <STOP code=\"6:2231212\" x=\"2544835.0\" y=\"6673222.0\" id=\"3343\">\
+                               <ARRIVAL date=\"20100416\" time=\"0839\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0839\"/>\
+                               <NAME lang=\"1\" val=\"Ankkurisaarentie\"/>\
+                               <NAME lang=\"2\" val=\"Ankarholmsvägen\"/>\
+                       </STOP>\
+                       <STOP code=\"6:2231211\" x=\"2544938.0\" y=\"6673277.0\" id=\"3342\">\
+                               <ARRIVAL date=\"20100416\" time=\"0839\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0839\"/>\
+                               <NAME lang=\"1\" val=\"Kuninkaansatama\"/>\
+                               <NAME lang=\"2\" val=\"Konungshamnen\"/>\
+                       </STOP>\
+                       <STOP code=\"6:2231201\" x=\"2546031.0\" y=\"6673305.0\" id=\"3332\">\
+                               <ARRIVAL date=\"20100416\" time=\"0840\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0840\"/>\
+                               <NAME lang=\"1\" val=\"Karhusaari\"/>\
+                               <NAME lang=\"2\" val=\"Björnholm\"/>\
+                       </STOP>\
+                       <STOP code=\"6:2232204\" x=\"2546939.0\" y=\"6672964.0\" id=\"3360\" ord=\"22\">\
+                               <ARRIVAL date=\"20100416\" time=\"0841\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0844\"/>\
+                               <NAME lang=\"1\" val=\"Hanasaari\"/>\
+                               <NAME lang=\"2\" val=\"Hanaholmen\"/>\
+                       </STOP>\
+               </LINE>\
+               <LINE id=\"592\" code=\"2102T 2\" type=\"5\" mobility=\"3\">\
+                       <LENGTH time=\"5.000\" dist=\"2926.431\"/>\
+                       <STOP code=\"6:2232204\" x=\"2546939.0\" y=\"6672964.0\" id=\"3360\" ord=\"10\">\
+                               <ARRIVAL date=\"20100416\" time=\"0841\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0844\"/>\
+                               <NAME lang=\"1\" val=\"Hanasaari\"/>\
+                               <NAME lang=\"2\" val=\"Hanaholmen\"/>\
+                       </STOP>\
+                       <STOP code=\"6:1310299\" x=\"2547953.0\" y=\"6672552.0\" id=\"1424\">\
+                               <ARRIVAL date=\"20100416\" time=\"0845\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0845\"/>\
+                               <NAME lang=\"1\" val=\"Katajaharju\"/>\
+                               <NAME lang=\"2\" val=\"Enåsen\"/>\
+                       </STOP>\
+                       <STOP code=\"6:1310225\" x=\"2548497.0\" y=\"6672477.0\" id=\"1411\">\
+                               <ARRIVAL date=\"20100416\" time=\"0846\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0846\"/>\
+                               <NAME lang=\"1\" val=\"Lahnalahdentie\"/>\
+                               <NAME lang=\"2\" val=\"Braxviksvägen\"/>\
+                       </STOP>\
+                       <STOP code=\"6:1310223\" x=\"2548836.0\" y=\"6672441.0\" id=\"1409\">\
+                               <ARRIVAL date=\"20100416\" time=\"0847\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0847\"/>\
+                               <NAME lang=\"1\" val=\"Lahnalahden puisto\"/>\
+                               <NAME lang=\"2\" val=\"Braxviksparken\"/>\
+                       </STOP>\
+                       <STOP code=\"6:1310204\" x=\"2549393.0\" y=\"6672438.0\" id=\"1405\" ord=\"14\">\
+                               <ARRIVAL date=\"20100416\" time=\"0849\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0849\"/>\
+                               <NAME lang=\"1\" val=\"Koillisväylä\"/>\
+                               <NAME lang=\"2\" val=\"Nordostpassagen\"/>\
+                       </STOP>\
+               </LINE>\
+               <WALK>\
+                       <LENGTH time=\"6.154\" dist=\"495.764\"/>\
+                       <STOP code=\"6:1310204\" x=\"2549393.0\" y=\"6672438.0\" id=\"1405\">\
+                               <ARRIVAL date=\"20100416\" time=\"0849\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0849\"/>\
+                               <NAME lang=\"1\" val=\"Koillisväylä\"/>\
+                               <NAME lang=\"2\" val=\"Nordostpassagen\"/>\
+                       </STOP>\
+                       <MAPLOC x=\"2549326.7\" y=\"6672446.7\" type=\"0\">\
+                               <ARRIVAL date=\"20100416\" time=\"0850\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0850\"/>\
+                               <NAME lang=\"1\" val=\"Koillisväylä\"/>\
+                       </MAPLOC>\
+                       <MAPLOC x=\"2549376.8\" y=\"6672603.7\" type=\"0\">\
+                               <ARRIVAL date=\"20100416\" time=\"0852\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0852\"/>\
+                       </MAPLOC>\
+                       <POINT uid=\"dest\" x=\"2549183.0\" y=\"6672570.0\">\
+                               <ARRIVAL date=\"20100416\" time=\"0855\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0855\"/>\
+                       </POINT>\
+               </WALK>\
+               <POINT uid=\"dest\" x=\"2549183.0\" y=\"6672570.0\">\
+                       <ARRIVAL date=\"20100416\" time=\"0855\"/>\
+                       <DEPARTURE date=\"20100416\" time=\"0855\"/>\
+               </POINT>\
+       </ROUTE>\
+       <ROUTE from=\"start\" to=\"dest\">\
+               <LENGTH time=\"33.510\" dist=\"11193.458\"/>\
+               <POINT uid=\"start\" x=\"2543560.0\" y=\"6672630.0\">\
+                       <ARRIVAL date=\"20100416\" time=\"0831\"/>\
+                       <DEPARTURE date=\"20100416\" time=\"0831\"/>\
+               </POINT>\
+               <WALK>\
+                       <LENGTH time=\"2.356\" dist=\"172.693\"/>\
+                       <POINT uid=\"start\" x=\"2543560.0\" y=\"6672630.0\">\
+                               <ARRIVAL date=\"20100416\" time=\"0831\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0831\"/>\
+                       </POINT>\
+                       <MAPLOC x=\"2543588.4\" y=\"6672573.9\" type=\"0\">\
+                               <ARRIVAL date=\"20100416\" time=\"0832\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0832\"/>\
+                               <NAME lang=\"1\" val=\"Haukilahdenkatu\"/>\
+                       </MAPLOC>\
+                       <MAPLOC x=\"2543529.4\" y=\"6672574.0\" type=\"0\">\
+                               <ARRIVAL date=\"20100416\" time=\"0833\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0833\"/>\
+                               <NAME lang=\"1\" val=\"Haukilahdenkatu\"/>\
+                       </MAPLOC>\
+                       <MAPLOC x=\"2543528.9\" y=\"6672567.9\" type=\"0\">\
+                               <ARRIVAL date=\"20100416\" time=\"0833\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0833\"/>\
+                               <NAME lang=\"1\" val=\"Toppelundintie\"/>\
+                       </MAPLOC>\
+                       <STOP code=\"6:2232219\" x=\"2543533.0\" y=\"6672532.0\" id=\"3374\">\
+                               <ARRIVAL date=\"20100416\" time=\"0834\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0834\"/>\
+                               <NAME lang=\"1\" val=\"Säynävätie\"/>\
+                               <NAME lang=\"2\" val=\"Idvägen\"/>\
+                       </STOP>\
+               </WALK>\
+               <LINE id=\"621\" code=\"2111T 1\" type=\"5\" mobility=\"3\">\
+                       <LENGTH time=\"6.000\" dist=\"3392.054\"/>\
+                       <STOP code=\"6:2232219\" x=\"2543533.0\" y=\"6672532.0\" id=\"3374\" ord=\"20\">\
+                               <ARRIVAL date=\"20100416\" time=\"0834\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0834\"/>\
+                               <NAME lang=\"1\" val=\"Säynävätie\"/>\
+                               <NAME lang=\"2\" val=\"Idvägen\"/>\
+                       </STOP>\
+                       <STOP code=\"6:2232236\" x=\"2543282.0\" y=\"6672594.0\" id=\"3390\">\
+                               <ARRIVAL date=\"20100416\" time=\"0835\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0835\"/>\
+                               <NAME lang=\"1\" val=\"Haukilahden keskus\"/>\
+                               <NAME lang=\"2\" val=\"Gäddvik centrum\"/>\
+                       </STOP>\
+                       <STOP code=\"6:2232221\" x=\"2543195.0\" y=\"6672532.0\" id=\"3376\">\
+                               <ARRIVAL date=\"20100416\" time=\"0835\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0835\"/>\
+                               <NAME lang=\"1\" val=\"Pattisten pelto\"/>\
+                               <NAME lang=\"2\" val=\"Battisåker\"/>\
+                       </STOP>\
+                       <STOP code=\"6:2232227\" x=\"2543123.0\" y=\"6672283.0\" id=\"3381\">\
+                               <ARRIVAL date=\"20100416\" time=\"0836\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0836\"/>\
+                               <NAME lang=\"1\" val=\"Haukitie\"/>\
+                               <NAME lang=\"2\" val=\"Gäddvägen\"/>\
+                       </STOP>\
+                       <STOP code=\"6:2232229\" x=\"2542938.0\" y=\"6672081.0\" id=\"3383\">\
+                               <ARRIVAL date=\"20100416\" time=\"0836\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0836\"/>\
+                               <NAME lang=\"1\" val=\"Haukiverkko\"/>\
+                               <NAME lang=\"2\" val=\"Gäddnätet\"/>\
+                       </STOP>\
+                       <STOP code=\"6:2232209\" x=\"2542708.0\" y=\"6672127.0\" id=\"3364\">\
+                               <ARRIVAL date=\"20100416\" time=\"0837\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0837\"/>\
+                               <NAME lang=\"1\" val=\"Hauenkita\"/>\
+                               <NAME lang=\"2\" val=\"Gäddgapet\"/>\
+                       </STOP>\
+                       <STOP code=\"6:2232211\" x=\"2542513.0\" y=\"6672237.0\" id=\"3366\">\
+                               <ARRIVAL date=\"20100416\" time=\"0837\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0837\"/>\
+                               <NAME lang=\"1\" val=\"Haukilahdenranta 25\"/>\
+                               <NAME lang=\"2\" val=\"Gäddviksstranden 25\"/>\
+                       </STOP>\
+                       <STOP code=\"6:2232212\" x=\"2542467.0\" y=\"6672399.0\" id=\"3367\">\
+                               <ARRIVAL date=\"20100416\" time=\"0838\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0838\"/>\
+                               <NAME lang=\"1\" val=\"Telamäentie\"/>\
+                               <NAME lang=\"2\" val=\"Kavelbackavägen\"/>\
+                       </STOP>\
+                       <STOP code=\"6:2232213\" x=\"2542470.0\" y=\"6672451.0\" id=\"3368\">\
+                               <ARRIVAL date=\"20100416\" time=\"0838\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0838\"/>\
+                               <NAME lang=\"1\" val=\"Telamäentie\"/>\
+                               <NAME lang=\"2\" val=\"Kavelbackavägen\"/>\
+                       </STOP>\
+                       <STOP code=\"6:2232239\" x=\"2542955.0\" y=\"6672526.0\" id=\"3393\">\
+                               <ARRIVAL date=\"20100416\" time=\"0839\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0839\"/>\
+                               <NAME lang=\"1\" val=\"Hauenkallio\"/>\
+                               <NAME lang=\"2\" val=\"Gäddberget\"/>\
+                       </STOP>\
+                       <STOP code=\"6:2232223\" x=\"2543096.0\" y=\"6672983.0\" id=\"3378\" ord=\"30\">\
+                               <ARRIVAL date=\"20100416\" time=\"0840\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0843\"/>\
+                               <NAME lang=\"1\" val=\"Kuhatie\"/>\
+                               <NAME lang=\"2\" val=\"Gösvägen\"/>\
+                       </STOP>\
+               </LINE>\
+               <LINE id=\"624\" code=\"2112  2\" type=\"5\" mobility=\"3\">\
+                       <LENGTH time=\"5.000\" dist=\"4206.516\"/>\
+                       <STOP code=\"6:2232223\" x=\"2543096.0\" y=\"6672983.0\" id=\"3378\" ord=\"12\">\
+                               <ARRIVAL date=\"20100416\" time=\"0840\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0843\"/>\
+                               <NAME lang=\"1\" val=\"Kuhatie\"/>\
+                               <NAME lang=\"2\" val=\"Gösvägen\"/>\
+                       </STOP>\
+                       <STOP code=\"6:2231202\" x=\"2544838.0\" y=\"6673305.0\" id=\"3333\">\
+                               <ARRIVAL date=\"20100416\" time=\"0846\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0846\"/>\
+                               <NAME lang=\"1\" val=\"Westendinasema\"/>\
+                               <NAME lang=\"2\" val=\"Westendstationen\"/>\
+                       </STOP>\
+                       <STOP code=\"6:2231201\" x=\"2546031.0\" y=\"6673305.0\" id=\"3332\">\
+                               <ARRIVAL date=\"20100416\" time=\"0847\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0847\"/>\
+                               <NAME lang=\"1\" val=\"Karhusaari\"/>\
+                               <NAME lang=\"2\" val=\"Björnholm\"/>\
+                       </STOP>\
+                       <STOP code=\"6:2232204\" x=\"2546939.0\" y=\"6672964.0\" id=\"3360\" ord=\"15\">\
+                               <ARRIVAL date=\"20100416\" time=\"0848\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0854\"/>\
+                               <NAME lang=\"1\" val=\"Hanasaari\"/>\
+                               <NAME lang=\"2\" val=\"Hanaholmen\"/>\
+                       </STOP>\
+               </LINE>\
+               <LINE id=\"592\" code=\"2102T 2\" type=\"5\" mobility=\"3\">\
+                       <LENGTH time=\"5.000\" dist=\"2926.431\"/>\
+                       <STOP code=\"6:2232204\" x=\"2546939.0\" y=\"6672964.0\" id=\"3360\" ord=\"10\">\
+                               <ARRIVAL date=\"20100416\" time=\"0848\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0854\"/>\
+                               <NAME lang=\"1\" val=\"Hanasaari\"/>\
+                               <NAME lang=\"2\" val=\"Hanaholmen\"/>\
+                       </STOP>\
+                       <STOP code=\"6:1310299\" x=\"2547953.0\" y=\"6672552.0\" id=\"1424\">\
+                               <ARRIVAL date=\"20100416\" time=\"0855\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0855\"/>\
+                               <NAME lang=\"1\" val=\"Katajaharju\"/>\
+                               <NAME lang=\"2\" val=\"Enåsen\"/>\
+                       </STOP>\
+                       <STOP code=\"6:1310225\" x=\"2548497.0\" y=\"6672477.0\" id=\"1411\">\
+                               <ARRIVAL date=\"20100416\" time=\"0856\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0856\"/>\
+                               <NAME lang=\"1\" val=\"Lahnalahdentie\"/>\
+                               <NAME lang=\"2\" val=\"Braxviksvägen\"/>\
+                       </STOP>\
+                       <STOP code=\"6:1310223\" x=\"2548836.0\" y=\"6672441.0\" id=\"1409\">\
+                               <ARRIVAL date=\"20100416\" time=\"0857\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0857\"/>\
+                               <NAME lang=\"1\" val=\"Lahnalahden puisto\"/>\
+                               <NAME lang=\"2\" val=\"Braxviksparken\"/>\
+                       </STOP>\
+                       <STOP code=\"6:1310204\" x=\"2549393.0\" y=\"6672438.0\" id=\"1405\" ord=\"14\">\
+                               <ARRIVAL date=\"20100416\" time=\"0859\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0859\"/>\
+                               <NAME lang=\"1\" val=\"Koillisväylä\"/>\
+                               <NAME lang=\"2\" val=\"Nordostpassagen\"/>\
+                       </STOP>\
+               </LINE>\
+               <WALK>\
+                       <LENGTH time=\"6.154\" dist=\"495.764\"/>\
+                       <STOP code=\"6:1310204\" x=\"2549393.0\" y=\"6672438.0\" id=\"1405\">\
+                               <ARRIVAL date=\"20100416\" time=\"0859\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0859\"/>\
+                               <NAME lang=\"1\" val=\"Koillisväylä\"/>\
+                               <NAME lang=\"2\" val=\"Nordostpassagen\"/>\
+                       </STOP>\
+                       <MAPLOC x=\"2549326.7\" y=\"6672446.7\" type=\"0\">\
+                               <ARRIVAL date=\"20100416\" time=\"0900\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0900\"/>\
+                               <NAME lang=\"1\" val=\"Koillisväylä\"/>\
+                       </MAPLOC>\
+                       <MAPLOC x=\"2549376.8\" y=\"6672603.7\" type=\"0\">\
+                               <ARRIVAL date=\"20100416\" time=\"0902\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0902\"/>\
+                       </MAPLOC>\
+                       <POINT uid=\"dest\" x=\"2549183.0\" y=\"6672570.0\">\
+                               <ARRIVAL date=\"20100416\" time=\"0905\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0905\"/>\
+                       </POINT>\
+               </WALK>\
+               <POINT uid=\"dest\" x=\"2549183.0\" y=\"6672570.0\">\
+                       <ARRIVAL date=\"20100416\" time=\"0905\"/>\
+                       <DEPARTURE date=\"20100416\" time=\"0905\"/>\
+               </POINT>\
+       </ROUTE>\
+       <ROUTE from=\"start\" to=\"dest\">\
+               <LENGTH time=\"29.633\" dist=\"8902.040\"/>\
+               <POINT uid=\"start\" x=\"2543560.0\" y=\"6672630.0\">\
+                       <ARRIVAL date=\"20100416\" time=\"0846\"/>\
+                       <DEPARTURE date=\"20100416\" time=\"0846\"/>\
+               </POINT>\
+               <WALK>\
+                       <LENGTH time=\"3.479\" dist=\"254.753\"/>\
+                       <POINT uid=\"start\" x=\"2543560.0\" y=\"6672630.0\">\
+                               <ARRIVAL date=\"20100416\" time=\"0846\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0846\"/>\
+                       </POINT>\
+                       <MAPLOC x=\"2543588.4\" y=\"6672573.9\" type=\"0\">\
+                               <ARRIVAL date=\"20100416\" time=\"0847\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0847\"/>\
+                               <NAME lang=\"1\" val=\"Haukilahdenkatu\"/>\
+                       </MAPLOC>\
+                       <MAPLOC x=\"2543529.4\" y=\"6672574.0\" type=\"0\">\
+                               <ARRIVAL date=\"20100416\" time=\"0848\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0848\"/>\
+                               <NAME lang=\"1\" val=\"Haukilahdenkatu\"/>\
+                       </MAPLOC>\
+                       <MAPLOC x=\"2543529.0\" y=\"6672569.9\" type=\"0\">\
+                               <ARRIVAL date=\"20100416\" time=\"0848\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0848\"/>\
+                       </MAPLOC>\
+                       <MAPLOC x=\"2543494.7\" y=\"6672557.4\" type=\"0\">\
+                               <ARRIVAL date=\"20100416\" time=\"0848\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0848\"/>\
+                               <NAME lang=\"1\" val=\"Toppelundintie\"/>\
+                       </MAPLOC>\
+                       <MAPLOC x=\"2543506.2\" y=\"6672490.4\" type=\"0\">\
+                               <ARRIVAL date=\"20100416\" time=\"0849\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0849\"/>\
+                               <NAME lang=\"1\" val=\"Toppelundintie\"/>\
+                       </MAPLOC>\
+                       <MAPLOC x=\"2543496.2\" y=\"6672492.1\" type=\"0\">\
+                               <ARRIVAL date=\"20100416\" time=\"0850\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0850\"/>\
+                               <NAME lang=\"1\" val=\"Toppelundintie\"/>\
+                       </MAPLOC>\
+                       <STOP code=\"6:2232220\" x=\"2543501.0\" y=\"6672486.0\" id=\"3375\">\
+                               <ARRIVAL date=\"20100416\" time=\"0850\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0850\"/>\
+                               <NAME lang=\"1\" val=\"Säynävätie\"/>\
+                               <NAME lang=\"2\" val=\"Idvägen\"/>\
+                       </STOP>\
+               </WALK>\
+               <LINE id=\"620\" code=\"2111  2\" type=\"5\" mobility=\"3\">\
+                       <LENGTH time=\"8.000\" dist=\"5225.092\"/>\
+                       <STOP code=\"6:2232220\" x=\"2543501.0\" y=\"6672486.0\" id=\"3375\" ord=\"12\">\
+                               <ARRIVAL date=\"20100416\" time=\"0850\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0850\"/>\
+                               <NAME lang=\"1\" val=\"Säynävätie\"/>\
+                               <NAME lang=\"2\" val=\"Idvägen\"/>\
+                       </STOP>\
+                       <STOP code=\"6:2232218\" x=\"2543666.0\" y=\"6672186.0\" id=\"3373\">\
+                               <ARRIVAL date=\"20100416\" time=\"0851\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0851\"/>\
+                               <NAME lang=\"1\" val=\"Mellstenintie\"/>\
+                               <NAME lang=\"2\" val=\"Mellstensvägen\"/>\
+                       </STOP>\
+                       <STOP code=\"6:2232216\" x=\"2543877.0\" y=\"6672218.0\" id=\"3371\">\
+                               <ARRIVAL date=\"20100416\" time=\"0851\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0851\"/>\
+                               <NAME lang=\"1\" val=\"Toppelund\"/>\
+                               <NAME lang=\"2\" val=\"Toppelund\"/>\
+                       </STOP>\
+                       <STOP code=\"6:2231232\" x=\"2544055.0\" y=\"6672304.0\" id=\"3353\">\
+                               <ARRIVAL date=\"20100416\" time=\"0852\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0852\"/>\
+                               <NAME lang=\"1\" val=\"Linnake\"/>\
+                               <NAME lang=\"2\" val=\"Fortet\"/>\
+                       </STOP>\
+                       <STOP code=\"6:2231230\" x=\"2544152.0\" y=\"6672559.0\" id=\"3351\">\
+                               <ARRIVAL date=\"20100416\" time=\"0853\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0853\"/>\
+                               <NAME lang=\"1\" val=\"Alalinnake\"/>\
+                               <NAME lang=\"2\" val=\"Nedre fortet\"/>\
+                       </STOP>\
+                       <STOP code=\"6:2231220\" x=\"2544059.0\" y=\"6672912.0\" id=\"3350\">\
+                               <ARRIVAL date=\"20100416\" time=\"0854\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0854\"/>\
+                               <NAME lang=\"1\" val=\"Westendinpolku\"/>\
+                               <NAME lang=\"2\" val=\"Westendstigen\"/>\
+                       </STOP>\
+                       <STOP code=\"6:2231218\" x=\"2544263.0\" y=\"6673139.0\" id=\"3348\">\
+                               <ARRIVAL date=\"20100416\" time=\"0855\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0855\"/>\
+                               <NAME lang=\"1\" val=\"Golfpolku\"/>\
+                               <NAME lang=\"2\" val=\"Golfstigen\"/>\
+                       </STOP>\
+                       <STOP code=\"6:2231212\" x=\"2544835.0\" y=\"6673222.0\" id=\"3343\">\
+                               <ARRIVAL date=\"20100416\" time=\"0856\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0856\"/>\
+                               <NAME lang=\"1\" val=\"Ankkurisaarentie\"/>\
+                               <NAME lang=\"2\" val=\"Ankarholmsvägen\"/>\
+                       </STOP>\
+                       <STOP code=\"6:2231211\" x=\"2544938.0\" y=\"6673277.0\" id=\"3342\">\
+                               <ARRIVAL date=\"20100416\" time=\"0856\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0856\"/>\
+                               <NAME lang=\"1\" val=\"Kuninkaansatama\"/>\
+                               <NAME lang=\"2\" val=\"Konungshamnen\"/>\
+                       </STOP>\
+                       <STOP code=\"6:2231201\" x=\"2546031.0\" y=\"6673305.0\" id=\"3332\">\
+                               <ARRIVAL date=\"20100416\" time=\"0857\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0857\"/>\
+                               <NAME lang=\"1\" val=\"Karhusaari\"/>\
+                               <NAME lang=\"2\" val=\"Björnholm\"/>\
+                       </STOP>\
+                       <STOP code=\"6:2232204\" x=\"2546939.0\" y=\"6672964.0\" id=\"3360\" ord=\"22\">\
+                               <ARRIVAL date=\"20100416\" time=\"0858\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0905\"/>\
+                               <NAME lang=\"1\" val=\"Hanasaari\"/>\
+                               <NAME lang=\"2\" val=\"Hanaholmen\"/>\
+                       </STOP>\
+               </LINE>\
+               <LINE id=\"592\" code=\"2102T 2\" type=\"5\" mobility=\"3\">\
+                       <LENGTH time=\"5.000\" dist=\"2926.431\"/>\
+                       <STOP code=\"6:2232204\" x=\"2546939.0\" y=\"6672964.0\" id=\"3360\" ord=\"10\">\
+                               <ARRIVAL date=\"20100416\" time=\"0858\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0905\"/>\
+                               <NAME lang=\"1\" val=\"Hanasaari\"/>\
+                               <NAME lang=\"2\" val=\"Hanaholmen\"/>\
+                       </STOP>\
+                       <STOP code=\"6:1310299\" x=\"2547953.0\" y=\"6672552.0\" id=\"1424\">\
+                               <ARRIVAL date=\"20100416\" time=\"0906\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0906\"/>\
+                               <NAME lang=\"1\" val=\"Katajaharju\"/>\
+                               <NAME lang=\"2\" val=\"Enåsen\"/>\
+                       </STOP>\
+                       <STOP code=\"6:1310225\" x=\"2548497.0\" y=\"6672477.0\" id=\"1411\">\
+                               <ARRIVAL date=\"20100416\" time=\"0907\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0907\"/>\
+                               <NAME lang=\"1\" val=\"Lahnalahdentie\"/>\
+                               <NAME lang=\"2\" val=\"Braxviksvägen\"/>\
+                       </STOP>\
+                       <STOP code=\"6:1310223\" x=\"2548836.0\" y=\"6672441.0\" id=\"1409\">\
+                               <ARRIVAL date=\"20100416\" time=\"0908\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0908\"/>\
+                               <NAME lang=\"1\" val=\"Lahnalahden puisto\"/>\
+                               <NAME lang=\"2\" val=\"Braxviksparken\"/>\
+                       </STOP>\
+                       <STOP code=\"6:1310204\" x=\"2549393.0\" y=\"6672438.0\" id=\"1405\" ord=\"14\">\
+                               <ARRIVAL date=\"20100416\" time=\"0910\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0910\"/>\
+                               <NAME lang=\"1\" val=\"Koillisväylä\"/>\
+                               <NAME lang=\"2\" val=\"Nordostpassagen\"/>\
+                       </STOP>\
+               </LINE>\
+               <WALK>\
+                       <LENGTH time=\"6.154\" dist=\"495.764\"/>\
+                       <STOP code=\"6:1310204\" x=\"2549393.0\" y=\"6672438.0\" id=\"1405\">\
+                               <ARRIVAL date=\"20100416\" time=\"0910\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0910\"/>\
+                               <NAME lang=\"1\" val=\"Koillisväylä\"/>\
+                               <NAME lang=\"2\" val=\"Nordostpassagen\"/>\
+                       </STOP>\
+                       <MAPLOC x=\"2549326.7\" y=\"6672446.7\" type=\"0\">\
+                               <ARRIVAL date=\"20100416\" time=\"0911\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0911\"/>\
+                               <NAME lang=\"1\" val=\"Koillisväylä\"/>\
+                       </MAPLOC>\
+                       <MAPLOC x=\"2549376.8\" y=\"6672603.7\" type=\"0\">\
+                               <ARRIVAL date=\"20100416\" time=\"0913\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0913\"/>\
+                       </MAPLOC>\
+                       <POINT uid=\"dest\" x=\"2549183.0\" y=\"6672570.0\">\
+                               <ARRIVAL date=\"20100416\" time=\"0916\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0916\"/>\
+                       </POINT>\
+               </WALK>\
+               <POINT uid=\"dest\" x=\"2549183.0\" y=\"6672570.0\">\
+                       <ARRIVAL date=\"20100416\" time=\"0916\"/>\
+                       <DEPARTURE date=\"20100416\" time=\"0916\"/>\
+               </POINT>\
+       </ROUTE>\
+       <ROUTE from=\"start\" to=\"dest\">\
+               <LENGTH time=\"29.633\" dist=\"8902.040\"/>\
+               <POINT uid=\"start\" x=\"2543560.0\" y=\"6672630.0\">\
+                       <ARRIVAL date=\"20100416\" time=\"0903\"/>\
+                       <DEPARTURE date=\"20100416\" time=\"0903\"/>\
+               </POINT>\
+               <WALK>\
+                       <LENGTH time=\"3.479\" dist=\"254.753\"/>\
+                       <POINT uid=\"start\" x=\"2543560.0\" y=\"6672630.0\">\
+                               <ARRIVAL date=\"20100416\" time=\"0903\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0903\"/>\
+                       </POINT>\
+                       <MAPLOC x=\"2543588.4\" y=\"6672573.9\" type=\"0\">\
+                               <ARRIVAL date=\"20100416\" time=\"0904\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0904\"/>\
+                               <NAME lang=\"1\" val=\"Haukilahdenkatu\"/>\
+                       </MAPLOC>\
+                       <MAPLOC x=\"2543529.4\" y=\"6672574.0\" type=\"0\">\
+                               <ARRIVAL date=\"20100416\" time=\"0905\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0905\"/>\
+                               <NAME lang=\"1\" val=\"Haukilahdenkatu\"/>\
+                       </MAPLOC>\
+                       <MAPLOC x=\"2543529.0\" y=\"6672569.9\" type=\"0\">\
+                               <ARRIVAL date=\"20100416\" time=\"0905\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0905\"/>\
+                       </MAPLOC>\
+                       <MAPLOC x=\"2543494.7\" y=\"6672557.4\" type=\"0\">\
+                               <ARRIVAL date=\"20100416\" time=\"0905\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0905\"/>\
+                               <NAME lang=\"1\" val=\"Toppelundintie\"/>\
+                       </MAPLOC>\
+                       <MAPLOC x=\"2543506.2\" y=\"6672490.4\" type=\"0\">\
+                               <ARRIVAL date=\"20100416\" time=\"0906\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0906\"/>\
+                               <NAME lang=\"1\" val=\"Toppelundintie\"/>\
+                       </MAPLOC>\
+                       <MAPLOC x=\"2543496.2\" y=\"6672492.1\" type=\"0\">\
+                               <ARRIVAL date=\"20100416\" time=\"0907\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0907\"/>\
+                               <NAME lang=\"1\" val=\"Toppelundintie\"/>\
+                       </MAPLOC>\
+                       <STOP code=\"6:2232220\" x=\"2543501.0\" y=\"6672486.0\" id=\"3375\">\
+                               <ARRIVAL date=\"20100416\" time=\"0907\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0907\"/>\
+                               <NAME lang=\"1\" val=\"Säynävätie\"/>\
+                               <NAME lang=\"2\" val=\"Idvägen\"/>\
+                       </STOP>\
+               </WALK>\
+               <LINE id=\"620\" code=\"2111  2\" type=\"5\" mobility=\"3\">\
+                       <LENGTH time=\"8.000\" dist=\"5225.092\"/>\
+                       <STOP code=\"6:2232220\" x=\"2543501.0\" y=\"6672486.0\" id=\"3375\" ord=\"12\">\
+                               <ARRIVAL date=\"20100416\" time=\"0907\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0907\"/>\
+                               <NAME lang=\"1\" val=\"Säynävätie\"/>\
+                               <NAME lang=\"2\" val=\"Idvägen\"/>\
+                       </STOP>\
+                       <STOP code=\"6:2232218\" x=\"2543666.0\" y=\"6672186.0\" id=\"3373\">\
+                               <ARRIVAL date=\"20100416\" time=\"0908\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0908\"/>\
+                               <NAME lang=\"1\" val=\"Mellstenintie\"/>\
+                               <NAME lang=\"2\" val=\"Mellstensvägen\"/>\
+                       </STOP>\
+                       <STOP code=\"6:2232216\" x=\"2543877.0\" y=\"6672218.0\" id=\"3371\">\
+                               <ARRIVAL date=\"20100416\" time=\"0909\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0909\"/>\
+                               <NAME lang=\"1\" val=\"Toppelund\"/>\
+                               <NAME lang=\"2\" val=\"Toppelund\"/>\
+                       </STOP>\
+                       <STOP code=\"6:2231232\" x=\"2544055.0\" y=\"6672304.0\" id=\"3353\">\
+                               <ARRIVAL date=\"20100416\" time=\"0909\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0909\"/>\
+                               <NAME lang=\"1\" val=\"Linnake\"/>\
+                               <NAME lang=\"2\" val=\"Fortet\"/>\
+                       </STOP>\
+                       <STOP code=\"6:2231230\" x=\"2544152.0\" y=\"6672559.0\" id=\"3351\">\
+                               <ARRIVAL date=\"20100416\" time=\"0910\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0910\"/>\
+                               <NAME lang=\"1\" val=\"Alalinnake\"/>\
+                               <NAME lang=\"2\" val=\"Nedre fortet\"/>\
+                       </STOP>\
+                       <STOP code=\"6:2231220\" x=\"2544059.0\" y=\"6672912.0\" id=\"3350\">\
+                               <ARRIVAL date=\"20100416\" time=\"0911\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0911\"/>\
+                               <NAME lang=\"1\" val=\"Westendinpolku\"/>\
+                               <NAME lang=\"2\" val=\"Westendstigen\"/>\
+                       </STOP>\
+                       <STOP code=\"6:2231218\" x=\"2544263.0\" y=\"6673139.0\" id=\"3348\">\
+                               <ARRIVAL date=\"20100416\" time=\"0912\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0912\"/>\
+                               <NAME lang=\"1\" val=\"Golfpolku\"/>\
+                               <NAME lang=\"2\" val=\"Golfstigen\"/>\
+                       </STOP>\
+                       <STOP code=\"6:2231212\" x=\"2544835.0\" y=\"6673222.0\" id=\"3343\">\
+                               <ARRIVAL date=\"20100416\" time=\"0913\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0913\"/>\
+                               <NAME lang=\"1\" val=\"Ankkurisaarentie\"/>\
+                               <NAME lang=\"2\" val=\"Ankarholmsvägen\"/>\
+                       </STOP>\
+                       <STOP code=\"6:2231211\" x=\"2544938.0\" y=\"6673277.0\" id=\"3342\">\
+                               <ARRIVAL date=\"20100416\" time=\"0913\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0913\"/>\
+                               <NAME lang=\"1\" val=\"Kuninkaansatama\"/>\
+                               <NAME lang=\"2\" val=\"Konungshamnen\"/>\
+                       </STOP>\
+                       <STOP code=\"6:2231201\" x=\"2546031.0\" y=\"6673305.0\" id=\"3332\">\
+                               <ARRIVAL date=\"20100416\" time=\"0914\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0914\"/>\
+                               <NAME lang=\"1\" val=\"Karhusaari\"/>\
+                               <NAME lang=\"2\" val=\"Björnholm\"/>\
+                       </STOP>\
+                       <STOP code=\"6:2232204\" x=\"2546939.0\" y=\"6672964.0\" id=\"3360\" ord=\"22\">\
+                               <ARRIVAL date=\"20100416\" time=\"0915\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0922\"/>\
+                               <NAME lang=\"1\" val=\"Hanasaari\"/>\
+                               <NAME lang=\"2\" val=\"Hanaholmen\"/>\
+                       </STOP>\
+               </LINE>\
+               <LINE id=\"696\" code=\"2160T 2\" type=\"5\" mobility=\"3\">\
+                       <LENGTH time=\"5.000\" dist=\"2926.431\"/>\
+                       <STOP code=\"6:2232204\" x=\"2546939.0\" y=\"6672964.0\" id=\"3360\" ord=\"20\">\
+                               <ARRIVAL date=\"20100416\" time=\"0915\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0922\"/>\
+                               <NAME lang=\"1\" val=\"Hanasaari\"/>\
+                               <NAME lang=\"2\" val=\"Hanaholmen\"/>\
+                       </STOP>\
+                       <STOP code=\"6:1310299\" x=\"2547953.0\" y=\"6672552.0\" id=\"1424\">\
+                               <ARRIVAL date=\"20100416\" time=\"0923\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0923\"/>\
+                               <NAME lang=\"1\" val=\"Katajaharju\"/>\
+                               <NAME lang=\"2\" val=\"Enåsen\"/>\
+                       </STOP>\
+                       <STOP code=\"6:1310225\" x=\"2548497.0\" y=\"6672477.0\" id=\"1411\">\
+                               <ARRIVAL date=\"20100416\" time=\"0925\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0925\"/>\
+                               <NAME lang=\"1\" val=\"Lahnalahdentie\"/>\
+                               <NAME lang=\"2\" val=\"Braxviksvägen\"/>\
+                       </STOP>\
+                       <STOP code=\"6:1310223\" x=\"2548836.0\" y=\"6672441.0\" id=\"1409\">\
+                               <ARRIVAL date=\"20100416\" time=\"0926\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0926\"/>\
+                               <NAME lang=\"1\" val=\"Lahnalahden puisto\"/>\
+                               <NAME lang=\"2\" val=\"Braxviksparken\"/>\
+                       </STOP>\
+                       <STOP code=\"6:1310204\" x=\"2549393.0\" y=\"6672438.0\" id=\"1405\" ord=\"24\">\
+                               <ARRIVAL date=\"20100416\" time=\"0927\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0927\"/>\
+                               <NAME lang=\"1\" val=\"Koillisväylä\"/>\
+                               <NAME lang=\"2\" val=\"Nordostpassagen\"/>\
+                       </STOP>\
+               </LINE>\
+               <WALK>\
+                       <LENGTH time=\"6.154\" dist=\"495.764\"/>\
+                       <STOP code=\"6:1310204\" x=\"2549393.0\" y=\"6672438.0\" id=\"1405\">\
+                               <ARRIVAL date=\"20100416\" time=\"0927\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0927\"/>\
+                               <NAME lang=\"1\" val=\"Koillisväylä\"/>\
+                               <NAME lang=\"2\" val=\"Nordostpassagen\"/>\
+                       </STOP>\
+                       <MAPLOC x=\"2549326.7\" y=\"6672446.7\" type=\"0\">\
+                               <ARRIVAL date=\"20100416\" time=\"0928\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0928\"/>\
+                               <NAME lang=\"1\" val=\"Koillisväylä\"/>\
+                       </MAPLOC>\
+                       <MAPLOC x=\"2549376.8\" y=\"6672603.7\" type=\"0\">\
+                               <ARRIVAL date=\"20100416\" time=\"0930\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0930\"/>\
+                       </MAPLOC>\
+                       <POINT uid=\"dest\" x=\"2549183.0\" y=\"6672570.0\">\
+                               <ARRIVAL date=\"20100416\" time=\"0933\"/>\
+                               <DEPARTURE date=\"20100416\" time=\"0933\"/>\
+                       </POINT>\
+               </WALK>\
+               <POINT uid=\"dest\" x=\"2549183.0\" y=\"6672570.0\">\
+                       <ARRIVAL date=\"20100416\" time=\"0933\"/>\
+                       <DEPARTURE date=\"20100416\" time=\"0933\"/>\
+               </POINT>\
+       </ROUTE>\
+</MTRXML>\
+"
+};
+
diff --git a/tests/ut_template/.gitignore b/tests/ut_template/.gitignore
deleted file mode 100644 (file)
index 3e300fc..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-Makefile
-ut_template
diff --git a/tests/ut_template/ut_template.cpp b/tests/ut_template/ut_template.cpp
deleted file mode 100644 (file)
index 58afcbb..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-#include "ut_template.h"
-#include <QtTest/QtTest>
-
-void Ut_template::initTestCase()
-{
-
-}
-
-void Ut_template::cleanupTestCase()
-{
-
-}
-
-void Ut_template::init()
-{
-
-}
-
-void Ut_template::cleanup()
-{
-
-}
-
-QTEST_MAIN(Ut_template)
diff --git a/tests/ut_template/ut_template.h b/tests/ut_template/ut_template.h
deleted file mode 100644 (file)
index 91a2b47..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef UT_TEMPLATE_H
-#define UT_TEMPLATE_H
-
-#include <QObject>
-
-class Ut_template : public QObject
-{
-    Q_OBJECT
-
-private slots:
-    // Will be called before the first testfunction is executed.
-    void initTestCase();
-    // Will be called after the last testfunction was executed.
-    void cleanupTestCase();
-    // Will be called before each testfunction is executed.
-    void init();
-    // Will be called after every testfunction.
-    void cleanup();
-
-};
-
-#endif // UT_TEMPLATE_H
diff --git a/tests/ut_template/ut_template.pro b/tests/ut_template/ut_template.pro
deleted file mode 100644 (file)
index d352622..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-include(../ut_common.pri)
-
-TARGET = ut_template
-QT += testlib
-SOURCES += ut_template.cpp \
-    $$SRCDIR/template.cpp
-HEADERS += ut_template.h \
-    $$SRCDIR/template.h
-
-include(../check.pri)
diff --git a/tests/util/stlhelpers.h b/tests/util/stlhelpers.h
deleted file mode 100644 (file)
index da2aac3..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-#ifndef STLHELPERS_H
-#define STLHELPERS_H
-
-#include <ostream>
-#include "kkjgridcoordinate.h"
-#include <QGeoCoordinate>
-
-std::ostream& operator<<(std::ostream& stream, const KKJGridCoordinate &val)
-{
-    stream << val.northing() << ", " << val.easting();
-    return stream;
-}
-
-std::ostream& operator<<(std::ostream& stream, const QTM_NAMESPACE::QGeoCoordinate &val)
-{
-    stream << val.latitude() << ", " << val.longitude();
-    return stream;
-}
-
-#endif // STLHELPERS_H
diff --git a/tests/util/stlhelpers4qt.h b/tests/util/stlhelpers4qt.h
deleted file mode 100644 (file)
index b3c297f..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-#ifndef STLHELPERS4QT_H
-#define STLHELPERS4QT_H
-
-#include <ostream>
-#include <QList>
-#include <QVariant>
-
-/**
- * Outputs the contents of a QList<QVariant> container to a std::ostream object.
- * @param stream the stream to output to
- * @param val the container that is put to the stream
- * @return the same stream that was passed as the parameter @a stream
- */
-std::ostream& operator<<(std::ostream& stream, const QList<QVariant> &val)
-{
-    bool first = true;
-
-    foreach (const QVariant &v, val) {
-        if (!first) {
-            stream << ", ";
-        }
-        stream << v.toString().toStdString();
-        first = false;
-    }
-    return stream;
-}
-
-#endif // STLHELPERS4QT_H
diff --git a/zouba.pro b/zouba.pro
new file mode 100644 (file)
index 0000000..d978a4c
--- /dev/null
+++ b/zouba.pro
@@ -0,0 +1,78 @@
+TARGET      = zouba
+SOURCES += \
+    main.cpp \
+    route.cpp \
+    route_p.cpp \
+    uicontroller.cpp \
+    location.cpp \
+    location_p.cpp \
+    locations.cpp \
+    gpscontroller.cpp \
+    gpscontroller_p.cpp \
+    ui.cpp \
+
+HEADERS += \
+    route.h \
+    route_p.h \
+    uicontroller.h \
+    location.h \
+    location_p.h \
+    locations.h \
+    ytv.h \
+    gpscontroller.h \
+    gpscontroller_p.h \
+    ui.h \
+
+FORMS       +=
+LEXSOURCES  += #LEXS#
+YACCSOURCES += #YACCS#
+
+INCLUDEPATH += include
+DEPENDSPATH += INCLUDEPATH
+#QMAKE_LIBDIR_QT = qt4-maemo5/lib
+#QMAKE_INCDIR_QT = qt4-maemo5/include
+LIBS        += -Llib -lQtBearer -lQtLocation
+DEFINES     += Q_WS_MAEMO_5
+
+# All generated files goes same directory
+OBJECTS_DIR = build
+MOC_DIR     = build
+UI_DIR      = build
+
+DESTDIR     = build
+TEMPLATE    = app
+DEPENDPATH  +=
+VPATH       += src uis
+CONFIG      -=
+CONFIG      += debug qt mobility
+MOBILITY    += location bearer
+QT=core gui network maemo5
+
+INSTALLS    += target
+target.path  = /usr/bin/
+
+INSTALLS    += desktop
+desktop.path  = /usr/share/applications/hildon
+desktop.files  = data/zouba.desktop
+
+INSTALLS    += service
+service.path  = /usr/share/dbus-1/services
+service.files  = data/zouba.service
+
+INSTALLS    += icon64
+icon64.path  = /usr/share/icons/hicolor/64x64/apps
+icon64.files  = data/64x64/zouba.png
+
+#
+# Targets for debian source and binary package creation
+#
+debian-src.commands = dpkg-buildpackage -S -r -us -uc -d
+debian-bin.commands = dpkg-buildpackage -b -r -uc -d
+debian-all.depends = debian-src debian-bin
+
+#
+# Clean all but Makefile
+#
+compiler_clean.commands = -$(DEL_FILE) $(TARGET)
+
+QMAKE_EXTRA_TARGETS += debian-all debian-src debian-bin compiler_clean
diff --git a/zouba/build-stamp b/zouba/build-stamp
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/zouba/configure-stamp b/zouba/configure-stamp
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/zouba/data/48x48/zouba.png b/zouba/data/48x48/zouba.png
deleted file mode 100644 (file)
index 4bf6300..0000000
Binary files a/zouba/data/48x48/zouba.png and /dev/null differ
diff --git a/zouba/data/64x64/zouba.png b/zouba/data/64x64/zouba.png
deleted file mode 100644 (file)
index 3c83f3e..0000000
Binary files a/zouba/data/64x64/zouba.png and /dev/null differ
diff --git a/zouba/data/zouba.desktop b/zouba/data/zouba.desktop
deleted file mode 100644 (file)
index 57545da..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-[Desktop Entry]
-Encoding=UTF-8
-Version=0.1
-Type=Application
-Name=ZouBa
-Exec=/usr/bin/zouba
-Icon=zouba
-X-HildonDesk-ShowInToolbar=true
-X-Window-Icon=zouba
-X-Window-Icon-Dimmed=zouba
-X-Osso-Type=application/x-executable
diff --git a/zouba/data/zouba.xcf b/zouba/data/zouba.xcf
deleted file mode 100644 (file)
index 683a0ac..0000000
Binary files a/zouba/data/zouba.xcf and /dev/null differ
diff --git a/zouba/debian/README b/zouba/debian/README
deleted file mode 100644 (file)
index 86f57e5..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-The Debian Package zouba
-----------------------------
-
-Comments regarding the Package
-
- -- Max Waterman <davidmaxwaterman@jeeves>  Tue, 23 Mar 2010 20:11:34 +0200
diff --git a/zouba/debian/README.Debian b/zouba/debian/README.Debian
deleted file mode 100644 (file)
index ce6b0b0..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-zouba for Debian
-----------------
-
-<possible notes regarding this package - if none, delete this file>
-
- -- Max Waterman <davidmaxwaterman@jeeves>  Tue, 23 Mar 2010 20:11:34 +0200
diff --git a/zouba/debian/changelog b/zouba/debian/changelog
deleted file mode 100644 (file)
index a37b5e8..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-zouba (0.9) unstable; urgency=low
-
-  * added notification for address resolution failure and no route
-  * fixed issue with multiple route requests for a single button click 
-
- -- Max Waterman <davidmaxwaterman@fastmail.co.uk>  Sun, 25 Apr 2010 06:12:00 +0200
-
-zouba (0.8) unstable; urgency=low
-
-  * Fixed problem when changing the address of a location to something invalid.
-
- -- Max Waterman <davidmaxwaterman@fastmail.co.uk>  Sat, 24 Apr 2010 03:39:00 +0200
-
-zouba (0.7) unstable; urgency=low
-
-  * Changed gps controller to use labels for fake gps instead of a new Location instance.
-  * Added route detail table and general associated shuffle of api.
-
- -- Max Waterman <davidmaxwaterman@fastmail.co.uk>  Tue, 20 Apr 2010 06:27:00 +0200
-
-zouba (0.6) unstable; urgency=low
-
-  * Changed layout in preparation for multiple routes
-  * Changed the selection mode for the tables
-
- -- Max Waterman <davidmaxwaterman@fastmail.co.uk>  Mon, 19 Apr 2010 17:38:00 +0200
-
-zouba (0.5) unstable; urgency=low
-
-  * Changed package description
-  * Changed 'fakegps' button from two actions to a single toggle one
-  * Fixed core dump in gpscontroller caused by deleting the fakelocation
-
- -- Max Waterman <davidmaxwaterman@fastmail.co.uk>  Mon, 19 Apr 2010 11:18:00 +0200
-
-zouba (0.4) unstable; urgency=low
-
-  * Fix for routes with bus changes (only displays first bus)
-  * Added and cleaned up ut_route
-
- -- Max Waterman <davidmaxwaterman@fastmail.co.uk>  Fri, 16 Apr 2010 11:28:00 +0200
-
-zouba (0.3) unstable; urgency=low
-
-  * Fix for app manager icon
-  * Changes: cleanup and corrections for autobuilder
-  * Added new settings button to set a fake current location ('work' in the first instance).
-  * Added 'optimize' parameter set to 'leastwalking' to route server to give same results as web server early in the morning.
-
- -- Max Waterman <davidmaxwaterman@fastmail.co.uk>  Mon, 12 Apr 2010 12:13:13 +0200
-
-zouba (0.2) unstable; urgency=low
-
-  * Better xml error string.
-  * Better message table width resizing, though visually the same.
-  * Added missing message when work button becomes valid.
-  * First upload to extras-devel.
-
- -- Max Waterman <davidmaxwaterman@fastmail.co.uk>  Wed, 24 Mar 2010 21:29:00 +0200
-
-zouba (0.1) unstable; urgency=low
-
-  * Initial Release.
-
- -- Max Waterman <davidmaxwaterman@fastmail.co.uk>  Tue, 23 Mar 2010 20:11:34 +0200
diff --git a/zouba/debian/compat b/zouba/debian/compat
deleted file mode 100644 (file)
index 7ed6ff8..0000000
+++ /dev/null
@@ -1 +0,0 @@
-5
diff --git a/zouba/debian/control b/zouba/debian/control
deleted file mode 100644 (file)
index bb9a57f..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-Source: zouba
-Section: user/navigation
-Priority: extra
-Maintainer: Max Waterman <davidmaxwaterman@fastmail.co.uk>
-Build-Depends: libqt4-dev, libqtm-bearer, libqtm-location, debhelper (>= 5)
-Standards-Version: 3.7.3
-Homepage: 
-
-Package: zouba
-Architecture: armel
-Depends: ${shlibs:Depends}, ${misc:Depends}
-Description: Tells you which bus is next (in Helsinki area).
- Allows you to easily find how to get the bus home. Uses HSL Journey Planner API <http://developer.reittiopas.fi/pages/en/home.php>. Uses GPS for current location. Uses Qt and QtMobility.
-# XB-Maemo-Icon-26 field contains the application icon file encoded in
-# base64. This is the icon that is shown in the Application Manager,
-# next to the package name. To perform this encoding use following mad
-# command: $ mad base64 <48x48 icon file name>
-# For example following XB-Maemo-Icon-26 field content is an output
-# from command: $ mad base64 zouba/src/data/48x48/zouba.png
-XB-Maemo-Icon-26:
- iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABGdBTUEAALGP
- C/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUw
- AADqYAAAOpgAABdwnLpRPAAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAAL
- EwAACxMBAJqcGAAAAAl2cEFnAAAAMAAAADAAzu6MVwAADplJREFUaN7VmOmP
- ZNV5h59z7rlLLbequnqp3qBhlp6FmWEYA4YwRiYMAsvBTuzIwiRxnAXJEYkT
- ZVH+AH+KIkVE8gd/iJLIimQnEhMHgx3FRkOCMTG2YQbMGAZ6YDw93dVV1VW3
- a7l16675cG/NtIfBZrFjfKRSt2p9fu9539/7ngO/3MsUv2iCd7hs4B7gvl8m
- AZMZ9CEhuEnT7JvjeKnwXhcggX3AR6QUH9G03PsMY1ZX6hCj0W2MRjt5rwrQ
- gT3Ap4TgvlyucFU+f30SBLcI3z/IaFQjjhWQvOcEKOBa4DNCcL9l5WZLpT1o
- 2p10OjfieRMkiQCSix94rwjIAx8F7hWC20yztFgsHpRSHmUwOIzrvhH8vSJg
- FrgN+G0huNs0K7lC4TBJ8kFc9zpGoxJJwhXBf5ECRAZ+DPgzKcVB06zqlvU+
- kuQDDIf78P3im0b8FylABw4CHxVCfFzT1G7TnDEM4wbi+CjD4TJBkH/L4P9f
- AsrAXuAQcJdS5u1K2TVdn0GpA0TR+/G8Hfh+Pnv7Wwf/eQoQwFXArwOfAA5o
- ml4yjEmh60tIuZ8ouh7PWyIMc2874j9vASZwP/DXIHZLaUmlpjDNHUh5HWG4
- D99fJAhy2U+/E3BB2t9ifpZ9QJKmyl+A+ISUpaJS8+j6DjTtAFG0h9FomijS
- M1d5J2sMvgmcAg4DE+9agAZMAb8K/KWU1hGlllFqP1LuIYp24fuTRJH2DqO9
- PT7DDPw4un6aMPw1kuRTqHcBPglcD/ymlOKjSi3VlDoKHCKKFhmNKtvA3ym8
- AELgh8DDKPUcBw7s5Oqr7+HrX/8GQbD/bQuQ28DvkFIeU0o/omnvV/AbBMES
- UZQjjuU7ABf8eF1EQB14CikfY9euIh/+8AMsL+/hpZdewjAeJwhW3rIACVRJ
- 7fB2TdMO6rquhEiuiePDKggeJIqqJEnCuLjeXkxioAG4gJU9dxopX2RmZo2j
- R2/jYx/7OJVKhXq9juu6F3/rpwmQwARwAPgVTdOWDcPoFwqFr/q+nx8M3GNR
- dHumbTXb7nnAeAtCxuX3EvAN4HtAH7AR4iDV6gTXXbfITTcd4siRvczPz9Nu
- t9na2mJ1dZXhMAZ2vamAMfg+4EZN05YMw3Dy+fx/6Lr+8nA4bHe73c/CZB52
- A/8N/ANCDEmSW4D3AcuZGDIxl8MPgMcR4stMT8OuXbsplyv0ej08r8fy8vtZ
- Wppjbi7Gtkt4nsdg4NJqtXj99bMkyTSw/AYBEqiQUh2UUs4ahuGYpvlVIcTr
- W1tb/TAMY9Kx4CZYyuC+xN13H+DGG2/m+PGH+dGPnsJ1yyTJh0jH+v2kk3IC
- BEAb+DdM8wT79y9z7NhdTExMkM/n0TSNM2deRtcVhYJE19Od6vV6fP/73+Mr
- XznOuXMN4PeB2kUBAiiSzuJ7gKpSqm8YxokkSVa73a6bXDJwSWqds0IU0LQO
- hjHg7rs/xKc//Xt88pP3c+7cOR599BGef/4HfPe7D+P7vwvcBXSADZQ6y8TE
- D7njjg9zyy23UiqVyOVyCCEYDocUizZRFJMkGp2Ow5kzj/PMM8/w7LPPMRzu
- Bf4QOAIIVBbNGrCT1GH6UsoVYHM4HA6TS+SStNMWpZRHNE27xjD2YFkR+XyR
- 2dk5hBDMzs6ysLDArbfeSq/X48EH/4hHH30MmEPTekxM9FlY8LjmmsMcPfoB
- lpaWEEIQBAGe59Hr9XBdF983WVl5jdOnv8PZs88zGtnAp4A7svhFQIICdgEz
- 2f6eAbbiOPbjOB77oMisoaRpml2pVAzTNKdGo0C3rAksK6RSqVKr1UiSBCHS
- LQ/DENd1MQwTcKhWV5mby7OwUGZpqcbiYsTU1BSmaTIYDHAch3Z7k5WVFV55
- ZY2VlTxraw6+PwV8NqupSoYUXcx5BZSAFtAF/G0VNwa3NU0rlctla25uzpyZ
- mdE9z9ObzVZsmhaW1aNWm8AwDDRNw/d9Go0G586dY3V1lUajwfLybhYWqszP
- V5mbK1Gp6OTzPRynQ7PZ4Pz586ytrXP+/Cpnz16g0VggCJZIzzpXkx7YEt5o
- BqmAtSuAm4AtpbRt287Nzs6aMzMzZrVaNaempoxWqzkdBJFhWSaGcTW+f4Ev
- fOEL3HnnnZTL5SwFfFzXZWamxvz8IjMzOygWdSwL4tij2WzSbJ5nY8OhXvc4
- f35Eq1UgDO8inXPmMwyuCL7dz6avAF6ybduq1WrmzMyMOTExYVYqFatcLlu2
- bZtxHE++8MLJB0ajXQtJcowgOIfnPUkc/4ipqQn27t3Hnj17ME2TU6dOYhi7
- 0fU5osjFddu02xs0m22aTZf1dWi3LYJgNvOQGdI+8tOaYdq5RfaJH4v4lcCL
- xaJZLBaNfD6vlFLixInH72u1jMOj0WHCsIeuJ5TLUCgMkdLBtiVLS1fjeR5h
- OMVgYNNo1Gm1tmi1fBqNBMfRCcMpYDGLo8GlkeLNGuH49R5wFgVMSSmLtm3n
- rwReKBRM27bH4ERRxPr6etFxnHy/r6PrW0xNVSkWy2iaThh6hGEf123z2mt1
- wKPfD2k0OjSbHs0mdLtFwrBKejSezOInSEeJegZ3TVae8WXgDvAt0u59DlUu
- l2dqtZpRq9UugpdKJatQKFi2bRuFQkEppYjjOO71etqFCxfK9Xp9yvcDq1qd
- o1S6NgOH0Sgm7XMaw2EFz4vwPEG3a9JoRHS7ecJwInPtyraIbwBPA0+haato
- 2gjfPwB8hkvdvAP8D/BN4FUfojPAI+rIkSOGbduFUqmUr1QquWKxOI64rpQS
- SZLEvu9HnU5HXrhwwdra2tKKxeIgjqfcMDSJ4zy+HxMEEb4f0ut16fW6eB5E
- kY3rVun1IsKwsA1c31acLeDzmOZz7N69i3J5mVptllOnnmNl5R+BPwZOAv8O
- nPEgegb4F+BrwLo6dOiQVigUlGmapmVZlmEYllJKJkmSjEaj0HXdqNvtRo1G
- Q/X7fTeXy4WmaVrdblcPwwqGoRGGIb1ei0bDo90e4PsGUlYIQ4so0kkvk0tZ
- xMl8fAA0EeJr6PopyuUKnufTbJ7llVdWUEpl4J8DzsQwehr4PPCfWR6lNloq
- leT09HRSKpVCpVQwGAy0fr+vDQaDqN/vh71ez+t0OmGz2VRCCD1JEjka+YWt
- LUclySJxPKDdfpLNzScZDvcSxzeSNvV8Fmkzc2uRgQ+BFkK00fXzGMZzJInE
- tm1uuOEGdu7cyfHjxzlz5kyG+IIHPJQ9NoAbsq07BaBM0wzjOA583/eSJElc
- 140bjYbe7Xb9Xq833Nra8tvtdthqtaRSSvM8T3recG5jY3Pa98F1L+C6LxDH
- 54DzwDPA7wAfusxRXKCDEG2UctH1EDhLHHfI5XLce++9HDhwgEceeYSNjQ2k
- lMRx3AT+Fvh70vnhr4A/Af4VeB5IlOM4Q9/3Y9d1YyllvLm5GdXrdeE4ju84
- zqjT6XidTmfkOI6maZrVbrfNfr/nua4XxXFAkpRJb1CuytyhA/wX8MFsF8bg
- Dpo2QtcDwCNJPHK5hKmpBWy7xOnTp3n66aexLIsHH3yQJ554gm9/+9uvAk8A
- DwB/kDWKfwb+Zuyx6rXXXhsWi8W4UChESim/Xq8b9XpdtNttr9PpeN1uNxgO
- h2EYhroQgm636wPfAb4HT92Rpst1pLPK7ixF92bfvw50UMpDqRjwSZIRliUp
- l8sUCtMYxgaGYVCtVrnnnnu4+eabKZfLPPnkkwALwJeyvydIh6JnSCeH1Fzn
- 5+f3V6tVVavVjEKhYKytrRn1ej3e2toag4fbusr2W4ydqc/V7oRPS7gpy/Ue
- 6cnKy8Aj0pNagGkqbNsgl+ui6ysYxir5vGB6eoYHHniAgwcP0m63OX78OA89
- 9FDU6/WeAv6XS0c2h8uWABY1TTMqlYpRKpV0x3GMfr8vgyAIs6obC9AywrH/
- haRXh5+Da4/Bn2YW6aDU8CJ4kgQYhkaxmMOyhih1Dl1fJ5ezyOcVptkNDcPY
- mp2drdZqNXHixAlOnjwZeJ73xSz/X2X7+HkFAZOks74hpbSSJMklSaJlgFEG
- rm2rxvFu+JkXHkpzsna9Urej1D5AI0l8DEOjUMiRywVIuYambWCaJrncPIYR
- Ai8nUg7PjkajF19++eVj3W43juP4JPBl4IvZdv7EJUhP5DKDtIDxvZ+8zP/G
- 8GkVpv+XhRAzpmleJyW/FcfajUkybxjGMoXC9eRyZTRtEyk30XWJYUyilARe
- JQhej1y3c35zs33ecZydURTNA/8E/PmVUuUnCZjJQI3soV8W8WQb+DCD14UQ
- VcuypovFYlVKaQdBMCmlPJzLmTfpunG1ELW8pu1C1xW6nkfKHHG8ThC8Eg8G
- jY7jOBe63Z4dx/FVwNnMXb4JfPetwo8FXJtB69siHvPGiA+ztNKBCV3XJ3Vd
- ryRJUqpWq6XFxcVipVIxkyQpdrvd/cOhe1RKfVJKXUZRlPi+F/X7nb7jbLX7
- /cFWHMfz2e/9HXCc9H7lbS+VpcwYfHxeuzziYfZ+SWruuTiOjUKhoHbv3i1m
- Z2djIIqiSBNC6LZt133ff8JxnB2e5yX9/pa7sdHId7vd+TiO50jH0LNp7fAl
- fkKRvhUB4/uOiEv3HtsjPrZPkUXfEELotVpN7Nu3L15YWIiVUkkcxzKOY2s4
- HFZ7vV7VdV3R7XZ/sLa2JjqdTiWzY0HaRR8DXiQdDd7NrS8qg1VXAB8vuS3d
- NCGE0DQt1nU9klImhmHIYrFodTqd2c3NzaVer2f2er3W+vr6oNVqTYRhaJG2
- /W9l0PXLvv9dLZUBk8EH214bR30sYpxicZIkcS6XE6Zpmo7jzLRarR39fr/q
- OM7m+vp6q9Fo5IIgKAOvkzaik0CTd5Eqb7YE6RVictlzVwQndalSLperzs/P
- LxYKhR2WZU1qmuZubGx0VldXdd/3K6T+/TzpxNj4eYBvhy1fBj3uAdvBEy4V
- 8JyUck+hUJizbds3DGOt2Wzqg8FgfM/4EvAs6W3HzyxV3mz9H8WDYRQx8Afu
- AAAAGXRFWHRDb21tZW50AENyZWF0ZWQgd2l0aCBHSU1QV4EOFwAAACV0RVh0
- Y3JlYXRlLWRhdGUAMjAxMC0wMy0yNFQwNToyODo0MyswMjowMPMmiCkAAAAl
- dEVYdG1vZGlmeS1kYXRlADIwMTAtMDMtMjRUMDU6Mjg6NDMrMDI6MDCsl/4d
- AAAAAElFTkSuQmCC
- ====
diff --git a/zouba/debian/copyright b/zouba/debian/copyright
deleted file mode 100644 (file)
index 5765b41..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-This package was debianized by Max Waterman <davidmaxwaterman@jeeves> on
-Tue, 23 Mar 2010 20:11:34 +0200.
-
-It was downloaded from <url://example.com>
-
-Upstream Author(s):
-
-    <put author's name and email here>
-    <likewise for another author>
-
-Copyright:
-
-    <Copyright (C) YYYY Name OfAuthor>
-    <likewise for another author>
-
-License:
-
-    This package is free software; you can redistribute it and/or
-    modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
-    version 2 of the License, or (at your option) any later version.
-
-    This package is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-    Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public
-    License along with this package; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
-
-On Debian systems, the complete text of the GNU Lesser General
-Public License can be found in `/usr/share/common-licenses/LGPL'.
-
-The Debian packaging is (C) 2010, Max Waterman <davidmaxwaterman@jeeves> and
-is licensed under the GPL, see `/usr/share/common-licenses/GPL'.
-
-# Please also look if there are files or directories which have a
-# different copyright/license attached and list them here.
diff --git a/zouba/debian/cron.d.ex b/zouba/debian/cron.d.ex
deleted file mode 100644 (file)
index 2bcd648..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-#
-# Regular cron jobs for the zouba package
-#
-0 4    * * *   root    [ -x /usr/bin/zouba_maintenance ] && /usr/bin/zouba_maintenance
diff --git a/zouba/debian/dirs b/zouba/debian/dirs
deleted file mode 100644 (file)
index ca882bb..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-usr/bin
-usr/sbin
diff --git a/zouba/debian/docs b/zouba/debian/docs
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/zouba/debian/emacsen-install.ex b/zouba/debian/emacsen-install.ex
deleted file mode 100644 (file)
index 614a11d..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-#! /bin/sh -e
-# /usr/lib/emacsen-common/packages/install/zouba
-
-# Written by Jim Van Zandt <jrv@debian.org>, borrowing heavily
-# from the install scripts for gettext by Santiago Vila
-# <sanvila@ctv.es> and octave by Dirk Eddelbuettel <edd@debian.org>.
-
-FLAVOR=$1
-PACKAGE=zouba
-
-if [ ${FLAVOR} = emacs ]; then exit 0; fi
-
-echo install/${PACKAGE}: Handling install for emacsen flavor ${FLAVOR}
-
-#FLAVORTEST=`echo $FLAVOR | cut -c-6`
-#if [ ${FLAVORTEST} = xemacs ] ; then
-#    SITEFLAG="-no-site-file"
-#else
-#    SITEFLAG="--no-site-file"
-#fi
-FLAGS="${SITEFLAG} -q -batch -l path.el -f batch-byte-compile"
-
-ELDIR=/usr/share/emacs/site-lisp/${PACKAGE}
-ELCDIR=/usr/share/${FLAVOR}/site-lisp/${PACKAGE}
-
-# Install-info-altdir does not actually exist.
-# Maybe somebody will write it.
-if test -x /usr/sbin/install-info-altdir; then
-    echo install/${PACKAGE}: install Info links for ${FLAVOR}
-    install-info-altdir --quiet --section "" "" --dirname=${FLAVOR} /usr/share/info/${PACKAGE}.info.gz
-fi
-
-install -m 755 -d ${ELCDIR}
-cd ${ELDIR}
-FILES=`echo *.el`
-cp ${FILES} ${ELCDIR}
-cd ${ELCDIR}
-
-cat << EOF > path.el
-(setq load-path (cons "." load-path) byte-compile-warnings nil)
-EOF
-${FLAVOR} ${FLAGS} ${FILES}
-rm -f *.el path.el
-
-exit 0
diff --git a/zouba/debian/emacsen-remove.ex b/zouba/debian/emacsen-remove.ex
deleted file mode 100644 (file)
index 579e5c9..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/bin/sh -e
-# /usr/lib/emacsen-common/packages/remove/zouba
-
-FLAVOR=$1
-PACKAGE=zouba
-
-if [ ${FLAVOR} != emacs ]; then
-    if test -x /usr/sbin/install-info-altdir; then
-        echo remove/${PACKAGE}: removing Info links for ${FLAVOR}
-        install-info-altdir --quiet --remove --dirname=${FLAVOR} /usr/share/info/zouba.info.gz
-    fi
-
-    echo remove/${PACKAGE}: purging byte-compiled files for ${FLAVOR}
-    rm -rf /usr/share/${FLAVOR}/site-lisp/${PACKAGE}
-fi
diff --git a/zouba/debian/emacsen-startup.ex b/zouba/debian/emacsen-startup.ex
deleted file mode 100644 (file)
index 73c6491..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-;; -*-emacs-lisp-*-
-;;
-;; Emacs startup file, e.g.  /etc/emacs/site-start.d/50zouba.el
-;; for the Debian zouba package
-;;
-;; Originally contributed by Nils Naumann <naumann@unileoben.ac.at>
-;; Modified by Dirk Eddelbuettel <edd@debian.org>
-;; Adapted for dh-make by Jim Van Zandt <jrv@debian.org>
-
-;; The zouba package follows the Debian/GNU Linux 'emacsen' policy and
-;; byte-compiles its elisp files for each 'emacs flavor' (emacs19,
-;; xemacs19, emacs20, xemacs20...).  The compiled code is then
-;; installed in a subdirectory of the respective site-lisp directory.
-;; We have to add this to the load-path:
-(let ((package-dir (concat "/usr/share/"
-                           (symbol-name flavor)
-                           "/site-lisp/zouba")))
-;; If package-dir does not exist, the zouba package must have
-;; removed but not purged, and we should skip the setup.
-  (when (file-directory-p package-dir)
-        (setq load-path (cons package-dir load-path))
-       (autoload 'zouba-mode "zouba-mode"
-         "Major mode for editing zouba files." t)
-       (add-to-list 'auto-mode-alist '("\\.zouba$" . zouba-mode))))
-
diff --git a/zouba/debian/files b/zouba/debian/files
deleted file mode 100644 (file)
index a44eb77..0000000
+++ /dev/null
@@ -1 +0,0 @@
-zouba_0.9_armel.deb user/navigation extra
diff --git a/zouba/debian/init.d.ex b/zouba/debian/init.d.ex
deleted file mode 100644 (file)
index eb92011..0000000
+++ /dev/null
@@ -1,157 +0,0 @@
-#! /bin/sh
-#
-# skeleton     example file to build /etc/init.d/ scripts.
-#              This file should be used to construct scripts for /etc/init.d.
-#
-#              Written by Miquel van Smoorenburg <miquels@cistron.nl>.
-#              Modified for Debian
-#              by Ian Murdock <imurdock@gnu.ai.mit.edu>.
-#               Further changes by Javier Fernandez-Sanguino <jfs@debian.org>
-#
-# Version:     @(#)skeleton  1.9  26-Feb-2001  miquels@cistron.nl
-#
-
-PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
-DAEMON=/usr/sbin/zouba
-NAME=zouba
-DESC=zouba
-
-test -x $DAEMON || exit 0
-
-LOGDIR=/var/log/zouba
-PIDFILE=/var/run/$NAME.pid
-DODTIME=1                   # Time to wait for the server to die, in seconds
-                            # If this value is set too low you might not
-                            # let some servers to die gracefully and
-                            # 'restart' will not work
-
-# Include zouba defaults if available
-if [ -f /etc/default/zouba ] ; then
-       . /etc/default/zouba
-fi
-
-set -e
-
-running_pid()
-{
-    # Check if a given process pid's cmdline matches a given name
-    pid=$1
-    name=$2
-    [ -z "$pid" ] && return 1
-    [ ! -d /proc/$pid ] &&  return 1
-    cmd=`cat /proc/$pid/cmdline | tr "\000" "\n"|head -n 1 |cut -d : -f 1`
-    # Is this the expected child?
-    [ "$cmd" != "$name" ] &&  return 1
-    return 0
-}
-
-running()
-{
-# Check if the process is running looking at /proc
-# (works for all users)
-
-    # No pidfile, probably no daemon present
-    [ ! -f "$PIDFILE" ] && return 1
-    # Obtain the pid and check it against the binary name
-    pid=`cat $PIDFILE`
-    running_pid $pid $DAEMON || return 1
-    return 0
-}
-
-force_stop() {
-# Forcefully kill the process
-    [ ! -f "$PIDFILE" ] && return
-    if running ; then
-        kill -15 $pid
-        # Is it really dead?
-        [ -n "$DODTIME" ] && sleep "$DODTIME"s
-        if running ; then
-            kill -9 $pid
-            [ -n "$DODTIME" ] && sleep "$DODTIME"s
-            if running ; then
-                echo "Cannot kill $LABEL (pid=$pid)!"
-                exit 1
-            fi
-        fi
-    fi
-    rm -f $PIDFILE
-    return 0
-}
-
-case "$1" in
-  start)
-       echo -n "Starting $DESC: "
-       start-stop-daemon --start --quiet --pidfile $PIDFILE \
-               --exec $DAEMON -- $DAEMON_OPTS
-        if running ; then
-            echo "$NAME."
-        else
-            echo " ERROR."
-        fi
-       ;;
-  stop)
-       echo -n "Stopping $DESC: "
-       start-stop-daemon --stop --quiet --pidfile $PIDFILE \
-               --exec $DAEMON
-       echo "$NAME."
-       ;;
-  force-stop)
-       echo -n "Forcefully stopping $DESC: "
-        force_stop
-        if ! running ; then
-            echo "$NAME."
-        else
-            echo " ERROR."
-        fi
-       ;;
-  #reload)
-       #
-       #       If the daemon can reload its config files on the fly
-       #       for example by sending it SIGHUP, do it here.
-       #
-       #       If the daemon responds to changes in its config file
-       #       directly anyway, make this a do-nothing entry.
-       #
-       # echo "Reloading $DESC configuration files."
-       # start-stop-daemon --stop --signal 1 --quiet --pidfile \
-       #       /var/run/$NAME.pid --exec $DAEMON
-  #;;
-  force-reload)
-       #
-       #       If the "reload" option is implemented, move the "force-reload"
-       #       option to the "reload" entry above. If not, "force-reload" is
-       #       just the same as "restart" except that it does nothing if the
-       #   daemon isn't already running.
-       # check wether $DAEMON is running. If so, restart
-       start-stop-daemon --stop --test --quiet --pidfile \
-               /var/run/$NAME.pid --exec $DAEMON \
-       && $0 restart \
-       || exit 0
-       ;;
-  restart)
-    echo -n "Restarting $DESC: "
-       start-stop-daemon --stop --quiet --pidfile \
-               /var/run/$NAME.pid --exec $DAEMON
-       [ -n "$DODTIME" ] && sleep $DODTIME
-       start-stop-daemon --start --quiet --pidfile \
-               /var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS
-       echo "$NAME."
-       ;;
-  status)
-    echo -n "$LABEL is "
-    if running ;  then
-        echo "running"
-    else
-        echo " not running."
-        exit 1
-    fi
-    ;;
-  *)
-       N=/etc/init.d/$NAME
-       # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
-       echo "Usage: $N {start|stop|restart|force-reload|status|force-stop}" >&2
-       exit 1
-       ;;
-esac
-
-exit 0
diff --git a/zouba/debian/init.d.lsb.ex b/zouba/debian/init.d.lsb.ex
deleted file mode 100644 (file)
index 4765549..0000000
+++ /dev/null
@@ -1,296 +0,0 @@
-#!/bin/sh
-#
-# Example init.d script with LSB support.
-#
-# Please read this init.d carefully and modify the sections to
-# adjust it to the program you want to run.
-#
-# Copyright (c) 2007 Javier Fernandez-Sanguino <jfs@debian.org>
-#
-# This is free software; you may redistribute it and/or modify
-# it under the terms of the GNU General Public License as
-# published by the Free Software Foundation; either version 2,
-# or (at your option) any later version.
-#
-# This is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License with
-# the Debian operating system, in /usr/share/common-licenses/GPL;  if
-# not, write to the Free Software Foundation, Inc., 59 Temple Place,
-# Suite 330, Boston, MA 02111-1307 USA
-#
-### BEGIN INIT INFO
-# Provides:          zouba
-# Required-Start:    $network $local_fs
-# Required-Stop:
-# Should-Start:      $named
-# Should-Stop:
-# Default-Start:     2 3 4 5
-# Default-Stop:      0 1 6
-# Short-Description: <Enter a short description of the sortware>
-# Description:       <Enter a long description of the software>
-#                    <...>
-#                    <...>
-### END INIT INFO
-
-PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
-
-DAEMON=/usr/sbin/zouba # Introduce the server's location here
-NAME=#PACKAGE              # Introduce the short server's name here
-DESC=#PACKAGE              # Introduce a short description here
-LOGDIR=/var/log/zouba  # Log directory to use
-
-PIDFILE=/var/run/$NAME.pid
-
-test -x $DAEMON || exit 0
-
-. /lib/lsb/init-functions
-
-# Default options, these can be overriden by the information
-# at /etc/default/$NAME
-DAEMON_OPTS=""          # Additional options given to the server
-
-DIETIME=10              # Time to wait for the server to die, in seconds
-                        # If this value is set too low you might not
-                        # let some servers to die gracefully and
-                        # 'restart' will not work
-
-#STARTTIME=2             # Time to wait for the server to start, in seconds
-                        # If this value is set each time the server is
-                        # started (on start or restart) the script will
-                        # stall to try to determine if it is running
-                        # If it is not set and the server takes time
-                        # to setup a pid file the log message might 
-                        # be a false positive (says it did not start
-                        # when it actually did)
-                        
-LOGFILE=$LOGDIR/$NAME.log  # Server logfile
-#DAEMONUSER=zouba   # Users to run the daemons as. If this value
-                        # is set start-stop-daemon will chuid the server
-
-# Include defaults if available
-if [ -f /etc/default/$NAME ] ; then
-       . /etc/default/$NAME
-fi
-
-# Use this if you want the user to explicitly set 'RUN' in
-# /etc/default/
-#if [ "x$RUN" != "xyes" ] ; then
-#    log_failure_msg "$NAME disabled, please adjust the configuration to your needs "
-#    log_failure_msg "and then set RUN to 'yes' in /etc/default/$NAME to enable it."
-#    exit 1
-#fi
-
-# Check that the user exists (if we set a user)
-# Does the user exist?
-if [ -n "$DAEMONUSER" ] ; then
-    if getent passwd | grep -q "^$DAEMONUSER:"; then
-        # Obtain the uid and gid
-        DAEMONUID=`getent passwd |grep "^$DAEMONUSER:" | awk -F : '{print $3}'`
-        DAEMONGID=`getent passwd |grep "^$DAEMONUSER:" | awk -F : '{print $4}'`
-    else
-        log_failure_msg "The user $DAEMONUSER, required to run $NAME does not exist."
-        exit 1
-    fi
-fi
-
-
-set -e
-
-running_pid() {
-# Check if a given process pid's cmdline matches a given name
-    pid=$1
-    name=$2
-    [ -z "$pid" ] && return 1
-    [ ! -d /proc/$pid ] &&  return 1
-    cmd=`cat /proc/$pid/cmdline | tr "\000" "\n"|head -n 1 |cut -d : -f 1`
-    # Is this the expected server
-    [ "$cmd" != "$name" ] &&  return 1
-    return 0
-}
-
-running() {
-# Check if the process is running looking at /proc
-# (works for all users)
-
-    # No pidfile, probably no daemon present
-    [ ! -f "$PIDFILE" ] && return 1
-    pid=`cat $PIDFILE`
-    running_pid $pid $DAEMON || return 1
-    return 0
-}
-
-start_server() {
-# Start the process using the wrapper
-        if [ -z "$DAEMONUSER" ] ; then
-            start_daemon -p $PIDFILE $DAEMON -- $DAEMON_OPTS
-            errcode=$?
-        else
-# if we are using a daemonuser then change the user id
-            start-stop-daemon --start --quiet --pidfile $PIDFILE \
-                        --chuid $DAEMONUSER \
-                        --exec $DAEMON -- $DAEMON_OPTS
-            errcode=$?
-        fi
-       return $errcode
-}
-
-stop_server() {
-# Stop the process using the wrapper
-        if [ -z "$DAEMONUSER" ] ; then
-            killproc -p $PIDFILE $DAEMON
-            errcode=$?
-        else
-# if we are using a daemonuser then look for process that match
-            start-stop-daemon --stop --quiet --pidfile $PIDFILE \
-                        --user $DAEMONUSER \
-                        --exec $DAEMON
-            errcode=$?
-        fi
-
-       return $errcode
-}
-
-reload_server() {
-    [ ! -f "$PIDFILE" ] && return 1
-    pid=pidofproc $PIDFILE # This is the daemon's pid
-    # Send a SIGHUP
-    kill -1 $pid
-    return $?
-}
-
-force_stop() {
-# Force the process to die killing it manually
-       [ ! -e "$PIDFILE" ] && return
-       if running ; then
-               kill -15 $pid
-       # Is it really dead?
-               sleep "$DIETIME"s
-               if running ; then
-                       kill -9 $pid
-                       sleep "$DIETIME"s
-                       if running ; then
-                               echo "Cannot kill $NAME (pid=$pid)!"
-                               exit 1
-                       fi
-               fi
-       fi
-       rm -f $PIDFILE
-}
-
-
-case "$1" in
-  start)
-       log_daemon_msg "Starting $DESC " "$NAME"
-        # Check if it's running first
-        if running ;  then
-            log_progress_msg "apparently already running"
-            log_end_msg 0
-            exit 0
-        fi
-        if start_server ; then
-            # NOTE: Some servers might die some time after they start,
-            # this code will detect this issue if STARTTIME is set
-            # to a reasonable value
-            [ -n "$STARTTIME" ] && sleep $STARTTIME # Wait some time 
-            if  running ;  then
-                # It's ok, the server started and is running
-                log_end_msg 0
-            else
-                # It is not running after we did start
-                log_end_msg 1
-            fi
-        else
-            # Either we could not start it
-            log_end_msg 1
-        fi
-       ;;
-  stop)
-        log_daemon_msg "Stopping $DESC" "$NAME"
-        if running ; then
-            # Only stop the server if we see it running
-                       errcode=0
-            stop_server || errcode=$?
-            log_end_msg $errcode
-        else
-            # If it's not running don't do anything
-            log_progress_msg "apparently not running"
-            log_end_msg 0
-            exit 0
-        fi
-        ;;
-  force-stop)
-        # First try to stop gracefully the program
-        $0 stop
-        if running; then
-            # If it's still running try to kill it more forcefully
-            log_daemon_msg "Stopping (force) $DESC" "$NAME"
-                       errcode=0
-            force_stop || errcode=$?
-            log_end_msg $errcode
-        fi
-       ;;
-  restart|force-reload)
-        log_daemon_msg "Restarting $DESC" "$NAME"
-               errcode=0
-        stop_server || errcode=$?
-        # Wait some sensible amount, some server need this
-        [ -n "$DIETIME" ] && sleep $DIETIME
-        start_server || errcode=$?
-        [ -n "$STARTTIME" ] && sleep $STARTTIME
-        running || errcode=$?
-        log_end_msg $errcode
-       ;;
-  status)
-
-        log_daemon_msg "Checking status of $DESC" "$NAME"
-        if running ;  then
-            log_progress_msg "running"
-            log_end_msg 0
-        else
-            log_progress_msg "apparently not running"
-            log_end_msg 1
-            exit 1
-        fi
-        ;;
-  # Use this if the daemon cannot reload
-  reload)
-        log_warning_msg "Reloading $NAME daemon: not implemented, as the daemon"
-        log_warning_msg "cannot re-read the config file (use restart)."
-        ;;
-  # And this if it cann
-  #reload)
-          #
-          # If the daemon can reload its config files on the fly
-          # for example by sending it SIGHUP, do it here.
-          #
-          # If the daemon responds to changes in its config file
-          # directly anyway, make this a do-nothing entry.
-          #
-          # log_daemon_msg "Reloading $DESC configuration files" "$NAME"
-          # if running ; then
-          #    reload_server
-          #    if ! running ;  then
-          # Process died after we tried to reload
-          #       log_progress_msg "died on reload"
-          #       log_end_msg 1
-          #       exit 1
-          #    fi
-          # else
-          #    log_progress_msg "server is not running"
-          #    log_end_msg 1
-          #    exit 1
-          # fi
-                                                                                    #;;
-
-  *)
-       N=/etc/init.d/$NAME
-       echo "Usage: $N {start|stop|force-stop|restart|force-reload|status}" >&2
-       exit 1
-       ;;
-esac
-
-exit 0
diff --git a/zouba/debian/manpage.1.ex b/zouba/debian/manpage.1.ex
deleted file mode 100644 (file)
index bca658d..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-.\"                                      Hey, EMACS: -*- nroff -*-
-.\" First parameter, NAME, should be all caps
-.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
-.\" other parameters are allowed: see man(7), man(1)
-.TH ZOUBA SECTION "March 23, 2010"
-.\" Please adjust this date whenever revising the manpage.
-.\"
-.\" Some roff macros, for reference:
-.\" .nh        disable hyphenation
-.\" .hy        enable hyphenation
-.\" .ad l      left justify
-.\" .ad b      justify to both left and right margins
-.\" .nf        disable filling
-.\" .fi        enable filling
-.\" .br        insert line break
-.\" .sp <n>    insert n+1 empty lines
-.\" for manpage-specific macros, see man(7)
-.SH NAME
-zouba \- program to do something
-.SH SYNOPSIS
-.B zouba
-.RI [ options ] " files" ...
-.br
-.B bar
-.RI [ options ] " files" ...
-.SH DESCRIPTION
-This manual page documents briefly the
-.B zouba
-and
-.B bar
-commands.
-.PP
-.\" TeX users may be more comfortable with the \fB<whatever>\fP and
-.\" \fI<whatever>\fP escape sequences to invode bold face and italics,
-.\" respectively.
-\fBzouba\fP is a program that...
-.SH OPTIONS
-These programs follow the usual GNU command line syntax, with long
-options starting with two dashes (`-').
-A summary of options is included below.
-For a complete description, see the Info files.
-.TP
-.B \-h, \-\-help
-Show summary of options.
-.TP
-.B \-v, \-\-version
-Show version of program.
-.SH SEE ALSO
-.BR bar (1),
-.BR baz (1).
-.br
-The programs are documented fully by
-.IR "The Rise and Fall of a Fooish Bar" ,
-available via the Info system.
-.SH AUTHOR
-zouba was written by <upstream author>.
-.PP
-This manual page was written by Max Waterman <davidmaxwaterman@jeeves>,
-for the Debian project (but may be used by others).
diff --git a/zouba/debian/manpage.sgml.ex b/zouba/debian/manpage.sgml.ex
deleted file mode 100644 (file)
index bd2e519..0000000
+++ /dev/null
@@ -1,156 +0,0 @@
-<!doctype refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [
-
-<!-- Process this file with docbook-to-man to generate an nroff manual
-     page: `docbook-to-man manpage.sgml > manpage.1'.  You may view
-     the manual page with: `docbook-to-man manpage.sgml | nroff -man |
-     less'.  A typical entry in a Makefile or Makefile.am is:
-
-manpage.1: manpage.sgml
-       docbook-to-man $< > $@
-
-
-       The docbook-to-man binary is found in the docbook-to-man package.
-       Please remember that if you create the nroff version in one of the
-       debian/rules file targets (such as build), you will need to include
-       docbook-to-man in your Build-Depends control field.
-
-  -->
-
-  <!-- Fill in your name for FIRSTNAME and SURNAME. -->
-  <!ENTITY dhfirstname "<firstname>FIRSTNAME</firstname>">
-  <!ENTITY dhsurname   "<surname>SURNAME</surname>">
-  <!-- Please adjust the date whenever revising the manpage. -->
-  <!ENTITY dhdate      "<date>March 23, 2010</date>">
-  <!-- SECTION should be 1-8, maybe w/ subsection other parameters are
-       allowed: see man(7), man(1). -->
-  <!ENTITY dhsection   "<manvolnum>SECTION</manvolnum>">
-  <!ENTITY dhemail     "<email>davidmaxwaterman@jeeves</email>">
-  <!ENTITY dhusername  "Max Waterman">
-  <!ENTITY dhucpackage "<refentrytitle>ZOUBA</refentrytitle>">
-  <!ENTITY dhpackage   "zouba">
-
-  <!ENTITY debian      "<productname>Debian</productname>">
-  <!ENTITY gnu         "<acronym>GNU</acronym>">
-  <!ENTITY gpl         "&gnu; <acronym>GPL</acronym>">
-]>
-
-<refentry>
-  <refentryinfo>
-    <address>
-      &dhemail;
-    </address>
-    <author>
-      &dhfirstname;
-      &dhsurname;
-    </author>
-    <copyright>
-      <year>2003</year>
-      <holder>&dhusername;</holder>
-    </copyright>
-    &dhdate;
-  </refentryinfo>
-  <refmeta>
-    &dhucpackage;
-
-    &dhsection;
-  </refmeta>
-  <refnamediv>
-    <refname>&dhpackage;</refname>
-
-    <refpurpose>program to do something</refpurpose>
-  </refnamediv>
-  <refsynopsisdiv>
-    <cmdsynopsis>
-      <command>&dhpackage;</command>
-
-      <arg><option>-e <replaceable>this</replaceable></option></arg>
-
-      <arg><option>--example <replaceable>that</replaceable></option></arg>
-    </cmdsynopsis>
-  </refsynopsisdiv>
-  <refsect1>
-    <title>DESCRIPTION</title>
-
-    <para>This manual page documents briefly the
-      <command>&dhpackage;</command> and <command>bar</command>
-      commands.</para>
-
-    <para>This manual page was written for the &debian; distribution
-      because the original program does not have a manual page.
-      Instead, it has documentation in the &gnu;
-      <application>Info</application> format; see below.</para>
-
-    <para><command>&dhpackage;</command> is a program that...</para>
-
-  </refsect1>
-  <refsect1>
-    <title>OPTIONS</title>
-
-    <para>These programs follow the usual &gnu; command line syntax,
-      with long options starting with two dashes (`-').  A summary of
-      options is included below.  For a complete description, see the
-      <application>Info</application> files.</para>
-
-    <variablelist>
-      <varlistentry>
-        <term><option>-h</option>
-          <option>--help</option>
-        </term>
-        <listitem>
-          <para>Show summary of options.</para>
-        </listitem>
-      </varlistentry>
-      <varlistentry>
-        <term><option>-v</option>
-          <option>--version</option>
-        </term>
-        <listitem>
-          <para>Show version of program.</para>
-        </listitem>
-      </varlistentry>
-    </variablelist>
-  </refsect1>
-  <refsect1>
-    <title>SEE ALSO</title>
-
-    <para>bar (1), baz (1).</para>
-
-    <para>The programs are documented fully by <citetitle>The Rise and
-      Fall of a Fooish Bar</citetitle> available via the
-      <application>Info</application> system.</para>
-  </refsect1>
-  <refsect1>
-    <title>AUTHOR</title>
-
-    <para>This manual page was written by &dhusername; &dhemail; for
-      the &debian; system (but may be used by others).  Permission is
-      granted to copy, distribute and/or modify this document under
-      the terms of the &gnu; General Public License, Version 2 any
-         later version published by the Free Software Foundation.
-    </para>
-       <para>
-         On Debian systems, the complete text of the GNU General Public
-         License can be found in /usr/share/common-licenses/GPL.
-       </para>
-
-  </refsect1>
-</refentry>
-
-<!-- Keep this comment at the end of the file
-Local variables:
-mode: sgml
-sgml-omittag:t
-sgml-shorttag:t
-sgml-minimize-attributes:nil
-sgml-always-quote-attributes:t
-sgml-indent-step:2
-sgml-indent-data:t
-sgml-parent-document:nil
-sgml-default-dtd-file:nil
-sgml-exposed-tags:nil
-sgml-local-catalogs:nil
-sgml-local-ecat-files:nil
-End:
--->
-
-
diff --git a/zouba/debian/manpage.xml.ex b/zouba/debian/manpage.xml.ex
deleted file mode 100644 (file)
index a9973bf..0000000
+++ /dev/null
@@ -1,291 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
-"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-
-<!--
-
-`xsltproc -''-nonet \
-          -''-param man.charmap.use.subset "0" \
-          -''-param make.year.ranges "1" \
-          -''-param make.single.year.ranges "1" \
-          /usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl \
-          manpage.xml'
-
-A manual page <package>.<section> will be generated. You may view the
-manual page with: nroff -man <package>.<section> | less'. A typical entry
-in a Makefile or Makefile.am is:
-
-DB2MAN = /usr/share/sgml/docbook/stylesheet/xsl/nwalsh/manpages/docbook.xsl
-XP     = xsltproc -''-nonet -''-param man.charmap.use.subset "0"
-
-manpage.1: manpage.xml
-        $(XP) $(DB2MAN) $<
-
-The xsltproc binary is found in the xsltproc package. The XSL files are in
-docbook-xsl. A description of the parameters you can use can be found in the
-docbook-xsl-doc-* packages. Please remember that if you create the nroff
-version in one of the debian/rules file targets (such as build), you will need
-to include xsltproc and docbook-xsl in your Build-Depends control field.
-Alternatively use the xmlto command/package. That will also automatically
-pull in xsltproc and docbook-xsl.
-
-Notes for using docbook2x: docbook2x-man does not automatically create the
-AUTHOR(S) and COPYRIGHT sections. In this case, please add them manually as
-<refsect1> ... </refsect1>.
-
-To disable the automatic creation of the AUTHOR(S) and COPYRIGHT sections
-read /usr/share/doc/docbook-xsl/doc/manpages/authors.html. This file can be
-found in the docbook-xsl-doc-html package.
-
-Validation can be done using: `xmllint -''-noout -''-valid manpage.xml`
-
-General documentation about man-pages and man-page-formatting:
-man(1), man(7), http://www.tldp.org/HOWTO/Man-Page/
-
--->
-
-  <!-- Fill in your name for FIRSTNAME and SURNAME. -->
-  <!ENTITY dhfirstname "FIRSTNAME">
-  <!ENTITY dhsurname   "SURNAME">
-  <!-- dhusername could also be set to "&firstname; &surname;". -->  
-  <!ENTITY dhusername  "Max Waterman">
-  <!ENTITY dhemail     "davidmaxwaterman@jeeves">
-  <!-- SECTION should be 1-8, maybe w/ subsection other parameters are
-       allowed: see man(7), man(1) and
-       http://www.tldp.org/HOWTO/Man-Page/q2.html. -->
-  <!ENTITY dhsection   "SECTION">
-  <!-- TITLE should be something like "User commands" or similar (see
-       http://www.tldp.org/HOWTO/Man-Page/q2.html). -->
-  <!ENTITY dhtitle     "zouba User Manual">
-  <!ENTITY dhucpackage "ZOUBA">
-  <!ENTITY dhpackage   "zouba">
-]>
-
-<refentry>
-  <refentryinfo>
-    <title>&dhtitle;</title>
-    <productname>&dhpackage;</productname>
-    <authorgroup>
-      <author>
-       <firstname>&dhfirstname;</firstname>
-        <surname>&dhsurname;</surname>
-        <contrib>Wrote this manpage for the Debian system.</contrib>
-        <address>
-          <email>&dhemail;</email>
-        </address>
-      </author>
-    </authorgroup>
-    <copyright>
-      <year>2007</year>
-      <holder>&dhusername;</holder>
-    </copyright>
-    <legalnotice>
-      <para>This manual page was written for the Debian system
-        (but may be used by others).</para>
-      <para>Permission is granted to copy, distribute and/or modify this
-        document under the terms of the GNU General Public License,
-        Version 2 or (at your option) any later version published by
-        the Free Software Foundation.</para>
-      <para>On Debian systems, the complete text of the GNU General Public
-        License can be found in
-       <filename>/usr/share/common-licenses/GPL</filename>.</para>
-    </legalnotice>
-  </refentryinfo>
-  <refmeta>
-    <refentrytitle>&dhucpackage;</refentrytitle>
-    <manvolnum>&dhsection;</manvolnum>
-  </refmeta>
-  <refnamediv>
-    <refname>&dhpackage;</refname>
-    <refpurpose>program to do something</refpurpose>
-  </refnamediv>
-  <refsynopsisdiv>
-    <cmdsynopsis>
-      <command>&dhpackage;</command>
-      <!-- These are several examples, how syntaxes could look -->
-      <arg choice="plain"><option>-e <replaceable>this</replaceable></option></arg>
-      <arg choice="opt"><option>--example=<parameter>that</parameter></option></arg>
-      <arg choice="opt">
-        <group choice="req">
-          <arg choice="plain"><option>-e</option></arg>
-          <arg choice="plain"><option>--example</option></arg>
-        </group>
-        <replaceable class="option">this</replaceable>
-      </arg>
-      <arg choice="opt">
-        <group choice="req">
-          <arg choice="plain"><option>-e</option></arg>
-          <arg choice="plain"><option>--example</option></arg>
-        </group>
-        <group choice="req">
-          <arg choice="plain"><replaceable>this</replaceable></arg>
-          <arg choice="plain"><replaceable>that</replaceable></arg>
-        </group>
-      </arg>
-    </cmdsynopsis>
-    <cmdsynopsis>
-      <command>&dhpackage;</command>
-      <!-- Normally the help and version options make the programs stop
-           right after outputting the requested information. -->
-      <group choice="opt">
-        <arg choice="plain">
-          <group choice="req">
-            <arg choice="plain"><option>-h</option></arg>
-            <arg choice="plain"><option>--help</option></arg>
-          </group>
-        </arg>
-        <arg choice="plain">
-          <group choice="req">
-            <arg choice="plain"><option>-v</option></arg>
-            <arg choice="plain"><option>--version</option></arg>
-          </group>
-        </arg>
-      </group>
-    </cmdsynopsis>
-  </refsynopsisdiv>
-  <refsect1 id="description">
-    <title>DESCRIPTION</title>
-    <para>This manual page documents briefly the
-      <command>&dhpackage;</command> and <command>bar</command>
-      commands.</para>
-    <para>This manual page was written for the Debian distribution
-      because the original program does not have a manual page.
-      Instead, it has documentation in the GNU <citerefentry>
-        <refentrytitle>info</refentrytitle>
-        <manvolnum>1</manvolnum>
-      </citerefentry> format; see below.</para>
-    <para><command>&dhpackage;</command> is a program that...</para>
-  </refsect1>
-  <refsect1 id="options">
-    <title>OPTIONS</title>
-    <para>The program follows the usual GNU command line syntax,
-      with long options starting with two dashes (`-').  A summary of
-      options is included below.  For a complete description, see the
-      <citerefentry>
-        <refentrytitle>info</refentrytitle>
-        <manvolnum>1</manvolnum>
-      </citerefentry> files.</para>
-    <variablelist>
-      <!-- Use the variablelist.term.separator and the
-           variablelist.term.break.after parameters to
-           control the term elements. -->
-      <varlistentry>
-        <term><option>-e <replaceable>this</replaceable></option></term>
-        <term><option>--example=<replaceable>that</replaceable></option></term>
-        <listitem>
-          <para>Does this and that.</para>
-        </listitem>
-      </varlistentry>
-      <varlistentry>
-        <term><option>-h</option></term>
-        <term><option>--help</option></term>
-        <listitem>
-          <para>Show summary of options.</para>
-        </listitem>
-      </varlistentry>
-      <varlistentry>
-        <term><option>-v</option></term>
-        <term><option>--version</option></term>
-        <listitem>
-          <para>Show version of program.</para>
-        </listitem>
-      </varlistentry>
-    </variablelist>
-  </refsect1>
-  <refsect1 id="files">
-    <title>FILES</title>
-    <variablelist>
-      <varlistentry>
-        <term><filename>/etc/foo.conf</filename></term>
-        <listitem>
-          <para>The system-wide configuration file to control the
-            behaviour of <application>&dhpackage;</application>. See
-            <citerefentry>
-              <refentrytitle>foo.conf</refentrytitle>
-              <manvolnum>5</manvolnum>
-            </citerefentry> for further details.</para>
-        </listitem>
-      </varlistentry>
-      <varlistentry>
-        <term><filename>${HOME}/.foo.conf</filename></term>
-        <listitem>
-          <para>The per-user configuration file to control the
-             behaviour of <application>&dhpackage;</application>. See
-             <citerefentry>
-               <refentrytitle>foo.conf</refentrytitle>
-               <manvolnum>5</manvolnum>
-             </citerefentry> for further details.</para>
-        </listitem>
-      </varlistentry>
-    </variablelist>
-  </refsect1>
-  <refsect1 id="environment">
-    <title>ENVIONMENT</title>
-    <variablelist>
-      <varlistentry>
-        <term><envar>FOO_CONF</envar></term>
-        <listitem>
-          <para>If used, the defined file is used as configuration
-            file (see also <xref linkend="files"/>).</para>
-        </listitem>
-      </varlistentry>
-    </variablelist>
-  </refsect1>
-  <refsect1 id="diagnostics">
-    <title>DIAGNOSTICS</title>
-    <para>The following diagnostics may be issued
-      on <filename class="devicefile">stderr</filename>:</para>
-    <variablelist>
-      <varlistentry>
-        <term><errortext>Bad configuration file. Exiting.</errortext></term>
-        <listitem>
-          <para>The configuration file seems to contain a broken configuration
-            line. Use the <option>--verbose</option> option, to get more info.
-          </para>
-        </listitem>
-      </varlistentry>
-    </variablelist>
-    <para><command>&dhpackage;</command> provides some return codes, that can
-      be used in scripts:</para>
-    <segmentedlist>
-      <segtitle>Code</segtitle>
-      <segtitle>Diagnostic</segtitle>
-      <seglistitem>
-        <seg><errorcode>0</errorcode></seg>
-        <seg>Program exited successfully.</seg>
-      </seglistitem>
-      <seglistitem>
-        <seg><errorcode>1</errorcode></seg>
-        <seg>The configuration file seems to be broken.</seg>
-      </seglistitem>
-    </segmentedlist>
-  </refsect1>
-  <refsect1 id="bugs">
-    <!-- Or use this section to tell about upstream BTS. -->
-    <title>BUGS</title>
-    <para>The program is currently limited to only work
-      with the <package>foobar</package> library.</para>
-    <para>The upstreams <acronym>BTS</acronym> can be found
-      at <ulink url="http://bugzilla.foo.tld"/>.</para>
-  </refsect1>
-  <refsect1 id="see_also">
-    <title>SEE ALSO</title>
-    <!-- In alpabetical order. -->
-    <para><citerefentry>
-        <refentrytitle>bar</refentrytitle>
-        <manvolnum>1</manvolnum>
-      </citerefentry>, <citerefentry>
-        <refentrytitle>baz</refentrytitle>
-        <manvolnum>1</manvolnum>
-      </citerefentry>, <citerefentry>
-        <refentrytitle>foo.conf</refentrytitle>
-        <manvolnum>5</manvolnum>
-      </citerefentry></para>
-    <para>The programs are documented fully by <citetitle>The Rise and
-      Fall of a Fooish Bar</citetitle> available via the <citerefentry>
-        <refentrytitle>info</refentrytitle>
-        <manvolnum>1</manvolnum>
-      </citerefentry> system.</para>
-  </refsect1>
-</refentry>
-
diff --git a/zouba/debian/menu.ex b/zouba/debian/menu.ex
deleted file mode 100644 (file)
index 1452157..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-?package(zouba):needs="X11|text|vc|wm" section="Applications/see-menu-manual"\
-  title="zouba" command="/usr/bin/zouba"
diff --git a/zouba/debian/postinst.ex b/zouba/debian/postinst.ex
deleted file mode 100644 (file)
index a6404b3..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/bin/sh
-# postinst script for zouba
-#
-# see: dh_installdeb(1)
-
-set -e
-
-# summary of how this script can be called:
-#        * <postinst> `configure' <most-recently-configured-version>
-#        * <old-postinst> `abort-upgrade' <new version>
-#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
-#          <new-version>
-#        * <postinst> `abort-remove'
-#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
-#          <failed-install-package> <version> `removing'
-#          <conflicting-package> <version>
-# for details, see http://www.debian.org/doc/debian-policy/ or
-# the debian-policy package
-
-
-case "$1" in
-    configure)
-    ;;
-
-    abort-upgrade|abort-remove|abort-deconfigure)
-    ;;
-
-    *)
-        echo "postinst called with unknown argument \`$1'" >&2
-        exit 1
-    ;;
-esac
-
-# dh_installdeb will replace this with shell code automatically
-# generated by other debhelper scripts.
-
-#DEBHELPER#
-
-exit 0
-
-
diff --git a/zouba/debian/postrm.ex b/zouba/debian/postrm.ex
deleted file mode 100644 (file)
index 09f682e..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/bin/sh
-# postrm script for zouba
-#
-# see: dh_installdeb(1)
-
-set -e
-
-# summary of how this script can be called:
-#        * <postrm> `remove'
-#        * <postrm> `purge'
-#        * <old-postrm> `upgrade' <new-version>
-#        * <new-postrm> `failed-upgrade' <old-version>
-#        * <new-postrm> `abort-install'
-#        * <new-postrm> `abort-install' <old-version>
-#        * <new-postrm> `abort-upgrade' <old-version>
-#        * <disappearer's-postrm> `disappear' <overwriter>
-#          <overwriter-version>
-# for details, see http://www.debian.org/doc/debian-policy/ or
-# the debian-policy package
-
-
-case "$1" in
-    purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
-    ;;
-
-    *)
-        echo "postrm called with unknown argument \`$1'" >&2
-        exit 1
-    ;;
-esac
-
-# dh_installdeb will replace this with shell code automatically
-# generated by other debhelper scripts.
-
-#DEBHELPER#
-
-exit 0
-
-
diff --git a/zouba/debian/preinst.ex b/zouba/debian/preinst.ex
deleted file mode 100644 (file)
index d4873d1..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/bin/sh
-# preinst script for zouba
-#
-# see: dh_installdeb(1)
-
-set -e
-
-# summary of how this script can be called:
-#        * <new-preinst> `install'
-#        * <new-preinst> `install' <old-version>
-#        * <new-preinst> `upgrade' <old-version>
-#        * <old-preinst> `abort-upgrade' <new-version>
-# for details, see http://www.debian.org/doc/debian-policy/ or
-# the debian-policy package
-
-
-case "$1" in
-    install|upgrade)
-    ;;
-
-    abort-upgrade)
-    ;;
-
-    *)
-        echo "preinst called with unknown argument \`$1'" >&2
-        exit 1
-    ;;
-esac
-
-# dh_installdeb will replace this with shell code automatically
-# generated by other debhelper scripts.
-
-#DEBHELPER#
-
-exit 0
-
-
diff --git a/zouba/debian/prerm.ex b/zouba/debian/prerm.ex
deleted file mode 100644 (file)
index 76b8d2d..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/bin/sh
-# prerm script for zouba
-#
-# see: dh_installdeb(1)
-
-set -e
-
-# summary of how this script can be called:
-#        * <prerm> `remove'
-#        * <old-prerm> `upgrade' <new-version>
-#        * <new-prerm> `failed-upgrade' <old-version>
-#        * <conflictor's-prerm> `remove' `in-favour' <package> <new-version>
-#        * <deconfigured's-prerm> `deconfigure' `in-favour'
-#          <package-being-installed> <version> `removing'
-#          <conflicting-package> <version>
-# for details, see http://www.debian.org/doc/debian-policy/ or
-# the debian-policy package
-
-
-case "$1" in
-    remove|upgrade|deconfigure)
-    ;;
-
-    failed-upgrade)
-    ;;
-
-    *)
-        echo "prerm called with unknown argument \`$1'" >&2
-        exit 1
-    ;;
-esac
-
-# dh_installdeb will replace this with shell code automatically
-# generated by other debhelper scripts.
-
-#DEBHELPER#
-
-exit 0
-
-
diff --git a/zouba/debian/rules b/zouba/debian/rules
deleted file mode 100755 (executable)
index f8b4404..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-#!/usr/bin/make -f
-# -*- makefile -*-
-# Sample debian/rules that uses debhelper.
-# This file was originally written by Joey Hess and Craig Small.
-# As a special exception, when this file is copied by dh-make into a
-# dh-make output file, you may use that output file without restriction.
-# This special exception was added by Craig Small in version 0.37 of dh-make.
-
-# Uncomment this to turn on verbose mode.
-#export DH_VERBOSE=1
-
-
-
-
-
-configure: configure-stamp
-configure-stamp:
-       dh_testdir
-       # Add here commands to configure the package.
-
-       qmake
-       touch configure-stamp
-
-
-build: build-stamp
-
-build-stamp: configure-stamp  
-       dh_testdir
-
-       # Add here commands to compile the package.
-       $(MAKE)
-       #docbook-to-man debian/zouba.sgml > zouba.1
-
-       touch $@
-
-clean: 
-       dh_testdir
-       dh_testroot
-       rm -f build-stamp configure-stamp
-
-       # Add here commands to clean up after the build process.
-       -$(MAKE) clean
-
-       dh_clean 
-
-install: build
-       dh_testdir
-       dh_testroot
-       dh_clean -k 
-       dh_installdirs
-
-       # Add here commands to install the package into debian/zouba.
-       $(MAKE) INSTALL_ROOT="$(CURDIR)"/debian/zouba install
-
-
-# Build architecture-independent files here.
-binary-indep: build install
-# We have nothing to do by default.
-
-# Build architecture-dependent files here.
-binary-arch: build install
-       dh_testdir
-       dh_testroot
-       dh_installchangelogs 
-       dh_installdocs
-       dh_installexamples
-#      dh_install
-#      dh_installmenu
-#      dh_installdebconf       
-#      dh_installlogrotate
-#      dh_installemacsen
-#      dh_installpam
-#      dh_installmime
-#      dh_python
-#      dh_installinit
-#      dh_installcron
-#      dh_installinfo
-       dh_installman
-       dh_link
-       dh_strip
-       dh_compress
-       dh_fixperms
-#      dh_perl
-#      dh_makeshlibs
-       dh_installdeb
-       dh_shlibdeps
-       dh_gencontrol
-       dh_md5sums
-       dh_builddeb
-
-binary: binary-indep binary-arch
-.PHONY: build clean binary-indep binary-arch binary install configure
diff --git a/zouba/debian/watch.ex b/zouba/debian/watch.ex
deleted file mode 100644 (file)
index 658e247..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-# Example watch control file for uscan
-# Rename this file to "watch" and then you can run the "uscan" command
-# to check for upstream updates and more.
-# See uscan(1) for format
-
-# Compulsory line, this is a version 3 file
-version=3
-
-# Uncomment to examine a Webpage
-# <Webpage URL> <string match>
-#http://www.example.com/downloads.php zouba-(.*)\.tar\.gz
-
-# Uncomment to examine a Webserver directory
-#http://www.example.com/pub/zouba-(.*)\.tar\.gz
-
-# Uncommment to examine a FTP server
-#ftp://ftp.example.com/pub/zouba-(.*)\.tar\.gz debian uupdate
-
-# Uncomment to find new files on sourceforge, for devscripts >= 2.9
-# http://sf.net/zouba/zouba-(.*)\.tar\.gz
-
-# Uncomment to find new files on GooglePages
-# http://example.googlepages.com/foo.html zouba-(.*)\.tar\.gz
diff --git a/zouba/debian/zouba.debhelper.log b/zouba/debian/zouba.debhelper.log
deleted file mode 100644 (file)
index 44e74eb..0000000
+++ /dev/null
@@ -1,432 +0,0 @@
-dh_installdirs
-dh_installchangelogs
-dh_installdocs
-dh_installexamples
-dh_installman
-dh_link
-dh_strip
-dh_compress
-dh_fixperms
-dh_installdeb
-dh_installdirs
-dh_installchangelogs
-dh_installdocs
-dh_installexamples
-dh_installman
-dh_link
-dh_strip
-dh_compress
-dh_fixperms
-dh_installdeb
-dh_installdirs
-dh_installchangelogs
-dh_installdocs
-dh_installexamples
-dh_installman
-dh_link
-dh_strip
-dh_compress
-dh_fixperms
-dh_installdeb
-dh_installdirs
-dh_installchangelogs
-dh_installdocs
-dh_installexamples
-dh_installman
-dh_link
-dh_strip
-dh_compress
-dh_fixperms
-dh_installdeb
-dh_installdirs
-dh_installchangelogs
-dh_installdocs
-dh_installexamples
-dh_installman
-dh_link
-dh_strip
-dh_compress
-dh_fixperms
-dh_installdeb
-dh_installdirs
-dh_installchangelogs
-dh_installdocs
-dh_installexamples
-dh_installman
-dh_link
-dh_strip
-dh_compress
-dh_fixperms
-dh_installdeb
-dh_gencontrol
-dh_md5sums
-dh_builddeb
-dh_installdirs
-dh_installdirs
-dh_installchangelogs
-dh_installdocs
-dh_installexamples
-dh_installman
-dh_link
-dh_strip
-dh_compress
-dh_fixperms
-dh_installdeb
-dh_gencontrol
-dh_md5sums
-dh_builddeb
-dh_installdirs
-dh_installchangelogs
-dh_installdocs
-dh_installexamples
-dh_installman
-dh_link
-dh_strip
-dh_compress
-dh_fixperms
-dh_installdeb
-dh_gencontrol
-dh_md5sums
-dh_builddeb
-dh_installdirs
-dh_installchangelogs
-dh_installdocs
-dh_installexamples
-dh_installman
-dh_link
-dh_strip
-dh_compress
-dh_fixperms
-dh_installdeb
-dh_gencontrol
-dh_md5sums
-dh_builddeb
-dh_installdirs
-dh_installdirs
-dh_installdirs
-dh_installchangelogs
-dh_installdocs
-dh_installexamples
-dh_installman
-dh_link
-dh_strip
-dh_compress
-dh_fixperms
-dh_installdeb
-dh_gencontrol
-dh_md5sums
-dh_builddeb
-dh_installdirs
-dh_installdirs
-dh_installdirs
-dh_installchangelogs
-dh_installdocs
-dh_installexamples
-dh_installman
-dh_link
-dh_strip
-dh_compress
-dh_fixperms
-dh_installdeb
-dh_gencontrol
-dh_md5sums
-dh_builddeb
-dh_installdirs
-dh_installchangelogs
-dh_installdocs
-dh_installexamples
-dh_installman
-dh_link
-dh_strip
-dh_compress
-dh_fixperms
-dh_installdeb
-dh_gencontrol
-dh_md5sums
-dh_builddeb
-dh_installdirs
-dh_installchangelogs
-dh_installdocs
-dh_installexamples
-dh_installman
-dh_link
-dh_strip
-dh_compress
-dh_fixperms
-dh_installdeb
-dh_gencontrol
-dh_md5sums
-dh_builddeb
-dh_installdirs
-dh_installchangelogs
-dh_installdocs
-dh_installexamples
-dh_installman
-dh_link
-dh_strip
-dh_compress
-dh_fixperms
-dh_installdeb
-dh_gencontrol
-dh_md5sums
-dh_builddeb
-dh_installdirs
-dh_installchangelogs
-dh_installdocs
-dh_installexamples
-dh_installman
-dh_link
-dh_strip
-dh_compress
-dh_fixperms
-dh_installdeb
-dh_gencontrol
-dh_md5sums
-dh_builddeb
-dh_installdirs
-dh_installchangelogs
-dh_installdocs
-dh_installexamples
-dh_installman
-dh_link
-dh_strip
-dh_compress
-dh_fixperms
-dh_installdeb
-dh_gencontrol
-dh_md5sums
-dh_builddeb
-dh_installdirs
-dh_installchangelogs
-dh_installdocs
-dh_installexamples
-dh_installman
-dh_link
-dh_strip
-dh_compress
-dh_fixperms
-dh_installdeb
-dh_gencontrol
-dh_md5sums
-dh_builddeb
-dh_installdirs
-dh_installchangelogs
-dh_installdocs
-dh_installexamples
-dh_installman
-dh_link
-dh_strip
-dh_compress
-dh_fixperms
-dh_installdeb
-dh_gencontrol
-dh_md5sums
-dh_builddeb
-dh_installdirs
-dh_installchangelogs
-dh_installdocs
-dh_installexamples
-dh_installman
-dh_link
-dh_strip
-dh_compress
-dh_fixperms
-dh_installdeb
-dh_gencontrol
-dh_md5sums
-dh_builddeb
-dh_installdirs
-dh_installchangelogs
-dh_installdocs
-dh_installexamples
-dh_installman
-dh_link
-dh_strip
-dh_compress
-dh_fixperms
-dh_installdeb
-dh_gencontrol
-dh_md5sums
-dh_builddeb
-dh_installdirs
-dh_installchangelogs
-dh_installdocs
-dh_installexamples
-dh_installman
-dh_link
-dh_strip
-dh_compress
-dh_fixperms
-dh_installdeb
-dh_gencontrol
-dh_md5sums
-dh_builddeb
-dh_installdirs
-dh_installchangelogs
-dh_installdocs
-dh_installexamples
-dh_installman
-dh_link
-dh_strip
-dh_compress
-dh_fixperms
-dh_installdeb
-dh_gencontrol
-dh_md5sums
-dh_builddeb
-dh_installdirs
-dh_installchangelogs
-dh_installdocs
-dh_installexamples
-dh_installman
-dh_link
-dh_strip
-dh_compress
-dh_fixperms
-dh_installdeb
-dh_gencontrol
-dh_md5sums
-dh_builddeb
-dh_installdirs
-dh_installchangelogs
-dh_installdocs
-dh_installexamples
-dh_installman
-dh_link
-dh_strip
-dh_compress
-dh_fixperms
-dh_installdeb
-dh_gencontrol
-dh_md5sums
-dh_builddeb
-dh_installdirs
-dh_installchangelogs
-dh_installdocs
-dh_installexamples
-dh_installman
-dh_link
-dh_strip
-dh_compress
-dh_fixperms
-dh_installdeb
-dh_gencontrol
-dh_md5sums
-dh_builddeb
-dh_installdirs
-dh_installchangelogs
-dh_installdocs
-dh_installexamples
-dh_installman
-dh_link
-dh_strip
-dh_compress
-dh_fixperms
-dh_installdeb
-dh_gencontrol
-dh_md5sums
-dh_builddeb
-dh_installdirs
-dh_installchangelogs
-dh_installdocs
-dh_installexamples
-dh_installman
-dh_link
-dh_strip
-dh_compress
-dh_fixperms
-dh_installdeb
-dh_gencontrol
-dh_md5sums
-dh_builddeb
-dh_installdirs
-dh_installchangelogs
-dh_installdocs
-dh_installexamples
-dh_installman
-dh_link
-dh_strip
-dh_compress
-dh_fixperms
-dh_installdeb
-dh_gencontrol
-dh_md5sums
-dh_builddeb
-dh_installdirs
-dh_installchangelogs
-dh_installdocs
-dh_installexamples
-dh_installman
-dh_link
-dh_strip
-dh_compress
-dh_fixperms
-dh_installdeb
-dh_gencontrol
-dh_md5sums
-dh_builddeb
-dh_installdirs
-dh_installchangelogs
-dh_installdocs
-dh_installexamples
-dh_installman
-dh_link
-dh_strip
-dh_compress
-dh_fixperms
-dh_installdeb
-dh_gencontrol
-dh_md5sums
-dh_builddeb
-dh_installdirs
-dh_installchangelogs
-dh_installdocs
-dh_installexamples
-dh_installman
-dh_link
-dh_strip
-dh_compress
-dh_fixperms
-dh_installdeb
-dh_gencontrol
-dh_md5sums
-dh_builddeb
-dh_installdirs
-dh_installchangelogs
-dh_installdocs
-dh_installexamples
-dh_installman
-dh_link
-dh_strip
-dh_compress
-dh_fixperms
-dh_installdeb
-dh_gencontrol
-dh_md5sums
-dh_builddeb
-dh_installdirs
-dh_installchangelogs
-dh_installdocs
-dh_installexamples
-dh_installman
-dh_link
-dh_strip
-dh_compress
-dh_fixperms
-dh_installdeb
-dh_gencontrol
-dh_md5sums
-dh_builddeb
-dh_installdirs
-dh_installchangelogs
-dh_installdocs
-dh_installexamples
-dh_installman
-dh_link
-dh_strip
-dh_compress
-dh_fixperms
-dh_installdeb
-dh_gencontrol
-dh_md5sums
-dh_builddeb
diff --git a/zouba/debian/zouba.default.ex b/zouba/debian/zouba.default.ex
deleted file mode 100644 (file)
index 5af76cd..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-# Defaults for zouba initscript
-# sourced by /etc/init.d/zouba
-# installed at /etc/default/zouba by the maintainer scripts
-
-#
-# This is a POSIX shell fragment
-#
-
-# Additional options that are passed to the Daemon.
-DAEMON_OPTS=""
diff --git a/zouba/debian/zouba.doc-base.EX b/zouba/debian/zouba.doc-base.EX
deleted file mode 100644 (file)
index fe69624..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-Document: zouba
-Title: Debian zouba Manual
-Author: <insert document author here>
-Abstract: This manual describes what zouba is
- and how it can be used to
- manage online manuals on Debian systems.
-Section: unknown
-
-Format: debiandoc-sgml
-Files: /usr/share/doc/zouba/zouba.sgml.gz
-
-Format: postscript
-Files: /usr/share/doc/zouba/zouba.ps.gz
-
-Format: text
-Files: /usr/share/doc/zouba/zouba.text.gz
-
-Format: HTML
-Index: /usr/share/doc/zouba/html/index.html
-Files: /usr/share/doc/zouba/html/*.html
-
-
diff --git a/zouba/debian/zouba.tarlist b/zouba/debian/zouba.tarlist
deleted file mode 100644 (file)
index a1dcb65..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-755 root root . usr  /
-755 root root . usr/share  /
-755 root root . usr/share/doc  /
-755 root root . usr/share/doc/zouba  /
-644 root root . usr/share/doc/zouba/changelog.gz debian/zouba/usr/share/doc/zouba/changelog.gz
-644 root root . usr/share/doc/zouba/README.Debian debian/zouba/usr/share/doc/zouba/README.Debian
-644 root root . usr/share/doc/zouba/copyright debian/zouba/usr/share/doc/zouba/copyright
-755 root root . usr/share/applications  /
-755 root root . usr/share/applications/hildon  /
-644 root root . usr/share/applications/hildon/zouba.desktop debian/zouba/usr/share/applications/hildon/zouba.desktop
-755 root root . usr/share/icons  /
-755 root root . usr/share/icons/hicolor  /
-755 root root . usr/share/icons/hicolor/64x64  /
-755 root root . usr/share/icons/hicolor/64x64/apps  /
-644 root root . usr/share/icons/hicolor/64x64/apps/zouba.png debian/zouba/usr/share/icons/hicolor/64x64/apps/zouba.png
-755 root root . usr/bin  /
-755 root root . usr/bin/zouba  debian/zouba/usr/bin/zouba
-755 root root . usr/sbin  /
diff --git a/zouba/include/QGeoPositionInfo b/zouba/include/QGeoPositionInfo
deleted file mode 100644 (file)
index d6feec9..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include "qgeopositioninfo.h"
diff --git a/zouba/include/QGeoPositionInfoSource b/zouba/include/QGeoPositionInfoSource
deleted file mode 100644 (file)
index b7cc338..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include "qgeopositioninfosource.h"
diff --git a/zouba/include/qgeocoordinate.h b/zouba/include/qgeocoordinate.h
deleted file mode 100644 (file)
index 9a4902a..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 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$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** 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.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#ifndef QGEOCOORDINATE_H
-#define QGEOCOORDINATE_H
-
-#include "qmobilityglobal.h"
-
-#include <QString>
-
-QT_BEGIN_NAMESPACE
-class QDebug;
-class QDataStream;
-QT_END_NAMESPACE
-
-QT_BEGIN_HEADER
-
-QTM_BEGIN_NAMESPACE
-
-class QGeoCoordinatePrivate;
-class Q_LOCATION_EXPORT QGeoCoordinate
-{
-public:
-    enum CoordinateType {
-        InvalidCoordinate,
-        Coordinate2D,
-        Coordinate3D
-    };
-
-    enum CoordinateFormat {
-        Degrees,
-        DegreesWithHemisphere,
-        DegreesMinutes,
-        DegreesMinutesWithHemisphere,
-        DegreesMinutesSeconds,
-        DegreesMinutesSecondsWithHemisphere
-    };
-
-    QGeoCoordinate();
-    QGeoCoordinate(double latitude, double longitude);
-    QGeoCoordinate(double latitude, double longitude, double altitude);
-    QGeoCoordinate(const QGeoCoordinate &other);
-    ~QGeoCoordinate();
-
-    QGeoCoordinate &operator=(const QGeoCoordinate &other);
-
-    bool operator==(const QGeoCoordinate &other) const;
-    inline bool operator!=(const QGeoCoordinate &other) const {
-        return !operator==(other);
-    }
-
-    bool isValid() const;
-    CoordinateType type() const;
-
-    void setLatitude(double latitude);
-    double latitude() const;
-
-    void setLongitude(double longitude);
-    double longitude() const;
-
-    void setAltitude(double altitude);
-    double altitude() const;
-
-    qreal distanceTo(const QGeoCoordinate &other) const;
-    qreal azimuthTo(const QGeoCoordinate &other) const;
-
-    QString toString(CoordinateFormat format = DegreesMinutesSecondsWithHemisphere) const;
-
-private:
-    QGeoCoordinatePrivate *d;
-};
-
-#ifndef QT_NO_DEBUG_STREAM
-Q_LOCATION_EXPORT QDebug operator<<(QDebug, const QGeoCoordinate &);
-#endif
-
-#ifndef QT_NO_DATASTREAM
-Q_LOCATION_EXPORT QDataStream &operator<<(QDataStream &stream, const QGeoCoordinate &coordinate);
-Q_LOCATION_EXPORT QDataStream &operator>>(QDataStream &stream, QGeoCoordinate &coordinate);
-#endif
-
-QTM_END_NAMESPACE
-
-QT_END_HEADER
-
-#endif
diff --git a/zouba/include/qgeopositioninfo.h b/zouba/include/qgeopositioninfo.h
deleted file mode 100644 (file)
index 0d6bee9..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 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$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** 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.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#ifndef QGEOPOSITIONINFO_H
-#define QGEOPOSITIONINFO_H
-
-#include "qmobilityglobal.h"
-#include "qgeocoordinate.h"
-
-#include <QDateTime>
-
-QT_BEGIN_NAMESPACE
-class QDebug;
-class QDataStream;
-QT_END_NAMESPACE
-
-QT_BEGIN_HEADER
-
-QTM_BEGIN_NAMESPACE
-
-class QGeoPositionInfoPrivate;
-class Q_LOCATION_EXPORT QGeoPositionInfo
-{
-public:
-    enum Attribute {
-        Direction,
-        GroundSpeed,
-        VerticalSpeed,
-        MagneticVariation,
-        HorizontalAccuracy,
-        VerticalAccuracy
-    };
-
-    QGeoPositionInfo();
-    QGeoPositionInfo(const QGeoCoordinate &coordinate, const QDateTime &updateTime);
-    QGeoPositionInfo(const QGeoPositionInfo &other);
-    ~QGeoPositionInfo();
-
-    QGeoPositionInfo &operator=(const QGeoPositionInfo &other);
-
-    bool operator==(const QGeoPositionInfo &other) const;
-    inline bool operator!=(const QGeoPositionInfo &other) const {
-        return !operator==(other);
-    }
-
-    bool isValid() const;
-
-    void setDateTime(const QDateTime &dateTime);
-    QDateTime dateTime() const;
-
-    void setCoordinate(const QGeoCoordinate &coordinate);
-    QGeoCoordinate coordinate() const;
-
-    void setAttribute(Attribute attribute, qreal value);
-    qreal attribute(Attribute attribute) const;
-    void removeAttribute(Attribute attribute);
-    bool hasAttribute(Attribute attribute) const;
-
-private:
-#ifndef QT_NO_DEBUG_STREAM
-    friend Q_LOCATION_EXPORT QDebug operator<<(QDebug dbg, const QGeoPositionInfo &update);
-#endif
-#ifndef QT_NO_DATASTREAM
-    friend Q_LOCATION_EXPORT QDataStream &operator<<(QDataStream &stream, const QGeoPositionInfo &update);
-    friend Q_LOCATION_EXPORT QDataStream &operator>>(QDataStream &stream, QGeoPositionInfo &update);
-#endif
-    QGeoPositionInfoPrivate *d;
-};
-
-#ifndef QT_NO_DEBUG_STREAM
-Q_LOCATION_EXPORT QDebug operator<<(QDebug dbg, const QGeoPositionInfo &update);
-#endif
-
-#ifndef QT_NO_DATASTREAM
-Q_LOCATION_EXPORT QDataStream &operator<<(QDataStream &stream, const QGeoPositionInfo &update);
-Q_LOCATION_EXPORT QDataStream &operator>>(QDataStream &stream, QGeoPositionInfo &update);
-#endif
-
-QTM_END_NAMESPACE
-
-QT_END_HEADER
-
-#endif
diff --git a/zouba/include/qgeopositioninfosource.h b/zouba/include/qgeopositioninfosource.h
deleted file mode 100644 (file)
index 359302d..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 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$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** 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.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#ifndef QGEOPOSITIONINFOSOURCE_H
-#define QGEOPOSITIONINFOSOURCE_H
-
-#include "qmobilityglobal.h"
-#include "qgeopositioninfo.h"
-
-#include <QObject>
-
-QT_BEGIN_HEADER
-
-QTM_BEGIN_NAMESPACE
-
-class QGeoPositionInfoSourcePrivate;
-class Q_LOCATION_EXPORT QGeoPositionInfoSource : public QObject
-{
-    Q_OBJECT
-    Q_PROPERTY(int updateInterval READ updateInterval WRITE setUpdateInterval)
-    Q_PROPERTY(int minimumUpdateInterval READ minimumUpdateInterval)
-
-public:
-    enum PositioningMethod {
-        SatellitePositioningMethods = 0x000000ff,
-        NonSatellitePositioningMethods = 0xffffff00,
-        AllPositioningMethods = 0xffffffff
-    };
-    Q_DECLARE_FLAGS(PositioningMethods, PositioningMethod)
-
-    explicit QGeoPositionInfoSource(QObject *parent);
-    virtual ~QGeoPositionInfoSource();
-
-    virtual void setUpdateInterval(int msec);
-    int updateInterval() const;
-
-    virtual void setPreferredPositioningMethods(PositioningMethods methods);
-    PositioningMethods preferredPositioningMethods() const;
-
-    virtual QGeoPositionInfo lastKnownPosition(bool fromSatellitePositioningMethodsOnly = false) const = 0;
-
-    virtual PositioningMethods supportedPositioningMethods() const = 0;
-    virtual int minimumUpdateInterval() const = 0;
-
-    static QGeoPositionInfoSource *createDefaultSource(QObject *parent);
-
-public Q_SLOTS:
-    virtual void startUpdates() = 0;
-    virtual void stopUpdates() = 0;
-
-    virtual void requestUpdate(int timeout = 0) = 0;
-
-Q_SIGNALS:
-    void positionUpdated(const QGeoPositionInfo &update);
-    void updateTimeout();
-
-private:
-    Q_DISABLE_COPY(QGeoPositionInfoSource)
-    QGeoPositionInfoSourcePrivate *d;
-};
-
-Q_DECLARE_OPERATORS_FOR_FLAGS(QGeoPositionInfoSource::PositioningMethods)
-
-QTM_END_NAMESPACE
-
-QT_END_HEADER
-
-#endif
diff --git a/zouba/include/qmobilityglobal.h b/zouba/include/qmobilityglobal.h
deleted file mode 100644 (file)
index ac9895d..0000000
+++ /dev/null
@@ -1,188 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 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$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** 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.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#ifndef QMOBILITYGLOBAL_H
-#define QMOBILITYGLOBAL_H
-
-
-#define QTM_VERSION_STR   "1.0.0"
-/*
-   QTM_VERSION is (major << 16) + (minor << 8) + patch.
-*/
-#define QTM_VERSION 0x010000
-/*
-   can be used like #if (QTM_VERSION >= QTM_VERSION_CHECK(1, 0, 0))
-*/
-#define QTM_VERSION_CHECK(major, minor, patch) ((major<<16)|(minor<<8)|(patch))
-
-#define QTM_PACKAGEDATE_STR "YYYY-MM-DD"
-
-#define QTM_PACKAGE_TAG ""
-
-#if defined(QTM_BUILD_UNITTESTS)
-# include <qconfig.h>
-# if !defined(QT_BUILD_INTERNAL)
-#   define QT_BUILD_INTERNAL
-# endif
-#endif
-#include <QtCore/qglobal.h>
-
-#if defined(SYMBIAN_DATABASEMANAGER_SERVER)
-#  define Q_SERVICEFW_EXPORT
-#else
-#  if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
-#    if defined(QT_NODLL)
-#      undef QT_MAKEDLL
-#      undef QT_DLL
-#    elif defined(QT_MAKEDLL)
-#      if defined(QT_DLL)
-#        undef QT_DLL
-#      endif
-#      if defined(QT_BUILD_BEARER_LIB)
-#        define Q_BEARER_EXPORT Q_DECL_EXPORT
-#      else
-#        define Q_BEARER_EXPORT Q_DECL_IMPORT
-#      endif
-#      if defined(QT_BUILD_CFW_LIB)
-#        define Q_PUBLISHSUBSCRIBE_EXPORT Q_DECL_EXPORT
-#      else
-#        define Q_PUBLISHSUBSCRIBE_EXPORT Q_DECL_IMPORT
-#      endif
-#      if defined(QT_BUILD_CONTACTS_LIB)
-#        define Q_CONTACTS_EXPORT Q_DECL_EXPORT
-#      else
-#        define Q_CONTACTS_EXPORT Q_DECL_IMPORT
-#      endif
-#      if defined(QT_BUILD_VERSIT_LIB)
-#        define Q_VERSIT_EXPORT Q_DECL_EXPORT
-#      else
-#        define Q_VERSIT_EXPORT Q_DECL_IMPORT
-#      endif
-#      if defined(QT_BUILD_LOCATION_LIB)
-#        define Q_LOCATION_EXPORT Q_DECL_EXPORT
-#      else
-#        define Q_LOCATION_EXPORT Q_DECL_IMPORT
-#      endif
-#      if defined(QT_BUILD_MESSAGING_LIB)
-#        define Q_MESSAGING_EXPORT Q_DECL_EXPORT
-#      else
-#        define Q_MESSAGING_EXPORT Q_DECL_IMPORT
-#      endif
-#      if defined(QT_BUILD_MEDIA_LIB)
-#        define Q_MEDIA_EXPORT Q_DECL_EXPORT
-#      else
-#        define Q_MEDIA_EXPORT Q_DECL_IMPORT
-#      endif
-#      if defined(QT_BUILD_SFW_LIB)
-#        define Q_SERVICEFW_EXPORT Q_DECL_EXPORT
-#      else
-#        define Q_SERVICEFW_EXPORT Q_DECL_IMPORT
-#      endif
-#      if defined(QT_BUILD_SYSINFO_LIB)
-#        define Q_SYSINFO_EXPORT Q_DECL_EXPORT
-#      else
-#        define Q_SYSINFO_EXPORT Q_DECL_IMPORT
-#      endif
-#      if defined(QT_BUILD_SENSORS_LIB)
-#        define Q_SENSORS_EXPORT Q_DECL_EXPORT
-#      else
-#        define Q_SENSORS_EXPORT Q_DECL_IMPORT
-#      endif
-#    elif defined(QT_DLL) /* use a Qt DLL library */
-#      define Q_BEARER_EXPORT Q_DECL_IMPORT
-#      define Q_PUBLISHSUBSCRIBE_EXPORT Q_DECL_IMPORT
-#      define Q_CONTACTS_EXPORT Q_DECL_IMPORT
-#      define Q_VERSIT_EXPORT Q_DECL_IMPORT
-#      define Q_LOCATION_EXPORT Q_DECL_IMPORT
-#      define Q_MEDIA_EXPORT Q_DECL_IMPORT
-#      define Q_MESSAGING_EXPORT Q_DECL_IMPORT
-#      define Q_SERVICEFW_EXPORT Q_DECL_IMPORT
-#      define Q_SYSINFO_EXPORT Q_DECL_IMPORT
-#      define Q_SENSORS_EXPORT Q_DECL_IMPORT
-#    endif
-#  else
-#  endif
-#  if !defined(Q_SERVICEFW_EXPORT)
-#    if defined(QT_SHARED)
-#      define Q_BEARER_EXPORT Q_DECL_EXPORT
-#      define Q_PUBLISHSUBSCRIBE_EXPORT Q_DECL_EXPORT
-#      define Q_CONTACTS_EXPORT Q_DECL_EXPORT
-#      define Q_VERSIT_EXPORT Q_DECL_EXPORT
-#      define Q_LOCATION_EXPORT Q_DECL_EXPORT
-#      define Q_MEDIA_EXPORT Q_DECL_EXPORT
-#      define Q_MESSAGING_EXPORT Q_DECL_EXPORT
-#      define Q_SERVICEFW_EXPORT Q_DECL_EXPORT
-#      define Q_SYSINFO_EXPORT Q_DECL_EXPORT
-#      define Q_SENSORS_EXPORT Q_DECL_EXPORT
-#    else
-#      define Q_BEARER_EXPORT
-#      define Q_PUBLISHSUBSCRIBE_EXPORT
-#      define Q_CONTACTS_EXPORT
-#      define Q_VERSIT_EXPORT
-#      define Q_LOCATION_EXPORT
-#      define Q_MEDIA_EXPORT
-#      define Q_MESSAGING_EXPORT
-#      define Q_SERVICEFW_EXPORT
-#      define Q_SYSINFO_EXPORT
-#      define Q_SENSORS_EXPORT
-#    endif
-#  endif
-#endif
-
-// The namespace is hardcoded as moc has issues resolving
-// macros which would be a prerequisite for a dynmamic namespace
-#define QTM_NAMESPACE QtMobility
-
-#ifdef QTM_NAMESPACE
-# define QTM_PREPEND_NAMESPACE(name) ::QTM_NAMESPACE::name
-# define QTM_BEGIN_NAMESPACE namespace QTM_NAMESPACE {
-# define QTM_END_NAMESPACE }
-# define QTM_USE_NAMESPACE using namespace QTM_NAMESPACE;
-#else
-# define QTM_PREPEND_NAMESPACE(name) ::name
-# define QTM_BEGIN_NAMESPACE
-# define QTM_END_NAMESPACE
-# define QTM_USE_NAMESPACE
-#endif
-
-//in case Qt is in namespace
-QT_USE_NAMESPACE
-
-#endif // QMOBILITYGLOBAL_H
diff --git a/zouba/src/gpscontroller.cpp b/zouba/src/gpscontroller.cpp
deleted file mode 100644 (file)
index d924564..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-#include "gpscontroller.h"
-#include "gpscontroller_p.h"
-
-#include <QObject>
-#include <QGeoPositionInfo>
-#include <QGeoPositionInfoSource>
-#include <QDebug>
-
-GpsController::GpsController() :
-  q( new GpsControllerPrivate() )
-{
-  q->init();
-  q->startGps();
-}
-
-GpsController::GpsController( GpsControllerPrivate *gpsControllerPrivate ) :
-  q( gpsControllerPrivate )
-{
-  q->init();
-  q->startGps();
-}
-
-GpsController::~GpsController()
-{
-  delete q;
-}
-
-void GpsController::getGps()
-{
-  Location *location;
-  Location *previousLocation = q->mostRecentlyReportedLocation();
-
-  if ( q->useFakeLocation() ) {
-    location = q->fakeLocation();
-  } else {
-    location = q->liveLocation();
-  }
-
-  if ( location != previousLocation ) {
-    emit locationChanged( location );
-  }
-}
-
-void GpsController::useLiveGps()
-{
-  q->setUseFakeLocation( false );
-  q->startGps();
-  emit locationChanged( q->liveLocation() );
-}
-
-void GpsController::useFakeGps( const QString &fakeLocationLabel )
-{
-  qDebug() << "using fake gps (" << fakeLocationLabel << ")";
-
-  q->setFakeLocationLabel( fakeLocationLabel );
-  Location  *fakeLocation = q->fakeLocation();
-
-  if ( fakeLocation == 0 ) {
-    qDebug() << "invalid fake location label; cannot use fake location";
-  } else {
-    q->stopGps();
-    q->setUseFakeLocation( true );
-    emit locationChanged( fakeLocation );
-  }
-}
diff --git a/zouba/src/gpscontroller.h b/zouba/src/gpscontroller.h
deleted file mode 100644 (file)
index 438b3f8..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-#ifndef GPSCONTROLLER_H
-#define GPSCONTROLLER_H
-
-#include "location.h"
-
-#include "gpscontroller_p.h"
-
-#include <QObject>
-#include <QGeoPositionInfo>
-#include <QGeoPositionInfoSource>
-
-QTM_USE_NAMESPACE
-
-class GpsController : public QObject
-{
-  Q_OBJECT
-
-public:
-  GpsController();
-  GpsController( GpsControllerPrivate *gpsControllerPrivate );
-
-  ~GpsController();
-
-public Q_SLOTS:
-  void getGps();
-  void useFakeGps( const QString &fakeLocationLabel );
-  void useLiveGps();
-
-Q_SIGNALS:
-  void locationChanged( Location *newLocation );
-
-private:
-    GpsControllerPrivate *q;
-};
-
-#endif // GPSCONTROLLER_H
diff --git a/zouba/src/gpscontroller_p.cpp b/zouba/src/gpscontroller_p.cpp
deleted file mode 100644 (file)
index 41086b0..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-#include "gpscontroller_p.h"
-
-#include "location.h"
-#include "locations.h"
-
-#include <QObject>
-#include <QGeoPositionInfo>
-#include <QGeoPositionInfoSource>
-#include <QDebug>
-
-QTM_USE_NAMESPACE
-
-GpsControllerPrivate::GpsControllerPrivate() :
-  m_gps(0),
-  m_liveLocation( new Location( "livegps" ) ),
-  m_fakeLocationLabel(),
-  m_useFakeLocation(false)
-{
-}
-
-GpsControllerPrivate::~GpsControllerPrivate()
-{
-  delete m_gps;
-  m_gps = 0;
-  delete m_liveLocation;
-  m_liveLocation = 0;
-}
-
-void GpsControllerPrivate::init()
-{
-  m_gps = QGeoPositionInfoSource::createDefaultSource(this);
-  connect(
-      m_gps, SIGNAL( positionUpdated( QGeoPositionInfo ) ),
-      this, SLOT( updateLocation( QGeoPositionInfo ) )
-  );
-}
-
-void GpsControllerPrivate::startGps()
-{
-  m_gps->startUpdates();
-}
-
-void GpsControllerPrivate::stopGps()
-{
-  m_gps->stopUpdates();
-}
-
-QGeoPositionInfoSource *GpsControllerPrivate::gps()
-{
-  return m_gps;
-}
-
-void GpsControllerPrivate::setGps( QGeoPositionInfoSource *gps )
-{
-  m_gps = gps;
-}
-
-Location *GpsControllerPrivate::liveLocation()
-{
-  m_mostRecentlyReportedLocation = m_liveLocation;
-  return m_liveLocation;
-}
-
-Location *GpsControllerPrivate::fakeLocation()
-{
-  Locations locations;
-  Location  *location = locations.location( fakeLocationLabel() );
-  m_mostRecentlyReportedLocation = location;
-  return location;
-}
-
-QString GpsControllerPrivate::fakeLocationLabel()
-{
-  return m_fakeLocationLabel;
-}
-
-void GpsControllerPrivate::setFakeLocationLabel( const QString &label )
-{
-  m_fakeLocationLabel = label;
-}
-
-bool GpsControllerPrivate::useFakeLocation()
-{
-  return m_useFakeLocation;
-}
-
-void GpsControllerPrivate::setUseFakeLocation( bool useFake )
-{
-  m_useFakeLocation = useFake;
-}
-
-void GpsControllerPrivate::updateLocation( QGeoPositionInfo positionInfo )
-{
-  m_liveLocation->setLocation( positionInfo );
-}
-
-Location *GpsControllerPrivate::mostRecentlyReportedLocation()
-{
-  return m_mostRecentlyReportedLocation;
-}
diff --git a/zouba/src/gpscontroller_p.h b/zouba/src/gpscontroller_p.h
deleted file mode 100644 (file)
index a101ffe..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-#ifndef GPSCONTROLLER_P_H
-#define GPSCONTROLLER_P_H
-
-#include <QGeoPositionInfo>
-#include <QGeoPositionInfoSource>
-
-QTM_USE_NAMESPACE
-
-class Location;
-
-class GpsControllerPrivate : public QObject
-{
-    Q_OBJECT
-
-public:
-    GpsControllerPrivate();
-    ~GpsControllerPrivate();
-
-    virtual void init();
-    virtual void startGps();
-    virtual void stopGps();
-
-    virtual void setGps( QGeoPositionInfoSource *gps );
-    virtual void setFakeLocationLabel( const QString &label );
-    virtual void setUseFakeLocation( bool useFake );
-
-    virtual QGeoPositionInfoSource *gps();
-    virtual Location               *liveLocation();
-    virtual Location               *fakeLocation();
-    virtual Location               *mostRecentlyReportedLocation();
-    virtual QString                 fakeLocationLabel();
-    virtual bool                    useFakeLocation();
-
-private Q_SLOTS:
-    virtual void updateLocation( QGeoPositionInfo positionInfo );
-
-private:
-    QGeoPositionInfoSource *m_gps;
-    Location               *m_liveLocation;
-    QString                 m_fakeLocationLabel;
-    bool                    m_useFakeLocation;
-    Location               *m_mostRecentlyReportedLocation;
-};
-
-#endif //GPSCONTROLLER_P_H
diff --git a/zouba/src/location.cpp b/zouba/src/location.cpp
deleted file mode 100644 (file)
index c54f65c..0000000
+++ /dev/null
@@ -1,328 +0,0 @@
-#include "location.h"
-
-#include "location_p.h"
-
-#include "ytv.h"
-
-#include <QString>
-#include <QObject>
-#include <QNetworkAccessManager>
-#include <QUrl>
-#include <QNetworkRequest>
-#include <QNetworkReply>
-#include <QXmlStreamReader>
-#include <QDebug>
-#include <QXmlStreamAttributes>
-#include <QStringRef>
-#include <QGeoPositionInfo>
-
-#include <math.h>
-
-const double Location::KkjZoneInfo[6][2] = {
-  {18.0,  500000.0},
-  {21.0, 1500000.0},
-  {24.0, 2500000.0},
-  {27.0, 3500000.0},
-  {30.0, 4500000.0},
-  {33.0, 5500000.0}
-};
-
-QTM_USE_NAMESPACE
-
-Location::Location( const QString &x, const QString &y, const QString &label ) :
-  q( new LocationPrivate( x, y, label ) ),
-  manager( new QNetworkAccessManager(this) )
-{
-  connect(
-      manager, SIGNAL( finished(QNetworkReply*) ),
-      this, SLOT( replyFinished(QNetworkReply*) )
-      );
-}
-
-Location::Location( const QGeoPositionInfo &positionInfo, const QString &label ) :
-  q( new LocationPrivate( label ) ),
-  manager(0)
-{
-  setLocation( positionInfo );
-}
-
-void Location::setLocation( const QGeoPositionInfo &positionInfo )
-{
-  qreal latitude = positionInfo.coordinate().latitude();
-  qreal longitude = positionInfo.coordinate().longitude();
-
-  KKJ outX(0);
-  KKJ outY(0);
-
-  WGS84lola_to_KKJxy( longitude, latitude, &outX, &outY);
-
-  q->setX( outX );
-  q->setY( outY );
-  q->setValid( true );
-}
-
-Location::Location( const Location &from ) :
-  QObject(0),
-  q( new LocationPrivate( from.label() ) ),
-  manager(0)
-{
-  q->setAddress( from.address() );
-  q->setX( from.x() );
-  q->setY( from.y() );
-  q->setValid( from.isValid() );
-  if ( from.manager != 0 ) {
-    manager = new QNetworkAccessManager(this);
-    connect( manager, SIGNAL( finished(QNetworkReply*) ), this, SLOT( replyFinished(QNetworkReply*) ) );
-  }
-}
-
-Location::Location( const QString &label ) :
-  q( new LocationPrivate( label ) ),
-  manager( new QNetworkAccessManager(this) )
-{
-  connect( manager, SIGNAL( finished(QNetworkReply*) ), this, SLOT( replyFinished(QNetworkReply*) ) );
-}
-
-Location::~Location()
-{
-  delete q;
-  q=0;
-  delete manager;
-  manager=0;
-}
-
-Location &Location::operator=( const Location &from )
-{
-  q = new LocationPrivate( from.label() );
-  q->setAddress( from.address() );
-  q->setX( from.x() );
-  q->setY( from.y() );
-  q->setValid( from.isValid() );
-
-  if ( from.manager != 0 ) {
-    manager = new QNetworkAccessManager(this);
-    connect( manager, SIGNAL( finished(QNetworkReply*) ), this, SLOT( replyFinished(QNetworkReply*) ) );
-  } else {
-    manager = 0;
-  }
-
-  return *this;
-}
-
-void Location::resolveAddress( const QString &address )
-{
-  qDebug() << "resolving address (" << address << ")";
-
-  q->setAddress( address );
-  q->setValid( false );
-
-  QUrl fullUrl( Ytv::Url );
-
-  fullUrl.addEncodedQueryItem( "key", address.toAscii().toPercentEncoding() );
-  fullUrl.addQueryItem( "user", Ytv::Username );
-  fullUrl.addQueryItem( "pass", Ytv::Password );
-
-  manager->get( QNetworkRequest( fullUrl ) );
-  qDebug() << "waiting for reply from Ytv";
-  emit( busy( true ) );
-}
-
-void Location::replyFinished( QNetworkReply * reply )
-{
-  qDebug() << "address resolved";
-  q->parseReply( reply->readAll() );
-
-  if ( isValid() ) {
-    qDebug() << label() << "becomeValid";
-    emit( becomeValid() );
-  } else {
-    qDebug() << label() << "not valid";
-    emit( becomeInValid() );
-  }
-
-  emit( busy( false ) );
-}
-
-QString Location::x() const
-{
-  return q->x();
-}
-
-QString Location::y() const
-{
-  return q->y();
-}
-
-void Location::setLabel( const QString &label ) const
-{
-  q->setLabel( label );
-}
-
-QString Location::label() const
-{
-  return q->label();
-}
-
-void Location::setAddress( const QString &address ) const
-{
-  qDebug() << "setting address to" << address;
-  q->setAddress( address );
-}
-
-QString Location::address() const
-{
-  return q->address();
-}
-
-bool Location::isValid() const
-{
-  return q->isValid();
-}
-
-// Degrees to radians
-double Location::radians(double deg)
-{
-  return deg * M_PI / 180.0;
-}
-
-// Radians to degrees
-double Location::degrees(double rad)
-{
-  return rad * 180.0 / M_PI;
-}
-
-// Function:  KKJ_Zone_I
-int Location::KKJ_Zone_I(KKJ easting)
-{
-  int zoneNumber = floor(easting / 1000000.0);
-  if (zoneNumber < 0 || zoneNumber > 5) {
-    zoneNumber = -1;
-  }
-
-  return zoneNumber;
-}
-
-// Function:  KKJ_Zone_Lo
-int Location::KKJ_Zone_Lo(double kkjlo)
-{
-  // determine the zonenumber from KKJ easting
-  // takes KKJ zone which has center meridian
-  // longitude nearest (in math value) to
-  // the given KKJ longitude
-  int zoneNumber = 5;
-  while (zoneNumber >= 0) {
-    if (fabs(kkjlo - KkjZoneInfo[zoneNumber][0]) <= 1.5) {
-      break;
-    }
-    zoneNumber--;
-  }
-
-  return zoneNumber;
-}
-
-
-// Function:  KKJlalo_to_WGS84lalo
-void Location::KKJlola_to_WGS84lola(double kkjlo, double kkjla, double *outLongitude, double *outLatitude)
-{
-  double dLa = radians(0.124867E+01 + -0.269982E+00 * kkjla + 0.191330E+00 * kkjlo + 0.356119E-02 * kkjla * kkjla + -0.122312E-02 * kkjla * kkjlo + -0.335514E-03 * kkjlo * kkjlo) / 3600.0;
-  double dLo = radians(-0.286111E+02 + 0.114183E+01 * kkjla + -0.581428E+00 * kkjlo + -0.152421E-01 * kkjla * kkjla + 0.118177E-01 * kkjla * kkjlo + 0.826646E-03 * kkjlo * kkjlo) / 3600.0;
-
-  *outLatitude = degrees(radians(kkjla) + dLa);
-  *outLongitude = degrees(radians(kkjlo) + dLo);
-}
-
-
-// Function:  WGS84lalo_to_KKJlalo
-void Location::WGS84lola_to_KKJlola(double longitude, double latitude, double *outLongitude, double *outLatitude)
-{
-  double dLa = radians(-0.124766E+01 + 0.269941E+00 * latitude + -0.191342E+00 * longitude + -0.356086E-02 * latitude * latitude + 0.122353E-02 * latitude * longitude + 0.335456E-03 * longitude * longitude) / 3600.0;
-  double dLo = radians(0.286008E+02 + -0.114139E+01 * latitude + 0.581329E+00 * longitude + 0.152376E-01 * latitude * latitude + -0.118166E-01 * latitude * longitude + -0.826201E-03 * longitude * longitude) / 3600.0;
-
-  *outLatitude = degrees(radians(latitude) + dLa);
-  *outLongitude = degrees(radians(longitude) + dLo);
-}
-
-
-// Function:  KKJlalo_to_KKJxy
-void Location::KKJlola_to_KKJxy(double lon, double lat, int zoneNumber, KKJ *outX, KKJ *outY)
-{
-  // Hayford ellipsoid
-  double a = 6378388.0;
-  double f  = 1.0 / 297.0;
-  double b  = (1.0 - f) * a;
-  double bb = b * b;
-  double c  = (a / b) * a;
-  double ee = (a * a - bb) / bb;
-  double n = (a - b) / (a + b);
-  double nn = n * n;
-
-  double Lo = radians(lon) - radians(KkjZoneInfo[zoneNumber][0]);
-  double cosLa = cos(radians(lat));
-  double NN = ee * cosLa * cosLa;
-  double LaF = atan(tan(radians(lat)) / cos(Lo * sqrt(1.0 + NN)));
-  double cosLaF = cos(LaF);
-  double t = (tan(Lo) * cosLaF) / sqrt(1.0 + ee * cosLaF * cosLaF);
-  double A = a / (1.0 + n);
-  double A1 = A * (1.0 + nn / 4.0 + nn * nn / 64.0);
-  double A2 = A * 1.5 * n * (1.0 - nn / 8.0);
-  double A3 = A * 0.9375 * nn * (1.0 - nn / 4.0);
-  double A4 = A * 35.0 / 48.0 * nn * n;
-
-  *outY = A1 * LaF - A2 * sin(2.0 * LaF) + A3 * sin(4.0 * LaF) - A4 * sin(6.0 * LaF);
-  *outX = c * log(t + sqrt(1.0 + t * t)) + 500000.0 + zoneNumber * 1000000.0;
-}
-
-// Function:  KKJxy_to_KKJlalo
-void Location::KKJxy_to_KKJlola(KKJ x, KKJ y, double *outLongitude, double *outLatitude)
-{
-  // Scan iteratively the target area, until find matching
-  // KKJ coordinate value.  Area is defined with Hayford Ellipsoid.
-  int zoneNumber = KKJ_Zone_I(x);
-  double minLo = radians(18.5);
-  double maxLo = radians(32.0);
-  double minLa = radians(59.0);
-  double maxLa = radians(70.5);
-
-  int i = 1;
-  KKJ tmpX, tmpY;
-
-  while (i < 35) {
-    double deltaLo = maxLo - minLo;
-    double deltaLa = maxLa - minLa;
-    *outLongitude = degrees(minLo + 0.5 * deltaLo);
-    *outLatitude = degrees(minLa + 0.5 * deltaLa);
-    KKJlola_to_KKJxy(*outLongitude, *outLatitude, zoneNumber, &tmpX, &tmpY);
-    if (tmpY < y) {
-      minLa = minLa + 0.45 * deltaLa;
-    } else {
-      maxLa = minLa + 0.55 * deltaLa;
-    }
-
-    if (tmpX < x) {
-      minLo = minLo + 0.45 * deltaLo;
-    } else {
-      maxLo = minLo + 0.55 * deltaLo;
-    }
-
-    i++;
-  }
-}
-
-void Location::WGS84lola_to_KKJxy(double longitude, double latitude, KKJ *outX, KKJ *outY)
-{
-  double kkjlo, kkjla;
-
-  WGS84lola_to_KKJlola(longitude, latitude, &kkjlo, &kkjla);
-  int zoneNumber = KKJ_Zone_Lo(kkjlo);
-  KKJlola_to_KKJxy(kkjlo, kkjla, zoneNumber, outX, outY);
-}
-
-void Location::KKJxy_to_WGS84lola(KKJ x, KKJ y, double *outLongitude, double *outLatitude)
-{
-  double kkjlo, kkjla;
-
-  KKJxy_to_KKJlola(x, y, &kkjlo, &kkjla);
-  KKJlola_to_WGS84lola(kkjlo, kkjla, outLongitude, outLatitude);
-
-}
-
diff --git a/zouba/src/location.h b/zouba/src/location.h
deleted file mode 100644 (file)
index dfb5d00..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-#ifndef LOCATION_H
-#define LOCATION_H
-
-#include "location_p.h"
-
-#include <QString>
-#include <QObject>
-#include <QNetworkAccessManager>
-#include <QNetworkReply>
-#include <QGeoPositionInfo>
-#include <math.h>
-
-QTM_USE_NAMESPACE
-
-class Location : public QObject
-{
-Q_OBJECT
-
-public:
-  Location( const QString &x, const QString &y, const QString &label=QString() );
-  Location( const QGeoPositionInfo &positionInfo, const QString &label=QString() );
-  Location( const Location &from );
-  Location &operator=( const Location &from );
-  Location( const QString &label=QString() );
-
-  ~Location();
-
-  QString x() const;
-
-  QString y() const;
-
-  void setLocation( const QGeoPositionInfo &positionInfo );
-
-  void setAddress( const QString &address ) const;
-  QString address() const;
-
-  void setLabel( const QString &label ) const;
-  QString label() const;
-
-  bool isValid() const;
-
-public Q_SLOTS:
-  void resolveAddress( const QString &address );
-
-Q_SIGNALS:
-  void becomeValid();
-  void becomeInValid();
-  void busy( bool busy );
-
-private Q_SLOTS:
-  void replyFinished( QNetworkReply * reply );
-
-private:
-
-  LocationPrivate *q;
-  QNetworkAccessManager *manager;
-
-  typedef uint KKJ;
-
-  /**
-   * Transformes WGS84 longitude/latitude coordinates to KKJ x/y coordinates.
-   * @param longitude the input longitude in degrees
-   * @param latitude the input latitude in degrees
-   * @param outX the result x (easting)
-   * @param outY the result y (northing)
-   */
-  void WGS84lola_to_KKJxy(double longitude, double latitude, KKJ *outX, KKJ *outY);
-
-  /**
-   * Transformes KKJ x/y coordinates to WGS84 longitude/latitude coordinates.
-   * @param x the input x (easting)
-   * @param y the input y (northing)
-   * @param outLongitude the result longitude in degrees
-   * @param outLatitude the result latitude in degrees
-   */
-  void KKJxy_to_WGS84lola(KKJ x, KKJ y, double *outLongitude, double *outLatitude);
-
-  // Degrees to radians
-  double radians(double deg);
-
-  // Radians to degrees
-  double degrees(double rad);
-
-  // Constants
-  // Longitude0 and Center meridian of KKJ bands
-  static const double KkjZoneInfo[][2];
-
-  // Function:  KKJ_Zone_I
-  int KKJ_Zone_I(KKJ easting);
-
-  // Function:  KKJ_Zone_Lo
-  int KKJ_Zone_Lo(double kkjlo);
-
-  // Function:  KKJlalo_to_WGS84lalo
-  void KKJlola_to_WGS84lola(double kkjlo, double kkjla, double *outLongitude, double *outLatitude);
-
-  // Function:  WGS84lalo_to_KKJlalo
-  void WGS84lola_to_KKJlola(double longitude, double latitude, double *outLongitude, double *outLatitude);
-
-  // Function:  KKJlalo_to_KKJxy
-  void KKJlola_to_KKJxy(double lon, double lat, int zoneNumber, KKJ *outX, KKJ *outY);
-
-  // Function:  KKJxy_to_KKJlalo
-  void KKJxy_to_KKJlola(KKJ x, KKJ y, double *outLongitude, double *outLatitude);
-
-};
-
-#endif // LOCATION_H
diff --git a/zouba/src/location_p.cpp b/zouba/src/location_p.cpp
deleted file mode 100644 (file)
index fe9d555..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-#include <stdio.h>
-#include "location_p.h"
-
-#include <QXmlStreamReader>
-#include <QByteArray>
-#include <QDebug>
-#include <QMaemo5InformationBox>
-
-LocationPrivate::LocationPrivate( const QString &x, const QString &y, const QString &label ) :
-  m_label(label),
-  m_address(),
-  m_x(x),
-  m_y(y),
-  m_valid(true)
-{
-}
-
-LocationPrivate::LocationPrivate( const QString &label ) :
-  m_label(label),
-  m_address(),
-  m_x(0),
-  m_y(0),
-  m_valid(false)
-{
-}
-
-LocationPrivate::~LocationPrivate()
-{
-  m_label="deleted";
-  m_address="";
-  m_x="";
-  m_y="";
-  m_valid=false;
-}
-
-void LocationPrivate::parseReply( const QByteArray &reply )
-{
-  qDebug() << "parsing";
-  QXmlStreamReader xml( reply );
-  bool responseHasError = false;
-
-  while ( !xml.atEnd() ) {
-    xml.readNext();
-
-    if ( xml.isStartElement() ) {
-      QString xmlName( xml.name().toString() );
-
-      if ( xmlName == "LOC" ) {
-        QXmlStreamAttributes attributes( xml.attributes() );
-        QStringRef xAttribute( attributes.value("x") );
-        QStringRef yAttribute( attributes.value("y") );
-        QString newX( xAttribute.toString() );
-        QString newY( yAttribute.toString() );
-
-        m_x = newX;
-        m_y = newY;
-      }
-
-      if ( xmlName == "ERROR" ) {
-        responseHasError = true;
-      }
-
-    }
-  }
-
-  if ( xml.hasError() || responseHasError ) {
-    QMaemo5InformationBox::information( 0, "address resolution error - please check address" );
-    qDebug() << "xml error";
-    m_valid = false;
-  } else {
-    qDebug() << "(" << m_x << "," << m_y << ")";
-    if ( m_x.isEmpty() ||  m_y.isEmpty() ) {
-      qDebug() << "is NOT valid";
-      m_valid = false;
-    } else {
-      qDebug() << "is now valid";
-      m_valid = true;
-    }
-  }
-}
-
-void LocationPrivate::setLabel( const QString &label)
-{
-  m_label = label;
-}
-
-QString LocationPrivate::label() const
-{
-  return m_label;
-}
-
-void LocationPrivate::setAddress( const QString &address)
-{
-  m_address = address;
-}
-
-QString LocationPrivate::address() const
-{
-  return m_address;
-}
-
-void LocationPrivate::setX( uint x )
-{
-  m_x = QString( "%1" ).arg( x );
-}
-
-void LocationPrivate::setX( const QString &x )
-{
-  m_x = x;
-}
-
-QString LocationPrivate::x() const
-{
-  return m_x;
-}
-
-void LocationPrivate::setY( uint y )
-{
-  m_y = QString( "%1" ).arg( y );
-}
-
-void LocationPrivate::setY( const QString &y )
-{
-  m_y = y;
-}
-
-QString LocationPrivate::y() const
-{
-  return m_y;
-}
-
-void LocationPrivate::setValid( bool valid )
-{
-  m_valid = valid;
-}
-
-bool LocationPrivate::isValid() const
-{
-  return m_valid;
-}
diff --git a/zouba/src/location_p.h b/zouba/src/location_p.h
deleted file mode 100644 (file)
index e32b267..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-#ifndef LOCATION_P_H
-#define LOCATION_P_H
-
-#include <QObject>
-#include <QString>
-#include <QByteArray>
-
-class LocationPrivate : public QObject
-{
-    Q_OBJECT
-
-public:
-  LocationPrivate( const QString &x, const QString &y, const QString &label );
-  LocationPrivate( const QString &label );
-  virtual ~LocationPrivate();
-
-  void setX( uint x );
-  void setX( const QString &x );
-  QString x() const;
-
-  void setY( uint y );
-  void setY( const QString &y );
-  QString y() const;
-
-  void setAddress( const QString &address );
-  QString address() const;
-
-  void setLabel( const QString &label );
-  QString label() const;
-
-  void setValid( bool valid );
-  bool isValid() const;
-
-  void parseReply( const QByteArray &reply );
-
-  QString m_label;
-  QString m_address;
-  QString m_x;
-  QString m_y;
-  bool    m_valid;
-};
-
-#endif // LOCATION_P_H
-
diff --git a/zouba/src/locations.cpp b/zouba/src/locations.cpp
deleted file mode 100644 (file)
index 358a2cc..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-#include "locations.h"
-
-#include <QDebug>
-#include <QHash>
-#include <QSettings>
-#include <QString>
-#include <QStringList>
-#include <QCoreApplication>
-
-QHash<QString,Location *> Locations::locationHash;
-bool Locations::initialised = false;
-
-Locations::Locations()
-{
-    if ( !initialised ) {
-        QCoreApplication::setOrganizationName("ZouBa");
-        QCoreApplication::setOrganizationDomain("zouba.yi.org");
-        QCoreApplication::setOrganizationName("ZouBa");
-
-        restoreLocations();
-        initialised = true;
-    }
-}
-
-Locations::~Locations()
-{
-}
-
-bool Locations::addLocation( Location *location )
-{
-  bool succeeded=false;
-
-  // if it's valid now, save the setting
-  if ( location->isValid() ) {
-    saveLocation( location );
-  }
-
-  if ( !locationHash.contains( location->label() ) ) {
-    qDebug() << "Adding location" << location->label();
-    locationHash[ location->label() ] = location;
-    succeeded = true;
-  } else {
-    qDebug() << "FAILED to add location" << location->label();
-  }
-
-  return succeeded;
-}
-
-void Locations::restoreLocations()
-{
-  QSettings settings;
-
-  settings.beginGroup( "Locations" );
-  QStringList labels = settings.childGroups();
-
-  for( int i=0; i<labels.size(); ++i ) {
-    QString label = labels[i];
-    settings.beginGroup( label );
-    QString x       = settings.value( "x" ).toString();
-    QString y       = settings.value( "y" ).toString();
-    QString address = settings.value( "address" ).toString();
-    settings.endGroup();
-
-    qDebug() << "restoring" << label;
-    Location *location = new Location( x, y, label );
-    location->setAddress( address );
-
-    locationHash[ label ] = location;
-  }
-
-  settings.endGroup();
-}
-
-void Locations::saveLocation( Location *location )
-{
-  qDebug() << "Saving location" << location->label();
-  QSettings settings;
-  settings.beginGroup( "Locations" );
-  settings.beginGroup( location->label() );
-  settings.setValue( "address", location->address() );
-  settings.setValue( "x", location->x() );
-  settings.setValue( "y", location->y() );
-  settings.endGroup();
-  settings.endGroup();
-}
-
-void Locations::saveLocation()
-{
-  Location *location = qobject_cast<Location*>(sender());
-
-  saveLocation( location );
-}
-
-Location *Locations::location( const QString &label )
-{
-  qDebug() << "requesting location" << label;
-  Location *retVal = 0;
-
-  if ( locationHash.contains( label ) ) {
-    qDebug() << "found location" << label;
-    retVal = locationHash[ label ];
-  } else {
-    qDebug() << "didn't find location" << label;
-  }
-
-  return retVal;
-}
diff --git a/zouba/src/locations.h b/zouba/src/locations.h
deleted file mode 100644 (file)
index fa74faa..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-#ifndef LOCATIONS_H
-#define LOCATIONS_H
-
-#include "location.h"
-
-#include <QHash>
-#include <QString>
-#include <QObject>
-
-class Locations: public QObject
-{
-  Q_OBJECT
-
-public:
-  Locations();
-  ~Locations();
-
-  static Locations *instance();
-  bool addLocation( Location *location );
-
-  Location *location( const QString &label );
-
-public Q_SLOTS:
-  void saveLocation();
-
-private:
-  void restoreLocations();
-  static QHash<QString,Location *> locationHash;
-  static bool initialised;
-
-  void saveLocation( Location *location );
-};
-#endif // LOCATIONS_H
diff --git a/zouba/src/main.cpp b/zouba/src/main.cpp
deleted file mode 100644 (file)
index bd3898b..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-#include "routedata.h"
-#include "route.h"
-#include "ui.h"
-#include "uicontroller.h"
-#include "location.h"
-#include "gpscontroller.h"
-#include "ytv.h"
-
-#include <QDebug>
-#include <QObject>
-#include <QApplication>
-#include <QMainWindow>
-
-int main(int argc, char *argv[] )
-{
-  QApplication app(argc, argv);
-
-  QMainWindow *mainWindow = new QMainWindow;
-  Ui *ui = new Ui;;
-  ui->setupUi(mainWindow);
-
-  UiController  *uiController  = new UiController( ui );
-  Route         *route         = new Route();
-  GpsController *gpsController = new GpsController();
-
-  QObject::connect(
-      route, SIGNAL( routeReady( QList<RouteData> ) ),
-      uiController, SLOT( displayRoute( QList<RouteData> ) )
-      );
-
-  QObject::connect(
-      gpsController, SIGNAL( locationChanged( Location* ) ),
-      route, SLOT( setFromLocation( Location* ) )
-      );
-
-  QObject::connect(
-      uiController, SIGNAL( destinationChanged( Location* ) ),
-      route, SLOT( setToLocation( Location* ) )
-    );
-
-  QObject::connect(
-      uiController, SIGNAL( buttonClicked() ),
-      gpsController, SLOT( getGps() )
-    );
-
-  QObject::connect(
-      ui, SIGNAL( fakeGpsPressed( const QString & ) ),
-      gpsController, SLOT( useFakeGps( const QString & ) )
-    );
-
-  QObject::connect(
-      ui, SIGNAL( liveGpsPressed() ),
-      gpsController, SLOT( useLiveGps() )
-    );
-
-  QObject::connect(
-      route, SIGNAL( busy( bool ) ),
-      ui, SLOT( setBusy( bool ) )
-    );
-
-  mainWindow->show();
-
-  return app.exec();
-}
diff --git a/zouba/src/route.cpp b/zouba/src/route.cpp
deleted file mode 100644 (file)
index 5d5e794..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-#include "route_p.h"
-#include "route.h"
-
-#include "routedata.h"
-#include "location.h"
-
-#include <QNetworkAccessManager>
-#include <QNetworkReply>
-#include <QUrl>
-#include <QObject>
-#include <QDebug>
-#include <QStringList>
-#include <QString>
-#include <QXmlStreamReader>
-#include <QWidget>
-
-#include "ytv.h"
-
-Route::Route() :
-  q( new RoutePrivate( this ) ),
-  manager( new QNetworkAccessManager(this) )
-{
-  connect( manager, SIGNAL( finished(QNetworkReply*) ), this, SLOT( replyFinished(QNetworkReply*) ) );
-}
-
-Route::~Route()
-{
-  delete manager;
-  manager = 0;
-}
-
-void Route::getRoute()
-{
-  qDebug() << "getting route from Ytv";
-
-  QUrl fullUrl( Ytv::Url );
-
-  QStringList a;
-  a << q->fromLocation()->x() << q->fromLocation()->y();
-  QStringList b;
-  b << q->toLocation()->x() << q->toLocation()->y();
-
-  fullUrl.addQueryItem( "a", a.join(",") );
-  fullUrl.addQueryItem( "b", b.join(",") );
-  fullUrl.addQueryItem( "show", QString::number(Ytv::ShowFiveResults) );
-  fullUrl.addQueryItem( "walkspeed", QString::number(Ytv::WalkSpeedFast) );
-  fullUrl.addQueryItem( "optimize", QString::number(Ytv::OptimizeLeastWalking) );
-  fullUrl.addQueryItem( "user", Ytv::Username );
-  fullUrl.addQueryItem( "pass", Ytv::Password );
-
-  manager->get( QNetworkRequest( fullUrl ) );
-  qDebug() << "getting url" << fullUrl.toEncoded();
-  qDebug() << "waiting for reply from Ytv";
-  emit( busy( true ) );
-}
-
-void Route::replyFinished( QNetworkReply * reply )
-{
-  qDebug() << "have reply from Ytv";
-  QList<RouteData> routeData = q->parseReply( reply->readAll() );
-
-  emit( routeReady( routeData ) );
-  emit( busy( false ) );
-}
-
-void Route::setFromLocation( Location *location )
-{
-  qDebug() << "setting new From location (" << location->label() << ")";
-
-  if ( location && location->isValid() ) {
-    qDebug() << "From is valid";
-    q->setFromLocation( location );
-    if ( q->toValid() ) {
-      qDebug() << "To is also valid";
-      getRoute();
-    } else {
-      qDebug() << "To not valid - waiting";
-    }
-  } else {
-    qDebug() << "ERROR:From is not valid";
-    qDebug() << "location=" << location;
-    if ( location ) {
-      qDebug() << "location->isValid()=" << location->isValid();
-    }
-  }
-}
-
-Location *Route::fromLocation() const
-{
-  return q->fromLocation();
-}
-
-void Route::setToLocation( Location *location )
-{
-  qDebug() << "setting new To location (" << location->label() << ")";
-
-  if ( location && location->isValid() ) {
-    qDebug() << "To is valid";
-    q->setToLocation( location );
-    if ( q->fromValid() ) {
-      qDebug() << "From is also valid";
-      getRoute();
-    } else {
-      qDebug() << "From not valid - waiting";
-    }
-  } else {
-    qDebug() << "ERROR:From is not valid";
-    qDebug() << "location=" << location;
-    if ( location ) {
-      qDebug() << "location->isValid()=" << location->isValid();
-    }
-  }
-}
-
-Location *Route::toLocation() const
-{
-  return q->toLocation();
-}
diff --git a/zouba/src/route.h b/zouba/src/route.h
deleted file mode 100644 (file)
index 9a311b5..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-#ifndef ROUTE_H
-#define ROUTE_H
-
-#include "routedata.h"
-#include "location.h"
-
-#include <QObject>
-#include <QNetworkReply>
-#include <QNetworkAccessManager>
-
-class RoutePrivate;
-
-class Route: public QObject
-{
-  Q_OBJECT
-
-public:
-  Route();
-  ~Route();
-
-  /*!
-    * \brief Gets the route data from the server
-    */
-  void getRoute();
-
-  /*!
-    \brief Get the from location
-    \return The from location
-    */
-  Location *fromLocation() const;
-
-  /*!
-    \brief Get the to location
-    \return The to location
-    */
-  Location *toLocation() const;
-
-public Q_SLOTS:
-
-  /*!
-    * \brief Sets the from location
-    * \param fromLocation The from location
-    */
-  void setFromLocation( Location *location=0 );
-
-  /*!
-    * \brief Sets the to location
-    * \param toLocation The to location
-    */
-  void setToLocation( Location *location=0 );
-
-Q_SIGNALS:
-  void routeReady( QList<RouteData> );
-  void busy( bool busy );
-
-private Q_SLOTS:
-  void replyFinished( QNetworkReply* );
-
-private:
-  RoutePrivate *q;
-  QNetworkAccessManager *manager;
-};
-#endif // ROUTE_H
diff --git a/zouba/src/route_p.cpp b/zouba/src/route_p.cpp
deleted file mode 100644 (file)
index d2125da..0000000
+++ /dev/null
@@ -1,230 +0,0 @@
-#include "route_p.h"
-#include "location.h"
-
-#include <QXmlStreamReader>
-#include <QDebug>
-#include <QList>
-#include <QFile>
-#include <QStringList>
-#include <QMaemo5InformationBox>
-
-RoutePrivate::RoutePrivate( QObject *parent ) :
-    m_fromValid(false),
-    m_toValid(false),
-    m_fromLocation(0),
-    m_toLocation(0)
-{
-  Q_UNUSED( parent )
-}
-
-RoutePrivate::~RoutePrivate()
-{
-}
-
-QList<RouteData> RoutePrivate::parseReply( const QByteArray &reply )
-{
-  qDebug() << "parsing route";
-
-  QList<RouteData> retVal;
-  RouteData routeData;
-  LegData legData;
-
-  QXmlStreamReader xml( reply );
-
-  QHash<QString, bool> in;
-  QHash<QString, bool> have;
-
-  QStringList haveKeys;
-  QStringList inKeys;
-
-  haveKeys
-    << "LINE"
-    << "TIME"
-    << "TRIP"
-    << "DEPARTURE"
-    << "ARRIVAL"
-    ;
-
-  inKeys
-    << "ROUTE"
-    << "LINE"
-    << "STOP"
-    << "WALK"
-    << "POINT"
-    ;
-
-  foreach( QString key, haveKeys ) {
-    have[ key ] = false;
-  }
-
-  foreach( QString key, inKeys ) {
-    in[ key ] = false;
-  }
-
-  while ( !xml.atEnd() ) {
-    xml.readNext();
-
-    QString xmlName = xml.name().toString();
-
-    if ( xml.isStartElement() ) {
-      if ( inKeys.contains( xmlName ) ) {
-        in[ xmlName ] = true;
-        //qDebug() << "in[" << xmlName << "] = true";
-      }
-
-      if ( xmlName == "ROUTE" ) {
-        foreach( QString key, haveKeys ) {
-          have[ key ] = false;
-        }
-      }
-
-      if ( xmlName == "WALK" ) {
-        legData.m_how = "WALK";
-        have[ "DEPARTURE" ] = false;
-        have[ "ARRIVAL" ]   = false;
-        have[ "LENGTH" ]    = false;
-      }
-
-      if ( xmlName == "LINE" ) {
-        legData.m_how = "LINE";
-        QString lineCode( xml.attributes().value("code").toString() );
-        legData.m_lineCode = parseJORECode( lineCode );
-        have[ "DEPARTURE" ] = false;
-        have[ "ARRIVAL" ]   = false;
-        have[ "LENGTH" ]    = false;
-      }
-    }
-
-    if ( xml.isEndElement() ) {
-      if ( inKeys.contains( xmlName ) ) {
-        in[ xmlName ] = false;
-        //qDebug() << "in[" << xmlName << "] = false";
-      }
-
-      if ( xmlName == "ROUTE" ) {
-        retVal.append( routeData );
-        routeData.clear();
-      }
-
-      if ( xmlName == "WALK" || xmlName == "LINE" ) {
-        routeData.m_legData.append( legData );
-        legData.clear();
-        have[ "LENGTH" ] = false;
-      }
-    }
-
-    if ( !have[ "ARRIVAL" ] && ( in[ "WALK" ] || in[ "LINE" ] ) && ( in[ "STOP" ] || in[ "POINT" ] ) && xml.isStartElement() && xmlName == "ARRIVAL" ) {
-      QString arrivalTime( xml.attributes().value("time").toString() );
-      legData.m_arrivalTime = arrivalTime.rightJustified(4).insert(2,":");
-
-      // don't set have[ "ARRIVAL" ] since we want the last one of many STOPs
-    }
-
-    if ( !have[ "DEPARTURE" ] && in[ "LINE" ] && in[ "STOP" ] && xml.isStartElement() && xmlName == "DEPARTURE" ) {
-      QString departureTime( xml.attributes().value("time").toString() );
-      legData.m_departureTime = departureTime.rightJustified(4).insert(2,":");
-
-      have[ "DEPARTURE" ] = true;
-    }
-
-    if ( !have[ "DEPARTURE" ] && in[ "WALK" ] && ( in[ "POINT" ] || in[ "STOP" ] ) && xml.isStartElement() && xmlName == "DEPARTURE" ) {
-      QString departureTime( xml.attributes().value("time").toString() );
-      legData.m_departureTime = departureTime.rightJustified(4).insert(2,":");
-
-      have[ "DEPARTURE" ] = true;
-    }
-
-    if ( !have[ "LENGTH" ] && ( in[ "WALK" ] || in[ "LINE" ] ) && xml.isStartElement() && xmlName == "LENGTH" ) {
-      legData.m_tripTime     = xml.attributes().value("time").toString();
-      legData.m_tripDistance = xml.attributes().value("dist").toString();
-
-      have[ "LENGTH" ] = true;
-    }
-
-    if ( !have[ "TRIP" ] && in[ "ROUTE" ] && xml.isStartElement() && xmlName == "LENGTH" ) {
-      routeData.m_tripTime     = xml.attributes().value("time").toString();
-      routeData.m_tripDistance = xml.attributes().value("dist").toString();
-
-      have[ "TRIP" ] = true;
-    }
-
-    if ( !have[ "LINE" ] && in[ "ROUTE" ] && xml.isStartElement() && xmlName == "LINE" ) {
-      QString lineCode( xml.attributes().value("code").toString() );
-
-      routeData.m_lineCode = parseJORECode( lineCode );
-      have[ "LINE" ] = true;
-    }
-
-    if ( !have[ "TIME" ] && in[ "ROUTE" ] && in[ "LINE" ] && in[ "STOP" ] && xmlName == "DEPARTURE" ) {
-      QString departureTime( xml.attributes().value("time").toString() );
-
-      routeData.m_departureTime = departureTime.rightJustified(4).insert(2,":");
-      have[ "TIME" ] = true;
-    }
-
-  }
-
-  if ( xml.hasError() ) {
-    qDebug() << "xml error:" << xml.errorString();
-  }
-
-  if ( retVal.isEmpty() ) {
-    qDebug() << "no routes found";
-    QMaemo5InformationBox::information( 0, "no routes found" );
-  }
-
-  return retVal;
-}
-
-void RoutePrivate::setFromLocation( Location *location )
-{
-  m_fromLocation = location;
-  m_fromValid = true;
-}
-
-Location *RoutePrivate::fromLocation() const
-{
-  return m_fromLocation;
-}
-
-void RoutePrivate::setToLocation( Location *toLocation )
-{
-  m_toLocation = toLocation;
-  m_toValid = true;
-}
-
-QString RoutePrivate::parseJORECode( const QString &joreCode ) const
-{
-  QString retVal;
-
-  QString areaTransportTypeCode( joreCode.mid(0,1) );
-  QString lineCode( joreCode.mid(1,3) );
-  QString letterVariant( joreCode.mid(4,1) );
-  QString letterNumberVariant( joreCode.mid(5,1) );
-  QString direction( joreCode.mid(6,1) );
-
-  lineCode.setNum( lineCode.toInt() );
-
-  retVal = lineCode;
-
-  if ( letterVariant != " " ) {
-    retVal += letterVariant;
-  }
-
-  return retVal;
-}
-
-Location *RoutePrivate::toLocation() const
-{
-  return m_toLocation;
-}
-
-bool RoutePrivate::fromValid()
-{
-  return m_fromValid;
-}
-
-bool RoutePrivate::toValid()
-{
-  return m_toValid;
-}
diff --git a/zouba/src/route_p.h b/zouba/src/route_p.h
deleted file mode 100644 (file)
index fddce34..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-#ifndef ROUTE_P_H
-#define ROUTE_P_H
-
-#include "routedata.h"
-
-#include "location.h"
-
-#include <QObject>
-
-class RoutePrivate: public QObject
-{
-  Q_OBJECT
-
-public:
-  RoutePrivate( QObject *parent=0 );
-  ~RoutePrivate();
-
-  QList<RouteData> parseReply( const QByteArray &reply );
-
-  Q_PROPERTY(Location* fromLocation READ fromLocation WRITE setFromLocation);
-  Q_PROPERTY(Location* toLocation READ toLocation WRITE setToLocation);
-
-  void setFromLocation( Location *fromLocation );
-
-  Location *fromLocation() const;
-
-  void setToLocation( Location *toLocation );
-
-  Location *toLocation() const;
-
-  bool toValid();
-  bool fromValid();
-
-private:
-  bool     m_fromValid;
-  bool     m_toValid;
-  Location *m_fromLocation;
-  Location *m_toLocation;
-
-  QString parseJORECode( const QString &joreCode ) const;
-};
-#endif // ROUTE_P_H
diff --git a/zouba/src/routedata.h b/zouba/src/routedata.h
deleted file mode 100644 (file)
index b1bec0b..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-#ifndef ROUTEDATA_H
-#define ROUTEDATA_H
-
-#include <QString>
-#include <QList>
-
-struct LegData
-{
-  LegData() :
-    m_how(),
-    m_tripTime(),
-    m_tripDistance(),
-    m_departureTime(),
-    m_arrivalTime(),
-    m_lineCode()
-  {
-  };
-
-  LegData( QString how, QString tripTime, QString tripDistance, QString departureTime, QString arrivalTime, QString lineCode=QString() ) :
-    m_how(how),
-    m_tripTime(tripTime),
-    m_tripDistance(tripDistance),
-    m_departureTime(departureTime),
-    m_arrivalTime(arrivalTime),
-    m_lineCode(lineCode)
-  {
-  };
-
-  void clear()
-  {
-    m_how = "";
-    m_tripTime = "";
-    m_tripDistance = "";
-    m_departureTime = "";
-    m_arrivalTime = "";
-    m_lineCode = "";
-  };
-
-  QString m_how;
-  QString m_tripTime;
-  QString m_tripDistance;
-  QString m_departureTime;
-  QString m_arrivalTime;
-  QString m_lineCode;
-
-};
-
-struct RouteData
-{
-  RouteData():
-    m_tripTime(),
-    m_tripDistance(),
-    m_departureTime(),
-    m_lineCode(),
-    m_legData()
-  {
-  };
-
-  RouteData( QString tripTime, QString tripDistance, QString departureTime, QString lineCode ):
-    m_tripTime(tripTime),
-    m_tripDistance(tripDistance),
-    m_departureTime(departureTime),
-    m_lineCode(lineCode),
-    m_legData()
-  {
-  };
-
-  RouteData &operator <<(const LegData &legData)
-  {
-    m_legData.append( legData );
-    return *this;
-  };
-
-  void clear()
-  {
-    m_tripTime = "";
-    m_tripDistance = "";
-    m_departureTime = "";
-    m_lineCode = "";
-    m_legData.clear();
-  };
-
-  QString m_tripTime;
-  QString m_tripDistance;
-  QString m_departureTime;
-  QString m_lineCode;
-  QList<LegData> m_legData;
-
-};
-
-#endif // ROUTEDATA_H
diff --git a/zouba/src/ui.cpp b/zouba/src/ui.cpp
deleted file mode 100644 (file)
index ee18f3a..0000000
+++ /dev/null
@@ -1,177 +0,0 @@
-#include "ui.h"
-
-#include "locations.h"
-#include "ytv.h"
-
-#include <QMainWindow>
-#include <QRadioButton>
-#include <QTableWidget>
-#include <QString>
-#include <QRect>
-#include <QButtonGroup>
-#include <QHeaderView>
-#include <QObject>
-#include <QMenuBar>
-#include <QHBoxLayout>
-#include <QVBoxLayout>
-#include <QGridLayout>
-#include <QSizePolicy>
-#include <QInputDialog>
-#include <QDebug>
-
-Ui::Ui() :
-  m_centralWidget(0),
-  m_destinationButtons(0),
-  m_routeStack(0),
-  m_usingFakeGps( false ),
-  m_fakeLocationLabel( "work" )
-{
-}
-
-Ui::~Ui()
-{
-}
-
-void Ui::setupUi( QMainWindow *mainWindow )
-{
-  m_mainWindow = mainWindow;
-  m_mainWindow->resize(800,480);
-
-  m_menu = mainWindow->menuBar()->addMenu("Settings");
-
-  QAction *setHomeAddressAction = new QAction("Set home address", this);
-  QAction *setWorkAddressAction = new QAction("Set work address", this);
-  m_toggleFakeGpsAction  = new QAction("Use fake GPS", this);
-  m_menu->addAction(setHomeAddressAction);
-  m_menu->addAction(setWorkAddressAction);
-  m_menu->addAction(m_toggleFakeGpsAction);
-
-  connect(
-      setHomeAddressAction, SIGNAL(triggered()),
-      this, SLOT(setHomeAddress())
-      );
-  connect(
-      setWorkAddressAction, SIGNAL(triggered()),
-      this, SLOT(setWorkAddress())
-      );
-  connect(
-      m_toggleFakeGpsAction, SIGNAL(triggered()),
-      this, SLOT(toggleFakeGps())
-      );
-
-  m_centralWidget = new QWidget( m_mainWindow );
-  m_mainWindow->setCentralWidget( m_centralWidget);
-
-  QRadioButton *homeButton = new QRadioButton();
-  homeButton->setObjectName( QString::fromUtf8("homeButton") );
-  homeButton->setText( "GPS->HOME" );
-  homeButton->setEnabled(false);
-
-  QRadioButton *workButton = new QRadioButton();
-  workButton->setObjectName( QString::fromUtf8("workButton") );
-  workButton->setText( "GPS->WORK" );
-  workButton->setEnabled(false);
-
-  m_destinationButtons = new QButtonGroup();
-  m_destinationButtons->addButton( homeButton, HomeButtonId );
-  m_destinationButtons->addButton( workButton, WorkButtonId );
-  m_destinationButtons->setExclusive( true );
-
-  m_routeButtons = new QButtonGroup();
-  m_routeButtons->setExclusive( true );
-  m_routeStack = new QVBoxLayout();
-  for ( int i=0; i<Ytv::ShowFiveResults; ++i ) {
-    QRadioButton *button = new QRadioButton();
-    button->setObjectName( "routeButton"+i );
-    button->setEnabled( false );
-
-    m_routeStack->addWidget( button, i );
-    m_routeButtons->addButton( button, i );
-  }
-  m_routeStack->addStretch();
-
-  QStringList headers( QStringList() << "How" << "Time" << "Dist" << "Dep" << "Arr" );
-  m_routeDetailTable = new QTableWidget();
-  m_routeDetailTable->setColumnCount( headers.count() );
-  m_routeDetailTable->setHorizontalHeaderLabels( headers );
-  m_routeDetailTable->resizeColumnsToContents();
-  m_routeDetailTable->setSelectionMode( QAbstractItemView::NoSelection );
-
-  QHBoxLayout *topLayout = new QHBoxLayout();
-  topLayout->addLayout( m_routeStack );
-  topLayout->addWidget( m_routeDetailTable );
-
-  m_buttonLayout = new QGridLayout();
-  m_buttonLayout->addWidget( homeButton, 0, 0 );
-  m_buttonLayout->addWidget( workButton, 0, 1 );
-
-  m_mainLayout = new QVBoxLayout();
-  m_mainLayout->addLayout( topLayout );
-  m_mainLayout->addLayout( m_buttonLayout );
-
-  m_centralWidget->setLayout( m_mainLayout );
-}
-
-void Ui::setHomeAddress()
-{
-  setAddress( "home" );
-}
-
-void Ui::setWorkAddress()
-{
-  setAddress( "work" );
-}
-
-void Ui::toggleFakeGps()
-{
-  m_usingFakeGps = !m_usingFakeGps;
-
-  if ( m_usingFakeGps ) {
-    useFakeGps();
-  } else {
-    useLiveGps();
-  }
-}
-
-void Ui::useFakeGps()
-{
-  emit fakeGpsPressed( m_fakeLocationLabel );
-  m_toggleFakeGpsAction->setText( "Use Live GPS" );
-}
-
-void Ui::useLiveGps()
-{
-  emit liveGpsPressed();
-  m_toggleFakeGpsAction->setText( "Use Fake GPS" );
-}
-
-void Ui::setAddress( const QString &label )
-{
-  Locations locations;
-  Location *location=locations.location( label );
-
-  bool ok;
-  QString address = QInputDialog::getText(
-     m_centralWidget,
-     tr("Enter address for \""+QString(label).toLatin1()+"\""),
-     tr("Address"),
-     QLineEdit::Normal,
-     location->address(),
-     &ok
-     );
-
-  if ( ok ) {
-    qDebug() << "new address" << address;
-    Locations locations;
-    Location  *location  = locations.location( label );
-    qDebug() << "location" << location;
-    if ( location ) {
-      location->resolveAddress( address );
-    }
-  }
-}
-
-void Ui::setBusy( bool busy )
-{
-  m_mainWindow->setAttribute(Qt::WA_Maemo5ShowProgressIndicator, busy);
-}
diff --git a/zouba/src/ui.h b/zouba/src/ui.h
deleted file mode 100644 (file)
index 94dc687..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-#ifndef UI_H
-#define UI_H
-
-#include <QObject>
-
-class QMainWindow;
-class QWidget;
-class QTableWidget;
-class QButtonGroup;
-class QHBoxLayout;
-class QVBoxLayout;
-class QGridLayout;
-class QMenu;
-class QAction;
-class Location;
-
-class Ui : public QObject
-{
-  Q_OBJECT
-
-public:
-  Ui();
-  ~Ui();
-  void setupUi( QMainWindow *mainWindow );
-
-  enum {
-    HomeButtonId=0,
-    WorkButtonId=1
-  };
-
-  enum {
-    ScreenWidth=800,
-    ScreenHeight=480
-  };
-
-  QMainWindow *m_mainWindow;
-  QWidget *m_centralWidget;
-  QButtonGroup *m_destinationButtons;
-  QButtonGroup *m_routeButtons;
-  QVBoxLayout *m_routeStack;
-  QTableWidget *m_routeDetailTable;
-  QVBoxLayout *m_mainLayout;
-  QGridLayout *m_buttonLayout;
-  QMenu       *m_menu;
-  QAction     *m_toggleFakeGpsAction;
-  QAction     *m_useLiveGpsAction;
-  bool        m_usingFakeGps;
-  QString     m_fakeLocationLabel;
-
-Q_SIGNALS:
-  void homeAddressChanged( QString address );
-  void workAddressChanged( QString address );
-  void fakeGpsPressed( const QString &fakeLocationLabel );
-  void liveGpsPressed();
-
-private Q_SLOTS:
-  void setHomeAddress();
-  void setWorkAddress();
-  void toggleFakeGps();
-  void setBusy( bool busy );
-
-private:
-  void useFakeGps();
-  void useLiveGps();
-  void setAddress( const QString &label );
-};
-#endif //UI_H
diff --git a/zouba/src/uicontroller.cpp b/zouba/src/uicontroller.cpp
deleted file mode 100644 (file)
index 8365378..0000000
+++ /dev/null
@@ -1,219 +0,0 @@
-#include "uicontroller.h"
-#include "route.h"
-#include "ui.h"
-#include "ytv.h"
-#include "location.h"
-#include "locations.h"
-
-#include <QObject>
-#include <QPushButton>
-#include <QDebug>
-#include <QButtonGroup>
-#include <QRadioButton>
-#include <QVBoxLayout>
-#include <QTableWidgetItem>
-
-UiController::UiController( Ui *ui ) :
-  m_routeData(),
-  m_destination(),
-  m_ui(ui),
-  m_currentDestination(-1),
-  m_currentRoute(-1)
-{
-  Locations locations;
-  Location *homeLocation = locations.location( "home" );
-  Location *workLocation = locations.location( "work" );
-
-  if ( homeLocation==0 ) {
-    homeLocation = new Location( "home" );
-    locations.addLocation( homeLocation );
-  } else if ( homeLocation->isValid() ) {
-    setHomeButtonValid();
-  }
-
-  if ( workLocation==0 ) {
-    workLocation = new Location( "work" );
-    locations.addLocation( workLocation );
-  } else if ( workLocation->isValid() ) {
-    setWorkButtonValid();
-  }
-
-  connect(
-      homeLocation, SIGNAL( becomeValid() ),
-      this, SLOT( setHomeButtonValid() )
-  );
-  connect(
-      homeLocation, SIGNAL( becomeInValid() ),
-      this, SLOT( setHomeButtonInValid() )
-  );
-  connect(
-      homeLocation, SIGNAL( becomeValid() ),
-      &locations, SLOT( saveLocation() )
-      );
-  connect(
-      homeLocation, SIGNAL( busy( bool ) ),
-      ui, SLOT( setBusy( bool ) )
-      );
-
-  connect(
-      workLocation, SIGNAL( becomeValid() ),
-      this, SLOT( setWorkButtonValid() )
-  );
-  connect(
-      workLocation, SIGNAL( becomeInValid() ),
-      this, SLOT( setWorkButtonInValid() )
-  );
-  connect(
-      workLocation, SIGNAL( becomeValid() ),
-      &locations, SLOT( saveLocation() )
-      );
-  connect(
-      workLocation, SIGNAL( busy( bool ) ),
-      ui, SLOT( setBusy( bool ) )
-      );
-
-  m_destination.append( homeLocation );
-  m_destination.append( workLocation );
-
-  connect(
-      m_ui->m_destinationButtons, SIGNAL( buttonClicked( int ) ),
-      this, SLOT( changeDestination( int ) )
-  );
-
-  connect(
-      m_ui->m_routeButtons, SIGNAL( buttonClicked( int ) ),
-      this, SLOT( changeRoute( int ) )
-  );
-}
-
-UiController::~UiController()
-{
-}
-
-void UiController::setHomeButtonInValid()
-{
-  qDebug() << "setting home button invalid";
-  setButtonValid( Ui::HomeButtonId, false );
-}
-
-void UiController::setHomeButtonValid()
-{
-  qDebug() << "setting home button valid";
-  setButtonValid( Ui::HomeButtonId, true );
-}
-
-void UiController::setWorkButtonInValid()
-{
-  qDebug() << "setting work button invalid";
-  setButtonValid( Ui::WorkButtonId, false );
-}
-
-void UiController::setWorkButtonValid()
-{
-  qDebug() << "setting work button valid";
-  setButtonValid( Ui::WorkButtonId, true );
-}
-
-void UiController::setButtonValid( int id, bool isValid )
-{
-  m_ui->m_destinationButtons->button( id )->setEnabled( isValid );
-}
-
-void UiController::changeDestination( int id )
-{
-  bool destinationHasChanged = ( m_currentDestination != id );
-  qDebug() << "Destination has changed=" << destinationHasChanged;
-  if ( destinationHasChanged ) {
-    qDebug() << "Emitting destination changed (" << m_destination[id]->label() << ")";
-    emit destinationChanged( m_destination[id] );
-    m_currentDestination = id;
-  }
-
-  // always want to emit this so that the gps position is updated
-  // and the user gets new information
-  emit buttonClicked();
-}
-
-void UiController::changeRoute( int id )
-{
-  bool routeHasChanged = ( m_currentRoute != id );
-  if ( routeHasChanged ) {
-    displayRouteDetail( id );
-  }
-}
-
-void UiController::displayRouteDetail( int id )
-{
-  QTableWidget *table = m_ui->m_routeDetailTable;
-
-  if ( id < m_routeData.count() ) {
-    QList<LegData> &legDataList = m_routeData[ id ].m_legData;
-    table->setRowCount( legDataList.count() );
-
-    int row=0;
-    foreach( LegData thisLegData, legDataList ) {
-      QString thisHow = thisLegData.m_how;
-
-      bool thisIsLine = ( thisHow == "LINE" );
-      if ( thisIsLine ) {
-        thisHow = thisLegData.m_lineCode;
-      }
-
-      QStringList tableStrings;
-      tableStrings
-        << thisHow
-        << thisLegData.m_tripTime
-        << thisLegData.m_tripDistance
-        << thisLegData.m_departureTime
-        << thisLegData.m_arrivalTime;
-
-      int col=0;
-      foreach( QString thisString, tableStrings ) {
-        QTableWidgetItem *newItem = new QTableWidgetItem();
-        newItem->setText( thisString );
-        table->setItem( row,col, newItem );
-        ++col;
-      }
-
-      ++row;
-    }
-  } else {
-    table->setRowCount( 0 );
-  }
-
-  table->resizeColumnsToContents();
-}
-
-void UiController::displayRoute( const QList<RouteData> &routeData )
-{
-  m_routeData = routeData;
-
-  qDebug() << "displaying route";
-
-  for ( int i=0; i<Ytv::ShowFiveResults; ++i ) {
-    QString label;
-
-    QWidget *widget = m_ui->m_routeStack->itemAt( i )->widget();
-    QRadioButton *button = qobject_cast<QRadioButton *>(widget);
-
-    if ( i<routeData.count() ) {
-      RouteData thisRouteData = routeData.at(i);
-      label = ( QStringList()
-          << thisRouteData.m_departureTime
-          << thisRouteData.m_lineCode ).join( "/" );
-      button->setEnabled( true );
-    } else {
-      button->setEnabled( false );
-    }
-
-    if ( i==0 ) {
-      button->setChecked( true );
-    } else {
-      button->setChecked( false );
-    }
-
-    button->setText( label );
-  }
-
-  displayRouteDetail( 0 );
-}
diff --git a/zouba/src/uicontroller.h b/zouba/src/uicontroller.h
deleted file mode 100644 (file)
index 7cbbbf5..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-#ifndef UICONTROLLER_H
-#define UICONTROLLER_H
-
-#include "routedata.h"
-#include "location.h"
-
-#include <QObject>
-
-class Ui;
-
-class UiController : public QObject
-{
-  Q_OBJECT
-
-public:
-  UiController( Ui *ui );
-  ~UiController();
-
-public Q_SLOTS:
-  void displayRoute( const QList<RouteData> &routeData );
-
-Q_SIGNALS:
-  void buttonClicked();
-  void destinationChanged( Location *newDestination );
-
-private Q_SLOTS:
-  void changeDestination( int id );
-  void changeRoute( int id );
-  void setHomeButtonValid();
-  void setWorkButtonValid();
-  void setHomeButtonInValid();
-  void setWorkButtonInValid();
-  void displayRouteDetail( int id );
-
-private:
-  void setButtonValid( int id, bool isValid );
-
-private:
-  QList<RouteData> m_routeData;
-  QList<Location*> m_destination;
-  Ui *m_ui;
-  int m_currentDestination;
-  int m_currentRoute;
-};
-#endif // UICONTROLLER_H
-
diff --git a/zouba/src/ytv.h b/zouba/src/ytv.h
deleted file mode 100644 (file)
index 9e34102..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#include <QUrl>
-#include <QString>
-
-namespace Ytv {
-  const QString Url( "http://api.reittiopas.fi/public-ytv/fi/api/" );
-  const QString Username( "zouba" );
-  const QString Password( "caf9r3ee" );
-
-  //const QString Home( QByteArray::fromPercentEncoding( "Taivaanvuohentie%207%2CHelsinki" ) );
-  //const QString Work( QByteArray::fromPercentEncoding( "It%E4merenkatu%2011%2CHelsinki" ) );
-
-  enum {
-    WalkSpeedSlow=1,
-    WalkSpeedFast=2,
-    WalkSpeedNormal=3,
-    WalkSpeedRunning=4,
-    WalkSpeedCycling=5,
-    NoWalkSpeeds=5
-  };
-
-  enum {
-    ShowOneResult=1,
-    ShowThreeResults=3,
-    ShowFiveResults=5
-  };
-
-  enum {
-    OptimizeDefault=1,
-    OptimizeFastest=2,
-    OptimizeLeastTransfers=3,
-    OptimizeLeastWalking=4
-  };
-
-};
-
diff --git a/zouba/tests/testSummary b/zouba/tests/testSummary
deleted file mode 100755 (executable)
index 3766d93..0000000
+++ /dev/null
@@ -1,310 +0,0 @@
-#! /usr/bin/perl
-require 5.008_004; # we need at least Perl version v5.8.4
-$ENV{MALLOC_CHECK_} = 2;
-
-use Term::ANSIColor;
-
-my $startTime = time();
-
-my %opts = (
-    "a" => 0, # all directories, irrespective of if they're in tests.pro
-    "r" => 0, # don't reverse sort
-    "s" => "D", # by default, sort by directory name
-    "j" => 1, # one make job at a time by default
-);
-
-for ( my $argNo=0; $argNo<@ARGV; $argNo++ ) {
-    my $arg = $ARGV[ $argNo ];
-    if ( $arg eq "-h" ) {
-        print "usage: $0 [-a] [-s letter] [-r] [-j number] [-h]\n";
-        print "       -a            include all ut_*/ directories - default is just the ones in tests.pro\n";
-        print "       -s [DTPFS]    sort by column (Dirs, Tests, P(ass), F(ail), S(kipped)\n";
-        print "       -r            reverse sort\n";
-        print "       -j <number>   use <number> make jobs. Default is 1\n";
-        print "       -h            this help\n";
-        exit;
-    } elsif ( $arg eq "-r" ) {
-        $opts{ "r" } = 1;
-    } elsif ( $arg eq "-a" ) {
-        $opts{ "a" } = 1;
-    } elsif ( $arg eq "-s" ) {
-        $opts{ "s" } = $ARGV[ ++$argNo ];
-        if ( $opts{ "s" } !~ /[DTPFS]/ ) {
-            print "Unrecognised column identifier\n";
-            print "Must be one of [DTPFS] :\n";
-            print "  D = Dirs\n";
-            print "  T = Tests\n";
-            print "  P = Pass\n";
-            print "  F = Fail\n";
-            print "  S = Skipped\n";
-            exit(-1);
-        }
-    } elsif ( $arg eq "-j" ) {
-        my $jobs = $ARGV[ ++$argNo ];
-        # Test that the argument is a positive integer number
-        if ( $jobs * 1 eq $jobs && $jobs > 0 ) {
-            $opts{ "j" } = $jobs;
-        }
-    }
-}
-
-# some globals to help sort be faster
-$sortCol = $opts{ "s" };
-$sortIsNumeric = ( $sortCol =~ /[PFS]/ );
-$reverseSort = $opts{ "r" };
-# helper variable for the number of jobs
-$numJobs = $opts{ "j" };
-
-%maxLen = ();
-%segFault = ();
-
-my @rowHeaders = (
-    "D", # Dirs
-    "T", # Tests
-);
-my @rowData = (
-    "P", # Passed
-    "F", # Failed
-    "S", # Skipped
-);
-
-my @keys = ( @rowHeaders, @rowData );
-
-my %title = (
-    "D"=>"Dirs",
-    "T"=>"Tests",
-    "P"=>"P",
-    "F"=>"F",
-    "S"=>"S",
-);
-
-my $headerLabelFormat = "%-*s";
-my $headerDataFormat = "%*s";
-
-my $labelFormat = "%s%-*s%s%*s";
-my $dataFormat   = "%*s%s%*s%s";
-
-my %format = (
-  "D" => $labelFormat,
-  "T" => $labelFormat,
-  "P" => $dataFormat,
-  "F" => $dataFormat,
-  "S" => $dataFormat,
-);
-
-my %separator = (
-  "D" => " ",
-  "T" => " : ",
-  "P" => " ",
-  "F" => " ",
-  "S" => " ",
-);
-
-my %data = (
-);
-
-foreach $key ( @keys ) {
-    $maxLen{ $key } = length( $title{ key } );
-}
-
-# set the maximum length of the directories
-if ( $opts{ "a" } ) {
-    push @allDirs, <ut_*>;
-    push @allDirs, <ft_*>;
-    foreach ( @allDirs ) {
-        setMaxLen( "D", length( $_ ) );
-        $tested{ $_ } = 0;
-    }
-}
-
-# Compile first with possibly multiple jobs
-print "Compiling...";
-`make -j$numJobs -k > /dev/null 2>&1`;
-print "done.\nNow checking...\n";
-
-# then check with only one job so that the parsing succeeds
-open( MAKE, "make -k check 2>&1|" ) || die( "Could not run make:$!" );
-
-#$|=1;
-
-my $thisDir = "";
-while (<MAKE>) {
-    chomp;
-
-    if ( /Entering directory \`.*tests\/(\w+)\'/ ) {
-        $thisDir = $1;
-        print STDERR "Tests: $thisDir", ' 'x( $maxLen{ "D" }-length( $thisDir )+length("Tests: ") ), "\r";
-        $tested{ $thisDir } = 1;
-        push @allDirs, $thisDir if ( !grep( /^$thisDir$/, @allDirs ) );
-        setMaxLen( "D", length( $thisDir ) );
-    } elsif ( /Segmentation fault/ ) {
-        $segFault{ $thisDir } = $_;
-    } elsif ( /Start testing of (\w+)/ ) {
-        $thisTest = $1;
-        $data{ "T" }{ $thisDir } = $thisTest;
-        setMaxLen( "T", length( $data{ "T" }{ $thisDir } ) );
-    } elsif ( /^Totals: (\d+) passed, (\d+) failed, (\d+) skipped/ ) {
-        $data{ "P" }{ $thisDir } = "$1";
-        $data{ "F" }{ $thisDir } = "$2";
-        $data{ "S" }{ $thisDir } = "$3";
-        setMaxLen( "P", length( $data{ "P" }{ $thisDir } ) );
-        setMaxLen( "F", length( $data{ "F" }{ $thisDir } ) );
-        setMaxLen( "S", length( $data{ "S" }{ $thisDir } ) );
-    }
-}
-
-close( MAKE );
-
-print STDERR ' 'x( $maxLen{ "D" } + length( "Tests: " ) ), "\r";
-
-foreach $thisDir ( @allDirs ) {
-    if ( !defined( $data{ "P" }{ $thisDir } ) || $data{ "P" }{ $thisDir } eq "" ) {
-        $data{ "P" }{ $thisDir } = "0";
-        setMaxLen( "P", length( $data{ "P" }{ $thisDir } ) );
-    }
-    if ( !defined( $data{ "F" }{ $thisDir } ) ) {
-        $data{ "F" }{ $thisDir } = "0";
-        setMaxLen( "F", length( $data{ "F" }{ $thisDir } ) );
-    }
-    if ( !defined( $data{ "S" }{ $thisDir } ) ) {
-        $data{ "S" }{ $thisDir } = "0";
-        setMaxLen( "S", length( $data{ "S" }{ $thisDir } ) );
-    }
-
-    $data{ "D" }{ $thisDir } = $thisDir;
-}
-
-my ( $testsPassed, $testsNeedWork ) = ( 0, 0 );
-my $noTests = scalar( @allDirs );
-my $noDigits = ($noTests>0)?int( log( $noTests )/log( 10 ) )+1:1;
-
-my $header = sprintf( "%*s ", $noDigits, "" );
-
-foreach ( @rowHeaders ) {
-    $header .= sprintf( $headerLabelFormat.$separator{ $_ }, $maxLen{ $_ }, $title{ $_ } );
-}
-
-foreach ( @rowData ) {
-    $header .= sprintf( $headerDataFormat.$separator{ $_ }, $maxLen{ $_ }, $title{ $_ } );
-}
-
-my $headerLen = length( $header );
-
-my $headerColor = color( 'reset' );
-
-print "P = Pass, F = Fail, S = Skip\n";
-print $headerColor, "$header\n";
-print '-'x$headerLen, "\n";
-
-my $testNo = 1;
-
-foreach $thisDir ( sort byCol @allDirs ) {
-    my %colors = ();
-
-    foreach $key ( @keys ) {
-        $colors{ $key } = color( 'reset' );
-    }
-
-    if (
-        ( defined( $data{ "P" }{ $thisDir } ) && $data{ "P" }{ $thisDir } ne "0" ) &&
-        ( defined( $data{ "F" }{ $thisDir } ) && $data{ "F" }{ $thisDir } eq "0" ) &&
-        ( defined( $data{ "S" }{ $thisDir } ) && $data{ "S" }{ $thisDir } eq "0" ) &&
-        ( defined( $data{ "T" }{ $thisDir } ) && $data{ "T" }{ $thisDir } ne "" )
-    ) {
-        $testsPassed++;
-    } else {
-        $testsNeedWork++;
-    }
-
-    if ( defined( $data{ "P" }{ $thisDir } ) && $data{ "P" }{ $thisDir } eq "0" ) {
-        $colors{ "D" } .= color( 'reverse green' );
-        $colors{ "T" } .= color( 'reverse green' );
-        $colors{ "P" } .= color( 'reverse green' );
-    } else {
-        $colors{ "D" } .= color( 'green' );
-        $colors{ "T" } .= color( 'green' );
-        $colors{ "P" } .= color( 'green' );
-    }
-
-    if ( defined( $data{ "F" }{ $thisDir} ) && $data{ "F" }{ $thisDir } eq "0" ) {
-        $colors{ "F" } .= color( 'red' );
-    } else {
-        $colors{ "F" } .= color( 'reverse red' );
-    }
-
-    if ( defined( $data{ "S" }{ $thisDir } ) && $data{ "S" }{ $thisDir } eq "0" ) {
-        $colors{ "S" } .= color( 'blue' );
-    } else {
-        $colors{ "S" } .= color( 'reverse blue' );
-    }
-
-    if ( !defined( $data{ "T" }{ $thisDir } ) || $data{ "T" }{ $thisDir } eq "" || $segFault{ $thisDir } ) {
-        $colors{ "T" } .= color( 'reverse red' );
-    }
-
-    printf( "%*s ", $noDigits, $testNo );
-
-    foreach ( @rowHeaders ) {
-        my $thisData = $data{ $_ }{ $thisDir };
-        my $dataLength = length( $thisData );
-        my $spaceLength = $maxLen{ $_ }-$dataLength;
-
-        printf(
-            $format{ $_ }.$separator{ $_ },
-            $colors{ $_ }, $dataLength, $thisData,
-            color( 'reset' ), $spaceLength, "" );
-    }
-
-    foreach ( @rowData ) {
-        my $thisData = $data{ $_ }{ $thisDir };
-        my $dataLength = length( $thisData );
-        my $spaceLength = $maxLen{ $_ }-$dataLength;
-
-        printf(
-            $format{ $_ }.$separator{ $_ },
-            $spaceLength, "",
-            $colors{ $_ }, $dataLength, $thisData,
-            color( 'reset' ) );
-    }
-
-    printf( $headerColor."\n" );
-
-    $testNo++;
-}
-
-print '-'x$headerLen, "\n";
-print( "Tests with zero fails/skips : $testsPassed\n" );
-print( "Tests needing further work  : $testsNeedWork\n" );
-
-printf( "Elapsed time : %d seconds\n", time() - $startTime );
-
-sub setMaxLen
-{
-    my ( $test, $length ) = @_;
-
-    $maxLen{ $test } = $length if ( defined( $maxLen{ $test} ) && $length > $maxLen{ $test } );
-}
-
-sub byCol
-{
-    my $retVal = 0;
-
-    my $localA = $a;
-    my $localB = $b;
-
-    if ( $reverseSort ) {
-        my $tmp = $localA;
-        $localA = $localB;
-        $localB = $tmp;
-    }
-
-    if ( $sortIsNumeric ) {
-        # numeric comparison
-        $retVal = $data{ $sortCol }{ $localA } <=> $data{ $sortCol }{ $localB };
-    } else {
-        # string comparison
-        $retVal = $data{ $sortCol }{ $localA } cmp $data{ $sortCol }{ $localB };
-    }
-
-    return $retVal;
-}
diff --git a/zouba/tests/tests.pri b/zouba/tests/tests.pri
deleted file mode 100644 (file)
index c8e85f1..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-ZOUBASRC = ../../src
-
diff --git a/zouba/tests/tests.pro b/zouba/tests/tests.pro
deleted file mode 100644 (file)
index c81345e..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-TEMPLATE=subdirs
-SUBDIRS = \
-       ut_location/ \
-       ut_route/ \
-       ut_gpscontroller/ \
-
-check.target = check
-check.CONFIG = recursive
-QMAKE_EXTRA_TARGETS += check
diff --git a/zouba/tests/ut_gpscontroller/ut_gpscontroller.cpp b/zouba/tests/ut_gpscontroller/ut_gpscontroller.cpp
deleted file mode 100644 (file)
index e391645..0000000
+++ /dev/null
@@ -1,222 +0,0 @@
-#include <QObject>
-#include <QtDebug>
-#include "ut_gpscontroller.h"
-
-#include "gpscontroller.h"
-#include "gpscontroller_p.h"
-
-class MyGpsControllerPrivate: public GpsControllerPrivate
-{
-public:
-  MyGpsControllerPrivate();
-  ~MyGpsControllerPrivate();
-
-  void init();
-  void startGps();
-  void stopGps();
-
-  void setGps( QGeoPositionInfoSource *gps );
-  void setFakeLocationLabel( const QString &label );
-  void setUseFakeLocation( bool useFake );
-  void updateLocation();
-
-  QGeoPositionInfoSource *gps();
-  Location               *liveLocation();
-  Location               *fakeLocation();
-  bool                    useFakeLocation();
-
-  bool                    m_gpsOn;
-  Location               *m_liveLocation;
-  Location               *m_fakeLocation;
-  QString                 m_fakeLocationLabel;
-  bool                    m_useFakeLocation;
-};
-
-MyGpsControllerPrivate::MyGpsControllerPrivate() :
-  m_gpsOn(false),
-  m_liveLocation( new Location( "livegps" ) ),
-  m_fakeLocation( new Location( "fakegps" ) ),
-  m_fakeLocationLabel(),
-  m_useFakeLocation(false)
-{
-}
-
-MyGpsControllerPrivate::~MyGpsControllerPrivate()
-{
-  delete m_liveLocation;
-  m_liveLocation = 0;
-  delete m_fakeLocation;
-  m_fakeLocation = 0;
-}
-
-void MyGpsControllerPrivate::init()
-{
-}
-
-void MyGpsControllerPrivate::startGps()
-{
-  m_gpsOn=true;
-}
-
-void MyGpsControllerPrivate::stopGps()
-{
-  m_gpsOn=false;
-}
-
-QGeoPositionInfoSource *MyGpsControllerPrivate::gps()
-{
-  return 0;
-}
-
-void MyGpsControllerPrivate::setGps( QGeoPositionInfoSource *gps )
-{
-  Q_UNUSED( gps );
-}
-
-Location *MyGpsControllerPrivate::liveLocation()
-{
-  return m_liveLocation;
-}
-
-Location *MyGpsControllerPrivate::fakeLocation()
-{
-  return m_fakeLocation;
-}
-
-void MyGpsControllerPrivate::setFakeLocationLabel( const QString &label )
-{
-  m_fakeLocationLabel = label;
-  m_fakeLocation->setLabel( label );
-}
-
-bool MyGpsControllerPrivate::useFakeLocation()
-{
-  return m_useFakeLocation;
-}
-
-void MyGpsControllerPrivate::setUseFakeLocation( bool useFake )
-{
-  m_useFakeLocation = useFake;
-}
-
-void MyGpsControllerPrivate::updateLocation()
-{
-}
-
-void Ut_GpsController::init()
-{
-  qRegisterMetaType<Location *>( "Location*" );
-
-  m_subject_p = new MyGpsControllerPrivate();
-  m_subject = new GpsController( m_subject_p ); // private ownership transferred
-}
-
-void Ut_GpsController::cleanup()
-{
-    delete m_subject;
-    m_subject = 0;
-}
-
-void Ut_GpsController::initTestCase()
-{
-}
-
-void Ut_GpsController::cleanupTestCase()
-{
-}
-
-void Ut_GpsController::testGetGpsWithNoGpsUpdates()
-{
-  QSignalSpy spy(m_subject, SIGNAL(locationChanged(Location*)));
-
-  // this should start the gps,
-  // one signal to invalidate the previous display
-  // (which could be showing fake results, for example
-  m_subject->getGps();
-
-  QCOMPARE(m_subject_p->m_gpsOn, true);
-  QCOMPARE(spy.count(), 1);
-}
-
-void Ut_GpsController::testGetGpsWithGpsUpdates()
-{
-  QSignalSpy spy(m_subject, SIGNAL(locationChanged(Location*)));
-
-  // make test call
-  m_subject->getGps();
-
-  // check effect
-  QCOMPARE(m_subject_p->m_gpsOn, true);
-  QCOMPARE(spy.count(), 1);
-  QList<QVariant> arguments = spy.takeFirst();
-  QCOMPARE(arguments.at(0).value<Location*>(), m_subject_p->m_liveLocation);
-}
-
-void Ut_GpsController::testFakeGps()
-{
-  QSignalSpy spy(m_subject, SIGNAL(locationChanged(Location*)));
-
-  Location *gpsLocation = m_subject_p->m_liveLocation; // position from GPS
-
-  // make test call
-  m_subject->useFakeGps( "fakegps" );
-  m_subject->getGps();
-
-  // check effect
-  QList<QVariant> arguments;
-
-  // gps should be off
-  QCOMPARE(m_subject_p->m_gpsOn, false);
-
-  // should get two signals, one from useFakeGps() and one from getGps()
-  QVERIFY2(spy.count()==2, "Should receive two signals" );
-
-  // both args should be the fake gps position supplied to useFakeGps()
-  arguments = spy.takeFirst();
-  QCOMPARE( arguments.at(0).value<Location*>(), m_subject_p->m_fakeLocation );
-  QCOMPARE( arguments.at(0).value<Location*>()->label(), QString( "fakegps" ) );
-  arguments = spy.takeFirst();
-  QCOMPARE( arguments.at(0).value<Location*>(), m_subject_p->m_fakeLocation );
-  QCOMPARE( arguments.at(0).value<Location*>()->label(), QString( "fakegps" ) );
-
-  // switch back to GPS
-  m_subject->useLiveGps();
-  m_subject->getGps();
-
-  // gps should be on
-  QCOMPARE(m_subject_p->m_gpsOn, true);
-
-  QVERIFY2(spy.count()==2, "should get two locationChanged signals" );
-  arguments = spy.takeFirst();
-  QCOMPARE(arguments.at(0).value<Location*>(), m_subject_p->m_liveLocation);
-  QCOMPARE( arguments.at(0).value<Location*>()->label(), QString( "livegps" ) );
-  arguments = spy.takeFirst();
-  QCOMPARE(arguments.at(0).value<Location*>(), m_subject_p->m_liveLocation);
-  QCOMPARE( arguments.at(0).value<Location*>()->label(), QString( "livegps" ) );
-
-  // get GPS location
-  m_subject->getGps();
-
-  // check effect
-  QCOMPARE(spy.count(), 1);
-  arguments = spy.takeFirst();
-  QCOMPARE(arguments.at(0).value<Location*>(), m_subject_p->m_liveLocation);
-  QCOMPARE( arguments.at(0).value<Location*>()->label(), QString( "livegps" ) );
-}
-
-void Ut_GpsController::testLiveToFakeToLive()
-{
-  m_subject_p->updateLocation(); // pretend GPS has given an update
-
-  m_subject->useFakeGps( "fakegps" );
-  m_subject->getGps();
-
-  // switch back to live GPS
-  m_subject->useLiveGps();
-  m_subject->getGps();
-
-  m_subject->useFakeGps( "fakegps" );
-  m_subject->getGps();
-}
-
-QTEST_APPLESS_MAIN(Ut_GpsController)
diff --git a/zouba/tests/ut_gpscontroller/ut_gpscontroller.h b/zouba/tests/ut_gpscontroller/ut_gpscontroller.h
deleted file mode 100644 (file)
index 50fdcb7..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#ifndef UT_GPSCONTROLLER_H
-#define UT_GPSCONTROLLER_H
-
-#include <QtTest/QtTest>
-#include <QObject>
-
-class GpsController;
-class MyGpsControllerPrivate;
-class Location;
-
-Q_DECLARE_METATYPE(GpsController*);
-Q_DECLARE_METATYPE(MyGpsControllerPrivate*);
-Q_DECLARE_METATYPE(Location*);
-
-class Ut_GpsController : public QObject
-{
-Q_OBJECT
-
-public:
-
-private slots:
-  void init();
-  void cleanup();
-  void initTestCase();
-  void cleanupTestCase();
-  void testGetGpsWithNoGpsUpdates();
-  void testGetGpsWithGpsUpdates();
-  void testFakeGps();
-  void testLiveToFakeToLive();
-
-private:
-  GpsController *m_subject;
-  MyGpsControllerPrivate *m_subject_p;
-};
-#endif // UT_GPSCONTROLLER_H
diff --git a/zouba/tests/ut_gpscontroller/ut_gpscontroller.pro b/zouba/tests/ut_gpscontroller/ut_gpscontroller.pro
deleted file mode 100644 (file)
index 9021c16..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-include( ../tests.pri )
-CONFIG += \
-  qt \
-  debug \
-  mobility \
-
-MOBILITY = \
-   location \
-   bearer \
-
-QT += \
-  testlib \
-  network \
-  maemo5 \
-
-INCLUDEPATH += \
-  $$ZOUBASRC \
-
-DEPENDPATH += $INCLUDEPATH
-
-TEMPLATE = app
-
-LIBS += \
-   /usr/lib/libQtLocation.so \
-
-SOURCES  = \
-  ut_gpscontroller.cpp \
-  $$ZOUBASRC/gpscontroller.cpp \
-  $$ZOUBASRC/gpscontroller_p.cpp \
-  $$ZOUBASRC/locations.cpp \
-  $$ZOUBASRC/location.cpp \
-  $$ZOUBASRC/location_p.cpp \
-
-HEADERS += \
-  ut_gpscontroller.h \
-  $$ZOUBASRC/gpscontroller.h \
-  $$ZOUBASRC/gpscontroller_p.h \
-  $$ZOUBASRC/locations.h \
-  $$ZOUBASRC/location.h \
-  $$ZOUBASRC/location_p.h \
-
-QMAKE_EXTRA_TARGETS += check
-check.depends = $$TARGET
-check.commands = ./$$TARGET
diff --git a/zouba/tests/ut_location/ut_location.cpp b/zouba/tests/ut_location/ut_location.cpp
deleted file mode 100644 (file)
index e7e4ca6..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-#include <QObject>
-#include <QtDebug>
-#include <QByteArray>
-#include <QGeoPositionInfo>
-#include "location.h"
-#include "location_p.h"
-#include "ut_location.h"
-
-QTM_USE_NAMESPACE
-
-QByteArray sampleInput(
-"\
-<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?><MTRXML version=\"1.0\">\
-<GEOCODE key=\"taivaanvuohentie 7,helsinki\">\
-<LOC name1=\"Taivaanvuohentie\" number=\"7\" city=\"Helsinki\" code=\"\" address=\"\" type=\"900\" category=\"street\" x=\"2549182\" y=\"6672569\" lon=\"24.88256\" lat=\"60.16183\" />\
-</GEOCODE>\
-</MTRXML>\
-"
-
-);
-
-void Ut_Location::init()
-{
-}
-
-void Ut_Location::cleanup()
-{
-}
-
-void Ut_Location::initTestCase()
-{
-}
-
-void Ut_Location::cleanupTestCase()
-{
-}
-
-void Ut_Location::testParseReply()
-{
-  QString label("home");
-  LocationPrivate m_subject(label);
-
-  m_subject.parseReply( sampleInput );
-
-  QCOMPARE( m_subject.label(), label );
-  QCOMPARE( m_subject.x(), QString( "2549182" ) );
-  QCOMPARE( m_subject.y(), QString( "6672569" ) );
-}
-
-void Ut_Location::testSet()
-{
-  QString label( "home" );
-  LocationPrivate m_subject(label);
-
-  label = "work";
-  QString address( "Taivaanvuohentie 7 B 27, Helsinki" );
-  QString x( "2549182" );
-  QString y( "6672569" );
-  m_subject.setAddress( address );
-  m_subject.setLabel( label );
-  m_subject.setX( x );
-  m_subject.setY( y );
-  QCOMPARE( m_subject.address(), address );
-  QCOMPARE( m_subject.label(), label );
-  QCOMPARE( m_subject.x(), x );
-  QCOMPARE( m_subject.y(), y );
-}
-
-void Ut_Location::testConstructorQGeoPositionInfo()
-{
-  QGeoPositionInfo thisPositionInfo( QGeoCoordinate( 60.16183, 24.88256 ), QDateTime( QDate( 1965, 11, 11 ) ) );
-  Location subject( thisPositionInfo );
-
-  QString x( "2549182" );
-  QString y( "6672569" );
-  QCOMPARE( subject.x(), x );
-  QCOMPARE( subject.y(), y );
-}
-
-QTEST_APPLESS_MAIN(Ut_Location)
diff --git a/zouba/tests/ut_location/ut_location.h b/zouba/tests/ut_location/ut_location.h
deleted file mode 100644 (file)
index 552c4eb..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-#ifndef UT_LOCATION_H
-#define UT_LOCATION_H
-
-#include <QtTest/QtTest>
-#include <QObject>
-
-#include <location_p.h>
-
-Q_DECLARE_METATYPE(LocationPrivate*);
-
-class Ut_Location : public QObject
-{
-Q_OBJECT
-
-public:
-
-private slots:
-  void init();
-  void cleanup();
-  void initTestCase();
-  void cleanupTestCase();
-  void testParseReply();
-  void testSet();
-  void testConstructorQGeoPositionInfo();
-
-private:
-  LocationPrivate *m_subject;
-};
-#endif // UT_LOCATION_H
diff --git a/zouba/tests/ut_location/ut_location.pro b/zouba/tests/ut_location/ut_location.pro
deleted file mode 100644 (file)
index 9a3fdc0..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-include( ../tests.pri )
-CONFIG += \
-  qt \
-  debug \
-  mobility \
-
-MOBILITY = \
-   location \
-   bearer \
-
-QT += \
-  testlib \
-  network \
-  maemo5 \
-
-INCLUDEPATH += \
-  $$ZOUBASRC \
-
-DEPENDPATH += $$INCLUDEPATH
-
-LIBS += \
-   /usr/lib/libQtLocation.so \
-
-TEMPLATE = app
-
-SOURCES  = \
-  ut_location.cpp \
-  $$ZOUBASRC/location.cpp \
-  $$ZOUBASRC/location_p.cpp \
-
-HEADERS += \
-  ut_location.h \
-  $$ZOUBASRC/location.h \
-  $$ZOUBASRC/location_p.h \
-
-QMAKE_EXTRA_TARGETS += check
-check.depends = $$TARGET
-check.commands = ./$$TARGET
diff --git a/zouba/tests/ut_route/ut_route.cpp b/zouba/tests/ut_route/ut_route.cpp
deleted file mode 100644 (file)
index 0a47349..0000000
+++ /dev/null
@@ -1,158 +0,0 @@
-#include <QObject>
-#include <QtDebug>
-#include <QByteArray>
-#include "ut_route.h"
-
-#include "ut_sampleinput.h"
-
-void Ut_Route::init()
-{
-    m_subject = new RoutePrivate();
-}
-
-void Ut_Route::cleanup()
-{
-    delete m_subject;
-    m_subject = 0;
-}
-
-void Ut_Route::initTestCase()
-{
-}
-
-void Ut_Route::cleanupTestCase()
-{
-}
-
-void Ut_Route::testParseReply()
-{
-  QFETCH(QByteArray, xmlInput);
-  QFETCH(QList<RouteData>, expectedResults);
-
-  QList<RouteData> routeData = m_subject->parseReply( xmlInput );
-
-  QCOMPARE( routeData.count(), expectedResults.count() );
-
-  for( int routeIndex=0; routeIndex<routeData.count(); ++routeIndex ) {
-    const RouteData &thisRouteData     = routeData.at( routeIndex );
-    const RouteData &thisExpectedRoute = expectedResults.at( routeIndex );
-
-    QCOMPARE( thisRouteData.m_tripTime,        thisExpectedRoute.m_tripTime );
-    QCOMPARE( thisRouteData.m_tripDistance,    thisExpectedRoute.m_tripDistance );
-    QCOMPARE( thisRouteData.m_departureTime,   thisExpectedRoute.m_departureTime );
-    QCOMPARE( thisRouteData.m_lineCode,        thisExpectedRoute.m_lineCode );
-    QCOMPARE( thisRouteData.m_legData.count(), thisExpectedRoute.m_legData.count() );
-
-    for( int legIndex=0; legIndex<thisRouteData.m_legData.count(); ++legIndex ) {
-      const LegData &thisLegData     = thisRouteData.m_legData.at( legIndex );
-      const LegData &thisExpectedLeg = thisExpectedRoute.m_legData.at( legIndex );
-
-      QCOMPARE( thisLegData.m_how,           thisExpectedLeg.m_how );
-      QCOMPARE( thisLegData.m_tripTime,      thisExpectedLeg.m_tripTime );
-      QCOMPARE( thisLegData.m_tripDistance,  thisExpectedLeg.m_tripDistance );
-      QCOMPARE( thisLegData.m_departureTime, thisExpectedLeg.m_departureTime );
-      QCOMPARE( thisLegData.m_arrivalTime,   thisExpectedLeg.m_arrivalTime );
-      QCOMPARE( thisLegData.m_lineCode,      thisExpectedLeg.m_lineCode );
-    }
-  }
-}
-
-void Ut_Route::testParseReply_data()
-{
-  QTest::addColumn<QByteArray>("xmlInput");
-  QTest::addColumn< QList<RouteData> >("expectedResults");
-
-  QTest::newRow("single route")
-    << sampleInput[0]
-    << ( QList<RouteData>()
-        // Summary :    TTime     TDist       First Vehicle
-        << ( RouteData( "14.411", "2510.063", "18:20", "65A" )
-          //          How     TTime    TDist       Depart   Arrive   Line
-          << LegData( "WALK", "4.475", "357.069",  "18:15", "18:20" )
-          << LegData( "LINE", "5.000", "1760.931", "18:20", "18:25", "65A" )
-          << LegData( "WALK", "4.936", "392.062",  "18:25", "18:29" )
-          )
-        // Summary :    TTime     TDist       First Vehicle
-        << ( RouteData( "13.411", "2501.497", "18:26", "102T" )
-          //          How     TTime    TDist       Depart   Arrive   Line
-          << LegData( "WALK", "4.475", "357.069",  "18:21", "18:26" )
-          << LegData( "LINE", "4.000", "1751.582", "18:26", "18:30", "102T" )
-          << LegData( "WALK", "4.936", "392.846",  "18:30", "18:34" )
-          )
-        // Summary :    TTime     TDist       First Vehicle
-        << ( RouteData( "13.411", "2501.497", "18:34", "110T" )
-          //          How     TTime    TDist       Depart   Arrive   Line
-          << LegData( "WALK", "4.475", "357.069",  "18:29", "18:34" )
-          << LegData( "LINE", "4.000", "1751.582", "18:34", "18:38", "110T" )
-          << LegData( "WALK", "4.936", "392.846",  "18:38", "18:42" )
-          )
-        );
-
-  QTest::newRow("route with bus change")
-    << sampleInput[1]
-    << ( QList<RouteData>()
-        // Summary :    TTime     TDist       First Vehicle
-        << ( RouteData( "28.633", "8902.040", "08:18",  "111" )
-          //          How     TTime    TDist       Depart   Arrive   Line
-          << LegData( "WALK", "3.479", "254.753",  "08:14", "08:18" )
-          << LegData( "LINE", "8.000", "5225.092", "08:18", "08:26", "111" )
-          << LegData( "LINE", "5.000", "2926.431", "08:32", "08:37", "121T" )
-          << LegData( "WALK", "6.154", "495.764",  "08:37", "08:43" )
-          )
-        // Summary :    TTime     TDist       First Vehicle
-        << ( RouteData( "25.633", "8902.040", "08:33",  "111" )
-          //          How     TTime    TDist       Depart   Arrive   Line
-          << LegData( "WALK", "3.479", "254.753",  "08:29", "08:33" )
-          << LegData( "LINE", "8.000", "5225.092", "08:33", "08:41", "111" )
-          << LegData( "LINE", "5.000", "2926.431", "08:44", "08:49", "102T" )
-          << LegData( "WALK", "6.154", "495.764",  "08:49", "08:55" )
-          )
-        // Summary :    TTime     TDist        First Vehicle
-        << ( RouteData( "33.510", "11193.458", "08:34", "111T" )
-          //          How     TTime    TDist       Depart   Arrive   Line
-          << LegData( "WALK", "2.356", "172.693",  "08:31", "08:34" )
-          << LegData( "LINE", "6.000", "3392.054", "08:34", "08:40", "111T" )
-          << LegData( "LINE", "5.000", "4206.516", "08:43", "08:48", "112" )
-          << LegData( "LINE", "5.000", "2926.431", "08:54", "08:59", "102T" )
-          << LegData( "WALK", "6.154", "495.764",  "08:59", "09:05" )
-          )
-        // Summary :    TTime     TDist       First Vehicle
-        << ( RouteData( "29.633", "8902.040", "08:50",  "111" )
-          //          How     TTime    TDist       Depart   Arrive   Line
-          << LegData( "WALK", "3.479", "254.753",  "08:46", "08:50" )
-          << LegData( "LINE", "8.000", "5225.092", "08:50", "08:58", "111" )
-          << LegData( "LINE", "5.000", "2926.431", "09:05", "09:10", "102T" )
-          << LegData( "WALK", "6.154", "495.764",  "09:10", "09:16" )
-          )
-        // Summary :    TTime     TDist       First Vehicle
-        << ( RouteData( "29.633", "8902.040", "09:07",  "111" )
-          //          How     TTime    TDist       Depart   Arrive   Line
-          << LegData( "WALK", "3.479", "254.753",  "09:03", "09:07" )
-          << LegData( "LINE", "8.000", "5225.092", "09:07", "09:15", "111" )
-          << LegData( "LINE", "5.000", "2926.431", "09:22", "09:27", "160T" )
-          << LegData( "WALK", "6.154", "495.764",  "09:27", "09:33" )
-          )
-        );
-}
-
-void Ut_Route::testSetFromLocation()
-{
-  Location work( "2551042", "6672829" );
-  QCOMPARE( m_subject->fromValid(), false );
-  m_subject->setFromLocation( &work );
-  QCOMPARE( m_subject->fromLocation()->x(), work.x() );
-  QCOMPARE( m_subject->fromLocation()->y(), work.y() );
-  QCOMPARE( m_subject->fromValid(), true );
-}
-
-void Ut_Route::testSetToLocation()
-{
-  Location work( "2551042", "6672829" );
-  QCOMPARE( m_subject->toValid(), false );
-  m_subject->setToLocation( &work );
-  QCOMPARE( m_subject->toLocation()->x(), work.x() );
-  QCOMPARE( m_subject->toLocation()->y(), work.y() );
-  QCOMPARE( m_subject->toValid(), true );
-}
-
-QTEST_APPLESS_MAIN(Ut_Route)
diff --git a/zouba/tests/ut_route/ut_route.h b/zouba/tests/ut_route/ut_route.h
deleted file mode 100644 (file)
index a444405..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-#ifndef UT_ROUTE_H
-#define UT_ROUTE_H
-
-#include <QtTest/QtTest>
-#include <QObject>
-
-#include <route_p.h>
-
-Q_DECLARE_METATYPE(RoutePrivate*);
-Q_DECLARE_METATYPE(QList<RouteData>);
-
-class Ut_Route : public QObject
-{
-    Q_OBJECT
-
-public:
-
-private slots:
-    void init();
-    void cleanup();
-    void initTestCase();
-    void cleanupTestCase();
-    void testParseReply();
-    void testParseReply_data();
-    void testSetFromLocation();
-    void testSetToLocation();
-
-private:
-    RoutePrivate *m_subject;
-};
-#endif // UT_ROUTE_H
diff --git a/zouba/tests/ut_route/ut_route.pro b/zouba/tests/ut_route/ut_route.pro
deleted file mode 100644 (file)
index 00aeaa8..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-include( ../tests.pri )
-CONFIG += \
-  qt \
-  debug \
-  mobility \
-
-MOBILITY = \
-   location \
-   bearer \
-
-QT += \
-  testlib \
-  network \
-  maemo5 \
-
-INCLUDEPATH += \
-  $$ZOUBASRC \
-
-DEPENDPATH += $INCLUDEPATH
-
-TEMPLATE = app
-
-LIBS += \
-   /usr/lib/libQtLocation.so \
-
-SOURCES  = \
-  ut_route.cpp \
-  $$ZOUBASRC/route_p.cpp \
-  $$ZOUBASRC/location.cpp \
-  $$ZOUBASRC/location_p.cpp \
-
-HEADERS += \
-  ut_route.h \
-  $$ZOUBASRC/route_p.h \
-  $$ZOUBASRC/location.h \
-  $$ZOUBASRC/location_p.h \
-
-QMAKE_EXTRA_TARGETS += check
-check.depends = $$TARGET
-check.commands = ./$$TARGET
diff --git a/zouba/tests/ut_route/ut_sampleinput.h b/zouba/tests/ut_route/ut_sampleinput.h
deleted file mode 100644 (file)
index ec38afe..0000000
+++ /dev/null
@@ -1,1238 +0,0 @@
-
-QByteArray sampleInput[2] = {
-"<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>\
-<MTRXML version=\"1.0\">\
-       <ROUTE from=\"start\" to=\"dest\">\
-               <LENGTH time=\"14.411\" dist=\"2510.063\"/>\
-               <POINT uid=\"start\" x=\"2551042.0\" y=\"6672829.0\">\
-                       <ARRIVAL date=\"20100207\" time=\"1815\"/>\
-                       <DEPARTURE date=\"20100207\" time=\"1815\"/>\
-               </POINT>\
-               <WALK>\
-                       <LENGTH time=\"4.475\" dist=\"357.069\"/>\
-                       <POINT uid=\"start\" x=\"2551042.0\" y=\"6672829.0\">\
-                               <ARRIVAL date=\"20100207\" time=\"1815\"/>\
-                               <DEPARTURE date=\"20100207\" time=\"1815\"/>\
-                       </POINT>\
-                       <MAPLOC x=\"2551034.9\" y=\"6672875.6\" type=\"7\">\
-                               <ARRIVAL date=\"20100207\" time=\"1816\"/>\
-                               <DEPARTURE date=\"20100207\" time=\"1816\"/>\
-                               <NAME lang=\"1\" val=\"Porkkalankatu\"/>\
-                       </MAPLOC>\
-                       <MAPLOC x=\"2550977.7\" y=\"6672869.1\" type=\"15\">\
-                               <ARRIVAL date=\"20100207\" time=\"1817\"/>\
-                               <DEPARTURE date=\"20100207\" time=\"1817\"/>\
-                       </MAPLOC>\
-                       <MAPLOC x=\"2550949.3\" y=\"6672867.5\" type=\"7\">\
-                               <ARRIVAL date=\"20100207\" time=\"1817\"/>\
-                               <DEPARTURE date=\"20100207\" time=\"1817\"/>\
-                               <NAME lang=\"1\" val=\"Porkkalankatu\"/>\
-                       </MAPLOC>\
-                       <MAPLOC x=\"2550817.2\" y=\"6672859.3\" type=\"7\">\
-                               <ARRIVAL date=\"20100207\" time=\"1819\"/>\
-                               <DEPARTURE date=\"20100207\" time=\"1819\"/>\
-                       </MAPLOC>\
-                       <MAPLOC x=\"2550808.5\" y=\"6672889.3\" type=\"11\">\
-                               <ARRIVAL date=\"20100207\" time=\"1820\"/>\
-                               <DEPARTURE date=\"20100207\" time=\"1820\"/>\
-                               <NAME lang=\"1\" val=\"Porkkalankatu\"/>\
-                       </MAPLOC>\
-                       <STOP code=\"6:1201129\" x=\"2550765.0\" y=\"6672886.0\" id=\"745\">\
-                               <ARRIVAL date=\"20100207\" time=\"1820\"/>\
-                               <DEPARTURE date=\"20100207\" time=\"1820\"/>\
-                               <NAME lang=\"1\" val=\"Länsiväylä\"/>\
-                               <NAME lang=\"2\" val=\"Västerleden\"/>\
-                       </STOP>\
-               </WALK>\
-               <LINE id=\"200\" code=\"1065A 2\" type=\"1\" mobility=\"3\">\
-                       <LENGTH time=\"5.000\" dist=\"1760.931\"/>\
-                       <STOP code=\"6:1201129\" x=\"2550765.0\" y=\"6672886.0\" id=\"745\" ord=\"30\">\
-                               <ARRIVAL date=\"20100207\" time=\"1820\"/>\
-                               <DEPARTURE date=\"20100207\" time=\"1820\"/>\
-                               <NAME lang=\"1\" val=\"Länsiväylä\"/>\
-                               <NAME lang=\"2\" val=\"Västerleden\"/>\
-                       </STOP>\
-                       <STOP code=\"6:1201131\" x=\"2550385.0\" y=\"6672760.0\" id=\"747\">\
-                               <ARRIVAL date=\"20100207\" time=\"1821\"/>\
-                               <DEPARTURE date=\"20100207\" time=\"1821\"/>\
-                               <NAME lang=\"1\" val=\"Salmisaari\"/>\
-                               <NAME lang=\"2\" val=\"Sundholmen\"/>\
-                       </STOP>\
-                       <STOP code=\"6:1310101\" x=\"2549608.0\" y=\"6672522.0\" id=\"1356\">\
-                               <ARRIVAL date=\"20100207\" time=\"1824\"/>\
-                               <DEPARTURE date=\"20100207\" time=\"1824\"/>\
-                               <NAME lang=\"1\" val=\"Lauttasaaren silta\"/>\
-                               <NAME lang=\"2\" val=\"Drumsö bro\"/>\
-                       </STOP>\
-                       <STOP code=\"6:1310103\" x=\"2549247.0\" y=\"6672446.0\" id=\"1358\" ord=\"33\">\
-                               <ARRIVAL date=\"20100207\" time=\"1825\"/>\
-                               <DEPARTURE date=\"20100207\" time=\"1825\"/>\
-                               <NAME lang=\"1\" val=\"Koillisväylä\"/>\
-                               <NAME lang=\"2\" val=\"Nordostpassagen\"/>\
-                       </STOP>\
-               </LINE>\
-               <WALK>\
-                       <LENGTH time=\"4.936\" dist=\"392.062\"/>\
-                       <STOP code=\"6:1310103\" x=\"2549247.0\" y=\"6672446.0\" id=\"1358\">\
-                               <ARRIVAL date=\"20100207\" time=\"1825\"/>\
-                               <DEPARTURE date=\"20100207\" time=\"1825\"/>\
-                               <NAME lang=\"1\" val=\"Koillisväylä\"/>\
-                               <NAME lang=\"2\" val=\"Nordostpassagen\"/>\
-                       </STOP>\
-                       <MAPLOC x=\"2549200.4\" y=\"6672433.4\" type=\"0\">\
-                               <ARRIVAL date=\"20100207\" time=\"1825\"/>\
-                               <DEPARTURE date=\"20100207\" time=\"1825\"/>\
-                               <NAME lang=\"1\" val=\"Taivaanvuohenkuja\"/>\
-                       </MAPLOC>\
-                       <MAPLOC x=\"2549151.2\" y=\"6672527.3\" type=\"0\">\
-                               <ARRIVAL date=\"20100207\" time=\"1827\"/>\
-                               <DEPARTURE date=\"20100207\" time=\"1827\"/>\
-                               <NAME lang=\"1\" val=\"Taivaanvuohentie\"/>\
-                       </MAPLOC>\
-                       <MAPLOC x=\"2549105.4\" y=\"6672573.6\" type=\"0\">\
-                               <ARRIVAL date=\"20100207\" time=\"1828\"/>\
-                               <DEPARTURE date=\"20100207\" time=\"1828\"/>\
-                       </MAPLOC>\
-                       <MAPLOC x=\"2549115.4\" y=\"6672595.1\" type=\"0\">\
-                               <ARRIVAL date=\"20100207\" time=\"1828\"/>\
-                               <DEPARTURE date=\"20100207\" time=\"1828\"/>\
-                       </MAPLOC>\
-                       <MAPLOC x=\"2549162.6\" y=\"6672633.1\" type=\"0\">\
-                               <ARRIVAL date=\"20100207\" time=\"1829\"/>\
-                               <DEPARTURE date=\"20100207\" time=\"1829\"/>\
-                       </MAPLOC>\
-                       <POINT uid=\"dest\" x=\"2549183.0\" y=\"6672570.0\">\
-                               <ARRIVAL date=\"20100207\" time=\"1829\"/>\
-                               <DEPARTURE date=\"20100207\" time=\"1829\"/>\
-                       </POINT>\
-               </WALK>\
-               <POINT uid=\"dest\" x=\"2549183.0\" y=\"6672570.0\">\
-                       <ARRIVAL date=\"20100207\" time=\"1829\"/>\
-                       <DEPARTURE date=\"20100207\" time=\"1829\"/>\
-               </POINT>\
-       </ROUTE>\
-       <ROUTE from=\"start\" to=\"dest\">\
-               <LENGTH time=\"13.411\" dist=\"2501.497\"/>\
-               <POINT uid=\"start\" x=\"2551042.0\" y=\"6672829.0\">\
-                       <ARRIVAL date=\"20100207\" time=\"1821\"/>\
-                       <DEPARTURE date=\"20100207\" time=\"1821\"/>\
-               </POINT>\
-               <WALK>\
-                       <LENGTH time=\"4.475\" dist=\"357.069\"/>\
-                       <POINT uid=\"start\" x=\"2551042.0\" y=\"6672829.0\">\
-                               <ARRIVAL date=\"20100207\" time=\"1821\"/>\
-                               <DEPARTURE date=\"20100207\" time=\"1821\"/>\
-                       </POINT>\
-                       <MAPLOC x=\"2551034.9\" y=\"6672875.6\" type=\"7\">\
-                               <ARRIVAL date=\"20100207\" time=\"1822\"/>\
-                               <DEPARTURE date=\"20100207\" time=\"1822\"/>\
-                               <NAME lang=\"1\" val=\"Porkkalankatu\"/>\
-                       </MAPLOC>\
-                       <MAPLOC x=\"2550977.7\" y=\"6672869.1\" type=\"15\">\
-                               <ARRIVAL date=\"20100207\" time=\"1823\"/>\
-                               <DEPARTURE date=\"20100207\" time=\"1823\"/>\
-                       </MAPLOC>\
-                       <MAPLOC x=\"2550949.3\" y=\"6672867.5\" type=\"7\">\
-                               <ARRIVAL date=\"20100207\" time=\"1823\"/>\
-                               <DEPARTURE date=\"20100207\" time=\"1823\"/>\
-                               <NAME lang=\"1\" val=\"Porkkalankatu\"/>\
-                       </MAPLOC>\
-                       <MAPLOC x=\"2550817.2\" y=\"6672859.3\" type=\"7\">\
-                               <ARRIVAL date=\"20100207\" time=\"1825\"/>\
-                               <DEPARTURE date=\"20100207\" time=\"1825\"/>\
-                       </MAPLOC>\
-                       <MAPLOC x=\"2550808.5\" y=\"6672889.3\" type=\"11\">\
-                               <ARRIVAL date=\"20100207\" time=\"1826\"/>\
-                               <DEPARTURE date=\"20100207\" time=\"1826\"/>\
-                               <NAME lang=\"1\" val=\"Porkkalankatu\"/>\
-                       </MAPLOC>\
-                       <STOP code=\"6:1201227\" x=\"2550765.0\" y=\"6672886.0\" id=\"755\">\
-                               <ARRIVAL date=\"20100207\" time=\"1826\"/>\
-                               <DEPARTURE date=\"20100207\" time=\"1826\"/>\
-                               <NAME lang=\"1\" val=\"Länsiväylä\"/>\
-                               <NAME lang=\"2\" val=\"Västerleden\"/>\
-                       </STOP>\
-               </WALK>\
-               <LINE id=\"579\" code=\"2102T 1\" type=\"5\" mobility=\"3\">\
-                       <LENGTH time=\"4.000\" dist=\"1751.582\"/>\
-                       <STOP code=\"6:1201227\" x=\"2550765.0\" y=\"6672886.0\" id=\"755\" ord=\"3\">\
-                               <ARRIVAL date=\"20100207\" time=\"1826\"/>\
-                               <DEPARTURE date=\"20100207\" time=\"1826\"/>\
-                               <NAME lang=\"1\" val=\"Länsiväylä\"/>\
-                               <NAME lang=\"2\" val=\"Västerleden\"/>\
-                       </STOP>\
-                       <STOP code=\"6:1201231\" x=\"2550387.0\" y=\"6672761.0\" id=\"759\">\
-                               <ARRIVAL date=\"20100207\" time=\"1827\"/>\
-                               <DEPARTURE date=\"20100207\" time=\"1827\"/>\
-                               <NAME lang=\"1\" val=\"Salmisaari\"/>\
-                               <NAME lang=\"2\" val=\"Sundholmen\"/>\
-                       </STOP>\
-                       <STOP code=\"6:1310201\" x=\"2549630.0\" y=\"6672524.0\" id=\"1402\">\
-                               <ARRIVAL date=\"20100207\" time=\"1829\"/>\
-                               <DEPARTURE date=\"20100207\" time=\"1829\"/>\
-                               <NAME lang=\"1\" val=\"Lauttasaaren silta\"/>\
-                               <NAME lang=\"2\" val=\"Drumsö bro\"/>\
-                       </STOP>\
-                       <STOP code=\"6:1310203\" x=\"2549248.0\" y=\"6672446.0\" id=\"1404\" ord=\"6\">\
-                               <ARRIVAL date=\"20100207\" time=\"1830\"/>\
-                               <DEPARTURE date=\"20100207\" time=\"1830\"/>\
-                               <NAME lang=\"1\" val=\"Koillisväylä\"/>\
-                               <NAME lang=\"2\" val=\"Nordostpassagen\"/>\
-                       </STOP>\
-               </LINE>\
-               <WALK>\
-                       <LENGTH time=\"4.936\" dist=\"392.846\"/>\
-                       <STOP code=\"6:1310203\" x=\"2549248.0\" y=\"6672446.0\" id=\"1404\">\
-                               <ARRIVAL date=\"20100207\" time=\"1830\"/>\
-                               <DEPARTURE date=\"20100207\" time=\"1830\"/>\
-                               <NAME lang=\"1\" val=\"Koillisväylä\"/>\
-                               <NAME lang=\"2\" val=\"Nordostpassagen\"/>\
-                       </STOP>\
-                       <MAPLOC x=\"2549200.4\" y=\"6672433.4\" type=\"0\">\
-                               <ARRIVAL date=\"20100207\" time=\"1830\"/>\
-                               <DEPARTURE date=\"20100207\" time=\"1830\"/>\
-                               <NAME lang=\"1\" val=\"Taivaanvuohenkuja\"/>\
-                       </MAPLOC>\
-                       <MAPLOC x=\"2549151.2\" y=\"6672527.3\" type=\"0\">\
-                               <ARRIVAL date=\"20100207\" time=\"1832\"/>\
-                               <DEPARTURE date=\"20100207\" time=\"1832\"/>\
-                               <NAME lang=\"1\" val=\"Taivaanvuohentie\"/>\
-                       </MAPLOC>\
-                       <MAPLOC x=\"2549105.4\" y=\"6672573.6\" type=\"0\">\
-                               <ARRIVAL date=\"20100207\" time=\"1833\"/>\
-                               <DEPARTURE date=\"20100207\" time=\"1833\"/>\
-                       </MAPLOC>\
-                       <MAPLOC x=\"2549115.4\" y=\"6672595.1\" type=\"0\">\
-                               <ARRIVAL date=\"20100207\" time=\"1833\"/>\
-                               <DEPARTURE date=\"20100207\" time=\"1833\"/>\
-                       </MAPLOC>\
-                       <MAPLOC x=\"2549162.6\" y=\"6672633.1\" type=\"0\">\
-                               <ARRIVAL date=\"20100207\" time=\"1834\"/>\
-                               <DEPARTURE date=\"20100207\" time=\"1834\"/>\
-                       </MAPLOC>\
-                       <POINT uid=\"dest\" x=\"2549183.0\" y=\"6672570.0\">\
-                               <ARRIVAL date=\"20100207\" time=\"1834\"/>\
-                               <DEPARTURE date=\"20100207\" time=\"1834\"/>\
-                       </POINT>\
-               </WALK>\
-               <POINT uid=\"dest\" x=\"2549183.0\" y=\"6672570.0\">\
-                       <ARRIVAL date=\"20100207\" time=\"1834\"/>\
-                       <DEPARTURE date=\"20100207\" time=\"1834\"/>\
-               </POINT>\
-       </ROUTE>\
-       <ROUTE from=\"start\" to=\"dest\">\
-               <LENGTH time=\"13.411\" dist=\"2501.497\"/>\
-               <POINT uid=\"start\" x=\"2551042.0\" y=\"6672829.0\">\
-                       <ARRIVAL date=\"20100207\" time=\"1829\"/>\
-                       <DEPARTURE date=\"20100207\" time=\"1829\"/>\
-               </POINT>\
-               <WALK>\
-                       <LENGTH time=\"4.475\" dist=\"357.069\"/>\
-                       <POINT uid=\"start\" x=\"2551042.0\" y=\"6672829.0\">\
-                               <ARRIVAL date=\"20100207\" time=\"1829\"/>\
-                               <DEPARTURE date=\"20100207\" time=\"1829\"/>\
-                       </POINT>\
-                       <MAPLOC x=\"2551034.9\" y=\"6672875.6\" type=\"7\">\
-                               <ARRIVAL date=\"20100207\" time=\"1830\"/>\
-                               <DEPARTURE date=\"20100207\" time=\"1830\"/>\
-                               <NAME lang=\"1\" val=\"Porkkalankatu\"/>\
-                       </MAPLOC>\
-                       <MAPLOC x=\"2550977.7\" y=\"6672869.1\" type=\"15\">\
-                               <ARRIVAL date=\"20100207\" time=\"1831\"/>\
-                               <DEPARTURE date=\"20100207\" time=\"1831\"/>\
-                       </MAPLOC>\
-                       <MAPLOC x=\"2550949.3\" y=\"6672867.5\" type=\"7\">\
-                               <ARRIVAL date=\"20100207\" time=\"1831\"/>\
-                               <DEPARTURE date=\"20100207\" time=\"1831\"/>\
-                               <NAME lang=\"1\" val=\"Porkkalankatu\"/>\
-                       </MAPLOC>\
-                       <MAPLOC x=\"2550817.2\" y=\"6672859.3\" type=\"7\">\
-                               <ARRIVAL date=\"20100207\" time=\"1833\"/>\
-                               <DEPARTURE date=\"20100207\" time=\"1833\"/>\
-                       </MAPLOC>\
-                       <MAPLOC x=\"2550808.5\" y=\"6672889.3\" type=\"11\">\
-                               <ARRIVAL date=\"20100207\" time=\"1834\"/>\
-                               <DEPARTURE date=\"20100207\" time=\"1834\"/>\
-                               <NAME lang=\"1\" val=\"Porkkalankatu\"/>\
-                       </MAPLOC>\
-                       <STOP code=\"6:1201227\" x=\"2550765.0\" y=\"6672886.0\" id=\"755\">\
-                               <ARRIVAL date=\"20100207\" time=\"1834\"/>\
-                               <DEPARTURE date=\"20100207\" time=\"1834\"/>\
-                               <NAME lang=\"1\" val=\"Länsiväylä\"/>\
-                               <NAME lang=\"2\" val=\"Västerleden\"/>\
-                       </STOP>\
-               </WALK>\
-               <LINE id=\"603\" code=\"2110T 1\" type=\"5\" mobility=\"3\">\
-                       <LENGTH time=\"4.000\" dist=\"1751.582\"/>\
-                       <STOP code=\"6:1201227\" x=\"2550765.0\" y=\"6672886.0\" id=\"755\" ord=\"3\">\
-                               <ARRIVAL date=\"20100207\" time=\"1834\"/>\
-                               <DEPARTURE date=\"20100207\" time=\"1834\"/>\
-                               <NAME lang=\"1\" val=\"Länsiväylä\"/>\
-                               <NAME lang=\"2\" val=\"Västerleden\"/>\
-                       </STOP>\
-                       <STOP code=\"6:1201231\" x=\"2550387.0\" y=\"6672761.0\" id=\"759\">\
-                               <ARRIVAL date=\"20100207\" time=\"1835\"/>\
-                               <DEPARTURE date=\"20100207\" time=\"1835\"/>\
-                               <NAME lang=\"1\" val=\"Salmisaari\"/>\
-                               <NAME lang=\"2\" val=\"Sundholmen\"/>\
-                       </STOP>\
-                       <STOP code=\"6:1310201\" x=\"2549630.0\" y=\"6672524.0\" id=\"1402\">\
-                               <ARRIVAL date=\"20100207\" time=\"1837\"/>\
-                               <DEPARTURE date=\"20100207\" time=\"1837\"/>\
-                               <NAME lang=\"1\" val=\"Lauttasaaren silta\"/>\
-                               <NAME lang=\"2\" val=\"Drumsö bro\"/>\
-                       </STOP>\
-                       <STOP code=\"6:1310203\" x=\"2549248.0\" y=\"6672446.0\" id=\"1404\" ord=\"6\">\
-                               <ARRIVAL date=\"20100207\" time=\"1838\"/>\
-                               <DEPARTURE date=\"20100207\" time=\"1838\"/>\
-                               <NAME lang=\"1\" val=\"Koillisväylä\"/>\
-                               <NAME lang=\"2\" val=\"Nordostpassagen\"/>\
-                       </STOP>\
-               </LINE>\
-               <WALK>\
-                       <LENGTH time=\"4.936\" dist=\"392.846\"/>\
-                       <STOP code=\"6:1310203\" x=\"2549248.0\" y=\"6672446.0\" id=\"1404\">\
-                               <ARRIVAL date=\"20100207\" time=\"1838\"/>\
-                               <DEPARTURE date=\"20100207\" time=\"1838\"/>\
-                               <NAME lang=\"1\" val=\"Koillisväylä\"/>\
-                               <NAME lang=\"2\" val=\"Nordostpassagen\"/>\
-                       </STOP>\
-                       <MAPLOC x=\"2549200.4\" y=\"6672433.4\" type=\"0\">\
-                               <ARRIVAL date=\"20100207\" time=\"1838\"/>\
-                               <DEPARTURE date=\"20100207\" time=\"1838\"/>\
-                               <NAME lang=\"1\" val=\"Taivaanvuohenkuja\"/>\
-                       </MAPLOC>\
-                       <MAPLOC x=\"2549151.2\" y=\"6672527.3\" type=\"0\">\
-                               <ARRIVAL date=\"20100207\" time=\"1840\"/>\
-                               <DEPARTURE date=\"20100207\" time=\"1840\"/>\
-                               <NAME lang=\"1\" val=\"Taivaanvuohentie\"/>\
-                       </MAPLOC>\
-                       <MAPLOC x=\"2549105.4\" y=\"6672573.6\" type=\"0\">\
-                               <ARRIVAL date=\"20100207\" time=\"1841\"/>\
-                               <DEPARTURE date=\"20100207\" time=\"1841\"/>\
-                       </MAPLOC>\
-                       <MAPLOC x=\"2549115.4\" y=\"6672595.1\" type=\"0\">\
-                               <ARRIVAL date=\"20100207\" time=\"1841\"/>\
-                               <DEPARTURE date=\"20100207\" time=\"1841\"/>\
-                       </MAPLOC>\
-                       <MAPLOC x=\"2549162.6\" y=\"6672633.1\" type=\"0\">\
-                               <ARRIVAL date=\"20100207\" time=\"1842\"/>\
-                               <DEPARTURE date=\"20100207\" time=\"1842\"/>\
-                       </MAPLOC>\
-                       <POINT uid=\"dest\" x=\"2549183.0\" y=\"6672570.0\">\
-                               <ARRIVAL date=\"20100207\" time=\"1842\"/>\
-                               <DEPARTURE date=\"20100207\" time=\"1842\"/>\
-                       </POINT>\
-               </WALK>\
-               <POINT uid=\"dest\" x=\"2549183.0\" y=\"6672570.0\">\
-                       <ARRIVAL date=\"20100207\" time=\"1842\"/>\
-                       <DEPARTURE date=\"20100207\" time=\"1842\"/>\
-               </POINT>\
-       </ROUTE>\
-</MTRXML>\
-",
-
-"<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>\
-<MTRXML version=\"1.0\">\
-       <ROUTE from=\"start\" to=\"dest\">\
-               <LENGTH time=\"28.633\" dist=\"8902.040\"/>\
-               <POINT uid=\"start\" x=\"2543560.0\" y=\"6672630.0\">\
-                       <ARRIVAL date=\"20100416\" time=\"0814\"/>\
-                       <DEPARTURE date=\"20100416\" time=\"0814\"/>\
-               </POINT>\
-               <WALK>\
-                       <LENGTH time=\"3.479\" dist=\"254.753\"/>\
-                       <POINT uid=\"start\" x=\"2543560.0\" y=\"6672630.0\">\
-                               <ARRIVAL date=\"20100416\" time=\"0814\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0814\"/>\
-                       </POINT>\
-                       <MAPLOC x=\"2543588.4\" y=\"6672573.9\" type=\"0\">\
-                               <ARRIVAL date=\"20100416\" time=\"0815\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0815\"/>\
-                               <NAME lang=\"1\" val=\"Haukilahdenkatu\"/>\
-                       </MAPLOC>\
-                       <MAPLOC x=\"2543529.4\" y=\"6672574.0\" type=\"0\">\
-                               <ARRIVAL date=\"20100416\" time=\"0816\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0816\"/>\
-                               <NAME lang=\"1\" val=\"Haukilahdenkatu\"/>\
-                       </MAPLOC>\
-                       <MAPLOC x=\"2543529.0\" y=\"6672569.9\" type=\"0\">\
-                               <ARRIVAL date=\"20100416\" time=\"0816\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0816\"/>\
-                       </MAPLOC>\
-                       <MAPLOC x=\"2543494.7\" y=\"6672557.4\" type=\"0\">\
-                               <ARRIVAL date=\"20100416\" time=\"0816\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0816\"/>\
-                               <NAME lang=\"1\" val=\"Toppelundintie\"/>\
-                       </MAPLOC>\
-                       <MAPLOC x=\"2543506.2\" y=\"6672490.4\" type=\"0\">\
-                               <ARRIVAL date=\"20100416\" time=\"0817\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0817\"/>\
-                               <NAME lang=\"1\" val=\"Toppelundintie\"/>\
-                       </MAPLOC>\
-                       <MAPLOC x=\"2543496.2\" y=\"6672492.1\" type=\"0\">\
-                               <ARRIVAL date=\"20100416\" time=\"0818\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0818\"/>\
-                               <NAME lang=\"1\" val=\"Toppelundintie\"/>\
-                       </MAPLOC>\
-                       <STOP code=\"6:2232220\" x=\"2543501.0\" y=\"6672486.0\" id=\"3375\">\
-                               <ARRIVAL date=\"20100416\" time=\"0818\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0818\"/>\
-                               <NAME lang=\"1\" val=\"Säynävätie\"/>\
-                               <NAME lang=\"2\" val=\"Idvägen\"/>\
-                       </STOP>\
-               </WALK>\
-               <LINE id=\"620\" code=\"2111  2\" type=\"5\" mobility=\"3\">\
-                       <LENGTH time=\"8.000\" dist=\"5225.092\"/>\
-                       <STOP code=\"6:2232220\" x=\"2543501.0\" y=\"6672486.0\" id=\"3375\" ord=\"12\">\
-                               <ARRIVAL date=\"20100416\" time=\"0818\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0818\"/>\
-                               <NAME lang=\"1\" val=\"Säynävätie\"/>\
-                               <NAME lang=\"2\" val=\"Idvägen\"/>\
-                       </STOP>\
-                       <STOP code=\"6:2232218\" x=\"2543666.0\" y=\"6672186.0\" id=\"3373\">\
-                               <ARRIVAL date=\"20100416\" time=\"0819\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0819\"/>\
-                               <NAME lang=\"1\" val=\"Mellstenintie\"/>\
-                               <NAME lang=\"2\" val=\"Mellstensvägen\"/>\
-                       </STOP>\
-                       <STOP code=\"6:2232216\" x=\"2543877.0\" y=\"6672218.0\" id=\"3371\">\
-                               <ARRIVAL date=\"20100416\" time=\"0819\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0819\"/>\
-                               <NAME lang=\"1\" val=\"Toppelund\"/>\
-                               <NAME lang=\"2\" val=\"Toppelund\"/>\
-                       </STOP>\
-                       <STOP code=\"6:2231232\" x=\"2544055.0\" y=\"6672304.0\" id=\"3353\">\
-                               <ARRIVAL date=\"20100416\" time=\"0820\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0820\"/>\
-                               <NAME lang=\"1\" val=\"Linnake\"/>\
-                               <NAME lang=\"2\" val=\"Fortet\"/>\
-                       </STOP>\
-                       <STOP code=\"6:2231230\" x=\"2544152.0\" y=\"6672559.0\" id=\"3351\">\
-                               <ARRIVAL date=\"20100416\" time=\"0821\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0821\"/>\
-                               <NAME lang=\"1\" val=\"Alalinnake\"/>\
-                               <NAME lang=\"2\" val=\"Nedre fortet\"/>\
-                       </STOP>\
-                       <STOP code=\"6:2231220\" x=\"2544059.0\" y=\"6672912.0\" id=\"3350\">\
-                               <ARRIVAL date=\"20100416\" time=\"0822\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0822\"/>\
-                               <NAME lang=\"1\" val=\"Westendinpolku\"/>\
-                               <NAME lang=\"2\" val=\"Westendstigen\"/>\
-                       </STOP>\
-                       <STOP code=\"6:2231218\" x=\"2544263.0\" y=\"6673139.0\" id=\"3348\">\
-                               <ARRIVAL date=\"20100416\" time=\"0823\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0823\"/>\
-                               <NAME lang=\"1\" val=\"Golfpolku\"/>\
-                               <NAME lang=\"2\" val=\"Golfstigen\"/>\
-                       </STOP>\
-                       <STOP code=\"6:2231212\" x=\"2544835.0\" y=\"6673222.0\" id=\"3343\">\
-                               <ARRIVAL date=\"20100416\" time=\"0824\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0824\"/>\
-                               <NAME lang=\"1\" val=\"Ankkurisaarentie\"/>\
-                               <NAME lang=\"2\" val=\"Ankarholmsvägen\"/>\
-                       </STOP>\
-                       <STOP code=\"6:2231211\" x=\"2544938.0\" y=\"6673277.0\" id=\"3342\">\
-                               <ARRIVAL date=\"20100416\" time=\"0824\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0824\"/>\
-                               <NAME lang=\"1\" val=\"Kuninkaansatama\"/>\
-                               <NAME lang=\"2\" val=\"Konungshamnen\"/>\
-                       </STOP>\
-                       <STOP code=\"6:2231201\" x=\"2546031.0\" y=\"6673305.0\" id=\"3332\">\
-                               <ARRIVAL date=\"20100416\" time=\"0825\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0825\"/>\
-                               <NAME lang=\"1\" val=\"Karhusaari\"/>\
-                               <NAME lang=\"2\" val=\"Björnholm\"/>\
-                       </STOP>\
-                       <STOP code=\"6:2232204\" x=\"2546939.0\" y=\"6672964.0\" id=\"3360\" ord=\"22\">\
-                               <ARRIVAL date=\"20100416\" time=\"0826\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0832\"/>\
-                               <NAME lang=\"1\" val=\"Hanasaari\"/>\
-                               <NAME lang=\"2\" val=\"Hanaholmen\"/>\
-                       </STOP>\
-               </LINE>\
-               <LINE id=\"642\" code=\"2121T 2\" type=\"5\" mobility=\"3\">\
-                       <LENGTH time=\"5.000\" dist=\"2926.431\"/>\
-                       <STOP code=\"6:2232204\" x=\"2546939.0\" y=\"6672964.0\" id=\"3360\" ord=\"13\">\
-                               <ARRIVAL date=\"20100416\" time=\"0826\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0832\"/>\
-                               <NAME lang=\"1\" val=\"Hanasaari\"/>\
-                               <NAME lang=\"2\" val=\"Hanaholmen\"/>\
-                       </STOP>\
-                       <STOP code=\"6:1310299\" x=\"2547953.0\" y=\"6672552.0\" id=\"1424\">\
-                               <ARRIVAL date=\"20100416\" time=\"0833\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0833\"/>\
-                               <NAME lang=\"1\" val=\"Katajaharju\"/>\
-                               <NAME lang=\"2\" val=\"Enåsen\"/>\
-                       </STOP>\
-                       <STOP code=\"6:1310225\" x=\"2548497.0\" y=\"6672477.0\" id=\"1411\">\
-                               <ARRIVAL date=\"20100416\" time=\"0834\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0834\"/>\
-                               <NAME lang=\"1\" val=\"Lahnalahdentie\"/>\
-                               <NAME lang=\"2\" val=\"Braxviksvägen\"/>\
-                       </STOP>\
-                       <STOP code=\"6:1310223\" x=\"2548836.0\" y=\"6672441.0\" id=\"1409\">\
-                               <ARRIVAL date=\"20100416\" time=\"0835\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0835\"/>\
-                               <NAME lang=\"1\" val=\"Lahnalahden puisto\"/>\
-                               <NAME lang=\"2\" val=\"Braxviksparken\"/>\
-                       </STOP>\
-                       <STOP code=\"6:1310204\" x=\"2549393.0\" y=\"6672438.0\" id=\"1405\" ord=\"17\">\
-                               <ARRIVAL date=\"20100416\" time=\"0837\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0837\"/>\
-                               <NAME lang=\"1\" val=\"Koillisväylä\"/>\
-                               <NAME lang=\"2\" val=\"Nordostpassagen\"/>\
-                       </STOP>\
-               </LINE>\
-               <WALK>\
-                       <LENGTH time=\"6.154\" dist=\"495.764\"/>\
-                       <STOP code=\"6:1310204\" x=\"2549393.0\" y=\"6672438.0\" id=\"1405\">\
-                               <ARRIVAL date=\"20100416\" time=\"0837\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0837\"/>\
-                               <NAME lang=\"1\" val=\"Koillisväylä\"/>\
-                               <NAME lang=\"2\" val=\"Nordostpassagen\"/>\
-                       </STOP>\
-                       <MAPLOC x=\"2549326.7\" y=\"6672446.7\" type=\"0\">\
-                               <ARRIVAL date=\"20100416\" time=\"0838\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0838\"/>\
-                               <NAME lang=\"1\" val=\"Koillisväylä\"/>\
-                       </MAPLOC>\
-                       <MAPLOC x=\"2549376.8\" y=\"6672603.7\" type=\"0\">\
-                               <ARRIVAL date=\"20100416\" time=\"0840\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0840\"/>\
-                       </MAPLOC>\
-                       <POINT uid=\"dest\" x=\"2549183.0\" y=\"6672570.0\">\
-                               <ARRIVAL date=\"20100416\" time=\"0843\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0843\"/>\
-                       </POINT>\
-               </WALK>\
-               <POINT uid=\"dest\" x=\"2549183.0\" y=\"6672570.0\">\
-                       <ARRIVAL date=\"20100416\" time=\"0843\"/>\
-                       <DEPARTURE date=\"20100416\" time=\"0843\"/>\
-               </POINT>\
-       </ROUTE>\
-       <ROUTE from=\"start\" to=\"dest\">\
-               <LENGTH time=\"25.633\" dist=\"8902.040\"/>\
-               <POINT uid=\"start\" x=\"2543560.0\" y=\"6672630.0\">\
-                       <ARRIVAL date=\"20100416\" time=\"0829\"/>\
-                       <DEPARTURE date=\"20100416\" time=\"0829\"/>\
-               </POINT>\
-               <WALK>\
-                       <LENGTH time=\"3.479\" dist=\"254.753\"/>\
-                       <POINT uid=\"start\" x=\"2543560.0\" y=\"6672630.0\">\
-                               <ARRIVAL date=\"20100416\" time=\"0829\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0829\"/>\
-                       </POINT>\
-                       <MAPLOC x=\"2543588.4\" y=\"6672573.9\" type=\"0\">\
-                               <ARRIVAL date=\"20100416\" time=\"0830\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0830\"/>\
-                               <NAME lang=\"1\" val=\"Haukilahdenkatu\"/>\
-                       </MAPLOC>\
-                       <MAPLOC x=\"2543529.4\" y=\"6672574.0\" type=\"0\">\
-                               <ARRIVAL date=\"20100416\" time=\"0831\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0831\"/>\
-                               <NAME lang=\"1\" val=\"Haukilahdenkatu\"/>\
-                       </MAPLOC>\
-                       <MAPLOC x=\"2543529.0\" y=\"6672569.9\" type=\"0\">\
-                               <ARRIVAL date=\"20100416\" time=\"0831\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0831\"/>\
-                       </MAPLOC>\
-                       <MAPLOC x=\"2543494.7\" y=\"6672557.4\" type=\"0\">\
-                               <ARRIVAL date=\"20100416\" time=\"0831\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0831\"/>\
-                               <NAME lang=\"1\" val=\"Toppelundintie\"/>\
-                       </MAPLOC>\
-                       <MAPLOC x=\"2543506.2\" y=\"6672490.4\" type=\"0\">\
-                               <ARRIVAL date=\"20100416\" time=\"0832\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0832\"/>\
-                               <NAME lang=\"1\" val=\"Toppelundintie\"/>\
-                       </MAPLOC>\
-                       <MAPLOC x=\"2543496.2\" y=\"6672492.1\" type=\"0\">\
-                               <ARRIVAL date=\"20100416\" time=\"0833\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0833\"/>\
-                               <NAME lang=\"1\" val=\"Toppelundintie\"/>\
-                       </MAPLOC>\
-                       <STOP code=\"6:2232220\" x=\"2543501.0\" y=\"6672486.0\" id=\"3375\">\
-                               <ARRIVAL date=\"20100416\" time=\"0833\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0833\"/>\
-                               <NAME lang=\"1\" val=\"Säynävätie\"/>\
-                               <NAME lang=\"2\" val=\"Idvägen\"/>\
-                       </STOP>\
-               </WALK>\
-               <LINE id=\"620\" code=\"2111  2\" type=\"5\" mobility=\"3\">\
-                       <LENGTH time=\"8.000\" dist=\"5225.092\"/>\
-                       <STOP code=\"6:2232220\" x=\"2543501.0\" y=\"6672486.0\" id=\"3375\" ord=\"12\">\
-                               <ARRIVAL date=\"20100416\" time=\"0833\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0833\"/>\
-                               <NAME lang=\"1\" val=\"Säynävätie\"/>\
-                               <NAME lang=\"2\" val=\"Idvägen\"/>\
-                       </STOP>\
-                       <STOP code=\"6:2232218\" x=\"2543666.0\" y=\"6672186.0\" id=\"3373\">\
-                               <ARRIVAL date=\"20100416\" time=\"0834\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0834\"/>\
-                               <NAME lang=\"1\" val=\"Mellstenintie\"/>\
-                               <NAME lang=\"2\" val=\"Mellstensvägen\"/>\
-                       </STOP>\
-                       <STOP code=\"6:2232216\" x=\"2543877.0\" y=\"6672218.0\" id=\"3371\">\
-                               <ARRIVAL date=\"20100416\" time=\"0834\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0834\"/>\
-                               <NAME lang=\"1\" val=\"Toppelund\"/>\
-                               <NAME lang=\"2\" val=\"Toppelund\"/>\
-                       </STOP>\
-                       <STOP code=\"6:2231232\" x=\"2544055.0\" y=\"6672304.0\" id=\"3353\">\
-                               <ARRIVAL date=\"20100416\" time=\"0835\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0835\"/>\
-                               <NAME lang=\"1\" val=\"Linnake\"/>\
-                               <NAME lang=\"2\" val=\"Fortet\"/>\
-                       </STOP>\
-                       <STOP code=\"6:2231230\" x=\"2544152.0\" y=\"6672559.0\" id=\"3351\">\
-                               <ARRIVAL date=\"20100416\" time=\"0836\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0836\"/>\
-                               <NAME lang=\"1\" val=\"Alalinnake\"/>\
-                               <NAME lang=\"2\" val=\"Nedre fortet\"/>\
-                       </STOP>\
-                       <STOP code=\"6:2231220\" x=\"2544059.0\" y=\"6672912.0\" id=\"3350\">\
-                               <ARRIVAL date=\"20100416\" time=\"0837\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0837\"/>\
-                               <NAME lang=\"1\" val=\"Westendinpolku\"/>\
-                               <NAME lang=\"2\" val=\"Westendstigen\"/>\
-                       </STOP>\
-                       <STOP code=\"6:2231218\" x=\"2544263.0\" y=\"6673139.0\" id=\"3348\">\
-                               <ARRIVAL date=\"20100416\" time=\"0838\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0838\"/>\
-                               <NAME lang=\"1\" val=\"Golfpolku\"/>\
-                               <NAME lang=\"2\" val=\"Golfstigen\"/>\
-                       </STOP>\
-                       <STOP code=\"6:2231212\" x=\"2544835.0\" y=\"6673222.0\" id=\"3343\">\
-                               <ARRIVAL date=\"20100416\" time=\"0839\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0839\"/>\
-                               <NAME lang=\"1\" val=\"Ankkurisaarentie\"/>\
-                               <NAME lang=\"2\" val=\"Ankarholmsvägen\"/>\
-                       </STOP>\
-                       <STOP code=\"6:2231211\" x=\"2544938.0\" y=\"6673277.0\" id=\"3342\">\
-                               <ARRIVAL date=\"20100416\" time=\"0839\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0839\"/>\
-                               <NAME lang=\"1\" val=\"Kuninkaansatama\"/>\
-                               <NAME lang=\"2\" val=\"Konungshamnen\"/>\
-                       </STOP>\
-                       <STOP code=\"6:2231201\" x=\"2546031.0\" y=\"6673305.0\" id=\"3332\">\
-                               <ARRIVAL date=\"20100416\" time=\"0840\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0840\"/>\
-                               <NAME lang=\"1\" val=\"Karhusaari\"/>\
-                               <NAME lang=\"2\" val=\"Björnholm\"/>\
-                       </STOP>\
-                       <STOP code=\"6:2232204\" x=\"2546939.0\" y=\"6672964.0\" id=\"3360\" ord=\"22\">\
-                               <ARRIVAL date=\"20100416\" time=\"0841\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0844\"/>\
-                               <NAME lang=\"1\" val=\"Hanasaari\"/>\
-                               <NAME lang=\"2\" val=\"Hanaholmen\"/>\
-                       </STOP>\
-               </LINE>\
-               <LINE id=\"592\" code=\"2102T 2\" type=\"5\" mobility=\"3\">\
-                       <LENGTH time=\"5.000\" dist=\"2926.431\"/>\
-                       <STOP code=\"6:2232204\" x=\"2546939.0\" y=\"6672964.0\" id=\"3360\" ord=\"10\">\
-                               <ARRIVAL date=\"20100416\" time=\"0841\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0844\"/>\
-                               <NAME lang=\"1\" val=\"Hanasaari\"/>\
-                               <NAME lang=\"2\" val=\"Hanaholmen\"/>\
-                       </STOP>\
-                       <STOP code=\"6:1310299\" x=\"2547953.0\" y=\"6672552.0\" id=\"1424\">\
-                               <ARRIVAL date=\"20100416\" time=\"0845\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0845\"/>\
-                               <NAME lang=\"1\" val=\"Katajaharju\"/>\
-                               <NAME lang=\"2\" val=\"Enåsen\"/>\
-                       </STOP>\
-                       <STOP code=\"6:1310225\" x=\"2548497.0\" y=\"6672477.0\" id=\"1411\">\
-                               <ARRIVAL date=\"20100416\" time=\"0846\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0846\"/>\
-                               <NAME lang=\"1\" val=\"Lahnalahdentie\"/>\
-                               <NAME lang=\"2\" val=\"Braxviksvägen\"/>\
-                       </STOP>\
-                       <STOP code=\"6:1310223\" x=\"2548836.0\" y=\"6672441.0\" id=\"1409\">\
-                               <ARRIVAL date=\"20100416\" time=\"0847\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0847\"/>\
-                               <NAME lang=\"1\" val=\"Lahnalahden puisto\"/>\
-                               <NAME lang=\"2\" val=\"Braxviksparken\"/>\
-                       </STOP>\
-                       <STOP code=\"6:1310204\" x=\"2549393.0\" y=\"6672438.0\" id=\"1405\" ord=\"14\">\
-                               <ARRIVAL date=\"20100416\" time=\"0849\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0849\"/>\
-                               <NAME lang=\"1\" val=\"Koillisväylä\"/>\
-                               <NAME lang=\"2\" val=\"Nordostpassagen\"/>\
-                       </STOP>\
-               </LINE>\
-               <WALK>\
-                       <LENGTH time=\"6.154\" dist=\"495.764\"/>\
-                       <STOP code=\"6:1310204\" x=\"2549393.0\" y=\"6672438.0\" id=\"1405\">\
-                               <ARRIVAL date=\"20100416\" time=\"0849\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0849\"/>\
-                               <NAME lang=\"1\" val=\"Koillisväylä\"/>\
-                               <NAME lang=\"2\" val=\"Nordostpassagen\"/>\
-                       </STOP>\
-                       <MAPLOC x=\"2549326.7\" y=\"6672446.7\" type=\"0\">\
-                               <ARRIVAL date=\"20100416\" time=\"0850\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0850\"/>\
-                               <NAME lang=\"1\" val=\"Koillisväylä\"/>\
-                       </MAPLOC>\
-                       <MAPLOC x=\"2549376.8\" y=\"6672603.7\" type=\"0\">\
-                               <ARRIVAL date=\"20100416\" time=\"0852\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0852\"/>\
-                       </MAPLOC>\
-                       <POINT uid=\"dest\" x=\"2549183.0\" y=\"6672570.0\">\
-                               <ARRIVAL date=\"20100416\" time=\"0855\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0855\"/>\
-                       </POINT>\
-               </WALK>\
-               <POINT uid=\"dest\" x=\"2549183.0\" y=\"6672570.0\">\
-                       <ARRIVAL date=\"20100416\" time=\"0855\"/>\
-                       <DEPARTURE date=\"20100416\" time=\"0855\"/>\
-               </POINT>\
-       </ROUTE>\
-       <ROUTE from=\"start\" to=\"dest\">\
-               <LENGTH time=\"33.510\" dist=\"11193.458\"/>\
-               <POINT uid=\"start\" x=\"2543560.0\" y=\"6672630.0\">\
-                       <ARRIVAL date=\"20100416\" time=\"0831\"/>\
-                       <DEPARTURE date=\"20100416\" time=\"0831\"/>\
-               </POINT>\
-               <WALK>\
-                       <LENGTH time=\"2.356\" dist=\"172.693\"/>\
-                       <POINT uid=\"start\" x=\"2543560.0\" y=\"6672630.0\">\
-                               <ARRIVAL date=\"20100416\" time=\"0831\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0831\"/>\
-                       </POINT>\
-                       <MAPLOC x=\"2543588.4\" y=\"6672573.9\" type=\"0\">\
-                               <ARRIVAL date=\"20100416\" time=\"0832\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0832\"/>\
-                               <NAME lang=\"1\" val=\"Haukilahdenkatu\"/>\
-                       </MAPLOC>\
-                       <MAPLOC x=\"2543529.4\" y=\"6672574.0\" type=\"0\">\
-                               <ARRIVAL date=\"20100416\" time=\"0833\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0833\"/>\
-                               <NAME lang=\"1\" val=\"Haukilahdenkatu\"/>\
-                       </MAPLOC>\
-                       <MAPLOC x=\"2543528.9\" y=\"6672567.9\" type=\"0\">\
-                               <ARRIVAL date=\"20100416\" time=\"0833\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0833\"/>\
-                               <NAME lang=\"1\" val=\"Toppelundintie\"/>\
-                       </MAPLOC>\
-                       <STOP code=\"6:2232219\" x=\"2543533.0\" y=\"6672532.0\" id=\"3374\">\
-                               <ARRIVAL date=\"20100416\" time=\"0834\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0834\"/>\
-                               <NAME lang=\"1\" val=\"Säynävätie\"/>\
-                               <NAME lang=\"2\" val=\"Idvägen\"/>\
-                       </STOP>\
-               </WALK>\
-               <LINE id=\"621\" code=\"2111T 1\" type=\"5\" mobility=\"3\">\
-                       <LENGTH time=\"6.000\" dist=\"3392.054\"/>\
-                       <STOP code=\"6:2232219\" x=\"2543533.0\" y=\"6672532.0\" id=\"3374\" ord=\"20\">\
-                               <ARRIVAL date=\"20100416\" time=\"0834\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0834\"/>\
-                               <NAME lang=\"1\" val=\"Säynävätie\"/>\
-                               <NAME lang=\"2\" val=\"Idvägen\"/>\
-                       </STOP>\
-                       <STOP code=\"6:2232236\" x=\"2543282.0\" y=\"6672594.0\" id=\"3390\">\
-                               <ARRIVAL date=\"20100416\" time=\"0835\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0835\"/>\
-                               <NAME lang=\"1\" val=\"Haukilahden keskus\"/>\
-                               <NAME lang=\"2\" val=\"Gäddvik centrum\"/>\
-                       </STOP>\
-                       <STOP code=\"6:2232221\" x=\"2543195.0\" y=\"6672532.0\" id=\"3376\">\
-                               <ARRIVAL date=\"20100416\" time=\"0835\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0835\"/>\
-                               <NAME lang=\"1\" val=\"Pattisten pelto\"/>\
-                               <NAME lang=\"2\" val=\"Battisåker\"/>\
-                       </STOP>\
-                       <STOP code=\"6:2232227\" x=\"2543123.0\" y=\"6672283.0\" id=\"3381\">\
-                               <ARRIVAL date=\"20100416\" time=\"0836\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0836\"/>\
-                               <NAME lang=\"1\" val=\"Haukitie\"/>\
-                               <NAME lang=\"2\" val=\"Gäddvägen\"/>\
-                       </STOP>\
-                       <STOP code=\"6:2232229\" x=\"2542938.0\" y=\"6672081.0\" id=\"3383\">\
-                               <ARRIVAL date=\"20100416\" time=\"0836\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0836\"/>\
-                               <NAME lang=\"1\" val=\"Haukiverkko\"/>\
-                               <NAME lang=\"2\" val=\"Gäddnätet\"/>\
-                       </STOP>\
-                       <STOP code=\"6:2232209\" x=\"2542708.0\" y=\"6672127.0\" id=\"3364\">\
-                               <ARRIVAL date=\"20100416\" time=\"0837\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0837\"/>\
-                               <NAME lang=\"1\" val=\"Hauenkita\"/>\
-                               <NAME lang=\"2\" val=\"Gäddgapet\"/>\
-                       </STOP>\
-                       <STOP code=\"6:2232211\" x=\"2542513.0\" y=\"6672237.0\" id=\"3366\">\
-                               <ARRIVAL date=\"20100416\" time=\"0837\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0837\"/>\
-                               <NAME lang=\"1\" val=\"Haukilahdenranta 25\"/>\
-                               <NAME lang=\"2\" val=\"Gäddviksstranden 25\"/>\
-                       </STOP>\
-                       <STOP code=\"6:2232212\" x=\"2542467.0\" y=\"6672399.0\" id=\"3367\">\
-                               <ARRIVAL date=\"20100416\" time=\"0838\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0838\"/>\
-                               <NAME lang=\"1\" val=\"Telamäentie\"/>\
-                               <NAME lang=\"2\" val=\"Kavelbackavägen\"/>\
-                       </STOP>\
-                       <STOP code=\"6:2232213\" x=\"2542470.0\" y=\"6672451.0\" id=\"3368\">\
-                               <ARRIVAL date=\"20100416\" time=\"0838\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0838\"/>\
-                               <NAME lang=\"1\" val=\"Telamäentie\"/>\
-                               <NAME lang=\"2\" val=\"Kavelbackavägen\"/>\
-                       </STOP>\
-                       <STOP code=\"6:2232239\" x=\"2542955.0\" y=\"6672526.0\" id=\"3393\">\
-                               <ARRIVAL date=\"20100416\" time=\"0839\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0839\"/>\
-                               <NAME lang=\"1\" val=\"Hauenkallio\"/>\
-                               <NAME lang=\"2\" val=\"Gäddberget\"/>\
-                       </STOP>\
-                       <STOP code=\"6:2232223\" x=\"2543096.0\" y=\"6672983.0\" id=\"3378\" ord=\"30\">\
-                               <ARRIVAL date=\"20100416\" time=\"0840\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0843\"/>\
-                               <NAME lang=\"1\" val=\"Kuhatie\"/>\
-                               <NAME lang=\"2\" val=\"Gösvägen\"/>\
-                       </STOP>\
-               </LINE>\
-               <LINE id=\"624\" code=\"2112  2\" type=\"5\" mobility=\"3\">\
-                       <LENGTH time=\"5.000\" dist=\"4206.516\"/>\
-                       <STOP code=\"6:2232223\" x=\"2543096.0\" y=\"6672983.0\" id=\"3378\" ord=\"12\">\
-                               <ARRIVAL date=\"20100416\" time=\"0840\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0843\"/>\
-                               <NAME lang=\"1\" val=\"Kuhatie\"/>\
-                               <NAME lang=\"2\" val=\"Gösvägen\"/>\
-                       </STOP>\
-                       <STOP code=\"6:2231202\" x=\"2544838.0\" y=\"6673305.0\" id=\"3333\">\
-                               <ARRIVAL date=\"20100416\" time=\"0846\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0846\"/>\
-                               <NAME lang=\"1\" val=\"Westendinasema\"/>\
-                               <NAME lang=\"2\" val=\"Westendstationen\"/>\
-                       </STOP>\
-                       <STOP code=\"6:2231201\" x=\"2546031.0\" y=\"6673305.0\" id=\"3332\">\
-                               <ARRIVAL date=\"20100416\" time=\"0847\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0847\"/>\
-                               <NAME lang=\"1\" val=\"Karhusaari\"/>\
-                               <NAME lang=\"2\" val=\"Björnholm\"/>\
-                       </STOP>\
-                       <STOP code=\"6:2232204\" x=\"2546939.0\" y=\"6672964.0\" id=\"3360\" ord=\"15\">\
-                               <ARRIVAL date=\"20100416\" time=\"0848\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0854\"/>\
-                               <NAME lang=\"1\" val=\"Hanasaari\"/>\
-                               <NAME lang=\"2\" val=\"Hanaholmen\"/>\
-                       </STOP>\
-               </LINE>\
-               <LINE id=\"592\" code=\"2102T 2\" type=\"5\" mobility=\"3\">\
-                       <LENGTH time=\"5.000\" dist=\"2926.431\"/>\
-                       <STOP code=\"6:2232204\" x=\"2546939.0\" y=\"6672964.0\" id=\"3360\" ord=\"10\">\
-                               <ARRIVAL date=\"20100416\" time=\"0848\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0854\"/>\
-                               <NAME lang=\"1\" val=\"Hanasaari\"/>\
-                               <NAME lang=\"2\" val=\"Hanaholmen\"/>\
-                       </STOP>\
-                       <STOP code=\"6:1310299\" x=\"2547953.0\" y=\"6672552.0\" id=\"1424\">\
-                               <ARRIVAL date=\"20100416\" time=\"0855\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0855\"/>\
-                               <NAME lang=\"1\" val=\"Katajaharju\"/>\
-                               <NAME lang=\"2\" val=\"Enåsen\"/>\
-                       </STOP>\
-                       <STOP code=\"6:1310225\" x=\"2548497.0\" y=\"6672477.0\" id=\"1411\">\
-                               <ARRIVAL date=\"20100416\" time=\"0856\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0856\"/>\
-                               <NAME lang=\"1\" val=\"Lahnalahdentie\"/>\
-                               <NAME lang=\"2\" val=\"Braxviksvägen\"/>\
-                       </STOP>\
-                       <STOP code=\"6:1310223\" x=\"2548836.0\" y=\"6672441.0\" id=\"1409\">\
-                               <ARRIVAL date=\"20100416\" time=\"0857\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0857\"/>\
-                               <NAME lang=\"1\" val=\"Lahnalahden puisto\"/>\
-                               <NAME lang=\"2\" val=\"Braxviksparken\"/>\
-                       </STOP>\
-                       <STOP code=\"6:1310204\" x=\"2549393.0\" y=\"6672438.0\" id=\"1405\" ord=\"14\">\
-                               <ARRIVAL date=\"20100416\" time=\"0859\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0859\"/>\
-                               <NAME lang=\"1\" val=\"Koillisväylä\"/>\
-                               <NAME lang=\"2\" val=\"Nordostpassagen\"/>\
-                       </STOP>\
-               </LINE>\
-               <WALK>\
-                       <LENGTH time=\"6.154\" dist=\"495.764\"/>\
-                       <STOP code=\"6:1310204\" x=\"2549393.0\" y=\"6672438.0\" id=\"1405\">\
-                               <ARRIVAL date=\"20100416\" time=\"0859\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0859\"/>\
-                               <NAME lang=\"1\" val=\"Koillisväylä\"/>\
-                               <NAME lang=\"2\" val=\"Nordostpassagen\"/>\
-                       </STOP>\
-                       <MAPLOC x=\"2549326.7\" y=\"6672446.7\" type=\"0\">\
-                               <ARRIVAL date=\"20100416\" time=\"0900\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0900\"/>\
-                               <NAME lang=\"1\" val=\"Koillisväylä\"/>\
-                       </MAPLOC>\
-                       <MAPLOC x=\"2549376.8\" y=\"6672603.7\" type=\"0\">\
-                               <ARRIVAL date=\"20100416\" time=\"0902\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0902\"/>\
-                       </MAPLOC>\
-                       <POINT uid=\"dest\" x=\"2549183.0\" y=\"6672570.0\">\
-                               <ARRIVAL date=\"20100416\" time=\"0905\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0905\"/>\
-                       </POINT>\
-               </WALK>\
-               <POINT uid=\"dest\" x=\"2549183.0\" y=\"6672570.0\">\
-                       <ARRIVAL date=\"20100416\" time=\"0905\"/>\
-                       <DEPARTURE date=\"20100416\" time=\"0905\"/>\
-               </POINT>\
-       </ROUTE>\
-       <ROUTE from=\"start\" to=\"dest\">\
-               <LENGTH time=\"29.633\" dist=\"8902.040\"/>\
-               <POINT uid=\"start\" x=\"2543560.0\" y=\"6672630.0\">\
-                       <ARRIVAL date=\"20100416\" time=\"0846\"/>\
-                       <DEPARTURE date=\"20100416\" time=\"0846\"/>\
-               </POINT>\
-               <WALK>\
-                       <LENGTH time=\"3.479\" dist=\"254.753\"/>\
-                       <POINT uid=\"start\" x=\"2543560.0\" y=\"6672630.0\">\
-                               <ARRIVAL date=\"20100416\" time=\"0846\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0846\"/>\
-                       </POINT>\
-                       <MAPLOC x=\"2543588.4\" y=\"6672573.9\" type=\"0\">\
-                               <ARRIVAL date=\"20100416\" time=\"0847\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0847\"/>\
-                               <NAME lang=\"1\" val=\"Haukilahdenkatu\"/>\
-                       </MAPLOC>\
-                       <MAPLOC x=\"2543529.4\" y=\"6672574.0\" type=\"0\">\
-                               <ARRIVAL date=\"20100416\" time=\"0848\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0848\"/>\
-                               <NAME lang=\"1\" val=\"Haukilahdenkatu\"/>\
-                       </MAPLOC>\
-                       <MAPLOC x=\"2543529.0\" y=\"6672569.9\" type=\"0\">\
-                               <ARRIVAL date=\"20100416\" time=\"0848\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0848\"/>\
-                       </MAPLOC>\
-                       <MAPLOC x=\"2543494.7\" y=\"6672557.4\" type=\"0\">\
-                               <ARRIVAL date=\"20100416\" time=\"0848\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0848\"/>\
-                               <NAME lang=\"1\" val=\"Toppelundintie\"/>\
-                       </MAPLOC>\
-                       <MAPLOC x=\"2543506.2\" y=\"6672490.4\" type=\"0\">\
-                               <ARRIVAL date=\"20100416\" time=\"0849\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0849\"/>\
-                               <NAME lang=\"1\" val=\"Toppelundintie\"/>\
-                       </MAPLOC>\
-                       <MAPLOC x=\"2543496.2\" y=\"6672492.1\" type=\"0\">\
-                               <ARRIVAL date=\"20100416\" time=\"0850\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0850\"/>\
-                               <NAME lang=\"1\" val=\"Toppelundintie\"/>\
-                       </MAPLOC>\
-                       <STOP code=\"6:2232220\" x=\"2543501.0\" y=\"6672486.0\" id=\"3375\">\
-                               <ARRIVAL date=\"20100416\" time=\"0850\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0850\"/>\
-                               <NAME lang=\"1\" val=\"Säynävätie\"/>\
-                               <NAME lang=\"2\" val=\"Idvägen\"/>\
-                       </STOP>\
-               </WALK>\
-               <LINE id=\"620\" code=\"2111  2\" type=\"5\" mobility=\"3\">\
-                       <LENGTH time=\"8.000\" dist=\"5225.092\"/>\
-                       <STOP code=\"6:2232220\" x=\"2543501.0\" y=\"6672486.0\" id=\"3375\" ord=\"12\">\
-                               <ARRIVAL date=\"20100416\" time=\"0850\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0850\"/>\
-                               <NAME lang=\"1\" val=\"Säynävätie\"/>\
-                               <NAME lang=\"2\" val=\"Idvägen\"/>\
-                       </STOP>\
-                       <STOP code=\"6:2232218\" x=\"2543666.0\" y=\"6672186.0\" id=\"3373\">\
-                               <ARRIVAL date=\"20100416\" time=\"0851\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0851\"/>\
-                               <NAME lang=\"1\" val=\"Mellstenintie\"/>\
-                               <NAME lang=\"2\" val=\"Mellstensvägen\"/>\
-                       </STOP>\
-                       <STOP code=\"6:2232216\" x=\"2543877.0\" y=\"6672218.0\" id=\"3371\">\
-                               <ARRIVAL date=\"20100416\" time=\"0851\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0851\"/>\
-                               <NAME lang=\"1\" val=\"Toppelund\"/>\
-                               <NAME lang=\"2\" val=\"Toppelund\"/>\
-                       </STOP>\
-                       <STOP code=\"6:2231232\" x=\"2544055.0\" y=\"6672304.0\" id=\"3353\">\
-                               <ARRIVAL date=\"20100416\" time=\"0852\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0852\"/>\
-                               <NAME lang=\"1\" val=\"Linnake\"/>\
-                               <NAME lang=\"2\" val=\"Fortet\"/>\
-                       </STOP>\
-                       <STOP code=\"6:2231230\" x=\"2544152.0\" y=\"6672559.0\" id=\"3351\">\
-                               <ARRIVAL date=\"20100416\" time=\"0853\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0853\"/>\
-                               <NAME lang=\"1\" val=\"Alalinnake\"/>\
-                               <NAME lang=\"2\" val=\"Nedre fortet\"/>\
-                       </STOP>\
-                       <STOP code=\"6:2231220\" x=\"2544059.0\" y=\"6672912.0\" id=\"3350\">\
-                               <ARRIVAL date=\"20100416\" time=\"0854\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0854\"/>\
-                               <NAME lang=\"1\" val=\"Westendinpolku\"/>\
-                               <NAME lang=\"2\" val=\"Westendstigen\"/>\
-                       </STOP>\
-                       <STOP code=\"6:2231218\" x=\"2544263.0\" y=\"6673139.0\" id=\"3348\">\
-                               <ARRIVAL date=\"20100416\" time=\"0855\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0855\"/>\
-                               <NAME lang=\"1\" val=\"Golfpolku\"/>\
-                               <NAME lang=\"2\" val=\"Golfstigen\"/>\
-                       </STOP>\
-                       <STOP code=\"6:2231212\" x=\"2544835.0\" y=\"6673222.0\" id=\"3343\">\
-                               <ARRIVAL date=\"20100416\" time=\"0856\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0856\"/>\
-                               <NAME lang=\"1\" val=\"Ankkurisaarentie\"/>\
-                               <NAME lang=\"2\" val=\"Ankarholmsvägen\"/>\
-                       </STOP>\
-                       <STOP code=\"6:2231211\" x=\"2544938.0\" y=\"6673277.0\" id=\"3342\">\
-                               <ARRIVAL date=\"20100416\" time=\"0856\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0856\"/>\
-                               <NAME lang=\"1\" val=\"Kuninkaansatama\"/>\
-                               <NAME lang=\"2\" val=\"Konungshamnen\"/>\
-                       </STOP>\
-                       <STOP code=\"6:2231201\" x=\"2546031.0\" y=\"6673305.0\" id=\"3332\">\
-                               <ARRIVAL date=\"20100416\" time=\"0857\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0857\"/>\
-                               <NAME lang=\"1\" val=\"Karhusaari\"/>\
-                               <NAME lang=\"2\" val=\"Björnholm\"/>\
-                       </STOP>\
-                       <STOP code=\"6:2232204\" x=\"2546939.0\" y=\"6672964.0\" id=\"3360\" ord=\"22\">\
-                               <ARRIVAL date=\"20100416\" time=\"0858\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0905\"/>\
-                               <NAME lang=\"1\" val=\"Hanasaari\"/>\
-                               <NAME lang=\"2\" val=\"Hanaholmen\"/>\
-                       </STOP>\
-               </LINE>\
-               <LINE id=\"592\" code=\"2102T 2\" type=\"5\" mobility=\"3\">\
-                       <LENGTH time=\"5.000\" dist=\"2926.431\"/>\
-                       <STOP code=\"6:2232204\" x=\"2546939.0\" y=\"6672964.0\" id=\"3360\" ord=\"10\">\
-                               <ARRIVAL date=\"20100416\" time=\"0858\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0905\"/>\
-                               <NAME lang=\"1\" val=\"Hanasaari\"/>\
-                               <NAME lang=\"2\" val=\"Hanaholmen\"/>\
-                       </STOP>\
-                       <STOP code=\"6:1310299\" x=\"2547953.0\" y=\"6672552.0\" id=\"1424\">\
-                               <ARRIVAL date=\"20100416\" time=\"0906\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0906\"/>\
-                               <NAME lang=\"1\" val=\"Katajaharju\"/>\
-                               <NAME lang=\"2\" val=\"Enåsen\"/>\
-                       </STOP>\
-                       <STOP code=\"6:1310225\" x=\"2548497.0\" y=\"6672477.0\" id=\"1411\">\
-                               <ARRIVAL date=\"20100416\" time=\"0907\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0907\"/>\
-                               <NAME lang=\"1\" val=\"Lahnalahdentie\"/>\
-                               <NAME lang=\"2\" val=\"Braxviksvägen\"/>\
-                       </STOP>\
-                       <STOP code=\"6:1310223\" x=\"2548836.0\" y=\"6672441.0\" id=\"1409\">\
-                               <ARRIVAL date=\"20100416\" time=\"0908\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0908\"/>\
-                               <NAME lang=\"1\" val=\"Lahnalahden puisto\"/>\
-                               <NAME lang=\"2\" val=\"Braxviksparken\"/>\
-                       </STOP>\
-                       <STOP code=\"6:1310204\" x=\"2549393.0\" y=\"6672438.0\" id=\"1405\" ord=\"14\">\
-                               <ARRIVAL date=\"20100416\" time=\"0910\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0910\"/>\
-                               <NAME lang=\"1\" val=\"Koillisväylä\"/>\
-                               <NAME lang=\"2\" val=\"Nordostpassagen\"/>\
-                       </STOP>\
-               </LINE>\
-               <WALK>\
-                       <LENGTH time=\"6.154\" dist=\"495.764\"/>\
-                       <STOP code=\"6:1310204\" x=\"2549393.0\" y=\"6672438.0\" id=\"1405\">\
-                               <ARRIVAL date=\"20100416\" time=\"0910\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0910\"/>\
-                               <NAME lang=\"1\" val=\"Koillisväylä\"/>\
-                               <NAME lang=\"2\" val=\"Nordostpassagen\"/>\
-                       </STOP>\
-                       <MAPLOC x=\"2549326.7\" y=\"6672446.7\" type=\"0\">\
-                               <ARRIVAL date=\"20100416\" time=\"0911\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0911\"/>\
-                               <NAME lang=\"1\" val=\"Koillisväylä\"/>\
-                       </MAPLOC>\
-                       <MAPLOC x=\"2549376.8\" y=\"6672603.7\" type=\"0\">\
-                               <ARRIVAL date=\"20100416\" time=\"0913\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0913\"/>\
-                       </MAPLOC>\
-                       <POINT uid=\"dest\" x=\"2549183.0\" y=\"6672570.0\">\
-                               <ARRIVAL date=\"20100416\" time=\"0916\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0916\"/>\
-                       </POINT>\
-               </WALK>\
-               <POINT uid=\"dest\" x=\"2549183.0\" y=\"6672570.0\">\
-                       <ARRIVAL date=\"20100416\" time=\"0916\"/>\
-                       <DEPARTURE date=\"20100416\" time=\"0916\"/>\
-               </POINT>\
-       </ROUTE>\
-       <ROUTE from=\"start\" to=\"dest\">\
-               <LENGTH time=\"29.633\" dist=\"8902.040\"/>\
-               <POINT uid=\"start\" x=\"2543560.0\" y=\"6672630.0\">\
-                       <ARRIVAL date=\"20100416\" time=\"0903\"/>\
-                       <DEPARTURE date=\"20100416\" time=\"0903\"/>\
-               </POINT>\
-               <WALK>\
-                       <LENGTH time=\"3.479\" dist=\"254.753\"/>\
-                       <POINT uid=\"start\" x=\"2543560.0\" y=\"6672630.0\">\
-                               <ARRIVAL date=\"20100416\" time=\"0903\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0903\"/>\
-                       </POINT>\
-                       <MAPLOC x=\"2543588.4\" y=\"6672573.9\" type=\"0\">\
-                               <ARRIVAL date=\"20100416\" time=\"0904\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0904\"/>\
-                               <NAME lang=\"1\" val=\"Haukilahdenkatu\"/>\
-                       </MAPLOC>\
-                       <MAPLOC x=\"2543529.4\" y=\"6672574.0\" type=\"0\">\
-                               <ARRIVAL date=\"20100416\" time=\"0905\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0905\"/>\
-                               <NAME lang=\"1\" val=\"Haukilahdenkatu\"/>\
-                       </MAPLOC>\
-                       <MAPLOC x=\"2543529.0\" y=\"6672569.9\" type=\"0\">\
-                               <ARRIVAL date=\"20100416\" time=\"0905\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0905\"/>\
-                       </MAPLOC>\
-                       <MAPLOC x=\"2543494.7\" y=\"6672557.4\" type=\"0\">\
-                               <ARRIVAL date=\"20100416\" time=\"0905\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0905\"/>\
-                               <NAME lang=\"1\" val=\"Toppelundintie\"/>\
-                       </MAPLOC>\
-                       <MAPLOC x=\"2543506.2\" y=\"6672490.4\" type=\"0\">\
-                               <ARRIVAL date=\"20100416\" time=\"0906\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0906\"/>\
-                               <NAME lang=\"1\" val=\"Toppelundintie\"/>\
-                       </MAPLOC>\
-                       <MAPLOC x=\"2543496.2\" y=\"6672492.1\" type=\"0\">\
-                               <ARRIVAL date=\"20100416\" time=\"0907\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0907\"/>\
-                               <NAME lang=\"1\" val=\"Toppelundintie\"/>\
-                       </MAPLOC>\
-                       <STOP code=\"6:2232220\" x=\"2543501.0\" y=\"6672486.0\" id=\"3375\">\
-                               <ARRIVAL date=\"20100416\" time=\"0907\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0907\"/>\
-                               <NAME lang=\"1\" val=\"Säynävätie\"/>\
-                               <NAME lang=\"2\" val=\"Idvägen\"/>\
-                       </STOP>\
-               </WALK>\
-               <LINE id=\"620\" code=\"2111  2\" type=\"5\" mobility=\"3\">\
-                       <LENGTH time=\"8.000\" dist=\"5225.092\"/>\
-                       <STOP code=\"6:2232220\" x=\"2543501.0\" y=\"6672486.0\" id=\"3375\" ord=\"12\">\
-                               <ARRIVAL date=\"20100416\" time=\"0907\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0907\"/>\
-                               <NAME lang=\"1\" val=\"Säynävätie\"/>\
-                               <NAME lang=\"2\" val=\"Idvägen\"/>\
-                       </STOP>\
-                       <STOP code=\"6:2232218\" x=\"2543666.0\" y=\"6672186.0\" id=\"3373\">\
-                               <ARRIVAL date=\"20100416\" time=\"0908\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0908\"/>\
-                               <NAME lang=\"1\" val=\"Mellstenintie\"/>\
-                               <NAME lang=\"2\" val=\"Mellstensvägen\"/>\
-                       </STOP>\
-                       <STOP code=\"6:2232216\" x=\"2543877.0\" y=\"6672218.0\" id=\"3371\">\
-                               <ARRIVAL date=\"20100416\" time=\"0909\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0909\"/>\
-                               <NAME lang=\"1\" val=\"Toppelund\"/>\
-                               <NAME lang=\"2\" val=\"Toppelund\"/>\
-                       </STOP>\
-                       <STOP code=\"6:2231232\" x=\"2544055.0\" y=\"6672304.0\" id=\"3353\">\
-                               <ARRIVAL date=\"20100416\" time=\"0909\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0909\"/>\
-                               <NAME lang=\"1\" val=\"Linnake\"/>\
-                               <NAME lang=\"2\" val=\"Fortet\"/>\
-                       </STOP>\
-                       <STOP code=\"6:2231230\" x=\"2544152.0\" y=\"6672559.0\" id=\"3351\">\
-                               <ARRIVAL date=\"20100416\" time=\"0910\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0910\"/>\
-                               <NAME lang=\"1\" val=\"Alalinnake\"/>\
-                               <NAME lang=\"2\" val=\"Nedre fortet\"/>\
-                       </STOP>\
-                       <STOP code=\"6:2231220\" x=\"2544059.0\" y=\"6672912.0\" id=\"3350\">\
-                               <ARRIVAL date=\"20100416\" time=\"0911\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0911\"/>\
-                               <NAME lang=\"1\" val=\"Westendinpolku\"/>\
-                               <NAME lang=\"2\" val=\"Westendstigen\"/>\
-                       </STOP>\
-                       <STOP code=\"6:2231218\" x=\"2544263.0\" y=\"6673139.0\" id=\"3348\">\
-                               <ARRIVAL date=\"20100416\" time=\"0912\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0912\"/>\
-                               <NAME lang=\"1\" val=\"Golfpolku\"/>\
-                               <NAME lang=\"2\" val=\"Golfstigen\"/>\
-                       </STOP>\
-                       <STOP code=\"6:2231212\" x=\"2544835.0\" y=\"6673222.0\" id=\"3343\">\
-                               <ARRIVAL date=\"20100416\" time=\"0913\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0913\"/>\
-                               <NAME lang=\"1\" val=\"Ankkurisaarentie\"/>\
-                               <NAME lang=\"2\" val=\"Ankarholmsvägen\"/>\
-                       </STOP>\
-                       <STOP code=\"6:2231211\" x=\"2544938.0\" y=\"6673277.0\" id=\"3342\">\
-                               <ARRIVAL date=\"20100416\" time=\"0913\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0913\"/>\
-                               <NAME lang=\"1\" val=\"Kuninkaansatama\"/>\
-                               <NAME lang=\"2\" val=\"Konungshamnen\"/>\
-                       </STOP>\
-                       <STOP code=\"6:2231201\" x=\"2546031.0\" y=\"6673305.0\" id=\"3332\">\
-                               <ARRIVAL date=\"20100416\" time=\"0914\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0914\"/>\
-                               <NAME lang=\"1\" val=\"Karhusaari\"/>\
-                               <NAME lang=\"2\" val=\"Björnholm\"/>\
-                       </STOP>\
-                       <STOP code=\"6:2232204\" x=\"2546939.0\" y=\"6672964.0\" id=\"3360\" ord=\"22\">\
-                               <ARRIVAL date=\"20100416\" time=\"0915\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0922\"/>\
-                               <NAME lang=\"1\" val=\"Hanasaari\"/>\
-                               <NAME lang=\"2\" val=\"Hanaholmen\"/>\
-                       </STOP>\
-               </LINE>\
-               <LINE id=\"696\" code=\"2160T 2\" type=\"5\" mobility=\"3\">\
-                       <LENGTH time=\"5.000\" dist=\"2926.431\"/>\
-                       <STOP code=\"6:2232204\" x=\"2546939.0\" y=\"6672964.0\" id=\"3360\" ord=\"20\">\
-                               <ARRIVAL date=\"20100416\" time=\"0915\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0922\"/>\
-                               <NAME lang=\"1\" val=\"Hanasaari\"/>\
-                               <NAME lang=\"2\" val=\"Hanaholmen\"/>\
-                       </STOP>\
-                       <STOP code=\"6:1310299\" x=\"2547953.0\" y=\"6672552.0\" id=\"1424\">\
-                               <ARRIVAL date=\"20100416\" time=\"0923\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0923\"/>\
-                               <NAME lang=\"1\" val=\"Katajaharju\"/>\
-                               <NAME lang=\"2\" val=\"Enåsen\"/>\
-                       </STOP>\
-                       <STOP code=\"6:1310225\" x=\"2548497.0\" y=\"6672477.0\" id=\"1411\">\
-                               <ARRIVAL date=\"20100416\" time=\"0925\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0925\"/>\
-                               <NAME lang=\"1\" val=\"Lahnalahdentie\"/>\
-                               <NAME lang=\"2\" val=\"Braxviksvägen\"/>\
-                       </STOP>\
-                       <STOP code=\"6:1310223\" x=\"2548836.0\" y=\"6672441.0\" id=\"1409\">\
-                               <ARRIVAL date=\"20100416\" time=\"0926\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0926\"/>\
-                               <NAME lang=\"1\" val=\"Lahnalahden puisto\"/>\
-                               <NAME lang=\"2\" val=\"Braxviksparken\"/>\
-                       </STOP>\
-                       <STOP code=\"6:1310204\" x=\"2549393.0\" y=\"6672438.0\" id=\"1405\" ord=\"24\">\
-                               <ARRIVAL date=\"20100416\" time=\"0927\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0927\"/>\
-                               <NAME lang=\"1\" val=\"Koillisväylä\"/>\
-                               <NAME lang=\"2\" val=\"Nordostpassagen\"/>\
-                       </STOP>\
-               </LINE>\
-               <WALK>\
-                       <LENGTH time=\"6.154\" dist=\"495.764\"/>\
-                       <STOP code=\"6:1310204\" x=\"2549393.0\" y=\"6672438.0\" id=\"1405\">\
-                               <ARRIVAL date=\"20100416\" time=\"0927\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0927\"/>\
-                               <NAME lang=\"1\" val=\"Koillisväylä\"/>\
-                               <NAME lang=\"2\" val=\"Nordostpassagen\"/>\
-                       </STOP>\
-                       <MAPLOC x=\"2549326.7\" y=\"6672446.7\" type=\"0\">\
-                               <ARRIVAL date=\"20100416\" time=\"0928\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0928\"/>\
-                               <NAME lang=\"1\" val=\"Koillisväylä\"/>\
-                       </MAPLOC>\
-                       <MAPLOC x=\"2549376.8\" y=\"6672603.7\" type=\"0\">\
-                               <ARRIVAL date=\"20100416\" time=\"0930\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0930\"/>\
-                       </MAPLOC>\
-                       <POINT uid=\"dest\" x=\"2549183.0\" y=\"6672570.0\">\
-                               <ARRIVAL date=\"20100416\" time=\"0933\"/>\
-                               <DEPARTURE date=\"20100416\" time=\"0933\"/>\
-                       </POINT>\
-               </WALK>\
-               <POINT uid=\"dest\" x=\"2549183.0\" y=\"6672570.0\">\
-                       <ARRIVAL date=\"20100416\" time=\"0933\"/>\
-                       <DEPARTURE date=\"20100416\" time=\"0933\"/>\
-               </POINT>\
-       </ROUTE>\
-</MTRXML>\
-"
-};
-
diff --git a/zouba/zouba.pro b/zouba/zouba.pro
deleted file mode 100644 (file)
index d978a4c..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-TARGET      = zouba
-SOURCES += \
-    main.cpp \
-    route.cpp \
-    route_p.cpp \
-    uicontroller.cpp \
-    location.cpp \
-    location_p.cpp \
-    locations.cpp \
-    gpscontroller.cpp \
-    gpscontroller_p.cpp \
-    ui.cpp \
-
-HEADERS += \
-    route.h \
-    route_p.h \
-    uicontroller.h \
-    location.h \
-    location_p.h \
-    locations.h \
-    ytv.h \
-    gpscontroller.h \
-    gpscontroller_p.h \
-    ui.h \
-
-FORMS       +=
-LEXSOURCES  += #LEXS#
-YACCSOURCES += #YACCS#
-
-INCLUDEPATH += include
-DEPENDSPATH += INCLUDEPATH
-#QMAKE_LIBDIR_QT = qt4-maemo5/lib
-#QMAKE_INCDIR_QT = qt4-maemo5/include
-LIBS        += -Llib -lQtBearer -lQtLocation
-DEFINES     += Q_WS_MAEMO_5
-
-# All generated files goes same directory
-OBJECTS_DIR = build
-MOC_DIR     = build
-UI_DIR      = build
-
-DESTDIR     = build
-TEMPLATE    = app
-DEPENDPATH  +=
-VPATH       += src uis
-CONFIG      -=
-CONFIG      += debug qt mobility
-MOBILITY    += location bearer
-QT=core gui network maemo5
-
-INSTALLS    += target
-target.path  = /usr/bin/
-
-INSTALLS    += desktop
-desktop.path  = /usr/share/applications/hildon
-desktop.files  = data/zouba.desktop
-
-INSTALLS    += service
-service.path  = /usr/share/dbus-1/services
-service.files  = data/zouba.service
-
-INSTALLS    += icon64
-icon64.path  = /usr/share/icons/hicolor/64x64/apps
-icon64.files  = data/64x64/zouba.png
-
-#
-# Targets for debian source and binary package creation
-#
-debian-src.commands = dpkg-buildpackage -S -r -us -uc -d
-debian-bin.commands = dpkg-buildpackage -b -r -uc -d
-debian-all.depends = debian-src debian-bin
-
-#
-# Clean all but Makefile
-#
-compiler_clean.commands = -$(DEL_FILE) $(TARGET)
-
-QMAKE_EXTRA_TARGETS += debian-all debian-src debian-bin compiler_clean