Merge lp:~fransschreuder1/cachemere/trunk into lp:cachemere

Proposed by FransSchreuder
Status: Superseded
Proposed branch: lp:~fransschreuder1/cachemere/trunk
Merge into: lp:cachemere
Diff against target: 2077 lines (+1347/-405)
16 files modified
CMakeLists.txt.user (+86/-375)
app/cachemere.qml (+19/-0)
app/ui/CMakeLists.txt (+1/-1)
app/ui/CompassTab.qml (+200/-0)
app/ui/DetailsTab.qml (+67/-4)
app/ui/GeocachesTab.qml (+3/-3)
app/ui/MapTab.qml (+39/-1)
app/ui/NESW.svg (+166/-0)
app/ui/WaypointDialog.qml (+284/-0)
app/ui/compass.svg (+255/-0)
app/ui/utils.js (+14/-0)
backend/modules/Cachemere/backend.cpp (+1/-0)
backend/modules/Cachemere/geocache.cpp (+128/-3)
backend/modules/Cachemere/geocache.h (+45/-1)
manifest.json.in (+1/-1)
po/com.mikeasoft.cachemere.pot (+38/-16)
To merge this branch: bzr merge lp:~fransschreuder1/cachemere/trunk
Reviewer Review Type Date Requested Status
Michael Sheldon Pending
Review via email: mp+255932@code.launchpad.net

This proposal has been superseded by a proposal from 2015-04-16.

Description of the change

*Added a compass tab (with direction to the cache coordinate
*Changed metric units according to system settings
*Changed compass into SVG
*Changed colour of letters to white

To post a comment you must log in.
lp:~fransschreuder1/cachemere/trunk updated
7. By FransSchreuder

Added dialog to add waypoints (from compass page)

8. By FransSchreuder

fixed proper rotation of compass

9. By FransSchreuder

Waypoints are now saved into an .xml file

10. By Frans Schreuder

Added waypoints also to details page

11. By FransSchreuder

*Fixed index of Browsertab (is now 4)
*Added waypoints to map, however this doesn't view (just like the list of Geocaches)

12. By FransSchreuder

Fixed size of pickers in WaypointDialog, to make it more usable
Also fixed font size of degree symbol and dot

13. By Frans Schreuder

Added this line to all position sources:
preferredPositioningMethods: PositionSource.SatellitePositioningMethod

14. By Frans Schreuder

Added Dutch translation

15. By FransSchreuder

* Show distance in center of compass
* Show Accuracy of GPS on Compass tab

16. By FransSchreuder

Added flickable delete action button to geocaches, now able to delete geocaches.
Confirmation dialog needed?

17. By FransSchreuder

Added active waypoint to map
changed some button colours

18. By FransSchreuder

*added current selected waypoint (if any) to map
*Added status information of GPS below compass

19. By FransSchreuder

Fixed function call to updateGpsStatus

20. By FransSchreuder

*Fixed waypoints list on map
*Fixed geocache list on map
*Active geocache can also be selected from map

21. By Frans Schreuder

*Improved waypoints dialog (3 digits now have 3 select controls)
*fixed typo in button colours

22. By FransSchreuder

Added pin to mark waypoints on map: thanks to Jeroen Buurmans for the artwork

23. By Frans Schreuder

*Added images for geocaches (treasure chest open / closed)
*Added cachemere logo to current location

24. By Frans Schreuder

Beep when near selected waypoint (not necessarily the starting point)

25. By Jeroen Buurmans <email address hidden>

Changed the waypoint icon to a red cross.

26. By Frans Schreuder

Animation for compass (rotation)

27. By FransSchreuder

fixed compass animation, now stop animation when compass is updated. Compass will stabilize around target rotation and looks more relaxed

28. By FransSchreuder

changed namespace, in order to publish the app under cachemere.fransschreuder

Unmerged revisions

28. By FransSchreuder

changed namespace, in order to publish the app under cachemere.fransschreuder

27. By FransSchreuder

fixed compass animation, now stop animation when compass is updated. Compass will stabilize around target rotation and looks more relaxed

26. By Frans Schreuder

Animation for compass (rotation)

25. By Jeroen Buurmans <email address hidden>

Changed the waypoint icon to a red cross.

24. By Frans Schreuder

Beep when near selected waypoint (not necessarily the starting point)

23. By Frans Schreuder

*Added images for geocaches (treasure chest open / closed)
*Added cachemere logo to current location

22. By FransSchreuder

Added pin to mark waypoints on map: thanks to Jeroen Buurmans for the artwork

21. By Frans Schreuder

*Improved waypoints dialog (3 digits now have 3 select controls)
*fixed typo in button colours

20. By FransSchreuder

*Fixed waypoints list on map
*Fixed geocache list on map
*Active geocache can also be selected from map

19. By FransSchreuder

Fixed function call to updateGpsStatus

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'CMakeLists.txt.user'
2--- CMakeLists.txt.user 2014-12-26 20:50:55 +0000
3+++ CMakeLists.txt.user 2015-04-16 19:24:14 +0000
4@@ -1,10 +1,10 @@
5 <?xml version="1.0" encoding="UTF-8"?>
6 <!DOCTYPE QtCreatorProject>
7-<!-- Written by QtCreator 3.1.1, 2014-12-26T20:29:42. -->
8+<!-- Written by QtCreator 3.1.1, 2015-04-16T21:23:14. -->
9 <qtcreator>
10 <data>
11 <variable>ProjectExplorer.Project.ActiveTarget</variable>
12- <value type="int">3</value>
13+ <value type="int">1</value>
14 </data>
15 <data>
16 <variable>ProjectExplorer.Project.EditorSettings</variable>
17@@ -56,13 +56,13 @@
18 <valuemap type="QVariantMap">
19 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop</value>
20 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop</value>
21- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{897ebcf3-e88f-4573-bb26-c210d7efb2ef}</value>
22+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{beace390-9ff2-42fe-ae55-1592c3a47384}</value>
23 <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
24 <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
25 <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
26 <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
27 <value type="bool" key="CMakeProjectManager.CMakeBuildConfiguration.UseNinja">false</value>
28- <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/mike/src/build-cachemere-Desktop-Default</value>
29+ <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/frans/build-cachemere-Desktop-Default</value>
30 <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
31 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
32 <value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
33@@ -172,375 +172,86 @@
34 <valuemap type="QVariantMap">
35 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">UbuntuSDK for armhf (GCC ubuntu-sdk-14.10-utopic)</value>
36 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">UbuntuSDK for armhf (GCC ubuntu-sdk-14.10-utopic)</value>
37- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{bf187ee2-704d-4b3d-aaa9-27ca3cce46cc}</value>
38- <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
39- <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
40- <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
41- <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
42- <value type="bool" key="CMakeProjectManager.CMakeBuildConfiguration.UseNinja">false</value>
43- <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/mike/src/build-cachemere-UbuntuSDK_for_armhf_GCC_ubuntu_sdk_14_10_utopic-Default</value>
44- <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
45- <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
46- <value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
47- <valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets"/>
48- <value type="bool" key="CMakeProjectManager.MakeStep.Clean">false</value>
49- <value type="bool" key="CMakeProjectManager.MakeStep.UseNinja">false</value>
50- <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
51- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Ubuntu SDK Make</value>
52- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
53- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">UbuntuProjectManager.UbuntuCMake.MakeStep</value>
54- </valuemap>
55- <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
56- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
57- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
58- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
59- </valuemap>
60- <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
61- <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
62- <value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments">clean</value>
63- <valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets"/>
64- <value type="bool" key="CMakeProjectManager.MakeStep.Clean">true</value>
65- <value type="bool" key="CMakeProjectManager.MakeStep.UseNinja">false</value>
66- <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
67- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Ubuntu SDK Make</value>
68- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
69- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">UbuntuProjectManager.UbuntuCMake.MakeStep</value>
70- </valuemap>
71- <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
72- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
73- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
74- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
75- </valuemap>
76- <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
77- <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
78- <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
79- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Default</value>
80- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Default</value>
81- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">UbuntuProjectManager.UbuntuCMake.BuildConfiguration</value>
82- </valuemap>
83- <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">1</value>
84- <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
85- <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
86- <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
87- <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
88- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">UbuntuSDK Click build</value>
89- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
90- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">UbuntuProjectManager.ClickPackageStep</value>
91- <value type="int" key="Ubuntu.UbuntuPackageStep.PackageMode">1</value>
92- </valuemap>
93- <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
94- <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
95- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Upload files to Ubuntu Device</value>
96- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
97- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">UbuntuProjectManager.UploadStep</value>
98- <valuelist type="QVariantList" key="Qt4ProjectManager.MaemoRunConfiguration.LastDeployedFiles">
99- <value type="QString">/home/mike/src/build-cachemere-UbuntuSDK_for_armhf_GCC_ubuntu_sdk_14_10_utopic-Default/com.mikeasoft.cachemere_0.1_armhf.click</value>
100- <value type="QString">/usr/share/qtcreator/ubuntu/scripts/qtc_device_applaunch.py</value>
101- </valuelist>
102- <valuelist type="QVariantList" key="Qt4ProjectManager.MaemoRunConfiguration.LastDeployedHosts">
103- <value type="QString">127.0.0.1</value>
104- <value type="QString">127.0.0.1</value>
105- </valuelist>
106- <valuelist type="QVariantList" key="Qt4ProjectManager.MaemoRunConfiguration.LastDeployedRemotePaths">
107- <value type="QString">/tmp</value>
108- <value type="QString">/tmp</value>
109- </valuelist>
110- <valuelist type="QVariantList" key="Qt4ProjectManager.MaemoRunConfiguration.LastDeployedSysroots">
111- <value type="QString">/var/lib/schroot/chroots/click-ubuntu-sdk-14.10-armhf</value>
112- <value type="QString">/var/lib/schroot/chroots/click-ubuntu-sdk-14.10-armhf</value>
113- </valuelist>
114- <valuelist type="QVariantList" key="Qt4ProjectManager.MaemoRunConfiguration.LastDeployedTimes">
115- <value type="QDateTime">2014-12-22T11:43:52</value>
116- <value type="QDateTime">2014-12-22T11:43:52</value>
117- </valuelist>
118- </valuemap>
119- <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
120- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
121- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
122- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
123- </valuemap>
124- <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
125- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy to Ubuntu Device</value>
126- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
127- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">UbuntuProjectManager.DeployConfiguration</value>
128- </valuemap>
129- <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
130- <valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
131- <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
132- <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
133- <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
134- <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
135- <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
136- <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
137- <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
138- <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
139- <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
140- <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
141- <value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
142- <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
143- <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
144- <value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
145- <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
146- <value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
147- <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
148- <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
149- <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
150- <value type="int">0</value>
151- <value type="int">1</value>
152- <value type="int">2</value>
153- <value type="int">3</value>
154- <value type="int">4</value>
155- <value type="int">5</value>
156- <value type="int">6</value>
157- <value type="int">7</value>
158- <value type="int">8</value>
159- <value type="int">9</value>
160- <value type="int">10</value>
161- <value type="int">11</value>
162- <value type="int">12</value>
163- <value type="int">13</value>
164- <value type="int">14</value>
165- </valuelist>
166- <value type="int" key="PE.EnvironmentAspect.Base">1</value>
167- <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
168- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName"></value>
169- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">cachemere</value>
170- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">UbuntuProjectManager.RemoteRunConfiguration.Appcachemere</value>
171- <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
172- <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
173- <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
174- <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
175- <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
176- <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
177- <value type="bool" key="UbuntuRemoteRunConfiguration.ForceInstall">false</value>
178- <value type="bool" key="UbuntuRemoteRunConfiguration.Uninstall">true</value>
179- </valuemap>
180- <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
181- </valuemap>
182- </data>
183- <data>
184- <variable>ProjectExplorer.Project.Target.2</variable>
185- <valuemap type="QVariantMap">
186- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">UbuntuSDK for amd64 (GCC ubuntu-sdk-14.10-utopic)</value>
187- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">UbuntuSDK for amd64 (GCC ubuntu-sdk-14.10-utopic)</value>
188- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{36b99870-db07-478b-861c-af2da9f17393}</value>
189- <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
190- <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
191- <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
192- <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
193- <value type="bool" key="CMakeProjectManager.CMakeBuildConfiguration.UseNinja">false</value>
194- <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/mike/src/build-cachemere-UbuntuSDK_for_amd64_GCC_ubuntu_sdk_14_10_utopic-Default</value>
195- <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
196- <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
197- <value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
198- <valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets"/>
199- <value type="bool" key="CMakeProjectManager.MakeStep.Clean">false</value>
200- <value type="bool" key="CMakeProjectManager.MakeStep.UseNinja">false</value>
201- <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
202- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Ubuntu SDK Make</value>
203- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
204- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">UbuntuProjectManager.UbuntuCMake.MakeStep</value>
205- </valuemap>
206- <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
207- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
208- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
209- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
210- </valuemap>
211- <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
212- <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
213- <value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments">clean</value>
214- <valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets"/>
215- <value type="bool" key="CMakeProjectManager.MakeStep.Clean">true</value>
216- <value type="bool" key="CMakeProjectManager.MakeStep.UseNinja">false</value>
217- <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
218- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Ubuntu SDK Make</value>
219- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
220- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">UbuntuProjectManager.UbuntuCMake.MakeStep</value>
221- </valuemap>
222- <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
223- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
224- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
225- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
226- </valuemap>
227- <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
228- <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
229- <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
230- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Default</value>
231- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Default</value>
232- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">UbuntuProjectManager.UbuntuCMake.BuildConfiguration</value>
233- </valuemap>
234- <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">1</value>
235- <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
236- <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
237- <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
238- <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
239- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">UbuntuSDK Click build</value>
240- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
241- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">UbuntuProjectManager.ClickPackageStep</value>
242- <value type="int" key="Ubuntu.UbuntuPackageStep.PackageMode">1</value>
243- </valuemap>
244- <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
245- <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
246- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Upload files to Ubuntu Device</value>
247- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
248- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">UbuntuProjectManager.UploadStep</value>
249- <valuelist type="QVariantList" key="Qt4ProjectManager.MaemoRunConfiguration.LastDeployedFiles"/>
250- <valuelist type="QVariantList" key="Qt4ProjectManager.MaemoRunConfiguration.LastDeployedHosts"/>
251- <valuelist type="QVariantList" key="Qt4ProjectManager.MaemoRunConfiguration.LastDeployedRemotePaths"/>
252- <valuelist type="QVariantList" key="Qt4ProjectManager.MaemoRunConfiguration.LastDeployedSysroots"/>
253- <valuelist type="QVariantList" key="Qt4ProjectManager.MaemoRunConfiguration.LastDeployedTimes"/>
254- </valuemap>
255- <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
256- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
257- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
258- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
259- </valuemap>
260- <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
261- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy to Ubuntu Device</value>
262- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
263- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">UbuntuProjectManager.DeployConfiguration</value>
264- </valuemap>
265- <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
266- <valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
267- <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
268- <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
269- <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
270- <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
271- <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
272- <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
273- <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
274- <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
275- <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
276- <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
277- <value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
278- <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
279- <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
280- <value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
281- <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
282- <value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
283- <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
284- <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
285- <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
286- <value type="int">0</value>
287- <value type="int">1</value>
288- <value type="int">2</value>
289- <value type="int">3</value>
290- <value type="int">4</value>
291- <value type="int">5</value>
292- <value type="int">6</value>
293- <value type="int">7</value>
294- <value type="int">8</value>
295- <value type="int">9</value>
296- <value type="int">10</value>
297- <value type="int">11</value>
298- <value type="int">12</value>
299- <value type="int">13</value>
300- <value type="int">14</value>
301- </valuelist>
302- <value type="int" key="PE.EnvironmentAspect.Base">1</value>
303- <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
304- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName"></value>
305- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">cachemere</value>
306- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">UbuntuProjectManager.RemoteRunConfiguration.Appcachemere</value>
307- <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
308- <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
309- <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
310- <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
311- <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
312- <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
313- <value type="bool" key="UbuntuRemoteRunConfiguration.ForceInstall">false</value>
314- <value type="bool" key="UbuntuRemoteRunConfiguration.Uninstall">true</value>
315- </valuemap>
316- <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
317- </valuemap>
318- </data>
319- <data>
320- <variable>ProjectExplorer.Project.Target.3</variable>
321- <valuemap type="QVariantMap">
322- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Ubuntu Device2 (GCC armhf-ubuntu-sdk-14.10-utopic)</value>
323- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Ubuntu Device2 (GCC armhf-ubuntu-sdk-14.10-utopic)</value>
324- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{4c1399b6-f9f9-42aa-b0ab-92397136624f}</value>
325- <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
326- <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
327- <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
328- <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
329- <value type="bool" key="CMakeProjectManager.CMakeBuildConfiguration.UseNinja">false</value>
330- <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/mike/src/build-cachemere-Ubuntu_Device2_GCC_armhf_ubuntu_sdk_14_10_utopic-Default</value>
331- <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
332- <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
333- <value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
334- <valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
335- <value type="QString">all</value>
336- </valuelist>
337- <value type="bool" key="CMakeProjectManager.MakeStep.Clean">false</value>
338- <value type="bool" key="CMakeProjectManager.MakeStep.UseNinja">false</value>
339- <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
340- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Ubuntu SDK Make</value>
341- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
342- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">UbuntuProjectManager.UbuntuCMake.MakeStep</value>
343- </valuemap>
344- <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
345- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
346- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
347- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
348- </valuemap>
349- <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
350- <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
351- <value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments">clean</value>
352- <valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets"/>
353- <value type="bool" key="CMakeProjectManager.MakeStep.Clean">true</value>
354- <value type="bool" key="CMakeProjectManager.MakeStep.UseNinja">false</value>
355- <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
356- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Ubuntu SDK Make</value>
357- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
358- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">UbuntuProjectManager.UbuntuCMake.MakeStep</value>
359- </valuemap>
360- <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
361- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
362- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
363- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
364- </valuemap>
365- <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
366- <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
367- <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
368- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Default</value>
369- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Default</value>
370- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">UbuntuProjectManager.UbuntuCMake.BuildConfiguration</value>
371- </valuemap>
372- <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">1</value>
373- <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
374- <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
375- <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
376- <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
377- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">UbuntuSDK Click build</value>
378- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
379- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">UbuntuProjectManager.ClickPackageStep</value>
380- <value type="int" key="Ubuntu.UbuntuPackageStep.PackageMode">1</value>
381- </valuemap>
382- <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
383- <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
384- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Upload files to Ubuntu Device</value>
385- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
386- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">UbuntuProjectManager.UploadStep</value>
387- <valuelist type="QVariantList" key="Qt4ProjectManager.MaemoRunConfiguration.LastDeployedFiles">
388- <value type="QString">/home/mike/src/build-cachemere-Ubuntu_Device2_GCC_armhf_ubuntu_sdk_14_10_utopic-Default/com.mikeasoft.cachemere_0.1_armhf.click</value>
389- <value type="QString">/usr/share/qtcreator/ubuntu/scripts/qtc_device_applaunch.py</value>
390- </valuelist>
391- <valuelist type="QVariantList" key="Qt4ProjectManager.MaemoRunConfiguration.LastDeployedHosts">
392- <value type="QString">127.0.0.1</value>
393- <value type="QString">127.0.0.1</value>
394- </valuelist>
395- <valuelist type="QVariantList" key="Qt4ProjectManager.MaemoRunConfiguration.LastDeployedRemotePaths">
396- <value type="QString">/tmp</value>
397- <value type="QString">/tmp</value>
398- </valuelist>
399- <valuelist type="QVariantList" key="Qt4ProjectManager.MaemoRunConfiguration.LastDeployedSysroots">
400- <value type="QString">/var/lib/schroot/chroots/click-ubuntu-sdk-14.10-armhf</value>
401- <value type="QString">/var/lib/schroot/chroots/click-ubuntu-sdk-14.10-armhf</value>
402- </valuelist>
403- <valuelist type="QVariantList" key="Qt4ProjectManager.MaemoRunConfiguration.LastDeployedTimes">
404- <value type="QDateTime">2014-12-26T20:00:20</value>
405- <value type="QDateTime">2014-12-26T20:00:20</value>
406+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{fd99a68b-4f93-48ba-87de-b3da78511de0}</value>
407+ <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
408+ <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
409+ <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
410+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
411+ <value type="bool" key="CMakeProjectManager.CMakeBuildConfiguration.UseNinja">false</value>
412+ <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/frans/build-cachemere-UbuntuSDK_for_armhf_GCC_ubuntu_sdk_14_10_utopic-Default</value>
413+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
414+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
415+ <value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
416+ <valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets"/>
417+ <value type="bool" key="CMakeProjectManager.MakeStep.Clean">false</value>
418+ <value type="bool" key="CMakeProjectManager.MakeStep.UseNinja">false</value>
419+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
420+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Ubuntu SDK Make</value>
421+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
422+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">UbuntuProjectManager.UbuntuCMake.MakeStep</value>
423+ </valuemap>
424+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
425+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
426+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
427+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
428+ </valuemap>
429+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
430+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
431+ <value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments">clean</value>
432+ <valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets"/>
433+ <value type="bool" key="CMakeProjectManager.MakeStep.Clean">true</value>
434+ <value type="bool" key="CMakeProjectManager.MakeStep.UseNinja">false</value>
435+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
436+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Ubuntu SDK Make</value>
437+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
438+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">UbuntuProjectManager.UbuntuCMake.MakeStep</value>
439+ </valuemap>
440+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
441+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
442+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
443+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
444+ </valuemap>
445+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
446+ <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
447+ <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
448+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Default</value>
449+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Default</value>
450+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">UbuntuProjectManager.UbuntuCMake.BuildConfiguration</value>
451+ </valuemap>
452+ <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">1</value>
453+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
454+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
455+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
456+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
457+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">UbuntuSDK Click build</value>
458+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
459+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">UbuntuProjectManager.ClickPackageStep</value>
460+ <value type="int" key="Ubuntu.UbuntuPackageStep.PackageMode">1</value>
461+ </valuemap>
462+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
463+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
464+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Upload files to Ubuntu Device</value>
465+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
466+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">UbuntuProjectManager.UploadStep</value>
467+ <valuelist type="QVariantList" key="Qt4ProjectManager.MaemoRunConfiguration.LastDeployedFiles">
468+ <value type="QString">/home/frans/build-cachemere-UbuntuSDK_for_armhf_GCC_ubuntu_sdk_14_10_utopic-Default/com.mikeasoft.cachemere_0.2_armhf.click</value>
469+ <value type="QString">/usr/share/qtcreator/ubuntu/scripts/qtc_device_applaunch.py</value>
470+ </valuelist>
471+ <valuelist type="QVariantList" key="Qt4ProjectManager.MaemoRunConfiguration.LastDeployedHosts">
472+ <value type="QString">127.0.0.1</value>
473+ <value type="QString">127.0.0.1</value>
474+ </valuelist>
475+ <valuelist type="QVariantList" key="Qt4ProjectManager.MaemoRunConfiguration.LastDeployedRemotePaths">
476+ <value type="QString">/tmp</value>
477+ <value type="QString">/tmp</value>
478+ </valuelist>
479+ <valuelist type="QVariantList" key="Qt4ProjectManager.MaemoRunConfiguration.LastDeployedSysroots">
480+ <value type="QString">/var/lib/schroot/chroots/click-ubuntu-sdk-14.10-armhf</value>
481+ <value type="QString">/var/lib/schroot/chroots/click-ubuntu-sdk-14.10-armhf</value>
482+ </valuelist>
483+ <valuelist type="QVariantList" key="Qt4ProjectManager.MaemoRunConfiguration.LastDeployedTimes">
484+ <value type="QDateTime">2015-04-16T21:21:00</value>
485+ <value type="QDateTime">2015-04-16T21:21:00</value>
486 </valuelist>
487 </valuemap>
488 <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
489@@ -609,11 +320,11 @@
490 </data>
491 <data>
492 <variable>ProjectExplorer.Project.TargetCount</variable>
493- <value type="int">4</value>
494+ <value type="int">2</value>
495 </data>
496 <data>
497 <variable>ProjectExplorer.Project.Updater.EnvironmentId</variable>
498- <value type="QByteArray">{3ee15b72-49ad-410a-9e6d-9cdc390d3098}</value>
499+ <value type="QByteArray">{301698f8-cb63-45e5-8611-02ab8c5ad174}</value>
500 </data>
501 <data>
502 <variable>ProjectExplorer.Project.Updater.FileVersion</variable>
503
504=== modified file 'app/cachemere.qml'
505--- app/cachemere.qml 2014-12-26 20:50:55 +0000
506+++ app/cachemere.qml 2015-04-16 19:24:14 +0000
507@@ -1,5 +1,6 @@
508 import QtQuick 2.0
509 import Ubuntu.Components 1.1
510+import QtQml 2.2
511 import Cachemere 1.0
512 import "ui"
513
514@@ -35,11 +36,29 @@
515 objectName: "mapTab"
516 }
517
518+ CompassTab {
519+ id: compassTab
520+ objectName: "compassTab"
521+ }
522+
523 BrowserTab {
524 id: browserTab
525 objectName: "browserTab"
526 }
527
528 }
529+ Component.onCompleted: {
530+
531+ console.log("Locale:", Qt.locale().measurementSystem, " ", Locale.MetricSystem);
532+ if(Qt.locale().measurementSystem==Locale.MetricSystem)
533+ {
534+ root.miles = false;
535+ }
536+ else
537+ {
538+ root.miles = true;
539+ }
540+ }
541+
542 }
543
544
545=== modified file 'app/ui/CMakeLists.txt'
546--- app/ui/CMakeLists.txt 2014-12-26 20:50:55 +0000
547+++ app/ui/CMakeLists.txt 2015-04-16 19:24:14 +0000
548@@ -1,4 +1,4 @@
549-file(GLOB UI_QML_JS_FILES *.qml *.js *.wav)
550+file(GLOB UI_QML_JS_FILES *.qml *.js *.wav *.svg)
551
552 # Make the files visible in the qtcreator tree
553 add_custom_target(cachemere_ui_QMlFiles ALL SOURCES ${UI_QML_JS_FILES})
554
555=== added file 'app/ui/CompassTab.qml'
556--- app/ui/CompassTab.qml 1970-01-01 00:00:00 +0000
557+++ app/ui/CompassTab.qml 2015-04-16 19:24:14 +0000
558@@ -0,0 +1,200 @@
559+/*
560+ * Copyright 2014 Frans Schreuder <info@schreuderelectronics.com>
561+ *
562+ * This file is part of Cachemere.
563+ *
564+ * Cachemere is free software; you can redistribute it and/or modify
565+ * it under the terms of the GNU General Public License as published by
566+ * the Free Software Foundation; version 3.
567+ *
568+ * Cachemere is distributed in the hope that it will be useful,
569+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
570+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
571+ * GNU General Public License for more details.
572+ *
573+ * You should have received a copy of the GNU General Public License
574+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
575+ */
576+
577+import QtQuick 2.0
578+import Ubuntu.Components 1.1
579+import Ubuntu.Web 0.2
580+import Ubuntu.Components.Popups 1.0
581+import QtLocation 5.0
582+import QtPositioning 5.2
583+import Cachemere 1.0
584+import "."
585+import "utils.js" as Utils
586+Tab {
587+ title: i18n.tr("Compass")
588+
589+ page: Page {
590+ Flickable {
591+ id: compassPage
592+ anchors.centerIn: parent
593+ width: parent.width - units.gu(4)
594+ height: parent.height - units.gu(4)
595+ contentWidth: width; contentHeight: col.height
596+ clip: true
597+ Column{
598+ id: col
599+ width: parent.width;
600+ spacing: units.gu(2)
601+ Label {
602+
603+ id: distance
604+ width: parent.width
605+ wrapMode: Text.WordWrap
606+ text: i18n.tr("Waiting for fix...")
607+ }
608+ Row{
609+ width: parent.width
610+ height: parent.width
611+ Image {
612+ anchors.top: distance.bottom
613+ anchors.left: distance.left
614+ anchors.topMargin: units.gu(2)
615+ id: compass
616+ width: parent.width
617+ height: parent.width
618+ source: "compass.svg"
619+ }
620+ Image {
621+ id: nesw
622+ anchors.centerIn: compass
623+ width: parent.width
624+ height: parent.width
625+ source: "NESW.svg"
626+ }
627+ }
628+
629+ Label {
630+ id: lPosition
631+ width: parent.width
632+ wrapMode: Text.WordWrap
633+ text: "<b>" + i18n.tr("Position:") + " </b>" + ((src.position.latitudeValid == true)?Utils.displayCoordinates(src.position.coordinate.latitude, src.position.coordinate.longitude): i18n.tr("Waiting for fix"))
634+
635+ }
636+ Column{
637+ width: parent.width
638+ visible: root.activeGeocache!=null
639+ spacing: units.gu(2)
640+ OptionSelector{
641+ id: sWaypoints
642+ width: parent.width
643+ expanded: false
644+ model: root.activeGeocache.waypoints
645+ delegate: selectorDelegate
646+ }
647+
648+ Component {
649+ id: selectorDelegate
650+ OptionSelectorDelegate {
651+ text: model.name
652+ subText: Utils.displayCoordinates(model.latitude, model.longitude)
653+ }
654+ }
655+
656+
657+
658+ Row{
659+ spacing: units.gu(2)
660+ width: parent.width
661+ Button {
662+ id: addWaypoint
663+ width: (parent.width-units.gu(4))/3 //parent.width
664+ height: width
665+ iconName: "add"
666+ onClicked: {
667+ var wpName;
668+ wpName = "WP"+(root.activeGeocache.waypoints.length);
669+ root.activeGeocache.modelData.addWaypoint(wpName,
670+ src.position.coordinate.latitude,
671+ src.position.coordinate.longitude);
672+ PopupUtils.open(wpDialog);
673+ }
674+ }
675+ Button {
676+ id: editWaypoint
677+ width: addWaypoint.width
678+ height: width
679+ iconName: "edit"
680+ enabled: (sWaypoints.selectedIndex!=0)
681+ onClicked: {
682+ root.activeGeocache.currentwaypoint = sWaypoints.selectedIndex;
683+ PopupUtils.open(wpDialog);
684+ }
685+ }
686+ Button {
687+ id: eraseWaypoint
688+ width: addWaypoint.width
689+ height: width
690+ iconName: "delete"
691+ enabled: (sWaypoints.selectedIndex!=0)
692+ onClicked: {
693+ root.activeGeocache.modelData.deleteWaypoint(sWaypoints.selectedIndex);
694+ root.activeGeocache.modelData.updateWaypoints();
695+ }
696+ }
697+
698+ }
699+ }
700+ WaypointDialog {
701+ id: wpDialog
702+ }
703+ }
704+ }
705+
706+
707+ PositionSource {
708+ id: src
709+ active: true
710+ updateInterval: 10000
711+
712+ onPositionChanged: {
713+
714+ lPosition.update;
715+ distance.update;
716+ var coord = src.position.coordinate;
717+ var targetDirection = 0;
718+ var movingDirection = -1*nesw.rotation;
719+ if(root.activeGeocache!=null){
720+ var targetlat = root.activeGeocache.waypoints[sWaypoints.selectedIndex].latitude;
721+ var targetlon = root.activeGeocache.waypoints[sWaypoints.selectedIndex].longitude;
722+ targetDirection = Utils.calculateDirection(coord.longitude, coord.latitude,targetlon, targetlat);
723+ distance.text = src.position.latitudeValid ? "<b>" + i18n.tr("Distance:") + "</b> " + Utils.displayDistance(src.position.coordinate.latitude, src.position.coordinate.longitude,
724+ targetlat,
725+ targetlon, root.miles) : "<b>" + i18n.tr("Distance:") + "</b> " + i18n.tr("Waiting for fix...");
726+ }
727+ if(Utils.lastCoordLon != coord.longitude || Utils.lastCoordLat != coord.latitude)
728+ {
729+ if(src.position.latitudeValid){
730+ movingDirection = Utils.calculateDirection(Utils.lastCoordLon,Utils.lastCoordLat,coord.longitude, coord.latitude);
731+ nesw.rotation = -1*movingDirection;
732+ Utils.lastCoordLon = coord.longitude;
733+ Utils.lastCoordLat = coord.latitude;
734+ }
735+ }
736+ else
737+ {
738+ nesw.rotation = nesw.rotation;
739+ }
740+
741+ if(root.activeGeocache != null)
742+ {
743+ if(src.position.latitudeValid){
744+ compass.rotation = targetDirection - movingDirection;
745+ }
746+ }
747+ else
748+ {
749+ if(src.position.latitudeValid){
750+ compass.rotation = -1*movingDirection;
751+ }
752+ }
753+ }
754+ }
755+ }
756+}
757+
758+
759
760=== modified file 'app/ui/DetailsTab.qml'
761--- app/ui/DetailsTab.qml 2014-12-26 20:50:55 +0000
762+++ app/ui/DetailsTab.qml 2015-04-16 19:24:14 +0000
763@@ -54,7 +54,7 @@
764 Label {
765 width: parent.width
766 wrapMode: Text.WordWrap
767- text: "<b>" + i18n.tr("Name:") + " </b>" + root.activeGeocache.name + " (" + root.activeGeocache.id + ")"
768+ text: root.activeGeocache!=null?"<b>" + i18n.tr("Name:") + " </b>" + root.activeGeocache.name + " (" + root.activeGeocache.id + ")":""
769 }
770
771 Label {
772@@ -113,8 +113,72 @@
773 text: i18n.tr("View cache page")
774 onClicked: {
775 browserTab.url = root.activeGeocache.url;
776- tabs.selectedTabIndex = 3;
777- }
778+ tabs.selectedTabIndex = 4;
779+ }
780+ }
781+ Label{
782+ width: parent.width
783+ text: "<b>" + i18n.tr("Waypoints") + "</b>"
784+ }
785+
786+ OptionSelector{
787+ id: sWaypoints
788+ width: parent.width
789+ expanded: false
790+ model: root.activeGeocache.waypoints
791+ delegate: selectorDelegate
792+ }
793+
794+ Component {
795+ id: selectorDelegate
796+ OptionSelectorDelegate {
797+ text: model.name
798+ subText: Utils.displayCoordinates(model.latitude, model.longitude)
799+ }
800+ }
801+ WaypointDialog {
802+ id: wpDialog
803+ }
804+ Row{
805+ spacing: units.gu(2)
806+ width: parent.width
807+ Button {
808+ id: addWaypoint
809+ width: (parent.width-units.gu(4))/3 //parent.width
810+ height: width
811+ iconName: "add"
812+ onClicked: {
813+ var wpName;
814+ wpName = "WP"+(root.activeGeocache.waypoints.length);
815+ root.activeGeocache.modelData.addWaypoint(wpName,
816+ src.position.coordinate.latitude,
817+ src.position.coordinate.longitude);
818+ PopupUtils.open(wpDialog);
819+ }
820+ }
821+ Button {
822+ id: editWaypoint
823+ width: addWaypoint.width
824+ height: width
825+ iconName: "edit"
826+ enabled: (sWaypoints.selectedIndex!=0)
827+ onClicked: {
828+ root.activeGeocache.currentwaypoint = sWaypoints.selectedIndex;
829+ PopupUtils.open(wpDialog);
830+ }
831+ }
832+ Button {
833+ id: eraseWaypoint
834+ width: addWaypoint.width
835+ height: width
836+ iconName: "delete"
837+ enabled: (sWaypoints.selectedIndex!=0)
838+ onClicked: {
839+ root.activeGeocache.modelData.deleteWaypoint(sWaypoints.selectedIndex);
840+ root.activeGeocache.modelData.updateWaypoints();
841+ }
842+ }
843+
844 }
845 }
846 }
847@@ -132,7 +196,6 @@
848 active: true
849 updateInterval: 60000
850 }
851-
852 }
853 }
854
855
856=== modified file 'app/ui/GeocachesTab.qml'
857--- app/ui/GeocachesTab.qml 2014-12-26 20:50:55 +0000
858+++ app/ui/GeocachesTab.qml 2015-04-16 19:24:14 +0000
859@@ -67,8 +67,8 @@
860 MouseArea {
861 anchors.fill: parent
862 onClicked: {
863- root.activeGeocache = model
864- tabs.selectedTabIndex = 2
865+ root.activeGeocache = model;
866+ tabs.selectedTabIndex = 2;
867 }
868 }
869 }
870@@ -90,7 +90,7 @@
871 anchors.margins: units.gu(2)
872 text: i18n.tr("Download Geocaches")
873 onClicked: {
874- tabs.selectedTabIndex = 3
875+ tabs.selectedTabIndex = 4
876 }
877 }
878
879
880=== modified file 'app/ui/MapTab.qml'
881--- app/ui/MapTab.qml 2014-12-26 20:50:55 +0000
882+++ app/ui/MapTab.qml 2015-04-16 19:24:14 +0000
883@@ -96,6 +96,8 @@
884 }
885 }
886
887+
888+
889 MapItemView {
890 id: cacheView
891
892@@ -122,6 +124,35 @@
893 }
894 }
895
896+ /**
897+ * @FIXME: Waypoints not shown on map.
898+ */
899+ MapItemView {
900+ id: waypointView
901+
902+ model: root.activeGeocache.waypoints
903+ Component.onCompleted: { console.log("Waypoints Length: " + root.activeGeocache.waypoints.length) }
904+ delegate: MapQuickItem {
905+ coordinate.latitude: model.latitude
906+ coordinate.longitude: model.longitude
907+
908+ Component.onCompleted: { console.log("Loaded: " + name + ", latitude: " + latitude ) }
909+
910+ anchorPoint.x: sourceItem.width / 2
911+ anchorPoint.y: sourceItem.height / 2
912+
913+ sourceItem: Rectangle {
914+ width: units.gu(2)
915+ height: units.gu(2)
916+ color: "red"
917+ opacity: 0.5
918+ border.color: "black"
919+
920+ }
921+ }
922+ }
923+
924+
925 MapQuickItem {
926 id: activeCacheView
927
928@@ -169,6 +200,10 @@
929 }
930 }
931
932+
933+
934+
935+
936 Rectangle {
937 anchors {
938 right: parent.right
939@@ -211,7 +246,7 @@
940 anchors.rightMargin: units.gu(2)
941 anchors.verticalCenter: parent.verticalCenter
942 visible: src.position.latitudeValid
943- text: "<b>" + Utils.displayDistance(src.position.coordinate.latitude, src.position.coordinate.longitude, root.activeGeocache.latitude, root.activeGeocache.longitude, root.miles) + "</b>"
944+ text: src.position.latitudeValid?"<b>" + Utils.displayDistance(src.position.coordinate.latitude, src.position.coordinate.longitude, root.activeGeocache.latitude, root.activeGeocache.longitude, root.miles) + "</b>":"<b></b>"
945 }
946
947 }
948@@ -221,6 +256,7 @@
949 source: "beep.wav"
950 }
951
952+
953 PositionSource {
954 id: src
955 active: true
956@@ -236,6 +272,8 @@
957 beeped = false
958 }
959
960+
961+
962 map.updateUserPosition(position)
963 }
964 }
965
966=== added file 'app/ui/NESW.svg'
967--- app/ui/NESW.svg 1970-01-01 00:00:00 +0000
968+++ app/ui/NESW.svg 2015-04-16 19:24:14 +0000
969@@ -0,0 +1,166 @@
970+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
971+<!-- Created with Inkscape (http://www.inkscape.org/) -->
972+
973+<svg
974+ xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
975+ xmlns:dc="http://purl.org/dc/elements/1.1/"
976+ xmlns:cc="http://creativecommons.org/ns#"
977+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
978+ xmlns:svg="http://www.w3.org/2000/svg"
979+ xmlns="http://www.w3.org/2000/svg"
980+ xmlns:xlink="http://www.w3.org/1999/xlink"
981+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
982+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
983+ id="svg3071"
984+ version="1.1"
985+ inkscape:version="0.48.4 r9939"
986+ width="448"
987+ height="448"
988+ sodipodi:docname="NESW.svg">
989+ <metadata
990+ id="metadata3077">
991+ <rdf:RDF>
992+ <cc:Work
993+ rdf:about="">
994+ <dc:format>image/svg+xml</dc:format>
995+ <dc:type
996+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
997+ <dc:title></dc:title>
998+ </cc:Work>
999+ </rdf:RDF>
1000+ </metadata>
1001+ <defs
1002+ id="defs3075">
1003+ <linearGradient
1004+ id="linearGradient5602">
1005+ <stop
1006+ id="stop5604"
1007+ offset="0"
1008+ style="stop-color:#000000;stop-opacity:1;" />
1009+ <stop
1010+ style="stop-color:#000000;stop-opacity:0.49803922;"
1011+ offset="0.5"
1012+ id="stop5606" />
1013+ <stop
1014+ id="stop5608"
1015+ offset="1"
1016+ style="stop-color:#000000;stop-opacity:0;" />
1017+ </linearGradient>
1018+ <linearGradient
1019+ id="linearGradient5592">
1020+ <stop
1021+ style="stop-color:#000000;stop-opacity:0;"
1022+ offset="0"
1023+ id="stop5610" />
1024+ <stop
1025+ id="stop5652"
1026+ offset="0.83999997"
1027+ style="stop-color:#808080;stop-opacity:1;" />
1028+ <stop
1029+ id="stop5622"
1030+ offset="0.93000001"
1031+ style="stop-color:#000000;stop-opacity:1;" />
1032+ <stop
1033+ id="stop5650"
1034+ offset="1"
1035+ style="stop-color:#808080;stop-opacity:1;" />
1036+ </linearGradient>
1037+ <linearGradient
1038+ id="linearGradient5582"
1039+ osb:paint="solid">
1040+ <stop
1041+ style="stop-color:#000000;stop-opacity:1;"
1042+ offset="0"
1043+ id="stop5584" />
1044+ </linearGradient>
1045+ <radialGradient
1046+ inkscape:collect="always"
1047+ xlink:href="#linearGradient5592"
1048+ id="radialGradient5598"
1049+ cx="225"
1050+ cy="228.5"
1051+ fx="225"
1052+ fy="228.5"
1053+ r="231.56505"
1054+ gradientTransform="matrix(1,0,0,1.0237514,0,-5.4272006)"
1055+ gradientUnits="userSpaceOnUse"
1056+ spreadMethod="reflect" />
1057+ </defs>
1058+ <sodipodi:namedview
1059+ pagecolor="#ffffff"
1060+ bordercolor="#666666"
1061+ borderopacity="1"
1062+ objecttolerance="10"
1063+ gridtolerance="10000"
1064+ guidetolerance="10"
1065+ inkscape:pageopacity="0"
1066+ inkscape:pageshadow="2"
1067+ inkscape:window-width="1871"
1068+ inkscape:window-height="1176"
1069+ id="namedview3073"
1070+ showgrid="true"
1071+ inkscape:zoom="0.5"
1072+ inkscape:cx="-676.22107"
1073+ inkscape:cy="454.28616"
1074+ inkscape:window-x="49"
1075+ inkscape:window-y="24"
1076+ inkscape:window-maximized="1"
1077+ inkscape:current-layer="svg3071">
1078+ <inkscape:grid
1079+ type="xygrid"
1080+ id="grid3882"
1081+ empspacing="5"
1082+ visible="true"
1083+ enabled="true"
1084+ snapvisiblegridlinesonly="true" />
1085+ </sodipodi:namedview>
1086+ <text
1087+ xml:space="preserve"
1088+ style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
1089+ x="213.55196"
1090+ y="26.200001"
1091+ id="text5692"
1092+ sodipodi:linespacing="125%"><tspan
1093+ sodipodi:role="line"
1094+ id="tspan5694"
1095+ x="213.55196"
1096+ y="26.200001"
1097+ style="font-size:28px;fill:#ffffff;fill-opacity:1">N</tspan></text>
1098+ <text
1099+ xml:space="preserve"
1100+ style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
1101+ x="423.19995"
1102+ y="233.89999"
1103+ id="text5696"
1104+ sodipodi:linespacing="125%"><tspan
1105+ sodipodi:role="line"
1106+ id="tspan5698"
1107+ x="423.19995"
1108+ y="233.89999"
1109+ style="font-size:28px;fill:#ffffff;fill-opacity:1">E</tspan></text>
1110+ <text
1111+ xml:space="preserve"
1112+ style="font-size:11.99994087px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
1113+ x="215.00136"
1114+ y="442.5473"
1115+ id="text5700"
1116+ sodipodi:linespacing="125%"
1117+ transform="scale(0.99999511,1.0000049)"><tspan
1118+ sodipodi:role="line"
1119+ id="tspan5702"
1120+ x="215.00136"
1121+ y="442.5473"
1122+ style="font-size:27.99986267px;fill:#ffffff;fill-opacity:1">S</tspan></text>
1123+ <text
1124+ xml:space="preserve"
1125+ style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
1126+ x="2.0503149"
1127+ y="234.1501"
1128+ id="text5704"
1129+ sodipodi:linespacing="125%"><tspan
1130+ sodipodi:role="line"
1131+ id="tspan5706"
1132+ x="2.0503149"
1133+ y="234.1501"
1134+ style="font-size:28px;fill:#ffffff;fill-opacity:1">W</tspan></text>
1135+</svg>
1136
1137=== added file 'app/ui/WaypointDialog.qml'
1138--- app/ui/WaypointDialog.qml 1970-01-01 00:00:00 +0000
1139+++ app/ui/WaypointDialog.qml 2015-04-16 19:24:14 +0000
1140@@ -0,0 +1,284 @@
1141+/*
1142+ * Copyright 2013-2014 Canonical Ltd.
1143+ *
1144+ * This file is part of cachemere.
1145+ *
1146+ * webbrowser-app is free software; you can redistribute it and/or modify
1147+ * it under the terms of the GNU General Public License as published by
1148+ * the Free Software Foundation; version 3.
1149+ *
1150+ * webbrowser-app is distributed in the hope that it will be useful,
1151+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
1152+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1153+ * GNU General Public License for more details.
1154+ *
1155+ * You should have received a copy of the GNU General Public License
1156+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
1157+ */
1158+
1159+import QtQuick 2.0
1160+import Ubuntu.Components 1.1
1161+import Ubuntu.Components.Popups 1.0
1162+import Ubuntu.Components.Pickers 1.0
1163+
1164+import Ubuntu.Components.ListItems 1.0
1165+import "utils.js" as Utils
1166+Component{
1167+ id: comp
1168+ Dialog {
1169+ id: dialogue
1170+ title: i18n.tr("Edit Waypoint")
1171+ //text: ""
1172+ modal: true
1173+ TextEdit{
1174+ width: parent.width
1175+ id: wpName
1176+ }
1177+
1178+ Row{
1179+ width: parent.width
1180+ Picker {
1181+ id: latNSPicker
1182+
1183+ selectedIndex: 0 // this will be set to 0 at the model completion
1184+ width: units.gu(4)
1185+ height: units.gu(12)
1186+ circular: true
1187+ delegate: PickerDelegate {
1188+ Label {
1189+ text: modelData
1190+ }
1191+ }
1192+ Component.onCompleted: {
1193+ var stack = [];
1194+ stack.push(" N");
1195+ stack.push(" S");
1196+ model = stack;
1197+ selectedIndex = 0;
1198+ }
1199+ }
1200+ Picker {
1201+ id: latDegPicker
1202+
1203+ selectedIndex: 0 // this will be set to 0 at the model completion
1204+ width: units.gu(6)
1205+ height: units.gu(12)
1206+ circular: true
1207+ delegate: PickerDelegate {
1208+ Label {
1209+ text: modelData
1210+ }
1211+ }
1212+ Component.onCompleted: {
1213+ var stack = [];
1214+ for (var i = 0; i < 180; i++) {
1215+ stack.push(" "+i);
1216+ }
1217+ model = stack;
1218+ selectedIndex = 0;
1219+ }
1220+ }
1221+ Label{
1222+ text: "°"
1223+ font.pixelSize: units.gu(12)
1224+ }
1225+
1226+ Picker {
1227+ id: latMinPicker
1228+ selectedIndex: 0 // this will be set to 0 at the model completion
1229+ width: units.gu(6)
1230+ height: units.gu(12)
1231+ circular: true
1232+ delegate: PickerDelegate {
1233+ Label {
1234+ text: modelData
1235+ }
1236+ }
1237+ Component.onCompleted: {
1238+ var stack = [];
1239+ for (var i = 0; i < 60; i++) {
1240+ stack.push(" "+i);
1241+ }
1242+ model = stack;
1243+ selectedIndex = 0;
1244+ }
1245+ }
1246+ Label{
1247+ text: "."
1248+ font.pixelSize: units.gu(12)
1249+ }
1250+
1251+ Picker {
1252+ id: latFracPicker
1253+ selectedIndex: 0 // this will be set to 0 at the model completion
1254+ width: units.gu(6)
1255+ height: units.gu(12)
1256+ circular: true
1257+ delegate: PickerDelegate {
1258+ Label {
1259+ text: modelData
1260+ }
1261+ }
1262+ Component.onCompleted: {
1263+ var stack = [];
1264+ for (var i = 0; i < 1000; i++) {
1265+ stack.push(" "+i);
1266+ }
1267+ model = stack;
1268+ selectedIndex = 0;
1269+ }
1270+ }
1271+ }
1272+ Row{
1273+ width: parent.width
1274+ Picker {
1275+ id: lonEWPicker
1276+
1277+ selectedIndex: 0 // this will be set to 0 at the model completion
1278+ width: units.gu(4)
1279+ height: units.gu(12)
1280+ circular: true
1281+ delegate: PickerDelegate {
1282+ Label {
1283+ text: modelData
1284+ }
1285+ }
1286+ Component.onCompleted: {
1287+ var stack = [];
1288+ stack.push(" E");
1289+ stack.push(" W");
1290+ model = stack;
1291+ selectedIndex = 0;
1292+ }
1293+ }
1294+ Picker {
1295+ id: lonDegPicker
1296+
1297+ selectedIndex: 0 // this will be set to 0 at the model completion
1298+ width: units.gu(6)
1299+ height: units.gu(12)
1300+ circular: true
1301+ delegate: PickerDelegate {
1302+ Label {
1303+ text: modelData
1304+ }
1305+ }
1306+ Component.onCompleted: {
1307+ var stack = [];
1308+ for (var i = 0; i < 90; i++) {
1309+ stack.push(" "+i);
1310+ }
1311+ model = stack;
1312+ selectedIndex = 0;
1313+ }
1314+ }
1315+ Label{
1316+ text: "°"
1317+ font.pixelSize: units.gu(12)
1318+ }
1319+
1320+ Picker {
1321+ id: lonMinPicker
1322+ selectedIndex: 0 // this will be set to 0 at the model completion
1323+ width: units.gu(6)
1324+ height: units.gu(12)
1325+ circular: true
1326+ delegate: PickerDelegate {
1327+ Label {
1328+ text: modelData
1329+ }
1330+ }
1331+ Component.onCompleted: {
1332+ var stack = [];
1333+ for (var i = 0; i < 60; i++) {
1334+ stack.push(" "+i);
1335+ }
1336+ model = stack;
1337+ selectedIndex = 0;
1338+ }
1339+ }
1340+ Label{
1341+ text: "."
1342+ font.pixelSize: units.gu(12)
1343+ }
1344+
1345+ Picker {
1346+ id: lonFracPicker
1347+ selectedIndex: 0 // this will be set to 0 at the model completion
1348+ width: units.gu(6)
1349+ height: units.gu(12)
1350+ circular: true
1351+ delegate: PickerDelegate {
1352+ Label {
1353+ text: modelData
1354+ }
1355+ }
1356+ Component.onCompleted: {
1357+ var stack = [];
1358+ for (var i = 0; i < 1000; i++) {
1359+ stack.push(" "+i);
1360+ }
1361+ model = stack;
1362+ selectedIndex = 0;
1363+ }
1364+ }
1365+ }
1366+ Button {
1367+ text: i18n.tr("Close")
1368+ onClicked: {
1369+
1370+ var activeLat = (latNSPicker.selectedIndex*2-1)*-1 *
1371+ (latDegPicker.selectedIndex+
1372+ latMinPicker.selectedIndex/60+
1373+ latFracPicker.selectedIndex/60000);
1374+ var activeLon = (lonEWPicker.selectedIndex*2-1)*-1 *
1375+ (lonDegPicker.selectedIndex+
1376+ lonMinPicker.selectedIndex/60+
1377+ lonFracPicker.selectedIndex/60000);
1378+ root.activeGeocache.modelData.setWaypoint(root.activeGeocache.currentwaypoint,
1379+ wpName.text, activeLat, activeLon);
1380+ PopupUtils.close(dialogue);
1381+ root.activeGeocache.modelData.updateWaypoints();
1382+
1383+ }
1384+ }
1385+ onVisibleChanged: {
1386+ if(visible)
1387+ {
1388+ //dialer.value = Math.floor(root.activeGeocache.latitude);
1389+ var curLat;
1390+ var curLon;
1391+ var i = root.activeGeocache.currentwaypoint;
1392+ var wp = root.activeGeocache.modelData.getWaypoint(i);
1393+
1394+ curLat = wp.latitude;
1395+ curLon = wp.longitude;
1396+
1397+ wpName.text = wp.name;
1398+ if(curLat<0)
1399+ {
1400+ latNSPicker.selectedIndex = 1;
1401+ curLat *= -1;
1402+ }
1403+ if(curLon<0)
1404+ {
1405+ lonEWPicker.selectedIndex = 1;
1406+ curLon *= -1;
1407+ }
1408+ latDegPicker.selectedIndex = Math.floor(curLat);
1409+ curLat = (curLat-Math.floor(curLat))*60;
1410+ latMinPicker.selectedIndex = Math.floor(curLat);
1411+ curLat = (curLat-Math.floor(curLat))*1000;
1412+ latFracPicker.selectedIndex = Math.floor(curLat);
1413+
1414+ lonDegPicker.selectedIndex = Math.floor(curLon);
1415+ curLon = (curLon-Math.floor(curLon))*60;
1416+ lonMinPicker.selectedIndex = Math.floor(curLon);
1417+ curLon = (curLon-Math.floor(curLon))*1000;
1418+ lonFracPicker.selectedIndex = Math.floor(curLon);
1419+
1420+
1421+ }
1422+ }
1423+ }
1424+}
1425
1426=== added file 'app/ui/compass.svg'
1427--- app/ui/compass.svg 1970-01-01 00:00:00 +0000
1428+++ app/ui/compass.svg 2015-04-16 19:24:14 +0000
1429@@ -0,0 +1,255 @@
1430+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1431+<!-- Created with Inkscape (http://www.inkscape.org/) -->
1432+
1433+<svg
1434+ xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
1435+ xmlns:dc="http://purl.org/dc/elements/1.1/"
1436+ xmlns:cc="http://creativecommons.org/ns#"
1437+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
1438+ xmlns:svg="http://www.w3.org/2000/svg"
1439+ xmlns="http://www.w3.org/2000/svg"
1440+ xmlns:xlink="http://www.w3.org/1999/xlink"
1441+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
1442+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
1443+ id="svg3071"
1444+ version="1.1"
1445+ inkscape:version="0.48.4 r9939"
1446+ width="448"
1447+ height="448"
1448+ sodipodi:docname="compass.png">
1449+ <metadata
1450+ id="metadata3077">
1451+ <rdf:RDF>
1452+ <cc:Work
1453+ rdf:about="">
1454+ <dc:format>image/svg+xml</dc:format>
1455+ <dc:type
1456+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
1457+ <dc:title></dc:title>
1458+ </cc:Work>
1459+ </rdf:RDF>
1460+ </metadata>
1461+ <defs
1462+ id="defs3075">
1463+ <linearGradient
1464+ id="linearGradient5602">
1465+ <stop
1466+ id="stop5604"
1467+ offset="0"
1468+ style="stop-color:#000000;stop-opacity:1;" />
1469+ <stop
1470+ style="stop-color:#000000;stop-opacity:0.49803922;"
1471+ offset="0.5"
1472+ id="stop5606" />
1473+ <stop
1474+ id="stop5608"
1475+ offset="1"
1476+ style="stop-color:#000000;stop-opacity:0;" />
1477+ </linearGradient>
1478+ <linearGradient
1479+ id="linearGradient5592">
1480+ <stop
1481+ style="stop-color:#000000;stop-opacity:0;"
1482+ offset="0"
1483+ id="stop5610" />
1484+ <stop
1485+ id="stop5652"
1486+ offset="0.83999997"
1487+ style="stop-color:#808080;stop-opacity:1;" />
1488+ <stop
1489+ id="stop5622"
1490+ offset="0.93000001"
1491+ style="stop-color:#000000;stop-opacity:1;" />
1492+ <stop
1493+ id="stop5650"
1494+ offset="1"
1495+ style="stop-color:#808080;stop-opacity:1;" />
1496+ </linearGradient>
1497+ <linearGradient
1498+ id="linearGradient5582"
1499+ osb:paint="solid">
1500+ <stop
1501+ style="stop-color:#000000;stop-opacity:1;"
1502+ offset="0"
1503+ id="stop5584" />
1504+ </linearGradient>
1505+ <radialGradient
1506+ inkscape:collect="always"
1507+ xlink:href="#linearGradient5592"
1508+ id="radialGradient5598"
1509+ cx="225"
1510+ cy="228.5"
1511+ fx="225"
1512+ fy="228.5"
1513+ r="231.56505"
1514+ gradientTransform="matrix(1,0,0,1.0237514,0,-5.4272006)"
1515+ gradientUnits="userSpaceOnUse"
1516+ spreadMethod="reflect" />
1517+ </defs>
1518+ <sodipodi:namedview
1519+ pagecolor="#ffffff"
1520+ bordercolor="#666666"
1521+ borderopacity="1"
1522+ objecttolerance="10"
1523+ gridtolerance="10000"
1524+ guidetolerance="10"
1525+ inkscape:pageopacity="0"
1526+ inkscape:pageshadow="2"
1527+ inkscape:window-width="1871"
1528+ inkscape:window-height="1176"
1529+ id="namedview3073"
1530+ showgrid="true"
1531+ inkscape:zoom="2"
1532+ inkscape:cx="237.40462"
1533+ inkscape:cy="258.11086"
1534+ inkscape:window-x="49"
1535+ inkscape:window-y="24"
1536+ inkscape:window-maximized="1"
1537+ inkscape:current-layer="svg3071">
1538+ <inkscape:grid
1539+ type="xygrid"
1540+ id="grid3882"
1541+ empspacing="5"
1542+ visible="true"
1543+ enabled="true"
1544+ snapvisiblegridlinesonly="true" />
1545+ </sodipodi:namedview>
1546+ <g
1547+ id="g4048"
1548+ transform="translate(0,-1)">
1549+ <g
1550+ id="g4044">
1551+ <path
1552+ style="fill:#ff0000;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
1553+ d="m 224,33 46,146 -46,46 z"
1554+ id="path3083"
1555+ inkscape:connector-curvature="0"
1556+ sodipodi:nodetypes="cccc" />
1557+ <path
1558+ style="fill:#de8787;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
1559+ d="m 224,33 -46,146 46,46 z"
1560+ id="path3083-0"
1561+ inkscape:connector-curvature="0"
1562+ sodipodi:nodetypes="cccc" />
1563+ </g>
1564+ <g
1565+ id="g4040">
1566+ <path
1567+ style="fill:#000000;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
1568+ d="M 32.000007,225 178,179 l 46,46 z"
1569+ id="path3083-4-6-5"
1570+ inkscape:connector-curvature="0"
1571+ sodipodi:nodetypes="cccc" />
1572+ <path
1573+ style="fill:#4d4d4d;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
1574+ d="m 32,225 146,46 46,-46 z"
1575+ id="path3083-4-6-5-7"
1576+ inkscape:connector-curvature="0"
1577+ sodipodi:nodetypes="cccc" />
1578+ </g>
1579+ <g
1580+ id="g4036">
1581+ <path
1582+ style="fill:#000000;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
1583+ d="M 224,417 178,271 224,225 z"
1584+ id="path3083-4-6"
1585+ inkscape:connector-curvature="0"
1586+ sodipodi:nodetypes="cccc" />
1587+ <path
1588+ style="fill:#4d4d4d;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
1589+ d="M 224,417 270,271 224,225 z"
1590+ id="path3083-4-6-5-7-7"
1591+ inkscape:connector-curvature="0"
1592+ sodipodi:nodetypes="cccc" />
1593+ </g>
1594+ <g
1595+ id="g4032">
1596+ <path
1597+ style="fill:#000000;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
1598+ d="M 416,225 270,271 224,225 z"
1599+ id="path3083-4"
1600+ inkscape:connector-curvature="0"
1601+ sodipodi:nodetypes="cccc" />
1602+ <path
1603+ style="fill:#4d4d4d;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
1604+ d="M 416,225 270,179 224,225 z"
1605+ id="path3083-4-6-5-7-7-9"
1606+ inkscape:connector-curvature="0"
1607+ sodipodi:nodetypes="cccc" />
1608+ </g>
1609+ </g>
1610+ <g
1611+ id="g4028"
1612+ transform="translate(0,-1)">
1613+ <path
1614+ sodipodi:nodetypes="cccc"
1615+ inkscape:connector-curvature="0"
1616+ id="path3083-4-6-5-7-7-9-2"
1617+ d="m 344,105 -61,39 5,17 z"
1618+ style="fill:#4d4d4d;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
1619+ <path
1620+ sodipodi:nodetypes="cccc"
1621+ inkscape:connector-curvature="0"
1622+ id="path3083-4-4"
1623+ d="m 344,105 -39,61 -17,-5 z"
1624+ style="fill:#000000;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
1625+ </g>
1626+ <g
1627+ id="g4028-9"
1628+ transform="matrix(0,1,-1,0,449,0)">
1629+ <path
1630+ sodipodi:nodetypes="cccc"
1631+ inkscape:connector-curvature="0"
1632+ id="path3083-4-6-5-7-7-9-2-6"
1633+ d="m 344,105 -61,39 5,17 z"
1634+ style="fill:#4d4d4d;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
1635+ <path
1636+ sodipodi:nodetypes="cccc"
1637+ inkscape:connector-curvature="0"
1638+ id="path3083-4-4-9"
1639+ d="m 344,105 -39,61 -17,-5 z"
1640+ style="fill:#000000;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
1641+ </g>
1642+ <g
1643+ id="g4028-9-7"
1644+ transform="matrix(-1,0,0,-1,448,449)">
1645+ <path
1646+ sodipodi:nodetypes="cccc"
1647+ inkscape:connector-curvature="0"
1648+ id="path3083-4-6-5-7-7-9-2-6-6"
1649+ d="m 344,105 -61,39 5,17 z"
1650+ style="fill:#4d4d4d;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
1651+ <path
1652+ sodipodi:nodetypes="cccc"
1653+ inkscape:connector-curvature="0"
1654+ id="path3083-4-4-9-1"
1655+ d="m 344,105 -39,61 -17,-5 z"
1656+ style="fill:#000000;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
1657+ </g>
1658+ <g
1659+ id="g4028-9-7-8"
1660+ transform="matrix(0,-1,1,0,-1,448)">
1661+ <path
1662+ sodipodi:nodetypes="cccc"
1663+ inkscape:connector-curvature="0"
1664+ id="path3083-4-6-5-7-7-9-2-6-6-5"
1665+ d="m 344,105 -61,39 5,17 z"
1666+ style="fill:#4d4d4d;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
1667+ <path
1668+ sodipodi:nodetypes="cccc"
1669+ inkscape:connector-curvature="0"
1670+ id="path3083-4-4-9-1-3"
1671+ d="m 344,105 -39,61 -17,-5 z"
1672+ style="fill:#000000;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
1673+ </g>
1674+ <path
1675+ sodipodi:type="arc"
1676+ style="fill:none;stroke:url(#radialGradient5598);stroke-width:33.13010962999999975;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
1677+ id="path4134"
1678+ sodipodi:cx="225"
1679+ sodipodi:cy="228.5"
1680+ sodipodi:rx="215"
1681+ sodipodi:ry="220.5"
1682+ d="m 440,228.5 a 215,220.5 0 1 1 -430,0 215,220.5 0 1 1 430,0 z"
1683+ transform="matrix(0.96820006,0,0,0.94404995,6.1549856,8.2845898)" />
1684+</svg>
1685
1686=== modified file 'app/ui/utils.js'
1687--- app/ui/utils.js 2014-12-26 20:50:55 +0000
1688+++ app/ui/utils.js 2015-04-16 19:24:14 +0000
1689@@ -38,3 +38,17 @@
1690 lonStr += zeroFill(Math.floor(lon), 3) + "° " + ((lon % 1) * 60).toFixed(3) + "'";
1691 return latStr + " " + lonStr;
1692 }
1693+
1694+
1695+function calculateDirection(lon1, lat1, lon2, lat2)
1696+{
1697+
1698+ var difLon = (lon2-lon1) * Math.PI / 180;
1699+ var difLat = (lat2-lat1) * Math.PI / 180;
1700+ return Math.atan2(difLon, difLat) * 180/Math.PI;
1701+}
1702+
1703+
1704+var lastCoordLon=0;
1705+var lastCoordLat=0;
1706+
1707
1708=== modified file 'backend/modules/Cachemere/backend.cpp'
1709--- backend/modules/Cachemere/backend.cpp 2014-12-26 20:50:55 +0000
1710+++ backend/modules/Cachemere/backend.cpp 2015-04-16 19:24:14 +0000
1711@@ -30,6 +30,7 @@
1712
1713 qmlRegisterType<Geocache>(uri, 1, 0, "Geocache");
1714 qmlRegisterType<CacheModel>(uri, 1, 0, "CacheModel");
1715+ qmlRegisterType<Waypoint>(uri, 1, 0, "Waypoint");
1716 }
1717
1718 void BackendPlugin::initializeEngine(QQmlEngine *engine, const char *uri)
1719
1720=== modified file 'backend/modules/Cachemere/geocache.cpp'
1721--- backend/modules/Cachemere/geocache.cpp 2014-12-26 20:50:55 +0000
1722+++ backend/modules/Cachemere/geocache.cpp 2015-04-16 19:24:14 +0000
1723@@ -15,10 +15,11 @@
1724 * You should have received a copy of the GNU General Public License
1725 * along with this program. If not, see <http://www.gnu.org/licenses/>.
1726 */
1727-
1728+#include <QDir>
1729 #include <QFile>
1730+#include <QXmlStreamReader>
1731+#include <QStandardPaths>
1732 #include <QDebug>
1733-#include <QXmlStreamReader>
1734
1735 #include "geocache.h"
1736
1737@@ -99,9 +100,133 @@
1738 }
1739 }
1740 }
1741+ addWaypoint("Start", latitude(), longitude());
1742+
1743+ QDir waypointsDir(dataDir() + QDir::separator() + "waypoints");
1744+ if(!waypointsDir.exists()) {
1745+ waypointsDir.mkpath(waypointsDir.absolutePath());
1746+ }
1747+ QFile *wpFile = new QFile(waypointsDir.absolutePath()+QDir::separator()+m_name+".xml");
1748+ if (wpFile->open(QIODevice::ReadWrite | QIODevice::Text)) {
1749+ QXmlStreamReader wpxml(wpFile);
1750+ while (!wpxml.atEnd() && !wpxml.hasError()) {
1751+ QXmlStreamReader::TokenType token = wpxml.readNext();
1752+ if (token == QXmlStreamReader::StartDocument) {
1753+ continue;
1754+ }
1755+ if (token == QXmlStreamReader::StartElement) {
1756+ if (wpxml.name() == "waypoint")
1757+ {
1758+ QString wpName;
1759+ double wpLat;
1760+ double wpLon;
1761+ if (wpxml.attributes().hasAttribute("latitude")) {
1762+ wpLat = (wpxml.attributes().value("latitude").toDouble());
1763+ }
1764+ if (wpxml.attributes().hasAttribute("longitude")) {
1765+ wpLon = (wpxml.attributes().value("longitude").toDouble());
1766+ }
1767+ if (wpxml.attributes().hasAttribute("name")) {
1768+ wpName = (wpxml.attributes().value("name").toString());
1769+ }
1770+ addWaypoint(wpName, wpLat, wpLon);
1771+
1772+ }
1773+ }
1774+ }
1775+ }
1776+}
1777+
1778+QQmlListProperty<Waypoint> Geocache::waypoints()
1779+{
1780+ return QQmlListProperty<Waypoint>(this, m_waypoints);
1781+}
1782+
1783+void Geocache::addWaypoint(QString name, double latitude, double longitude){
1784+ Waypoint *wp = new Waypoint;//(name,latitude,longitude);
1785+ wp->setName(name);
1786+ wp->setLatitude(latitude);
1787+ wp->setLongitude(longitude);
1788+
1789+ m_waypoints.append(wp);
1790+ m_currentwaypoint = m_waypoints.count()-1;
1791+ //Q_EMIT currentwaypointChanged();
1792+ //Q_EMIT waypointsChanged();
1793+}
1794+
1795+void Geocache::setWaypoint(int i, QString name, double latitude, double longitude){
1796+ if(i+1>m_waypoints.count())
1797+ {
1798+ return;
1799+ }
1800+ Waypoint *wp = new Waypoint;//(name,latitude,longitude);
1801+ wp->setName(name);
1802+ wp->setLatitude(latitude);
1803+ wp->setLongitude(longitude);
1804+ m_waypoints.replace(i, wp);
1805+ //Q_EMIT waypointsChanged();
1806 }
1807
1808 Geocache::~Geocache() {
1809
1810-}
1811+
1812+
1813+
1814+}
1815+
1816+void Geocache::updateWaypoints(void)
1817+{
1818+
1819+ QDir waypointsDir(dataDir() + QDir::separator() + "waypoints");
1820+ if(!waypointsDir.exists()) {
1821+ waypointsDir.mkpath(waypointsDir.absolutePath());
1822+ }
1823+ QFile *wpFile = new QFile(waypointsDir.absolutePath()+QDir::separator()+m_name+".xml");
1824+
1825+ QXmlStreamWriter *wpxml = new QXmlStreamWriter;
1826+ if (wpFile->open(QIODevice::WriteOnly | QIODevice::Text))
1827+ {
1828+ wpxml->setDevice(wpFile);
1829+ qDebug() << "File Open";
1830+ wpxml->setAutoFormatting(true);
1831+ wpxml->writeStartDocument();
1832+ wpxml->writeStartElement("waypoints");
1833+ for(int i=1; i<m_waypoints.count(); i++) //wp #0 is the cache coordinate, don't save.
1834+ {
1835+ wpxml->writeStartElement("waypoint");
1836+ wpxml->writeAttribute("name", m_waypoints.at(i)->name());
1837+ wpxml->writeAttribute("latitude", QString::number(m_waypoints.at(i)->latitude()));
1838+ wpxml->writeAttribute("longitude", QString::number(m_waypoints.at(i)->longitude()));
1839+
1840+
1841+ wpxml->writeEndElement(); // waypoint
1842+ }
1843+ wpxml->writeEndElement(); //waypoints
1844+ wpxml->writeEndDocument();
1845+ wpFile->flush();
1846+ wpFile->close();
1847+ qDebug() << "File Close";
1848+ }
1849+ delete wpxml;
1850+ delete wpFile;
1851+ Q_EMIT waypointsChanged();
1852+}
1853+
1854+Waypoint* Geocache::getWaypoint(int i)
1855+{
1856+ if(i+1>m_waypoints.count())
1857+ return m_waypoints.at(0);
1858+ else
1859+ return m_waypoints.at(i);
1860+}
1861+
1862+void Geocache::deleteWaypoint(int i)
1863+{
1864+ m_waypoints.removeAt(i);
1865+}
1866+
1867+QString Geocache::dataDir() {
1868+ return QStandardPaths::writableLocation(QStandardPaths::DataLocation);
1869+}
1870+
1871
1872
1873=== modified file 'backend/modules/Cachemere/geocache.h'
1874--- backend/modules/Cachemere/geocache.h 2014-12-26 20:50:55 +0000
1875+++ backend/modules/Cachemere/geocache.h 2015-04-16 19:24:14 +0000
1876@@ -18,11 +18,35 @@
1877
1878 #ifndef GEOCACHE_H
1879 #define GEOCACHE_H
1880-
1881+#include <QQmlListProperty>
1882 #include <QObject>
1883
1884+
1885+class Waypoint: public QObject {
1886+ Q_OBJECT
1887+ Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged)
1888+ Q_PROPERTY(double latitude READ latitude WRITE setLatitude NOTIFY latitudeChanged)
1889+ Q_PROPERTY(double longitude READ longitude WRITE setLongitude NOTIFY longitudeChanged)
1890+Q_SIGNALS:
1891+ void nameChanged();
1892+ void latitudeChanged();
1893+ void longitudeChanged();
1894+public:
1895+ Waypoint(){}
1896+ QString name() { return m_name; }
1897+ void setName(QString name) { m_name = name; Q_EMIT nameChanged(); }
1898+ double latitude(){return m_latitude;}
1899+ double longitude(){return m_longitude;}
1900+ void setLatitude(double lat){m_latitude=lat;}
1901+ void setLongitude(double lon){m_longitude=lon;}
1902+private:
1903+ QString m_name;
1904+ double m_latitude;
1905+ double m_longitude;
1906+};
1907 class Geocache : public QObject
1908 {
1909+
1910 Q_OBJECT
1911 Q_PROPERTY(QString id READ id WRITE setId NOTIFY idChanged)
1912 Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged)
1913@@ -35,6 +59,8 @@
1914 Q_PROPERTY(double difficulty READ difficulty WRITE setDifficulty NOTIFY difficultyChanged)
1915 Q_PROPERTY(double terrain READ terrain WRITE setTerrain NOTIFY terrainChanged)
1916 Q_PROPERTY(bool found READ found WRITE setFound NOTIFY foundChanged)
1917+ Q_PROPERTY(QQmlListProperty<Waypoint> waypoints READ waypoints NOTIFY waypointsChanged)
1918+ Q_PROPERTY(int currentwaypoint READ currentwaypoint WRITE setcurrentwaypoint NOTIFY currentwaypointChanged)
1919
1920 public:
1921 explicit Geocache(QObject *parent = 0);
1922@@ -53,8 +79,12 @@
1923 void foundChanged();
1924 void difficultyChanged();
1925 void terrainChanged();
1926+ void waypointsChanged();
1927+ void currentwaypointChanged();
1928
1929 public:
1930+
1931+
1932 QString id() { return m_id; }
1933 QString name() { return m_name; }
1934 QString url() { return m_url; }
1935@@ -66,6 +96,10 @@
1936 double difficulty() { return m_difficulty; }
1937 double terrain() { return m_terrain; }
1938 bool found() { return m_found; }
1939+ QQmlListProperty<Waypoint> waypoints();
1940+ int currentwaypoint() {return m_currentwaypoint;}
1941+
1942+
1943 void setId(QString id) { m_id = id; Q_EMIT idChanged(); }
1944 void setName(QString name) { m_name = name; Q_EMIT nameChanged(); }
1945 void setUrl(QString url) { m_url = url; Q_EMIT urlChanged(); }
1946@@ -77,6 +111,14 @@
1947 void setDifficulty(double difficulty) { m_difficulty = difficulty; Q_EMIT difficultyChanged(); }
1948 void setTerrain(double terrain) { m_terrain = terrain; Q_EMIT terrainChanged(); }
1949 void setFound(bool found) { m_found = found; Q_EMIT foundChanged(); }
1950+ void setcurrentwaypoint(int w) {m_currentwaypoint = w; Q_EMIT currentwaypointChanged(); }
1951+ Q_INVOKABLE void addWaypoint(QString name, double latitude, double longitude);
1952+ Q_INVOKABLE void setWaypoint(int i, QString name, double latitude, double longitude);
1953+ //This function was made separately from addWaypoint and setWaypoint, as it would else crash the application.
1954+ Q_INVOKABLE void updateWaypoints(void);
1955+ Q_INVOKABLE Waypoint* getWaypoint(int i);
1956+ Q_INVOKABLE void deleteWaypoint(int i);
1957+ Q_INVOKABLE QString dataDir();
1958
1959 private:
1960 QString m_id;
1961@@ -90,6 +132,8 @@
1962 double m_difficulty;
1963 double m_terrain;
1964 bool m_found;
1965+ QList<Waypoint*> m_waypoints;
1966+ int m_currentwaypoint;
1967 };
1968
1969 #endif // GEOCACHE_H
1970
1971=== modified file 'manifest.json.in'
1972--- manifest.json.in 2014-12-26 20:50:55 +0000
1973+++ manifest.json.in 2015-04-16 19:24:14 +0000
1974@@ -9,7 +9,7 @@
1975 "desktop": "cachemere.desktop"
1976 }
1977 },
1978- "version": "0.1",
1979+ "version": "0.2",
1980 "maintainer": "Michael Sheldon <mike@mikeasoft.com>",
1981 "framework": "ubuntu-sdk-14.10"
1982 }
1983
1984=== modified file 'po/com.mikeasoft.cachemere.pot'
1985--- po/com.mikeasoft.cachemere.pot 2014-12-26 20:50:55 +0000
1986+++ po/com.mikeasoft.cachemere.pot 2015-04-16 19:24:14 +0000
1987@@ -8,7 +8,7 @@
1988 msgstr ""
1989 "Project-Id-Version: \n"
1990 "Report-Msgid-Bugs-To: \n"
1991-"POT-Creation-Date: 2014-12-26 20:42+0000\n"
1992+"POT-Creation-Date: 2015-04-16 21:22+0200\n"
1993 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
1994 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1995 "Language-Team: LANGUAGE <LL@li.org>\n"
1996@@ -38,6 +38,28 @@
1997 msgid "Stay"
1998 msgstr ""
1999
2000+#: ../app/ui/CompassTab.qml:29
2001+msgid "Compass"
2002+msgstr ""
2003+
2004+#: ../app/ui/CompassTab.qml:48 ../app/ui/CompassTab.qml:167
2005+#: ../app/ui/DetailsTab.qml:69 ../app/ui/MapTab.qml:234
2006+msgid "Waiting for fix..."
2007+msgstr ""
2008+
2009+#: ../app/ui/CompassTab.qml:75 ../app/ui/DetailsTab.qml:63
2010+msgid "Position:"
2011+msgstr ""
2012+
2013+#: ../app/ui/CompassTab.qml:75
2014+msgid "Waiting for fix"
2015+msgstr ""
2016+
2017+#: ../app/ui/CompassTab.qml:165 ../app/ui/CompassTab.qml:167
2018+#: ../app/ui/DetailsTab.qml:69 ../app/ui/MapTab.qml:242
2019+msgid "Distance:"
2020+msgstr ""
2021+
2022 #: ../app/ui/ConfirmDialog.qml:23
2023 msgid "JavaScript Confirmation"
2024 msgstr ""
2025@@ -54,18 +76,6 @@
2026 msgid "Name:"
2027 msgstr ""
2028
2029-#: ../app/ui/DetailsTab.qml:63
2030-msgid "Position:"
2031-msgstr ""
2032-
2033-#: ../app/ui/DetailsTab.qml:69 ../app/ui/MapTab.qml:207
2034-msgid "Distance:"
2035-msgstr ""
2036-
2037-#: ../app/ui/DetailsTab.qml:69 ../app/ui/MapTab.qml:199
2038-msgid "Waiting for fix..."
2039-msgstr ""
2040-
2041 #: ../app/ui/DetailsTab.qml:75
2042 msgid "Difficulty: "
2043 msgstr ""
2044@@ -90,11 +100,15 @@
2045 msgid "View cache page"
2046 msgstr ""
2047
2048-#: ../app/ui/DetailsTab.qml:127
2049+#: ../app/ui/DetailsTab.qml:121
2050+msgid "Waypoints"
2051+msgstr ""
2052+
2053+#: ../app/ui/DetailsTab.qml:191
2054 msgid "No Active Cache"
2055 msgstr ""
2056
2057-#: ../app/ui/DetailsTab.qml:127
2058+#: ../app/ui/DetailsTab.qml:191
2059 msgid "Select a cache from the 'Geocaches' page to make it active."
2060 msgstr ""
2061
2062@@ -148,6 +162,14 @@
2063 msgid "JavaScript Prompt"
2064 msgstr ""
2065
2066-#: /home/mike/src/build-cachemere-UbuntuSDK_for_armhf_GCC_ubuntu_sdk_14_10_utopic-Default/po/cachemere.desktop.in.h:1
2067+#: ../app/ui/WaypointDialog.qml:30
2068+msgid "Edit Waypoint"
2069+msgstr ""
2070+
2071+#: ../app/ui/WaypointDialog.qml:227
2072+msgid "Close"
2073+msgstr ""
2074+
2075+#: /home/frans/build-cachemere-UbuntuSDK_for_armhf_GCC_ubuntu_sdk_14_10_utopic-Default/po/cachemere.desktop.in.h:1
2076 msgid "Cachemere"
2077 msgstr ""

Subscribers

People subscribed via source and target branches