├── .github
└── FUNDING.yml
├── .gitignore
├── AudiPoi.sln
├── AudiPoiDatabase
├── .gitignore
├── App.config
├── AudiPoiDatabase.csproj
├── AudiPoiDatabase.sln
├── AudiPoiDatabase.snk
├── Mike Caddy.pfx
├── PointOfInterest.cs
├── PointOfInterestCategory.cs
├── PointOfInterestDatabase.cs
├── Properties
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ └── Resources.resx
└── Resources
│ ├── stacking_2.png
│ └── stacking_3.png
├── CNAME
├── GeocacheToPoi
├── .gitignore
├── App.config
├── CustomDictionary.xml
├── GeocacheToPoi.csproj
├── GeocacheToPoi.snk
├── GlobalSuppressions.cs
├── MainForm.Designer.cs
├── MainForm.cs
├── MainForm.resx
├── Mike Caddy.pfx
├── MyRules.ruleset
├── Program.cs
├── Properties
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ ├── Resources.resx
│ ├── Settings.Designer.cs
│ └── Settings.settings
├── Settings.StyleCop
├── geocaching.ico
└── refresh.png
├── Geocaching
├── GPX.cs
├── Geocaching.csproj
├── LetterboxIcon.png
├── Mike Caddy.pfx
├── Properties
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ └── Resources.resx
├── app.config
├── earthcacheIcon.png
├── multiIcon.png
├── mysteryIcon.png
├── traditionalIcon.png
├── virtualIcon.png
├── webcamIcon.png
└── wherigoIcon.png
├── Logging
├── .gitignore
├── GetAccessToken.cs
├── GlobalSuppressions.cs
├── LogEvent.cs
├── LoggingBackend.csproj
├── Properties
│ └── PublishProfiles
│ │ └── MCLogging - Zip Deploy.pubxml
└── host.json
├── POIBuilder
├── App.config
├── App.xaml
├── App.xaml.cs
├── MainWindow.xaml
├── MainWindow.xaml.cs
├── POIBuilder.csproj
└── Properties
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ ├── Resources.resx
│ ├── Settings.Designer.cs
│ └── Settings.settings
├── POILoaderBackend
├── .gitignore
├── Categories.cs
├── CategoryEnum.cs
├── CategoryImages.cs
├── GlobalSuppressions.cs
├── POILoaderBackend.csproj
├── POIs.cs
├── Properties
│ ├── PublishProfiles
│ │ └── POILoaderBackend - Zip Deploy.pubxml
│ ├── Resources.Designer.cs
│ └── Resources.resx
└── host.json
├── PocketGpsWorld
├── .gitignore
├── CameraSettings.cs
├── CookieAwareWebClient.cs
├── CustomDictionary.xml
├── Mike Caddy.pfx
├── PocketGpsWorld.csproj
├── Properties
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ ├── Resources.resx
│ ├── Settings.Designer.cs
│ └── Settings.settings
├── Resources
│ ├── Fixed.png
│ ├── Mobile.png
│ ├── PMobile.png
│ ├── Red Light.png
│ └── Specs.png
├── Settings.StyleCop
├── SpeedCameras.cs
├── app.config
└── enums
│ ├── CameraCategory.cs
│ └── CameraType.cs
├── README.md
├── Releases
├── GeocacheToPoi
│ ├── GeocacheToPoi_v0.9.1.zip
│ └── v0.9.zip
├── GeocacheToPoi_v0.9.2.zip
├── POIBuilder
│ └── POIBuilder_v0.9.0.zip
├── POIBuilder_v0.9.1.zip
├── SpeedCameraToPoi
│ ├── SpeedCameraToPoi_v0.9.3.zip
│ ├── v0.9.1.zip
│ ├── v0.9.2.zip
│ └── v0.9.zip
└── SpeedCameraToPoi_v0.9.4.zip
├── Shared
├── .gitignore
├── Azure.cs
├── Config.cs
├── DirectoryUtilities.cs
├── ExtensionMethods.cs
├── LoggingClient.cs
├── Mike Caddy.pfx
├── Properties
│ ├── AssemblyInfo.cs
│ ├── Settings.Designer.cs
│ └── Settings.settings
├── SecureStrings.cs
├── Shared.csproj
├── Shared.sln
├── Shared.snk
├── UIUtils.cs
├── app.config
└── config.json
├── SpeedCameraToPoi
├── .gitignore
├── App.xaml
├── App.xaml.cs
├── CustomDictionary.xml
├── MainWindow.xaml
├── MainWindow.xaml.cs
├── Mike Caddy.pfx
├── Properties
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ ├── Resources.resx
│ ├── Settings.Designer.cs
│ └── Settings.settings
├── Settings.StyleCop
├── SpeedCameraToPoi.csproj
├── app.config
└── packages.config
└── _config.yml
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 |
3 | github: mcaddy
4 | patreon: # Replace with a single Patreon username
5 | open_collective: # Replace with a single Open Collective username
6 | ko_fi: # Replace with a single Ko-fi username
7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9 | liberapay: # Replace with a single Liberapay username
10 | issuehunt: # Replace with a single IssueHunt username
11 | otechie: # Replace with a single Otechie username
12 | lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
13 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
14 |
--------------------------------------------------------------------------------
/AudiPoi.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio Version 16
4 | VisualStudioVersion = 16.0.29009.5
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AudiPoiDatabase", "AudiPoiDatabase\AudiPoiDatabase.csproj", "{CFD0425C-CBCC-45C5-9009-B5D025826FE2}"
7 | EndProject
8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Shared", "Shared\Shared.csproj", "{34069ED0-63D0-47F7-A1EC-F9B621508629}"
9 | EndProject
10 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GeocacheToPoi", "GeocacheToPoi\GeocacheToPoi.csproj", "{A0BB16B4-79B3-4232-9D06-E56301394325}"
11 | EndProject
12 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SpeedCameraToPoi", "SpeedCameraToPoi\SpeedCameraToPoi.csproj", "{F76D366B-0B0E-46CF-B58E-B8747D7DDD4D}"
13 | EndProject
14 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PocketGpsWorld", "PocketGpsWorld\PocketGpsWorld.csproj", "{8317B549-6985-41EE-B06C-81F90E351960}"
15 | EndProject
16 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Geocaching", "Geocaching\Geocaching.csproj", "{DBCA422B-F0C4-4AAD-A678-B89802A53BF9}"
17 | EndProject
18 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LoggingBackend", "Logging\LoggingBackend.csproj", "{09562072-EBF6-48F7-9734-46D8B1725ABC}"
19 | EndProject
20 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "POILoaderBackend", "POILoaderBackend\POILoaderBackend.csproj", "{3E5B43F9-FE07-4484-BCD3-4D6F6C5FD59B}"
21 | EndProject
22 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Azure Functions", "Azure Functions", "{5E05172D-5C8B-450E-B5C5-074A4BFA916F}"
23 | EndProject
24 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{6F13CAC5-BE78-419E-809F-BE46E8159A59}"
25 | EndProject
26 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "POIBuilder", "POIBuilder\POIBuilder.csproj", "{4425B76F-E29D-49F9-9E7B-4CA00C6B0F49}"
27 | EndProject
28 | Global
29 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
30 | Debug|Any CPU = Debug|Any CPU
31 | Release|Any CPU = Release|Any CPU
32 | EndGlobalSection
33 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
34 | {CFD0425C-CBCC-45C5-9009-B5D025826FE2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
35 | {CFD0425C-CBCC-45C5-9009-B5D025826FE2}.Debug|Any CPU.Build.0 = Debug|Any CPU
36 | {CFD0425C-CBCC-45C5-9009-B5D025826FE2}.Release|Any CPU.ActiveCfg = Release|Any CPU
37 | {CFD0425C-CBCC-45C5-9009-B5D025826FE2}.Release|Any CPU.Build.0 = Release|Any CPU
38 | {34069ED0-63D0-47F7-A1EC-F9B621508629}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
39 | {34069ED0-63D0-47F7-A1EC-F9B621508629}.Debug|Any CPU.Build.0 = Debug|Any CPU
40 | {34069ED0-63D0-47F7-A1EC-F9B621508629}.Release|Any CPU.ActiveCfg = Release|Any CPU
41 | {34069ED0-63D0-47F7-A1EC-F9B621508629}.Release|Any CPU.Build.0 = Release|Any CPU
42 | {A0BB16B4-79B3-4232-9D06-E56301394325}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
43 | {A0BB16B4-79B3-4232-9D06-E56301394325}.Debug|Any CPU.Build.0 = Debug|Any CPU
44 | {A0BB16B4-79B3-4232-9D06-E56301394325}.Release|Any CPU.ActiveCfg = Release|Any CPU
45 | {A0BB16B4-79B3-4232-9D06-E56301394325}.Release|Any CPU.Build.0 = Release|Any CPU
46 | {F76D366B-0B0E-46CF-B58E-B8747D7DDD4D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
47 | {F76D366B-0B0E-46CF-B58E-B8747D7DDD4D}.Debug|Any CPU.Build.0 = Debug|Any CPU
48 | {F76D366B-0B0E-46CF-B58E-B8747D7DDD4D}.Release|Any CPU.ActiveCfg = Release|Any CPU
49 | {F76D366B-0B0E-46CF-B58E-B8747D7DDD4D}.Release|Any CPU.Build.0 = Release|Any CPU
50 | {8317B549-6985-41EE-B06C-81F90E351960}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
51 | {8317B549-6985-41EE-B06C-81F90E351960}.Debug|Any CPU.Build.0 = Debug|Any CPU
52 | {8317B549-6985-41EE-B06C-81F90E351960}.Release|Any CPU.ActiveCfg = Release|Any CPU
53 | {8317B549-6985-41EE-B06C-81F90E351960}.Release|Any CPU.Build.0 = Release|Any CPU
54 | {DBCA422B-F0C4-4AAD-A678-B89802A53BF9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
55 | {DBCA422B-F0C4-4AAD-A678-B89802A53BF9}.Debug|Any CPU.Build.0 = Debug|Any CPU
56 | {DBCA422B-F0C4-4AAD-A678-B89802A53BF9}.Release|Any CPU.ActiveCfg = Release|Any CPU
57 | {DBCA422B-F0C4-4AAD-A678-B89802A53BF9}.Release|Any CPU.Build.0 = Release|Any CPU
58 | {09562072-EBF6-48F7-9734-46D8B1725ABC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
59 | {09562072-EBF6-48F7-9734-46D8B1725ABC}.Debug|Any CPU.Build.0 = Debug|Any CPU
60 | {09562072-EBF6-48F7-9734-46D8B1725ABC}.Release|Any CPU.ActiveCfg = Release|Any CPU
61 | {09562072-EBF6-48F7-9734-46D8B1725ABC}.Release|Any CPU.Build.0 = Release|Any CPU
62 | {3E5B43F9-FE07-4484-BCD3-4D6F6C5FD59B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
63 | {3E5B43F9-FE07-4484-BCD3-4D6F6C5FD59B}.Debug|Any CPU.Build.0 = Debug|Any CPU
64 | {3E5B43F9-FE07-4484-BCD3-4D6F6C5FD59B}.Release|Any CPU.ActiveCfg = Release|Any CPU
65 | {3E5B43F9-FE07-4484-BCD3-4D6F6C5FD59B}.Release|Any CPU.Build.0 = Release|Any CPU
66 | {4425B76F-E29D-49F9-9E7B-4CA00C6B0F49}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
67 | {4425B76F-E29D-49F9-9E7B-4CA00C6B0F49}.Debug|Any CPU.Build.0 = Debug|Any CPU
68 | {4425B76F-E29D-49F9-9E7B-4CA00C6B0F49}.Release|Any CPU.ActiveCfg = Release|Any CPU
69 | {4425B76F-E29D-49F9-9E7B-4CA00C6B0F49}.Release|Any CPU.Build.0 = Release|Any CPU
70 | EndGlobalSection
71 | GlobalSection(SolutionProperties) = preSolution
72 | HideSolutionNode = FALSE
73 | EndGlobalSection
74 | GlobalSection(NestedProjects) = preSolution
75 | {CFD0425C-CBCC-45C5-9009-B5D025826FE2} = {6F13CAC5-BE78-419E-809F-BE46E8159A59}
76 | {34069ED0-63D0-47F7-A1EC-F9B621508629} = {6F13CAC5-BE78-419E-809F-BE46E8159A59}
77 | {8317B549-6985-41EE-B06C-81F90E351960} = {6F13CAC5-BE78-419E-809F-BE46E8159A59}
78 | {DBCA422B-F0C4-4AAD-A678-B89802A53BF9} = {6F13CAC5-BE78-419E-809F-BE46E8159A59}
79 | {09562072-EBF6-48F7-9734-46D8B1725ABC} = {5E05172D-5C8B-450E-B5C5-074A4BFA916F}
80 | {3E5B43F9-FE07-4484-BCD3-4D6F6C5FD59B} = {5E05172D-5C8B-450E-B5C5-074A4BFA916F}
81 | EndGlobalSection
82 | GlobalSection(ExtensibilityGlobals) = postSolution
83 | SolutionGuid = {E6F1DC6E-C953-4341-BEC0-DE29D5DA63A7}
84 | EndGlobalSection
85 | EndGlobal
86 |
--------------------------------------------------------------------------------
/AudiPoiDatabase/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/AudiPoiDatabase/AudiPoiDatabase.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Debug
7 | AnyCPU
8 | {CFD0425C-CBCC-45C5-9009-B5D025826FE2}
9 | Library
10 | Properties
11 | Mcaddy.AudiPoiDatabase
12 | Mcaddy.AudiPoiDatabase
13 | v4.8
14 | 512
15 |
16 |
17 |
18 |
19 |
20 | true
21 | full
22 | false
23 | bin\Debug\
24 | DEBUG;TRACE
25 | prompt
26 | 4
27 | AnyCPU
28 |
29 |
30 | pdbonly
31 | true
32 | bin\Release\
33 | TRACE
34 | prompt
35 | 4
36 |
37 |
38 | true
39 |
40 |
41 | Mike Caddy.pfx
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 | True
62 | True
63 | Resources.resx
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 | ResXFileCodeGenerator
74 | Resources.Designer.cs
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 | {34069ed0-63d0-47f7-a1ec-f9b621508629}
86 | Shared
87 |
88 |
89 |
90 |
91 | 1.0.116
92 |
93 |
94 |
95 |
96 |
97 |
98 | This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
113 |
--------------------------------------------------------------------------------
/AudiPoiDatabase/AudiPoiDatabase.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 14
4 | VisualStudioVersion = 14.0.23107.0
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AudiPoiDatabase", "AudiPoiDatabase.csproj", "{CFD0425C-CBCC-45C5-9009-B5D025826FE2}"
7 | EndProject
8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Shared", "..\Shared\Shared.csproj", "{34069ED0-63D0-47F7-A1EC-F9B621508629}"
9 | EndProject
10 | Global
11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
12 | Debug|Any CPU = Debug|Any CPU
13 | Release|Any CPU = Release|Any CPU
14 | EndGlobalSection
15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
16 | {CFD0425C-CBCC-45C5-9009-B5D025826FE2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
17 | {CFD0425C-CBCC-45C5-9009-B5D025826FE2}.Debug|Any CPU.Build.0 = Debug|Any CPU
18 | {CFD0425C-CBCC-45C5-9009-B5D025826FE2}.Release|Any CPU.ActiveCfg = Release|Any CPU
19 | {CFD0425C-CBCC-45C5-9009-B5D025826FE2}.Release|Any CPU.Build.0 = Release|Any CPU
20 | {34069ED0-63D0-47F7-A1EC-F9B621508629}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
21 | {34069ED0-63D0-47F7-A1EC-F9B621508629}.Debug|Any CPU.Build.0 = Debug|Any CPU
22 | {34069ED0-63D0-47F7-A1EC-F9B621508629}.Release|Any CPU.ActiveCfg = Release|Any CPU
23 | {34069ED0-63D0-47F7-A1EC-F9B621508629}.Release|Any CPU.Build.0 = Release|Any CPU
24 | EndGlobalSection
25 | GlobalSection(SolutionProperties) = preSolution
26 | HideSolutionNode = FALSE
27 | EndGlobalSection
28 | EndGlobal
29 |
--------------------------------------------------------------------------------
/AudiPoiDatabase/AudiPoiDatabase.snk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcaddy/audipoi/cf43be99d26c666117b0fdf63c955afabd2f7be8/AudiPoiDatabase/AudiPoiDatabase.snk
--------------------------------------------------------------------------------
/AudiPoiDatabase/Mike Caddy.pfx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcaddy/audipoi/cf43be99d26c666117b0fdf63c955afabd2f7be8/AudiPoiDatabase/Mike Caddy.pfx
--------------------------------------------------------------------------------
/AudiPoiDatabase/PointOfInterest.cs:
--------------------------------------------------------------------------------
1 | //-----------------------------------------------------------------------
2 | //
3 | // All rights reserved
4 | //
5 | //-----------------------------------------------------------------------
6 | namespace Mcaddy.AudiPoiDatabase
7 | {
8 | using System;
9 | using System.Collections.Generic;
10 | using System.Linq;
11 | using System.Text;
12 |
13 | ///
14 | /// Point of Interest Class
15 | ///
16 | public class PointOfInterest
17 | {
18 | ///
19 | /// Gets or sets the Latitude of the Poi
20 | ///
21 | public double Latitude { get; set; }
22 |
23 | ///
24 | /// Gets or sets the Longitude of the Poi
25 | ///
26 | public double Longitude { get; set; }
27 |
28 | ///
29 | /// Gets or sets the Name of the Poi
30 | ///
31 | public string Name { get; set; }
32 |
33 | ///
34 | /// Gets or sets the House Number of the Poi
35 | ///
36 | public string HouseNumber { get; set; }
37 |
38 | ///
39 | /// Gets or sets the Street of the Poi
40 | ///
41 | public string Street { get; set; }
42 |
43 | ///
44 | /// Gets or sets the City of the Poi
45 | ///
46 | public string City { get; set; }
47 |
48 | ///
49 | /// Gets or sets the Phone of the Poi
50 | ///
51 | public string Phone { get; set; }
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/AudiPoiDatabase/PointOfInterestCategory.cs:
--------------------------------------------------------------------------------
1 | //-----------------------------------------------------------------------
2 | //
3 | // All rights reserved
4 | //
5 | //-----------------------------------------------------------------------
6 | namespace Mcaddy.AudiPoiDatabase
7 | {
8 | using System.Collections.ObjectModel;
9 | using System.Drawing;
10 |
11 | ///
12 | /// Poi Category
13 | ///
14 | public class PointOfInterestCategory
15 | {
16 | ///
17 | /// Initializes a new instance of the class.
18 | ///
19 | /// Id for new POI Category
20 | /// name for new POI Category
21 | /// Icon for new POI Category
22 | public PointOfInterestCategory(int id, string name, Bitmap icon)
23 | {
24 | this.Id = id;
25 | this.Name = name;
26 | this.Icon = icon;
27 | this.Items = new Collection();
28 | }
29 |
30 | ///
31 | /// Gets or sets the Category Id
32 | ///
33 | public int Id { get; set; }
34 |
35 | ///
36 | /// Gets or sets the Category Name
37 | ///
38 | public string Name { get; set; }
39 |
40 | ///
41 | /// Gets or sets the Category Icon
42 | ///
43 | public Bitmap Icon { get; set; }
44 |
45 | ///
46 | /// Gets the Items for the Point of Interest category
47 | ///
48 | public Collection Items { get; private set; }
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/AudiPoiDatabase/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | //-----------------------------------------------------------------------
2 | //
3 | // All rights reserved
4 | //
5 | //-----------------------------------------------------------------------
6 |
7 | using System.Reflection;
8 | using System.Runtime.CompilerServices;
9 | using System.Runtime.InteropServices;
10 |
11 | // General Information about an assembly is controlled through the following
12 | // set of attributes. Change these attribute values to modify the information
13 | // associated with an assembly.
14 | [assembly: AssemblyTitle("AudiPoiDatabase")]
15 | [assembly: AssemblyDescription("")]
16 | [assembly: AssemblyConfiguration("")]
17 | [assembly: AssemblyCompany("")]
18 | [assembly: AssemblyProduct("AudiPoiDatabase")]
19 | [assembly: AssemblyCopyright("Copyright © 2015")]
20 | [assembly: AssemblyTrademark("")]
21 | [assembly: AssemblyCulture("")]
22 |
23 | // Setting ComVisible to false makes the types in this assembly not visible
24 | // to COM components. If you need to access a type in this assembly from
25 | // COM, set the ComVisible attribute to true on that type.
26 | [assembly: ComVisible(false)]
27 |
28 | // The following GUID is for the ID of the typelib if this project is exposed to COM
29 | [assembly: Guid("cfd0425c-cbcc-45c5-9009-b5d025826fe2")]
30 |
31 | // Version information for an assembly consists of the following four values:
32 | //
33 | // Major Version
34 | // Minor Version
35 | // Build Number
36 | // Revision
37 | //
38 | // You can specify all the values or you can default the Build and Revision Numbers
39 | // by using the '*' as shown below:
40 | // [assembly: AssemblyVersion("1.0.*")]
41 | [assembly: AssemblyVersion("1.0.0.0")]
42 | [assembly: AssemblyFileVersion("1.0.0.0")]
43 |
--------------------------------------------------------------------------------
/AudiPoiDatabase/Resources/stacking_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcaddy/audipoi/cf43be99d26c666117b0fdf63c955afabd2f7be8/AudiPoiDatabase/Resources/stacking_2.png
--------------------------------------------------------------------------------
/AudiPoiDatabase/Resources/stacking_3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcaddy/audipoi/cf43be99d26c666117b0fdf63c955afabd2f7be8/AudiPoiDatabase/Resources/stacking_3.png
--------------------------------------------------------------------------------
/CNAME:
--------------------------------------------------------------------------------
1 | git.mcaddy.co.uk
--------------------------------------------------------------------------------
/GeocacheToPoi/.gitignore:
--------------------------------------------------------------------------------
1 | bin/*
2 | packages/*
3 | obj/*
4 |
--------------------------------------------------------------------------------
/GeocacheToPoi/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 | True
31 |
32 |
33 | True
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/GeocacheToPoi/CustomDictionary.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | mcaddy
8 | Gpx
9 | Metainfo
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/GeocacheToPoi/GeocacheToPoi.snk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcaddy/audipoi/cf43be99d26c666117b0fdf63c955afabd2f7be8/GeocacheToPoi/GeocacheToPoi.snk
--------------------------------------------------------------------------------
/GeocacheToPoi/GlobalSuppressions.cs:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcaddy/audipoi/cf43be99d26c666117b0fdf63c955afabd2f7be8/GeocacheToPoi/GlobalSuppressions.cs
--------------------------------------------------------------------------------
/GeocacheToPoi/Mike Caddy.pfx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcaddy/audipoi/cf43be99d26c666117b0fdf63c955afabd2f7be8/GeocacheToPoi/Mike Caddy.pfx
--------------------------------------------------------------------------------
/GeocacheToPoi/MyRules.ruleset:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/GeocacheToPoi/Program.cs:
--------------------------------------------------------------------------------
1 | //-----------------------------------------------------------------------
2 | //
3 | // All rights reserved
4 | //
5 | //-----------------------------------------------------------------------
6 | namespace Mcaddy.Audi
7 | {
8 | using System;
9 | using System.Globalization;
10 | using System.Windows.Forms;
11 |
12 | ///
13 | /// Audi POI Exporter
14 | ///
15 | public static class Program
16 | {
17 | ///
18 | /// Have we been asked to auto process
19 | ///
20 | private static bool auto = false;
21 |
22 | ///
23 | /// The Target Drive Passed on the command line
24 | ///
25 | private static string targetDrive = string.Empty;
26 |
27 | ///
28 | /// The GpxPath passed on the command line
29 | ///
30 | private static string gpxPath = string.Empty;
31 |
32 | ///
33 | /// Gets a value indicating whether we've been requested to auto download
34 | ///
35 | public static bool Auto { get => auto; private set => auto = value; }
36 |
37 | ///
38 | /// Gets the Target Drive passed on the command line
39 | ///
40 | public static string TargetDrive { get => targetDrive; private set => targetDrive = value; }
41 |
42 | ///
43 | /// Gets the GPX Path passed on the command line
44 | ///
45 | public static string GpxPath { get => gpxPath; private set => gpxPath = value; }
46 |
47 | ///
48 | /// The main entry point for the application.
49 | ///
50 | /// Command Line Arguments
51 | [STAThread]
52 | private static void Main(string[] args)
53 | {
54 | Application.EnableVisualStyles();
55 | Application.SetCompatibleTextRenderingDefault(false);
56 |
57 | // Parse Command Line
58 | for (int i = 0; i < args.Length; i++)
59 | {
60 | switch (args[i].ToLower(CultureInfo.CurrentCulture))
61 | {
62 | case "-auto":
63 | Auto = true;
64 | break;
65 | case "-target":
66 | if (args.Length > (i + 1))
67 | {
68 | TargetDrive = args[i + 1].ToUpper();
69 | }
70 |
71 | break;
72 | case "-gpxpath":
73 | if (args.Length > (i + 1))
74 | {
75 | GpxPath = args[i + 1];
76 | }
77 |
78 | break;
79 | default:
80 | break;
81 | }
82 | }
83 |
84 | Application.Run(new MainForm());
85 | }
86 | }
87 | }
88 |
--------------------------------------------------------------------------------
/GeocacheToPoi/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | //-----------------------------------------------------------------------
2 | //
3 | // All rights reserved
4 | //
5 | //-----------------------------------------------------------------------
6 | using System;
7 | using System.Reflection;
8 | using System.Resources;
9 | using System.Runtime.CompilerServices;
10 | using System.Runtime.InteropServices;
11 |
12 | // General Information about an assembly is controlled through the following
13 | // set of attributes. Change these attribute values to modify the information
14 | // associated with an assembly.
15 | [assembly: AssemblyTitle("Geocache to Audi Poi Utility")]
16 | [assembly: AssemblyDescription("")]
17 | [assembly: AssemblyConfiguration("")]
18 | [assembly: AssemblyCompany("mcaddy")]
19 | [assembly: AssemblyProduct("GeocacheToPoi")]
20 | [assembly: AssemblyCopyright("Copyright © 2019")]
21 | [assembly: AssemblyTrademark("")]
22 | [assembly: AssemblyCulture("")]
23 | [assembly: CLSCompliant(true)]
24 | [assembly: NeutralResourcesLanguage("en-GB")]
25 |
26 | // Setting ComVisible to false makes the types in this assembly not visible
27 | // to COM components. If you need to access a type in this assembly from
28 | // COM, set the ComVisible attribute to true on that type.
29 | [assembly: ComVisible(false)]
30 |
31 | // The following GUID is for the ID of the typelib if this project is exposed to COM
32 | [assembly: Guid("a0e6f837-6ab2-4d88-9f19-a9410bc71264")]
33 |
34 | // Version information for an assembly consists of the following four values:
35 | //
36 | // Major Version
37 | // Minor Version
38 | // Build Number
39 | // Revision
40 | //
41 | // You can specify all the values or you can default the Build and Revision Numbers
42 | // by using the '*' as shown below:
43 | // [assembly: AssemblyVersion("1.0.*")]
44 | [assembly: AssemblyVersion("0.9.2.0")]
45 | [assembly: AssemblyFileVersion("0.9.2.0")]
46 |
--------------------------------------------------------------------------------
/GeocacheToPoi/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace Mcaddy.GeocacheToPoi.Properties {
12 | using System;
13 |
14 |
15 | ///
16 | /// A strongly-typed resource class, for looking up localized strings, etc.
17 | ///
18 | // This class was auto-generated by the StronglyTypedResourceBuilder
19 | // class via a tool like ResGen or Visual Studio.
20 | // To add or remove a member, edit your .ResX file then rerun ResGen
21 | // with the /str option, or rebuild your VS project.
22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
25 | internal class Resources {
26 |
27 | private static global::System.Resources.ResourceManager resourceMan;
28 |
29 | private static global::System.Globalization.CultureInfo resourceCulture;
30 |
31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
32 | internal Resources() {
33 | }
34 |
35 | ///
36 | /// Returns the cached ResourceManager instance used by this class.
37 | ///
38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
39 | internal static global::System.Resources.ResourceManager ResourceManager {
40 | get {
41 | if (object.ReferenceEquals(resourceMan, null)) {
42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Mcaddy.GeocacheToPoi.Properties.Resources", typeof(Resources).Assembly);
43 | resourceMan = temp;
44 | }
45 | return resourceMan;
46 | }
47 | }
48 |
49 | ///
50 | /// Overrides the current thread's CurrentUICulture property for all
51 | /// resource lookups using this strongly typed resource class.
52 | ///
53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
54 | internal static global::System.Globalization.CultureInfo Culture {
55 | get {
56 | return resourceCulture;
57 | }
58 | set {
59 | resourceCulture = value;
60 | }
61 | }
62 |
63 | ///
64 | /// Looks up a localized string similar to {0} waypoints loaded!.
65 | ///
66 | internal static string CompletionFormatString {
67 | get {
68 | return ResourceManager.GetString("CompletionFormatString", resourceCulture);
69 | }
70 | }
71 |
72 | ///
73 | /// Looks up a localized string similar to Done!.
74 | ///
75 | internal static string CompletionTitle {
76 | get {
77 | return ResourceManager.GetString("CompletionTitle", resourceCulture);
78 | }
79 | }
80 |
81 | ///
82 | /// Looks up a localized string similar to Error.
83 | ///
84 | internal static string ErrorTitle {
85 | get {
86 | return ResourceManager.GetString("ErrorTitle", resourceCulture);
87 | }
88 | }
89 |
90 | ///
91 | /// Looks up a localized string similar to Soruce or destination invalid.
92 | ///
93 | internal static string FileNotFoundError {
94 | get {
95 | return ResourceManager.GetString("FileNotFoundError", resourceCulture);
96 | }
97 | }
98 |
99 | ///
100 | /// Looks up a localized string similar to Invalid target drive specified on command line.
101 | ///
102 | internal static string InvalidTargetDriveOnCommandLine {
103 | get {
104 | return ResourceManager.GetString("InvalidTargetDriveOnCommandLine", resourceCulture);
105 | }
106 | }
107 | }
108 | }
109 |
--------------------------------------------------------------------------------
/GeocacheToPoi/Properties/Resources.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 | {0} waypoints loaded!
122 |
123 |
124 | Done!
125 |
126 |
127 | Error
128 |
129 |
130 | Soruce or destination invalid
131 |
132 |
133 | Invalid target drive specified on command line
134 |
135 |
--------------------------------------------------------------------------------
/GeocacheToPoi/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace Mcaddy.GeocacheToPoi.Properties {
12 |
13 |
14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.4.0.0")]
16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
17 |
18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
19 |
20 | public static Settings Default {
21 | get {
22 | return defaultInstance;
23 | }
24 | }
25 |
26 | [global::System.Configuration.UserScopedSettingAttribute()]
27 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
28 | [global::System.Configuration.DefaultSettingValueAttribute("")]
29 | public string GeocachingUsername {
30 | get {
31 | return ((string)(this["GeocachingUsername"]));
32 | }
33 | set {
34 | this["GeocachingUsername"] = value;
35 | }
36 | }
37 |
38 | [global::System.Configuration.UserScopedSettingAttribute()]
39 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
40 | [global::System.Configuration.DefaultSettingValueAttribute("True")]
41 | public bool ExcludeFound {
42 | get {
43 | return ((bool)(this["ExcludeFound"]));
44 | }
45 | set {
46 | this["ExcludeFound"] = value;
47 | }
48 | }
49 |
50 | [global::System.Configuration.UserScopedSettingAttribute()]
51 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
52 | [global::System.Configuration.DefaultSettingValueAttribute("True")]
53 | public bool ExcludeOwned {
54 | get {
55 | return ((bool)(this["ExcludeOwned"]));
56 | }
57 | set {
58 | this["ExcludeOwned"] = value;
59 | }
60 | }
61 |
62 | [global::System.Configuration.UserScopedSettingAttribute()]
63 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
64 | [global::System.Configuration.DefaultSettingValueAttribute("")]
65 | public string GpxPath {
66 | get {
67 | return ((string)(this["GpxPath"]));
68 | }
69 | set {
70 | this["GpxPath"] = value;
71 | }
72 | }
73 | }
74 | }
75 |
--------------------------------------------------------------------------------
/GeocacheToPoi/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | True
10 |
11 |
12 | True
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/GeocacheToPoi/Settings.StyleCop:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | False
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/GeocacheToPoi/geocaching.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcaddy/audipoi/cf43be99d26c666117b0fdf63c955afabd2f7be8/GeocacheToPoi/geocaching.ico
--------------------------------------------------------------------------------
/GeocacheToPoi/refresh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcaddy/audipoi/cf43be99d26c666117b0fdf63c955afabd2f7be8/GeocacheToPoi/refresh.png
--------------------------------------------------------------------------------
/Geocaching/Geocaching.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {DBCA422B-F0C4-4AAD-A678-B89802A53BF9}
8 | Library
9 | Properties
10 | Geocaching
11 | Geocaching
12 | v4.8
13 | 512
14 |
15 |
16 |
17 | true
18 | full
19 | false
20 | bin\Debug\
21 | DEBUG;TRACE
22 | prompt
23 | 4
24 |
25 |
26 | pdbonly
27 | true
28 | bin\Release\
29 | TRACE
30 | prompt
31 | 4
32 |
33 |
34 | true
35 |
36 |
37 | Mike Caddy.pfx
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 | True
55 | True
56 | Resources.resx
57 |
58 |
59 |
60 |
61 | {cfd0425c-cbcc-45c5-9009-b5d025826fe2}
62 | AudiPoiDatabase
63 |
64 |
65 |
66 |
67 | ResXFileCodeGenerator
68 | Resources.Designer.cs
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
105 |
--------------------------------------------------------------------------------
/Geocaching/LetterboxIcon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcaddy/audipoi/cf43be99d26c666117b0fdf63c955afabd2f7be8/Geocaching/LetterboxIcon.png
--------------------------------------------------------------------------------
/Geocaching/Mike Caddy.pfx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcaddy/audipoi/cf43be99d26c666117b0fdf63c955afabd2f7be8/Geocaching/Mike Caddy.pfx
--------------------------------------------------------------------------------
/Geocaching/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | //-----------------------------------------------------------------------
2 | //
3 | // All rights reserved
4 | //
5 | //-----------------------------------------------------------------------
6 |
7 | using System.Reflection;
8 | using System.Runtime.CompilerServices;
9 | using System.Runtime.InteropServices;
10 |
11 | // General Information about an assembly is controlled through the following
12 | // set of attributes. Change these attribute values to modify the information
13 | // associated with an assembly.
14 | [assembly: AssemblyTitle("Geocaching")]
15 | [assembly: AssemblyDescription("")]
16 | [assembly: AssemblyConfiguration("")]
17 | [assembly: AssemblyCompany("")]
18 | [assembly: AssemblyProduct("Geocaching")]
19 | [assembly: AssemblyCopyright("Copyright © 2018")]
20 | [assembly: AssemblyTrademark("")]
21 | [assembly: AssemblyCulture("")]
22 |
23 | // Setting ComVisible to false makes the types in this assembly not visible
24 | // to COM components. If you need to access a type in this assembly from
25 | // COM, set the ComVisible attribute to true on that type.
26 | [assembly: ComVisible(false)]
27 |
28 | // The following GUID is for the ID of the typelib if this project is exposed to COM
29 | [assembly: Guid("dbca422b-f0c4-4aad-a678-b89802a53bf9")]
30 |
31 | // Version information for an assembly consists of the following four values:
32 | //
33 | // Major Version
34 | // Minor Version
35 | // Build Number
36 | // Revision
37 | //
38 | // You can specify all the values or you can default the Build and Revision Numbers
39 | // by using the '*' as shown below:
40 | // [assembly: AssemblyVersion("1.0.*")]
41 | [assembly: AssemblyVersion("1.0.0.0")]
42 | [assembly: AssemblyFileVersion("1.0.0.0")]
43 |
--------------------------------------------------------------------------------
/Geocaching/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace Geocaching.Properties {
12 | using System;
13 |
14 |
15 | ///
16 | /// A strongly-typed resource class, for looking up localized strings, etc.
17 | ///
18 | // This class was auto-generated by the StronglyTypedResourceBuilder
19 | // class via a tool like ResGen or Visual Studio.
20 | // To add or remove a member, edit your .ResX file then rerun ResGen
21 | // with the /str option, or rebuild your VS project.
22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
25 | internal class Resources {
26 |
27 | private static global::System.Resources.ResourceManager resourceMan;
28 |
29 | private static global::System.Globalization.CultureInfo resourceCulture;
30 |
31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
32 | internal Resources() {
33 | }
34 |
35 | ///
36 | /// Returns the cached ResourceManager instance used by this class.
37 | ///
38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
39 | internal static global::System.Resources.ResourceManager ResourceManager {
40 | get {
41 | if (object.ReferenceEquals(resourceMan, null)) {
42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Geocaching.Properties.Resources", typeof(Resources).Assembly);
43 | resourceMan = temp;
44 | }
45 | return resourceMan;
46 | }
47 | }
48 |
49 | ///
50 | /// Overrides the current thread's CurrentUICulture property for all
51 | /// resource lookups using this strongly typed resource class.
52 | ///
53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
54 | internal static global::System.Globalization.CultureInfo Culture {
55 | get {
56 | return resourceCulture;
57 | }
58 | set {
59 | resourceCulture = value;
60 | }
61 | }
62 |
63 | ///
64 | /// Looks up a localized resource of type System.Drawing.Bitmap.
65 | ///
66 | internal static System.Drawing.Bitmap earthcacheIcon {
67 | get {
68 | object obj = ResourceManager.GetObject("earthcacheIcon", resourceCulture);
69 | return ((System.Drawing.Bitmap)(obj));
70 | }
71 | }
72 |
73 | ///
74 | /// Looks up a localized resource of type System.Drawing.Bitmap.
75 | ///
76 | internal static System.Drawing.Bitmap letterboxIcon {
77 | get {
78 | object obj = ResourceManager.GetObject("letterboxIcon", resourceCulture);
79 | return ((System.Drawing.Bitmap)(obj));
80 | }
81 | }
82 |
83 | ///
84 | /// Looks up a localized resource of type System.Drawing.Bitmap.
85 | ///
86 | internal static System.Drawing.Bitmap multiIcon {
87 | get {
88 | object obj = ResourceManager.GetObject("multiIcon", resourceCulture);
89 | return ((System.Drawing.Bitmap)(obj));
90 | }
91 | }
92 |
93 | ///
94 | /// Looks up a localized resource of type System.Drawing.Bitmap.
95 | ///
96 | internal static System.Drawing.Bitmap mysteryIcon {
97 | get {
98 | object obj = ResourceManager.GetObject("mysteryIcon", resourceCulture);
99 | return ((System.Drawing.Bitmap)(obj));
100 | }
101 | }
102 |
103 | ///
104 | /// Looks up a localized resource of type System.Drawing.Bitmap.
105 | ///
106 | internal static System.Drawing.Bitmap traditionalIcon {
107 | get {
108 | object obj = ResourceManager.GetObject("traditionalIcon", resourceCulture);
109 | return ((System.Drawing.Bitmap)(obj));
110 | }
111 | }
112 |
113 | ///
114 | /// Looks up a localized resource of type System.Drawing.Bitmap.
115 | ///
116 | internal static System.Drawing.Bitmap virtualIcon {
117 | get {
118 | object obj = ResourceManager.GetObject("virtualIcon", resourceCulture);
119 | return ((System.Drawing.Bitmap)(obj));
120 | }
121 | }
122 |
123 | ///
124 | /// Looks up a localized resource of type System.Drawing.Bitmap.
125 | ///
126 | internal static System.Drawing.Bitmap webcamIcon {
127 | get {
128 | object obj = ResourceManager.GetObject("webcamIcon", resourceCulture);
129 | return ((System.Drawing.Bitmap)(obj));
130 | }
131 | }
132 |
133 | ///
134 | /// Looks up a localized resource of type System.Drawing.Bitmap.
135 | ///
136 | internal static System.Drawing.Bitmap wherigoIcon {
137 | get {
138 | object obj = ResourceManager.GetObject("wherigoIcon", resourceCulture);
139 | return ((System.Drawing.Bitmap)(obj));
140 | }
141 | }
142 | }
143 | }
144 |
--------------------------------------------------------------------------------
/Geocaching/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/Geocaching/earthcacheIcon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcaddy/audipoi/cf43be99d26c666117b0fdf63c955afabd2f7be8/Geocaching/earthcacheIcon.png
--------------------------------------------------------------------------------
/Geocaching/multiIcon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcaddy/audipoi/cf43be99d26c666117b0fdf63c955afabd2f7be8/Geocaching/multiIcon.png
--------------------------------------------------------------------------------
/Geocaching/mysteryIcon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcaddy/audipoi/cf43be99d26c666117b0fdf63c955afabd2f7be8/Geocaching/mysteryIcon.png
--------------------------------------------------------------------------------
/Geocaching/traditionalIcon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcaddy/audipoi/cf43be99d26c666117b0fdf63c955afabd2f7be8/Geocaching/traditionalIcon.png
--------------------------------------------------------------------------------
/Geocaching/virtualIcon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcaddy/audipoi/cf43be99d26c666117b0fdf63c955afabd2f7be8/Geocaching/virtualIcon.png
--------------------------------------------------------------------------------
/Geocaching/webcamIcon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcaddy/audipoi/cf43be99d26c666117b0fdf63c955afabd2f7be8/Geocaching/webcamIcon.png
--------------------------------------------------------------------------------
/Geocaching/wherigoIcon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcaddy/audipoi/cf43be99d26c666117b0fdf63c955afabd2f7be8/Geocaching/wherigoIcon.png
--------------------------------------------------------------------------------
/Logging/.gitignore:
--------------------------------------------------------------------------------
1 | ## Ignore Visual Studio temporary files, build results, and
2 | ## files generated by popular Visual Studio add-ons.
3 |
4 | # Azure Functions localsettings file
5 | local.settings.json
6 |
7 | # User-specific files
8 | *.suo
9 | *.user
10 | *.userosscache
11 | *.sln.docstates
12 |
13 | # User-specific files (MonoDevelop/Xamarin Studio)
14 | *.userprefs
15 |
16 | # Build results
17 | [Dd]ebug/
18 | [Dd]ebugPublic/
19 | [Rr]elease/
20 | [Rr]eleases/
21 | x64/
22 | x86/
23 | bld/
24 | [Bb]in/
25 | [Oo]bj/
26 | [Ll]og/
27 |
28 | # Visual Studio 2015 cache/options directory
29 | .vs/
30 | # Uncomment if you have tasks that create the project's static files in wwwroot
31 | #wwwroot/
32 |
33 | # MSTest test Results
34 | [Tt]est[Rr]esult*/
35 | [Bb]uild[Ll]og.*
36 |
37 | # NUNIT
38 | *.VisualState.xml
39 | TestResult.xml
40 |
41 | # Build Results of an ATL Project
42 | [Dd]ebugPS/
43 | [Rr]eleasePS/
44 | dlldata.c
45 |
46 | # DNX
47 | project.lock.json
48 | project.fragment.lock.json
49 | artifacts/
50 |
51 | *_i.c
52 | *_p.c
53 | *_i.h
54 | *.ilk
55 | *.meta
56 | *.obj
57 | *.pch
58 | *.pdb
59 | *.pgc
60 | *.pgd
61 | *.rsp
62 | *.sbr
63 | *.tlb
64 | *.tli
65 | *.tlh
66 | *.tmp
67 | *.tmp_proj
68 | *.log
69 | *.vspscc
70 | *.vssscc
71 | .builds
72 | *.pidb
73 | *.svclog
74 | *.scc
75 |
76 | # Chutzpah Test files
77 | _Chutzpah*
78 |
79 | # Visual C++ cache files
80 | ipch/
81 | *.aps
82 | *.ncb
83 | *.opendb
84 | *.opensdf
85 | *.sdf
86 | *.cachefile
87 | *.VC.db
88 | *.VC.VC.opendb
89 |
90 | # Visual Studio profiler
91 | *.psess
92 | *.vsp
93 | *.vspx
94 | *.sap
95 |
96 | # TFS 2012 Local Workspace
97 | $tf/
98 |
99 | # Guidance Automation Toolkit
100 | *.gpState
101 |
102 | # ReSharper is a .NET coding add-in
103 | _ReSharper*/
104 | *.[Rr]e[Ss]harper
105 | *.DotSettings.user
106 |
107 | # JustCode is a .NET coding add-in
108 | .JustCode
109 |
110 | # TeamCity is a build add-in
111 | _TeamCity*
112 |
113 | # DotCover is a Code Coverage Tool
114 | *.dotCover
115 |
116 | # NCrunch
117 | _NCrunch_*
118 | .*crunch*.local.xml
119 | nCrunchTemp_*
120 |
121 | # MightyMoose
122 | *.mm.*
123 | AutoTest.Net/
124 |
125 | # Web workbench (sass)
126 | .sass-cache/
127 |
128 | # Installshield output folder
129 | [Ee]xpress/
130 |
131 | # DocProject is a documentation generator add-in
132 | DocProject/buildhelp/
133 | DocProject/Help/*.HxT
134 | DocProject/Help/*.HxC
135 | DocProject/Help/*.hhc
136 | DocProject/Help/*.hhk
137 | DocProject/Help/*.hhp
138 | DocProject/Help/Html2
139 | DocProject/Help/html
140 |
141 | # Click-Once directory
142 | publish/
143 |
144 | # Publish Web Output
145 | *.[Pp]ublish.xml
146 | *.azurePubxml
147 | #*.pubxml
148 | *.publishproj
149 |
150 | # Microsoft Azure Web App publish settings. Comment the next line if you want to
151 | # checkin your Azure Web App publish settings, but sensitive information contained
152 | # in these scripts will be unencrypted
153 | PublishScripts/
154 |
155 | # NuGet Packages
156 | *.nupkg
157 | # The packages folder can be ignored because of Package Restore
158 | **/packages/*
159 | # except build/, which is used as an MSBuild target.
160 | !**/packages/build/
161 | # Uncomment if necessary however generally it will be regenerated when needed
162 | #!**/packages/repositories.config
163 | # NuGet v3's project.json files produces more ignoreable files
164 | *.nuget.props
165 | *.nuget.targets
166 |
167 | # Microsoft Azure Build Output
168 | csx/
169 | *.build.csdef
170 |
171 | # Microsoft Azure Emulator
172 | ecf/
173 | rcf/
174 |
175 | # Windows Store app package directories and files
176 | AppPackages/
177 | BundleArtifacts/
178 | Package.StoreAssociation.xml
179 | _pkginfo.txt
180 |
181 | # Visual Studio cache files
182 | # files ending in .cache can be ignored
183 | *.[Cc]ache
184 | # but keep track of directories ending in .cache
185 | !*.[Cc]ache/
186 |
187 | # Others
188 | ClientBin/
189 | ~$*
190 | *~
191 | *.dbmdl
192 | *.dbproj.schemaview
193 | *.jfm
194 | *.pfx
195 | *.publishsettings
196 | node_modules/
197 | orleans.codegen.cs
198 |
199 | # Since there are multiple workflows, uncomment next line to ignore bower_components
200 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
201 | #bower_components/
202 |
203 | # RIA/Silverlight projects
204 | Generated_Code/
205 |
206 | # Backup & report files from converting an old project file
207 | # to a newer Visual Studio version. Backup files are not needed,
208 | # because we have git ;-)
209 | _UpgradeReport_Files/
210 | Backup*/
211 | UpgradeLog*.XML
212 | UpgradeLog*.htm
213 |
214 | # SQL Server files
215 | *.mdf
216 | *.ldf
217 |
218 | # Business Intelligence projects
219 | *.rdl.data
220 | *.bim.layout
221 | *.bim_*.settings
222 |
223 | # Microsoft Fakes
224 | FakesAssemblies/
225 |
226 | # GhostDoc plugin setting file
227 | *.GhostDoc.xml
228 |
229 | # Node.js Tools for Visual Studio
230 | .ntvs_analysis.dat
231 |
232 | # Visual Studio 6 build log
233 | *.plg
234 |
235 | # Visual Studio 6 workspace options file
236 | *.opt
237 |
238 | # Visual Studio LightSwitch build output
239 | **/*.HTMLClient/GeneratedArtifacts
240 | **/*.DesktopClient/GeneratedArtifacts
241 | **/*.DesktopClient/ModelManifest.xml
242 | **/*.Server/GeneratedArtifacts
243 | **/*.Server/ModelManifest.xml
244 | _Pvt_Extensions
245 |
246 | # Paket dependency manager
247 | .paket/paket.exe
248 | paket-files/
249 |
250 | # FAKE - F# Make
251 | .fake/
252 |
253 | # JetBrains Rider
254 | .idea/
255 | *.sln.iml
256 |
257 | # CodeRush
258 | .cr/
259 |
260 | # Python Tools for Visual Studio (PTVS)
261 | __pycache__/
262 | *.pyc
--------------------------------------------------------------------------------
/Logging/GetAccessToken.cs:
--------------------------------------------------------------------------------
1 | //-----------------------------------------------------------------------
2 | //
3 | // All rights reserved
4 | //
5 | //-----------------------------------------------------------------------
6 | namespace Logging
7 | {
8 | using System;
9 | using System.Linq;
10 | using Microsoft.AspNetCore.Http;
11 | using Microsoft.AspNetCore.Mvc;
12 | using Microsoft.Azure.WebJobs;
13 | using Microsoft.Azure.WebJobs.Extensions.Http;
14 | using Microsoft.Extensions.Logging;
15 | using Microsoft.WindowsAzure.Storage;
16 |
17 | ///
18 | /// Azure Function - Get Access Token
19 | ///
20 | public static class GetAccessToken
21 | {
22 | ///
23 | /// Azure Function - Get Access Token
24 | ///
25 | /// Source Http Request
26 | /// Username for the token
27 | /// Logger Instance
28 | /// A token if we are happy for user to store csv in the cloud
29 | [FunctionName("GetAccessToken")]
30 | public static IActionResult Run(
31 | [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "GetAccessToken/{username}")] HttpRequest req, string username, ILogger log)
32 | {
33 | string clientIp = GetIpFromRequestHeaders(req);
34 |
35 | log.LogInformation($"Access Token Request for {username} from {clientIp}");
36 |
37 | // Don't issue tokens unless we've got a username
38 | if (string.IsNullOrEmpty(username))
39 | {
40 | return new BadRequestObjectResult(string.Empty);
41 | }
42 |
43 | string accountKey = Environment.GetEnvironmentVariable("AccountKey");
44 | string accountName = Environment.GetEnvironmentVariable("AccountName");
45 |
46 | // To create the account SAS, you need to use your shared key credentials. Modify for your account.
47 | string connectionString = $"DefaultEndpointsProtocol=https;AccountName={accountName};AccountKey={accountKey}";
48 | CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionString);
49 |
50 | // Create a new access policy for the account.
51 | SharedAccessAccountPolicy policy = new SharedAccessAccountPolicy()
52 | {
53 | Permissions = SharedAccessAccountPermissions.Read | SharedAccessAccountPermissions.Write | SharedAccessAccountPermissions.List,
54 | Services = SharedAccessAccountServices.Blob,
55 | ResourceTypes = SharedAccessAccountResourceTypes.Container | SharedAccessAccountResourceTypes.Object,
56 | SharedAccessExpiryTime = DateTime.UtcNow.AddHours(1),
57 | Protocols = SharedAccessProtocol.HttpsOnly
58 | };
59 |
60 | return (ActionResult)new OkObjectResult(storageAccount.GetSharedAccessSignature(policy));
61 | }
62 |
63 | ///
64 | /// Get the IP address from the request headers
65 | ///
66 | /// Source request
67 | /// IP Address if one can be identified
68 | private static string GetIpFromRequestHeaders(HttpRequest request)
69 | {
70 | if (request.Headers.TryGetValue("X-Forwarded-For", out Microsoft.Extensions.Primitives.StringValues values))
71 | {
72 | return values.FirstOrDefault().Split(new char[] { ',' }).FirstOrDefault().Split(new char[] { ':' }).FirstOrDefault();
73 | }
74 |
75 | return string.Empty;
76 | }
77 | }
78 | }
79 |
--------------------------------------------------------------------------------
/Logging/GlobalSuppressions.cs:
--------------------------------------------------------------------------------
1 | //-----------------------------------------------------------------------
2 | //
3 | // All rights reserved
4 | //
5 | //-----------------------------------------------------------------------
6 | [assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE0060:Remove unused parameter", Justification = "Req parameter required for route to work", Scope = "member", Target = "~M:Logging.LogEvent.Run(Microsoft.AspNetCore.Http.HttpRequest,System.String,System.String,Microsoft.Extensions.Logging.ILogger)~Microsoft.AspNetCore.Mvc.IActionResult")]
--------------------------------------------------------------------------------
/Logging/LogEvent.cs:
--------------------------------------------------------------------------------
1 | //-----------------------------------------------------------------------
2 | //
3 | // All rights reserved
4 | //
5 | //-----------------------------------------------------------------------
6 | namespace Logging
7 | {
8 | using System;
9 | using Microsoft.AspNetCore.Http;
10 | using Microsoft.AspNetCore.Mvc;
11 | using Microsoft.Azure.WebJobs;
12 | using Microsoft.Azure.WebJobs.Extensions.Http;
13 | using Microsoft.Extensions.Logging;
14 | using Microsoft.WindowsAzure.Storage;
15 | using Microsoft.WindowsAzure.Storage.Auth;
16 | using Microsoft.WindowsAzure.Storage.Blob;
17 |
18 | ///
19 | /// Azure Function
20 | ///
21 | public static class LogEvent
22 | {
23 | ///
24 | /// Azure Function - Log Event
25 | ///
26 | /// Http Request
27 | /// The Username
28 | /// The Message
29 | /// Logger Instance
30 | /// A Task
31 | [FunctionName("LogEvent")]
32 | public static IActionResult Run(
33 | [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "LogEvent/{username}/{Message}")] HttpRequest req,
34 | string username,
35 | string message,
36 | ILogger log)
37 | {
38 | log.LogInformation($"Log Event invoked for {username}");
39 |
40 | Persist(username, message);
41 |
42 | return (ActionResult)new OkObjectResult($"Event Logged");
43 | }
44 |
45 | ///
46 | /// Log the event to persistent store
47 | ///
48 | /// username of the caller
49 | /// message from the caller
50 | private static async void Persist(string username, string message)
51 | {
52 | string accountKey = Environment.GetEnvironmentVariable("AccountKey");
53 | string accountName = Environment.GetEnvironmentVariable("AccountName");
54 |
55 | // Implement the accout, set true for https for SSL.
56 | StorageCredentials creds = new StorageCredentials(accountName, accountKey);
57 | CloudStorageAccount strAcc = new CloudStorageAccount(creds, true);
58 | CloudBlobClient blobClient = strAcc.CreateCloudBlobClient();
59 |
60 | // Setup our container we are going to use and create it.
61 | CloudBlobContainer container = blobClient.GetContainerReference("logs");
62 | await container.CreateIfNotExistsAsync();
63 |
64 | // Build my typical log file name.
65 | DateTime date = DateTime.Today;
66 | DateTime dateLogEntry = DateTime.Now;
67 |
68 | // This creates a reference to the append blob we are going to use.
69 | CloudAppendBlob appBlob = container.GetAppendBlobReference(
70 | string.Format("{0}{1}", date.ToString("yyyyMMdd"), ".log"));
71 |
72 | // Now we are going to check if todays file exists and if it doesn't we create it.
73 | if (!await appBlob.ExistsAsync())
74 | {
75 | await appBlob.CreateOrReplaceAsync();
76 | }
77 |
78 | // Add the entry to our log.
79 | await appBlob.AppendTextAsync($"{dateLogEntry.ToString("o")}-{username}-{message}\r\n");
80 | }
81 | }
82 | }
83 |
--------------------------------------------------------------------------------
/Logging/LoggingBackend.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | net7.0
4 | v2
5 | Logging
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 | PreserveNewest
19 |
20 |
21 | PreserveNewest
22 | Never
23 |
24 |
25 |
--------------------------------------------------------------------------------
/Logging/Properties/PublishProfiles/MCLogging - Zip Deploy.pubxml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | ZipDeploy
6 | AzureWebSite
7 | Release
8 | Any CPU
9 | https://mclogging.azurewebsites.net
10 | False
11 | /subscriptions/5ac7ba3f-565d-4dd1-bb19-bf3bd2505df0/resourcegroups/FrankLarge/providers/Microsoft.Web/sites/MCLogging
12 | $MCLogging
13 | <_SavePWD>True
14 | https://mclogging.scm.azurewebsites.net/
15 |
16 |
--------------------------------------------------------------------------------
/Logging/host.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "2.0"
3 | }
--------------------------------------------------------------------------------
/POIBuilder/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 | -1
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
--------------------------------------------------------------------------------
/POIBuilder/App.xaml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/POIBuilder/App.xaml.cs:
--------------------------------------------------------------------------------
1 | //-----------------------------------------------------------------------
2 | //
3 | // All rights reserved
4 | //
5 | //-----------------------------------------------------------------------
6 | namespace POIBuilder
7 | {
8 | using System.Windows;
9 | using Mcaddy;
10 |
11 | ///
12 | /// Interaction logic for App
13 | ///
14 | public partial class App : Application
15 | {
16 | ///
17 | /// Configuration object
18 | ///
19 | private static Config configuration = new Config();
20 |
21 | ///
22 | /// Gets the Configuration
23 | ///
24 | public static Config Configuration { get => configuration; private set => configuration = value; }
25 |
26 | ///
27 | /// App Startup Event - Process the Command Line arguments
28 | ///
29 | /// Sender Argument
30 | /// Startup Event Arguments
31 | private void Application_Startup(object sender, StartupEventArgs e)
32 | {
33 | bool auto = false;
34 | string targetDrive = string.Empty;
35 |
36 | // Parse Command Line
37 | for (int i = 0; i < e.Args.Length; i++)
38 | {
39 | switch (e.Args[i].ToLower())
40 | {
41 | case "-auto":
42 | auto = true;
43 | break;
44 | case "-target":
45 | if (e.Args.Length > (i + 1))
46 | {
47 | targetDrive = e.Args[i + 1];
48 | }
49 |
50 | break;
51 | default:
52 | break;
53 | }
54 | }
55 |
56 | App.Current.Properties["targetDrive"] = targetDrive;
57 | App.Current.Properties["auto"] = auto;
58 | }
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/POIBuilder/MainWindow.xaml:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/POIBuilder/POIBuilder.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {4425B76F-E29D-49F9-9E7B-4CA00C6B0F49}
8 | WinExe
9 | POIBuilder
10 | AudiPOIBuilder
11 | v4.8
12 | 512
13 | {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
14 | 4
15 | true
16 | true
17 |
18 |
19 |
20 |
21 |
22 | AnyCPU
23 | true
24 | full
25 | false
26 | bin\Debug\
27 | DEBUG;TRACE
28 | prompt
29 | 4
30 |
31 |
32 | AnyCPU
33 | pdbonly
34 | true
35 | bin\Release\
36 | TRACE
37 | prompt
38 | 4
39 |
40 |
41 |
42 | False
43 | ..\..\..\..\..\Program Files\dotnet\sdk\NuGetFallbackFolder\newtonsoft.json\11.0.2\lib\netstandard2.0\Newtonsoft.Json.dll
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 | 4.0
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 | MSBuild:Compile
66 | Designer
67 |
68 |
69 | MSBuild:Compile
70 | Designer
71 |
72 |
73 | App.xaml
74 | Code
75 |
76 |
77 | MainWindow.xaml
78 | Code
79 |
80 |
81 |
82 |
83 | Code
84 |
85 |
86 | True
87 | True
88 | Resources.resx
89 |
90 |
91 | True
92 | Settings.settings
93 | True
94 |
95 |
96 | ResXFileCodeGenerator
97 | Resources.Designer.cs
98 |
99 |
100 | SettingsSingleFileGenerator
101 | Settings.Designer.cs
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | {cfd0425c-cbcc-45c5-9009-b5d025826fe2}
110 | AudiPoiDatabase
111 |
112 |
113 | {34069ed0-63d0-47f7-a1ec-f9b621508629}
114 | Shared
115 |
116 |
117 |
118 |
119 | 1.0.116
120 |
121 |
122 |
123 |
--------------------------------------------------------------------------------
/POIBuilder/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | //-----------------------------------------------------------------------
2 | //
3 | // All rights reserved
4 | //
5 | //-----------------------------------------------------------------------
6 | using System.Reflection;
7 | using System.Runtime.InteropServices;
8 | using System.Windows;
9 |
10 | [assembly: AssemblyTitle("Audi POI Builder")]
11 | [assembly: AssemblyDescription("")]
12 | [assembly: AssemblyConfiguration("")]
13 | [assembly: AssemblyCompany("Mike Caddy")]
14 | [assembly: AssemblyProduct("AudiPOIBuilder")]
15 | [assembly: AssemblyCopyright("Copyright © 2019")]
16 | [assembly: AssemblyTrademark("")]
17 | [assembly: AssemblyCulture("")]
18 |
19 | [assembly: ComVisible(false)]
20 |
21 | [assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)]
22 |
23 | [assembly: AssemblyVersion("0.9.1.0")]
24 | [assembly: AssemblyFileVersion("0.9.1.0")]
25 |
--------------------------------------------------------------------------------
/POIBuilder/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace POIBuilder.Properties {
12 | using System;
13 |
14 |
15 | ///
16 | /// A strongly-typed resource class, for looking up localized strings, etc.
17 | ///
18 | // This class was auto-generated by the StronglyTypedResourceBuilder
19 | // class via a tool like ResGen or Visual Studio.
20 | // To add or remove a member, edit your .ResX file then rerun ResGen
21 | // with the /str option, or rebuild your VS project.
22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
25 | internal class Resources {
26 |
27 | private static global::System.Resources.ResourceManager resourceMan;
28 |
29 | private static global::System.Globalization.CultureInfo resourceCulture;
30 |
31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
32 | internal Resources() {
33 | }
34 |
35 | ///
36 | /// Returns the cached ResourceManager instance used by this class.
37 | ///
38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
39 | internal static global::System.Resources.ResourceManager ResourceManager {
40 | get {
41 | if (object.ReferenceEquals(resourceMan, null)) {
42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("POIBuilder.Properties.Resources", typeof(Resources).Assembly);
43 | resourceMan = temp;
44 | }
45 | return resourceMan;
46 | }
47 | }
48 |
49 | ///
50 | /// Overrides the current thread's CurrentUICulture property for all
51 | /// resource lookups using this strongly typed resource class.
52 | ///
53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
54 | internal static global::System.Globalization.CultureInfo Culture {
55 | get {
56 | return resourceCulture;
57 | }
58 | set {
59 | resourceCulture = value;
60 | }
61 | }
62 |
63 | ///
64 | /// Looks up a localized string similar to {0} waypoints loaded!.
65 | ///
66 | internal static string CompletionFormatString {
67 | get {
68 | return ResourceManager.GetString("CompletionFormatString", resourceCulture);
69 | }
70 | }
71 |
72 | ///
73 | /// Looks up a localized string similar to Done!.
74 | ///
75 | internal static string CompletionTitle {
76 | get {
77 | return ResourceManager.GetString("CompletionTitle", resourceCulture);
78 | }
79 | }
80 |
81 | ///
82 | /// Looks up a localized string similar to Error.
83 | ///
84 | internal static string ErrorTitle {
85 | get {
86 | return ResourceManager.GetString("ErrorTitle", resourceCulture);
87 | }
88 | }
89 |
90 | ///
91 | /// Looks up a localized string similar to Soruce or destination invalid.
92 | ///
93 | internal static string FileNotFoundError {
94 | get {
95 | return ResourceManager.GetString("FileNotFoundError", resourceCulture);
96 | }
97 | }
98 |
99 | ///
100 | /// Looks up a localized string similar to Invalid target drive specified on command line.
101 | ///
102 | internal static string InvalidTargetDriveOnCommandLine {
103 | get {
104 | return ResourceManager.GetString("InvalidTargetDriveOnCommandLine", resourceCulture);
105 | }
106 | }
107 |
108 | ///
109 | /// Looks up a localized string similar to Unable to Get available POI Categories
110 | ///
111 | ///Check your internet connection and try again..
112 | ///
113 | internal static string PoiCategoryDownloadError {
114 | get {
115 | return ResourceManager.GetString("PoiCategoryDownloadError", resourceCulture);
116 | }
117 | }
118 |
119 | ///
120 | /// Looks up a localized string similar to Select at least one POI category for download.
121 | ///
122 | internal static string SelectAtLeastOnePOICategory {
123 | get {
124 | return ResourceManager.GetString("SelectAtLeastOnePOICategory", resourceCulture);
125 | }
126 | }
127 |
128 | ///
129 | /// Looks up a localized string similar to Target drive not selected.
130 | ///
131 | internal static string TargetDriveError {
132 | get {
133 | return ResourceManager.GetString("TargetDriveError", resourceCulture);
134 | }
135 | }
136 | }
137 | }
138 |
--------------------------------------------------------------------------------
/POIBuilder/Properties/Resources.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 | {0} waypoints loaded!
122 |
123 |
124 | Done!
125 |
126 |
127 | Error
128 |
129 |
130 | Soruce or destination invalid
131 |
132 |
133 | Invalid target drive specified on command line
134 |
135 |
136 | Unable to Get available POI Categories
137 |
138 | Check your internet connection and try again.
139 |
140 |
141 | Select at least one POI category for download
142 |
143 |
144 | Target drive not selected
145 |
146 |
--------------------------------------------------------------------------------
/POIBuilder/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace POIBuilder.Properties {
12 |
13 |
14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.4.0.0")]
16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
17 |
18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
19 |
20 | public static Settings Default {
21 | get {
22 | return defaultInstance;
23 | }
24 | }
25 |
26 | [global::System.Configuration.UserScopedSettingAttribute()]
27 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
28 | [global::System.Configuration.DefaultSettingValueAttribute("-1")]
29 | public int CategoriesFlag {
30 | get {
31 | return ((int)(this["CategoriesFlag"]));
32 | }
33 | set {
34 | this["CategoriesFlag"] = value;
35 | }
36 | }
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/POIBuilder/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | -1
7 |
8 |
9 |
--------------------------------------------------------------------------------
/POILoaderBackend/.gitignore:
--------------------------------------------------------------------------------
1 | ## Ignore Visual Studio temporary files, build results, and
2 | ## files generated by popular Visual Studio add-ons.
3 |
4 | # Azure Functions localsettings file
5 | local.settings.json
6 |
7 | # User-specific files
8 | *.suo
9 | *.user
10 | *.userosscache
11 | *.sln.docstates
12 |
13 | # User-specific files (MonoDevelop/Xamarin Studio)
14 | *.userprefs
15 |
16 | # Build results
17 | [Dd]ebug/
18 | [Dd]ebugPublic/
19 | [Rr]elease/
20 | [Rr]eleases/
21 | x64/
22 | x86/
23 | bld/
24 | [Bb]in/
25 | [Oo]bj/
26 | [Ll]og/
27 |
28 | # Visual Studio 2015 cache/options directory
29 | .vs/
30 | # Uncomment if you have tasks that create the project's static files in wwwroot
31 | #wwwroot/
32 |
33 | # MSTest test Results
34 | [Tt]est[Rr]esult*/
35 | [Bb]uild[Ll]og.*
36 |
37 | # NUNIT
38 | *.VisualState.xml
39 | TestResult.xml
40 |
41 | # Build Results of an ATL Project
42 | [Dd]ebugPS/
43 | [Rr]eleasePS/
44 | dlldata.c
45 |
46 | # DNX
47 | project.lock.json
48 | project.fragment.lock.json
49 | artifacts/
50 |
51 | *_i.c
52 | *_p.c
53 | *_i.h
54 | *.ilk
55 | *.meta
56 | *.obj
57 | *.pch
58 | *.pdb
59 | *.pgc
60 | *.pgd
61 | *.rsp
62 | *.sbr
63 | *.tlb
64 | *.tli
65 | *.tlh
66 | *.tmp
67 | *.tmp_proj
68 | *.log
69 | *.vspscc
70 | *.vssscc
71 | .builds
72 | *.pidb
73 | *.svclog
74 | *.scc
75 |
76 | # Chutzpah Test files
77 | _Chutzpah*
78 |
79 | # Visual C++ cache files
80 | ipch/
81 | *.aps
82 | *.ncb
83 | *.opendb
84 | *.opensdf
85 | *.sdf
86 | *.cachefile
87 | *.VC.db
88 | *.VC.VC.opendb
89 |
90 | # Visual Studio profiler
91 | *.psess
92 | *.vsp
93 | *.vspx
94 | *.sap
95 |
96 | # TFS 2012 Local Workspace
97 | $tf/
98 |
99 | # Guidance Automation Toolkit
100 | *.gpState
101 |
102 | # ReSharper is a .NET coding add-in
103 | _ReSharper*/
104 | *.[Rr]e[Ss]harper
105 | *.DotSettings.user
106 |
107 | # JustCode is a .NET coding add-in
108 | .JustCode
109 |
110 | # TeamCity is a build add-in
111 | _TeamCity*
112 |
113 | # DotCover is a Code Coverage Tool
114 | *.dotCover
115 |
116 | # NCrunch
117 | _NCrunch_*
118 | .*crunch*.local.xml
119 | nCrunchTemp_*
120 |
121 | # MightyMoose
122 | *.mm.*
123 | AutoTest.Net/
124 |
125 | # Web workbench (sass)
126 | .sass-cache/
127 |
128 | # Installshield output folder
129 | [Ee]xpress/
130 |
131 | # DocProject is a documentation generator add-in
132 | DocProject/buildhelp/
133 | DocProject/Help/*.HxT
134 | DocProject/Help/*.HxC
135 | DocProject/Help/*.hhc
136 | DocProject/Help/*.hhk
137 | DocProject/Help/*.hhp
138 | DocProject/Help/Html2
139 | DocProject/Help/html
140 |
141 | # Click-Once directory
142 | publish/
143 |
144 | # Publish Web Output
145 | *.[Pp]ublish.xml
146 | *.azurePubxml
147 | #*.pubxml
148 | *.publishproj
149 |
150 | # Microsoft Azure Web App publish settings. Comment the next line if you want to
151 | # checkin your Azure Web App publish settings, but sensitive information contained
152 | # in these scripts will be unencrypted
153 | PublishScripts/
154 |
155 | # NuGet Packages
156 | *.nupkg
157 | # The packages folder can be ignored because of Package Restore
158 | **/packages/*
159 | # except build/, which is used as an MSBuild target.
160 | !**/packages/build/
161 | # Uncomment if necessary however generally it will be regenerated when needed
162 | #!**/packages/repositories.config
163 | # NuGet v3's project.json files produces more ignoreable files
164 | *.nuget.props
165 | *.nuget.targets
166 |
167 | # Microsoft Azure Build Output
168 | csx/
169 | *.build.csdef
170 |
171 | # Microsoft Azure Emulator
172 | ecf/
173 | rcf/
174 |
175 | # Windows Store app package directories and files
176 | AppPackages/
177 | BundleArtifacts/
178 | Package.StoreAssociation.xml
179 | _pkginfo.txt
180 |
181 | # Visual Studio cache files
182 | # files ending in .cache can be ignored
183 | *.[Cc]ache
184 | # but keep track of directories ending in .cache
185 | !*.[Cc]ache/
186 |
187 | # Others
188 | ClientBin/
189 | ~$*
190 | *~
191 | *.dbmdl
192 | *.dbproj.schemaview
193 | *.jfm
194 | *.pfx
195 | *.publishsettings
196 | node_modules/
197 | orleans.codegen.cs
198 |
199 | # Since there are multiple workflows, uncomment next line to ignore bower_components
200 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
201 | #bower_components/
202 |
203 | # RIA/Silverlight projects
204 | Generated_Code/
205 |
206 | # Backup & report files from converting an old project file
207 | # to a newer Visual Studio version. Backup files are not needed,
208 | # because we have git ;-)
209 | _UpgradeReport_Files/
210 | Backup*/
211 | UpgradeLog*.XML
212 | UpgradeLog*.htm
213 |
214 | # SQL Server files
215 | *.mdf
216 | *.ldf
217 |
218 | # Business Intelligence projects
219 | *.rdl.data
220 | *.bim.layout
221 | *.bim_*.settings
222 |
223 | # Microsoft Fakes
224 | FakesAssemblies/
225 |
226 | # GhostDoc plugin setting file
227 | *.GhostDoc.xml
228 |
229 | # Node.js Tools for Visual Studio
230 | .ntvs_analysis.dat
231 |
232 | # Visual Studio 6 build log
233 | *.plg
234 |
235 | # Visual Studio 6 workspace options file
236 | *.opt
237 |
238 | # Visual Studio LightSwitch build output
239 | **/*.HTMLClient/GeneratedArtifacts
240 | **/*.DesktopClient/GeneratedArtifacts
241 | **/*.DesktopClient/ModelManifest.xml
242 | **/*.Server/GeneratedArtifacts
243 | **/*.Server/ModelManifest.xml
244 | _Pvt_Extensions
245 |
246 | # Paket dependency manager
247 | .paket/paket.exe
248 | paket-files/
249 |
250 | # FAKE - F# Make
251 | .fake/
252 |
253 | # JetBrains Rider
254 | .idea/
255 | *.sln.iml
256 |
257 | # CodeRush
258 | .cr/
259 |
260 | # Python Tools for Visual Studio (PTVS)
261 | __pycache__/
262 | *.pyc
--------------------------------------------------------------------------------
/POILoaderBackend/Categories.cs:
--------------------------------------------------------------------------------
1 | //-----------------------------------------------------------------------
2 | //
3 | // All rights reserved
4 | //
5 | //-----------------------------------------------------------------------
6 |
7 | namespace POILoaderBackend
8 | {
9 | using System;
10 | using System.Collections.Generic;
11 | using System.Net;
12 | using System.Net.Http;
13 | using System.Text;
14 | using System.Threading.Tasks;
15 | using Mcaddy;
16 | using Microsoft.AspNetCore.Http;
17 | using Microsoft.Azure.WebJobs;
18 | using Microsoft.Azure.WebJobs.Extensions.Http;
19 | using Microsoft.Extensions.Logging;
20 | using Newtonsoft.Json;
21 |
22 | ///
23 | /// Azure Function - Categories
24 | ///
25 | public static class Categories
26 | {
27 | ///
28 | /// Azure Function - Categories
29 | ///
30 | /// Calling request
31 | /// Logger instance
32 | /// A Http Response
33 | [FunctionName("Categories")]
34 | public static HttpResponseMessage Run(
35 | [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)] HttpRequest req,
36 | ILogger log)
37 | {
38 | log.LogInformation("Categories Requested");
39 |
40 | Dictionary categoriesList = new Dictionary();
41 |
42 | foreach (CategoryEnum item in Enum.GetValues(typeof(CategoryEnum)))
43 | {
44 | if (item != CategoryEnum.None)
45 | {
46 | categoriesList.Add((int)item, item.ToDescriptionString());
47 | }
48 | }
49 |
50 | string jsonToReturn = JsonConvert.SerializeObject(categoriesList);
51 |
52 | return new HttpResponseMessage(HttpStatusCode.OK)
53 | {
54 | Content = new StringContent(jsonToReturn, Encoding.UTF8, "application/json")
55 | };
56 | }
57 | }
58 | }
59 |
--------------------------------------------------------------------------------
/POILoaderBackend/CategoryEnum.cs:
--------------------------------------------------------------------------------
1 | //-----------------------------------------------------------------------
2 | //
3 | // All rights reserved
4 | //
5 | //-----------------------------------------------------------------------
6 | namespace POILoaderBackend
7 | {
8 | using System;
9 | using System.ComponentModel;
10 |
11 | ///
12 | /// Category Enumeration
13 | ///
14 | [Flags]
15 | public enum CategoryEnum
16 | {
17 | ///
18 | /// None Enum
19 | ///
20 | [Description("None")]
21 | None = 0,
22 |
23 | ///
24 | /// National Trust
25 | ///
26 | [Description("National Trust")]
27 | NationalTrust = 1,
28 |
29 | ///
30 | /// English Heritage
31 | ///
32 | [Description("English Heritage")]
33 | EnglishHeritage = 2,
34 |
35 | ///
36 | /// RSPB Reserves
37 | ///
38 | [Description("RSPB Reserves")]
39 | RSPBReserves = 4,
40 |
41 | ///
42 | /// Historic Houses
43 | ///
44 | [Description("Historic Houses")]
45 | HistoricHouses = 8,
46 |
47 | ///
48 | /// Historic Scotland
49 | ///
50 | [Description("Historic Scotland")]
51 | HistoricScotland = 16,
52 |
53 | ///
54 | /// National Trust for Scotland
55 | ///
56 | [Description("National Trust for Scotland")]
57 | NationalTrustScotland = 32
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/POILoaderBackend/CategoryImages.cs:
--------------------------------------------------------------------------------
1 | //-----------------------------------------------------------------------
2 | //
3 | // All rights reserved
4 | //
5 | //-----------------------------------------------------------------------
6 | namespace POILoaderBackend
7 | {
8 | using System.Collections.Generic;
9 | using System.Net;
10 | using System.Net.Http;
11 | using System.Text;
12 | using System.Threading.Tasks;
13 | using Microsoft.AspNetCore.Http;
14 | using Microsoft.Azure.WebJobs;
15 | using Microsoft.Azure.WebJobs.Extensions.Http;
16 | using Microsoft.Extensions.Logging;
17 | using Newtonsoft.Json;
18 |
19 | ///
20 | /// Azure Function - Category Images
21 | ///
22 | public static class CategoryImages
23 | {
24 | ///
25 | /// Azure Function - Category Images
26 | ///
27 | /// Source request
28 | /// Route Parameter
29 | /// Logger Instance
30 | /// Http Response
31 | [FunctionName("CategoryImages")]
32 | public static HttpResponseMessage Run(
33 | [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "CategoryImages/{categoriesRequested}")] HttpRequest req, string categoriesRequested, ILogger log)
34 | {
35 | log.LogInformation($"Category Images Requested - {categoriesRequested}");
36 |
37 | // Convert the parameter to a Enum Flag
38 | CategoryEnum categories = CategoryEnum.None;
39 | if (int.TryParse(categoriesRequested, out int categoriesNumber))
40 | {
41 | categories = (CategoryEnum)categoriesNumber;
42 | }
43 |
44 | Dictionary results = new Dictionary();
45 |
46 | if (categories.HasFlag(CategoryEnum.NationalTrust))
47 | {
48 | results.Add((int)CategoryEnum.NationalTrust, Properties.Resources.NationalTrustIconBase64);
49 | }
50 |
51 | if (categories.HasFlag(CategoryEnum.EnglishHeritage))
52 | {
53 | results.Add((int)CategoryEnum.EnglishHeritage, Properties.Resources.EnglishHeritageIconBase64);
54 | }
55 |
56 | if (categories.HasFlag(CategoryEnum.RSPBReserves))
57 | {
58 | results.Add((int)CategoryEnum.RSPBReserves, Properties.Resources.RSBPIconBase64);
59 | }
60 |
61 | if (categories.HasFlag(CategoryEnum.HistoricHouses))
62 | {
63 | results.Add((int)CategoryEnum.HistoricHouses, Properties.Resources.HistoricHousesIconBase64);
64 | }
65 |
66 | if (categories.HasFlag(CategoryEnum.NationalTrustScotland))
67 | {
68 | results.Add((int)CategoryEnum.NationalTrustScotland, Properties.Resources.NationalTrustIconBase64);
69 | }
70 |
71 | if (categories.HasFlag(CategoryEnum.HistoricScotland))
72 | {
73 | results.Add((int)CategoryEnum.HistoricScotland, Properties.Resources.HistoricScotlandIconBase64);
74 | }
75 |
76 | string jsonToReturn = JsonConvert.SerializeObject(results);
77 |
78 | return new HttpResponseMessage(HttpStatusCode.OK)
79 | {
80 | Content = new StringContent(jsonToReturn, Encoding.UTF8, "application/json")
81 | };
82 | }
83 | }
84 | }
85 |
--------------------------------------------------------------------------------
/POILoaderBackend/GlobalSuppressions.cs:
--------------------------------------------------------------------------------
1 | //-----------------------------------------------------------------------
2 | //
3 | // All rights reserved
4 | //
5 | //-----------------------------------------------------------------------
6 | [assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE0060:Remove unused parameter", Justification = "Req parameter required for route to work", Scope = "member", Target = "~M:POILoaderBackend.Categories.Run(Microsoft.AspNetCore.Http.HttpRequest,Microsoft.Extensions.Logging.ILogger)~System.Net.Http.HttpResponseMessage")]
7 | [assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE0060:Remove unused parameter", Justification = "Req parameter required for route to work", Scope = "member", Target = "~M:POILoaderBackend.CategoryImages.Run(Microsoft.AspNetCore.Http.HttpRequest,System.String,Microsoft.Extensions.Logging.ILogger)~System.Net.Http.HttpResponseMessage")]
8 | [assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE0060:Remove unused parameter", Justification = "Req parameter required for route to work", Scope = "member", Target = "~M:POILoaderBackend.POIs.Run(Microsoft.AspNetCore.Http.HttpRequest,System.String,Microsoft.Extensions.Logging.ILogger)~System.Net.Http.HttpResponseMessage")]
--------------------------------------------------------------------------------
/POILoaderBackend/POILoaderBackend.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | net7.0
4 | v2
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 | True
20 | True
21 | Resources.resx
22 |
23 |
24 |
25 |
26 | ResXFileCodeGenerator
27 | Resources.Designer.cs
28 |
29 |
30 |
31 |
32 | PreserveNewest
33 |
34 |
35 | PreserveNewest
36 | Never
37 |
38 |
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/POILoaderBackend/Properties/PublishProfiles/POILoaderBackend - Zip Deploy.pubxml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | ZipDeploy
6 | AzureWebSite
7 | Release
8 | Any CPU
9 | https://poiloaderbackend.azurewebsites.net
10 | False
11 | /subscriptions/5ac7ba3f-565d-4dd1-bb19-bf3bd2505df0/resourcegroups/FrankLarge/providers/Microsoft.Web/sites/POILoaderBackend
12 | $POILoaderBackend
13 | <_SavePWD>True
14 | https://poiloaderbackend.scm.azurewebsites.net/
15 |
16 |
--------------------------------------------------------------------------------
/POILoaderBackend/host.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "2.0"
3 | }
--------------------------------------------------------------------------------
/PocketGpsWorld/.gitignore:
--------------------------------------------------------------------------------
1 | bin/*
2 | packages/*
3 | obj/*
4 |
--------------------------------------------------------------------------------
/PocketGpsWorld/CameraSettings.cs:
--------------------------------------------------------------------------------
1 | //-----------------------------------------------------------------------
2 | //
3 | // All rights reserved
4 | //
5 | //-----------------------------------------------------------------------
6 | namespace PocketGpsWorld
7 | {
8 | ///
9 | /// Camera settings to be used for the export
10 | ///
11 | public class CameraSettings
12 | {
13 | ///
14 | /// Gets or sets the PocketGPSWorld Password
15 | ///
16 | public string Username { get; set; }
17 |
18 | ///
19 | /// Gets or sets the PocketGPSWorld Password
20 | ///
21 | public string Password { get; set; }
22 |
23 | ///
24 | /// Gets or sets the Target drive
25 | ///
26 | public string TargertDrive { get; set; }
27 |
28 | ///
29 | /// Gets or sets a value indicating whether to include Unverified cameras
30 | ///
31 | public bool IncludeUnverified { get; set; }
32 |
33 | ///
34 | /// Gets or sets a value indicating whether to include Static cameras in the export
35 | ///
36 | public bool IncludeStatic { get; set; }
37 |
38 | ///
39 | /// Gets or sets a value indicating whether to include Mobile cameras in the export
40 | ///
41 | public bool IncludeMobile { get; set; }
42 |
43 | ///
44 | /// Gets or sets a value indicating whether to include Specs cameras in the export
45 | ///
46 | public bool IncludeSpecs { get; set; }
47 |
48 | ///
49 | /// Gets or sets a value indicating whether to include Red light cameras in the export
50 | ///
51 | public bool IncludeRedLight { get; set; }
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/PocketGpsWorld/CookieAwareWebClient.cs:
--------------------------------------------------------------------------------
1 | //-----------------------------------------------------------------------
2 | //
3 | // All rights reserved
4 | //
5 | //-----------------------------------------------------------------------
6 | namespace System.Net
7 | {
8 | ///
9 | /// A Cookie aware web client
10 | ///
11 | public class CookieAwareWebClient : WebClient
12 | {
13 | ///
14 | /// The Cookies for this session
15 | ///
16 | private CookieContainer cookieContainer = new CookieContainer();
17 |
18 | ///
19 | /// Get web request whilst retaining cookies
20 | ///
21 | /// Address to fetch
22 | /// the Web request
23 | protected override WebRequest GetWebRequest(Uri address)
24 | {
25 | WebRequest request = base.GetWebRequest(address);
26 |
27 | if (request is HttpWebRequest)
28 | {
29 | (request as HttpWebRequest).CookieContainer = this.cookieContainer;
30 | }
31 |
32 | return request;
33 | }
34 | }
35 | }
--------------------------------------------------------------------------------
/PocketGpsWorld/CustomDictionary.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Gatso
8 | Truvelo
9 | Monitron
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/PocketGpsWorld/Mike Caddy.pfx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcaddy/audipoi/cf43be99d26c666117b0fdf63c955afabd2f7be8/PocketGpsWorld/Mike Caddy.pfx
--------------------------------------------------------------------------------
/PocketGpsWorld/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | //-----------------------------------------------------------------------
2 | //
3 | // All rights reserved
4 | //
5 | //-----------------------------------------------------------------------
6 | using System.Reflection;
7 | using System.Runtime.CompilerServices;
8 | using System.Runtime.InteropServices;
9 |
10 | // General Information about an assembly is controlled through the following
11 | // set of attributes. Change these attribute values to modify the information
12 | // associated with an assembly.
13 | [assembly: AssemblyTitle("PocketGpsWorld")]
14 | [assembly: AssemblyDescription("")]
15 | [assembly: AssemblyConfiguration("")]
16 | [assembly: AssemblyCompany("")]
17 | [assembly: AssemblyProduct("PocketGpsWorld")]
18 | [assembly: AssemblyCopyright("Copyright © 2015")]
19 | [assembly: AssemblyTrademark("")]
20 | [assembly: AssemblyCulture("")]
21 |
22 | // Setting ComVisible to false makes the types in this assembly not visible
23 | // to COM components. If you need to access a type in this assembly from
24 | // COM, set the ComVisible attribute to true on that type.
25 | [assembly: ComVisible(false)]
26 |
27 | // The following GUID is for the ID of the typelib if this project is exposed to COM
28 | [assembly: Guid("8317b549-6985-41ee-b06c-81f90e351960")]
29 |
30 | // Version information for an assembly consists of the following four values:
31 | //
32 | // Major Version
33 | // Minor Version
34 | // Build Number
35 | // Revision
36 | //
37 | // You can specify all the values or you can default the Build and Revision Numbers
38 | // by using the '*' as shown below:
39 | // [assembly: AssemblyVersion("1.0.*")]
40 | [assembly: AssemblyVersion("1.0.1.0")]
41 | [assembly: AssemblyFileVersion("1.0.1.0")]
42 |
--------------------------------------------------------------------------------
/PocketGpsWorld/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace PocketGpsWorld.Properties {
12 | using System;
13 |
14 |
15 | ///
16 | /// A strongly-typed resource class, for looking up localized strings, etc.
17 | ///
18 | // This class was auto-generated by the StronglyTypedResourceBuilder
19 | // class via a tool like ResGen or Visual Studio.
20 | // To add or remove a member, edit your .ResX file then rerun ResGen
21 | // with the /str option, or rebuild your VS project.
22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
25 | internal class Resources {
26 |
27 | private static global::System.Resources.ResourceManager resourceMan;
28 |
29 | private static global::System.Globalization.CultureInfo resourceCulture;
30 |
31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
32 | internal Resources() {
33 | }
34 |
35 | ///
36 | /// Returns the cached ResourceManager instance used by this class.
37 | ///
38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
39 | internal static global::System.Resources.ResourceManager ResourceManager {
40 | get {
41 | if (object.ReferenceEquals(resourceMan, null)) {
42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("PocketGpsWorld.Properties.Resources", typeof(Resources).Assembly);
43 | resourceMan = temp;
44 | }
45 | return resourceMan;
46 | }
47 | }
48 |
49 | ///
50 | /// Overrides the current thread's CurrentUICulture property for all
51 | /// resource lookups using this strongly typed resource class.
52 | ///
53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
54 | internal static global::System.Globalization.CultureInfo Culture {
55 | get {
56 | return resourceCulture;
57 | }
58 | set {
59 | resourceCulture = value;
60 | }
61 | }
62 |
63 | ///
64 | /// Looks up a localized resource of type System.Drawing.Bitmap.
65 | ///
66 | internal static System.Drawing.Bitmap Fixed {
67 | get {
68 | object obj = ResourceManager.GetObject("Fixed", resourceCulture);
69 | return ((System.Drawing.Bitmap)(obj));
70 | }
71 | }
72 |
73 | ///
74 | /// Looks up a localized resource of type System.Drawing.Bitmap.
75 | ///
76 | internal static System.Drawing.Bitmap Mobile {
77 | get {
78 | object obj = ResourceManager.GetObject("Mobile", resourceCulture);
79 | return ((System.Drawing.Bitmap)(obj));
80 | }
81 | }
82 |
83 | ///
84 | /// Looks up a localized resource of type System.Drawing.Bitmap.
85 | ///
86 | internal static System.Drawing.Bitmap PMobile {
87 | get {
88 | object obj = ResourceManager.GetObject("PMobile", resourceCulture);
89 | return ((System.Drawing.Bitmap)(obj));
90 | }
91 | }
92 |
93 | ///
94 | /// Looks up a localized resource of type System.Drawing.Bitmap.
95 | ///
96 | internal static System.Drawing.Bitmap Red_Light {
97 | get {
98 | object obj = ResourceManager.GetObject("Red_Light", resourceCulture);
99 | return ((System.Drawing.Bitmap)(obj));
100 | }
101 | }
102 |
103 | ///
104 | /// Looks up a localized resource of type System.Drawing.Bitmap.
105 | ///
106 | internal static System.Drawing.Bitmap Specs {
107 | get {
108 | object obj = ResourceManager.GetObject("Specs", resourceCulture);
109 | return ((System.Drawing.Bitmap)(obj));
110 | }
111 | }
112 | }
113 | }
114 |
--------------------------------------------------------------------------------
/PocketGpsWorld/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace PocketGpsWorld.Properties {
12 |
13 |
14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.4.0.0")]
16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
17 |
18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
19 |
20 | public static Settings Default {
21 | get {
22 | return defaultInstance;
23 | }
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/PocketGpsWorld/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/PocketGpsWorld/Resources/Fixed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcaddy/audipoi/cf43be99d26c666117b0fdf63c955afabd2f7be8/PocketGpsWorld/Resources/Fixed.png
--------------------------------------------------------------------------------
/PocketGpsWorld/Resources/Mobile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcaddy/audipoi/cf43be99d26c666117b0fdf63c955afabd2f7be8/PocketGpsWorld/Resources/Mobile.png
--------------------------------------------------------------------------------
/PocketGpsWorld/Resources/PMobile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcaddy/audipoi/cf43be99d26c666117b0fdf63c955afabd2f7be8/PocketGpsWorld/Resources/PMobile.png
--------------------------------------------------------------------------------
/PocketGpsWorld/Resources/Red Light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcaddy/audipoi/cf43be99d26c666117b0fdf63c955afabd2f7be8/PocketGpsWorld/Resources/Red Light.png
--------------------------------------------------------------------------------
/PocketGpsWorld/Resources/Specs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcaddy/audipoi/cf43be99d26c666117b0fdf63c955afabd2f7be8/PocketGpsWorld/Resources/Specs.png
--------------------------------------------------------------------------------
/PocketGpsWorld/Settings.StyleCop:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Gps
5 |
6 |
7 |
--------------------------------------------------------------------------------
/PocketGpsWorld/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
--------------------------------------------------------------------------------
/PocketGpsWorld/enums/CameraCategory.cs:
--------------------------------------------------------------------------------
1 | //-----------------------------------------------------------------------
2 | //
3 | // All rights reserved
4 | //
5 | //-----------------------------------------------------------------------
6 | namespace PocketGpsWorld
7 | {
8 | using System;
9 | using System.ComponentModel;
10 |
11 | ///
12 | /// Camera Category enumeration
13 | ///
14 | [Flags]
15 | public enum CameraCategory
16 | {
17 | ///
18 | /// No Category
19 | ///
20 | None = 0,
21 |
22 | ///
23 | /// Fixed Camera Category
24 | ///
25 | [Description("Cameras - Fixed")]
26 | Fixed = 1,
27 |
28 | ///
29 | /// Mobile Camera Category
30 | ///
31 | [Description("Cameras - Mobile")]
32 | Mobile = 2,
33 |
34 | ///
35 | /// Specs Camera Category
36 | ///
37 | [Description("Cameras - Specs")]
38 | Specs = 4,
39 |
40 | ///
41 | /// Red light Camera Category
42 | ///
43 | [Description("Cameras - Redlight")]
44 | RedLight = 8,
45 |
46 | ///
47 | /// Provisional Mobile Category
48 | ///
49 | [Description("Cameras - pMobile")]
50 | PMobile = 16
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/PocketGpsWorld/enums/CameraType.cs:
--------------------------------------------------------------------------------
1 | //-----------------------------------------------------------------------
2 | //
3 | // All rights reserved
4 | //
5 | //-----------------------------------------------------------------------
6 | namespace PocketGpsWorld
7 | {
8 | using System;
9 | using System.ComponentModel;
10 |
11 | ///
12 | /// Camera type enumeration
13 | ///
14 | [Flags]
15 | public enum CameraType
16 | {
17 | ///
18 | /// No Camera Type
19 | ///
20 | None = 0,
21 |
22 | ///
23 | /// Gatso Camera type
24 | ///
25 | [Description("Gatso")]
26 | GATSO = 1,
27 |
28 | ///
29 | /// Truvelo Camera type
30 | ///
31 | [Description("Truvelo")]
32 | TRUVELO = 2,
33 |
34 | ///
35 | /// Monitron Camera type
36 | ///
37 | [Description("Monitron")]
38 | MONITRON = 4,
39 |
40 | ///
41 | /// Red light Camera type
42 | ///
43 | [Description("Redlight")]
44 | REDLIGHT = 8,
45 |
46 | ///
47 | /// Red speed Camera type
48 | ///
49 | [Description("Redspeed")]
50 | REDSPEED = 16,
51 |
52 | ///
53 | /// Specs Camera Type
54 | ///
55 | [Description("Specs")]
56 | SPECS = 32,
57 |
58 | ///
59 | /// Mobile Camera Type
60 | ///
61 | [Description("Mobile")]
62 | MOBILE = 64
63 | }
64 | }
65 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ## Speed Camera To Poi
2 |
3 | This application downloads the latest Camera Database from PocketGPSWorld and builds a POI database, if present it will retain the database already on the target drive, replacing the Camera categories if present.
4 |
5 | Currently the app will group cameras into 5 categories:-
6 |
7 | * Fixed - Gatso, Truvelo, Monitorn, RedSpeed
8 | * Mobile - Verified Mobile camera (safty camera partnersip) sites
9 | * Specs - Average Speed cameras
10 | * RedLight - Traffic Light cameras (some of which double up as speed cameras)
11 |
12 | Latest version - [v0.9.4](https://github.com/mcaddy/audipoi/raw/master/Releases/SpeedCameraToPoi_v0.9.4.zip)
13 |
14 | To install unpack the contents of the zip file into a folder of your choice and run SpeedCameraToPoi.exe
15 |
16 | ## POI Builder
17 |
18 | This application downloads latest collections of POIs and builds a POI database, if present it will retain the database already on the target drive, replacing the requested categories if present.
19 |
20 | Currently the app can source the following POI categories:-
21 |
22 | * National Trust
23 | * National Trust Scotland
24 | * English Heritage
25 | * Historic Scotland
26 | * Historic Houses
27 | * RSPB Reserves
28 |
29 | Latest version - [v0.9.1](https://github.com/mcaddy/audipoi/raw/master/Releases/POIBuilder_v0.9.1.zip)
30 |
31 | To install unpack the contents of the zip file into a folder of your choice and run AudiPoiBuilder.exe
32 |
33 | ## Geocache To Poi
34 |
35 | This application takes a GPX file of Geocaches and builds a POI database, if present it will retain the database already on the target drive, replacing the Geocache categories if present.
36 |
37 | Currently the app will group caches by type, the following types will be created and feature in the MyAudi Special Destinations
38 |
39 | * Caches - Earthcaches
40 | * Caches - Letterbox
41 | * Caches - Multi
42 | * Caches - Traditional
43 | * Caches - Mystery
44 | * Caches - Virtual
45 | * Caches - Wherigo
46 | * Caches - Webcam
47 |
48 | Optionally users can decide to exclude their own caches or found caches.
49 |
50 | Latest version - [v0.9.2](https://github.com/mcaddy/audipoi/raw/master/Releases/GeocacheToPoi_v0.9.2.zip)
51 |
52 | if you have features you'd like to see send me a mail
53 |
--------------------------------------------------------------------------------
/Releases/GeocacheToPoi/GeocacheToPoi_v0.9.1.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcaddy/audipoi/cf43be99d26c666117b0fdf63c955afabd2f7be8/Releases/GeocacheToPoi/GeocacheToPoi_v0.9.1.zip
--------------------------------------------------------------------------------
/Releases/GeocacheToPoi/v0.9.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcaddy/audipoi/cf43be99d26c666117b0fdf63c955afabd2f7be8/Releases/GeocacheToPoi/v0.9.zip
--------------------------------------------------------------------------------
/Releases/GeocacheToPoi_v0.9.2.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcaddy/audipoi/cf43be99d26c666117b0fdf63c955afabd2f7be8/Releases/GeocacheToPoi_v0.9.2.zip
--------------------------------------------------------------------------------
/Releases/POIBuilder/POIBuilder_v0.9.0.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcaddy/audipoi/cf43be99d26c666117b0fdf63c955afabd2f7be8/Releases/POIBuilder/POIBuilder_v0.9.0.zip
--------------------------------------------------------------------------------
/Releases/POIBuilder_v0.9.1.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcaddy/audipoi/cf43be99d26c666117b0fdf63c955afabd2f7be8/Releases/POIBuilder_v0.9.1.zip
--------------------------------------------------------------------------------
/Releases/SpeedCameraToPoi/SpeedCameraToPoi_v0.9.3.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcaddy/audipoi/cf43be99d26c666117b0fdf63c955afabd2f7be8/Releases/SpeedCameraToPoi/SpeedCameraToPoi_v0.9.3.zip
--------------------------------------------------------------------------------
/Releases/SpeedCameraToPoi/v0.9.1.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcaddy/audipoi/cf43be99d26c666117b0fdf63c955afabd2f7be8/Releases/SpeedCameraToPoi/v0.9.1.zip
--------------------------------------------------------------------------------
/Releases/SpeedCameraToPoi/v0.9.2.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcaddy/audipoi/cf43be99d26c666117b0fdf63c955afabd2f7be8/Releases/SpeedCameraToPoi/v0.9.2.zip
--------------------------------------------------------------------------------
/Releases/SpeedCameraToPoi/v0.9.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcaddy/audipoi/cf43be99d26c666117b0fdf63c955afabd2f7be8/Releases/SpeedCameraToPoi/v0.9.zip
--------------------------------------------------------------------------------
/Releases/SpeedCameraToPoi_v0.9.4.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcaddy/audipoi/cf43be99d26c666117b0fdf63c955afabd2f7be8/Releases/SpeedCameraToPoi_v0.9.4.zip
--------------------------------------------------------------------------------
/Shared/.gitignore:
--------------------------------------------------------------------------------
1 | bin/*
2 | packages/*
3 | obj/*
4 |
--------------------------------------------------------------------------------
/Shared/Azure.cs:
--------------------------------------------------------------------------------
1 | //-----------------------------------------------------------------------
2 | //
3 | // All rights reserved
4 | //
5 | //-----------------------------------------------------------------------
6 | namespace Mcaddy
7 | {
8 | using System.Net;
9 |
10 | ///
11 | /// Static class with helper functions for azure
12 | ///
13 | public static class Azure
14 | {
15 | ///
16 | /// Invoke an Azure Function
17 | ///
18 | /// Function Path
19 | /// API Key
20 | /// The output of the function
21 | public static string InvokeFunction(string path, string apiKey)
22 | {
23 | WebClient client = new WebClient();
24 | client.Headers.Add("x-functions-key", apiKey);
25 | ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
26 |
27 | return client.DownloadString(path);
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/Shared/Config.cs:
--------------------------------------------------------------------------------
1 | //-----------------------------------------------------------------------
2 | //
3 | // All rights reserved
4 | //
5 | //-----------------------------------------------------------------------
6 | namespace Mcaddy
7 | {
8 | using System.Collections.Generic;
9 | using System.IO;
10 | using System.Net;
11 | using Newtonsoft.Json;
12 |
13 | ///
14 | /// Config Manger Class
15 | ///
16 | public class Config
17 | {
18 | ///
19 | /// Dictionary of Key Values pairs
20 | ///
21 | private Dictionary configSettings = null;
22 |
23 | ///
24 | /// Load the config from the internet, if this fails default to the last config
25 | /// file downloaded or the one that shipped with the product
26 | ///
27 | public void Load()
28 | {
29 | // Get Location from App Settings
30 | string configLocation = Properties.Settings.Default.OnlineConfig;
31 | string configFile;
32 |
33 | // Try to load from the net to get latest settings
34 | try
35 | {
36 | WebClient client = new WebClient();
37 | ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
38 | configFile = client.DownloadString(configLocation);
39 |
40 | // Update the local config so that we can function offline or in the event of a github failure
41 | File.WriteAllText(Properties.Settings.Default.OfflineConfig, configFile);
42 | }
43 | catch (WebException)
44 | {
45 | // If failed try to use the local version
46 | configFile = File.ReadAllText(Properties.Settings.Default.OfflineConfig);
47 | }
48 |
49 | this.configSettings = JsonConvert.DeserializeObject>(configFile);
50 | }
51 |
52 | ///
53 | /// Get a referenced configuration value
54 | ///
55 | /// Key to select
56 | /// value of the requested key
57 | public string Get(string key)
58 | {
59 | if (this.configSettings == null)
60 | {
61 | this.Load();
62 | }
63 |
64 | this.configSettings.TryGetValue(key, out string value);
65 |
66 | return value;
67 | }
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/Shared/DirectoryUtilities.cs:
--------------------------------------------------------------------------------
1 | //-----------------------------------------------------------------------
2 | //
3 | // All rights reserved
4 | //
5 | //-----------------------------------------------------------------------
6 | namespace Mcaddy
7 | {
8 | using System.IO;
9 |
10 | ///
11 | /// Directory Utilities Class
12 | ///
13 | public sealed class DirectoryUtilities
14 | {
15 | ///
16 | /// Prevents a default instance of the class from being created
17 | ///
18 | private DirectoryUtilities()
19 | {
20 | }
21 |
22 | ///
23 | /// Get the size of a directory and all subfolders.
24 | ///
25 | /// Path of folder
26 | /// Size of the folder
27 | public static long GetDirectorySize(string folderPath)
28 | {
29 | string[] a = Directory.GetFiles(folderPath, "*.*", SearchOption.AllDirectories);
30 |
31 | long b = 0;
32 | foreach (string name in a)
33 | {
34 | FileInfo info = new FileInfo(name);
35 | b += info.Length;
36 | }
37 |
38 | return b;
39 | }
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/Shared/ExtensionMethods.cs:
--------------------------------------------------------------------------------
1 | //-----------------------------------------------------------------------
2 | //
3 | // All rights reserved
4 | //
5 | //-----------------------------------------------------------------------
6 | namespace Mcaddy
7 | {
8 | using System;
9 | using System.Collections.Generic;
10 | using System.ComponentModel;
11 | using System.Linq;
12 | using System.Reflection;
13 | using System.Text;
14 | using System.Threading.Tasks;
15 |
16 | ///
17 | /// Extension Methods
18 | ///
19 | public static class ExtensionMethods
20 | {
21 | ///
22 | /// Convert a String to it's Enum value
23 | ///
24 | /// Enum type
25 | /// the name to convert
26 | /// the Enum value
27 | public static T StringToEnum(string name)
28 | {
29 | return (T)Enum.Parse(typeof(T), name);
30 | }
31 |
32 | ///
33 | /// Get the value of the Description attribute
34 | ///
35 | /// the enum to lookup
36 | /// value of the description attribute
37 | public static string ToDescriptionString(this Enum value)
38 | {
39 | FieldInfo fi = value.GetType().GetField(value.ToString());
40 |
41 | DescriptionAttribute[] attributes =
42 | (DescriptionAttribute[])fi.GetCustomAttributes(
43 | typeof(DescriptionAttribute),
44 | false);
45 |
46 | if (attributes != null &&
47 | attributes.Length > 0)
48 | {
49 | return attributes[0].Description;
50 | }
51 | else
52 | {
53 | return value.ToString();
54 | }
55 | }
56 |
57 | ///
58 | /// Adds a Range of items to a Collection
59 | ///
60 | /// This objects type
61 | /// this object
62 | /// the other collection
63 | public static void AddRange(this ICollection destination, IEnumerable source)
64 | {
65 | if (source == null)
66 | {
67 | throw new ArgumentNullException("source");
68 | }
69 |
70 | if (destination == null)
71 | {
72 | throw new ArgumentNullException("destination");
73 | }
74 |
75 | List list = destination as List;
76 |
77 | if (list != null)
78 | {
79 | list.AddRange(source);
80 | }
81 | else
82 | {
83 | foreach (T item in source)
84 | {
85 | destination.Add(item);
86 | }
87 | }
88 | }
89 |
90 | ///
91 | /// Split a Byte array into chunks
92 | ///
93 | /// input byte array
94 | /// chunk size
95 | /// a collection of byte arrays
96 | public static IEnumerable Split(this byte[] value, int bufferLength)
97 | {
98 | int countOfArray = value.Length / bufferLength;
99 | if (value.Length % bufferLength > 0)
100 | {
101 | countOfArray++;
102 | }
103 |
104 | for (int i = 0; i < countOfArray; i++)
105 | {
106 | yield return value.Skip(i * bufferLength).Take(bufferLength).ToArray();
107 | }
108 | }
109 | }
110 | }
111 |
--------------------------------------------------------------------------------
/Shared/LoggingClient.cs:
--------------------------------------------------------------------------------
1 | //-----------------------------------------------------------------------
2 | //
3 | // All rights reserved
4 | //
5 | //-----------------------------------------------------------------------
6 | namespace Mcaddy
7 | {
8 | using System;
9 | using System.Net;
10 |
11 | ///
12 | /// Utility class to support logging to the cloud
13 | ///
14 | public class LoggingClient
15 | {
16 | ///
17 | /// Configuration Class
18 | ///
19 | private Config configuration = null;
20 |
21 | ///
22 | /// Initializes a new instance of the class.
23 | ///
24 | /// Configuration object
25 | public LoggingClient(Config configuration)
26 | {
27 | this.configuration = configuration;
28 | }
29 |
30 | ///
31 | /// Log an entry to the Cloud
32 | ///
33 | /// Username to log record against
34 | /// Message to store
35 | public void Log(string username, string message)
36 | {
37 | if (this.configuration == null)
38 | {
39 | this.configuration = new Config();
40 | }
41 |
42 | try
43 | {
44 | string path = string.Format(this.configuration.Get("LogEventFunctionPath"), WebUtility.UrlEncode(username.Replace("\\", "_")), WebUtility.UrlEncode(message));
45 |
46 | Azure.InvokeFunction(path, string.Empty);
47 | }
48 | catch (Exception)
49 | {
50 | // Catch all errors and do nothing as we don't want to disrupt the user in the event of failed logging.
51 | }
52 | }
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/Shared/Mike Caddy.pfx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcaddy/audipoi/cf43be99d26c666117b0fdf63c955afabd2f7be8/Shared/Mike Caddy.pfx
--------------------------------------------------------------------------------
/Shared/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | //-----------------------------------------------------------------------
2 | //
3 | // All rights reserved
4 | //
5 | //-----------------------------------------------------------------------
6 | using System.Reflection;
7 | using System.Runtime.CompilerServices;
8 | using System.Runtime.InteropServices;
9 |
10 | // General Information about an assembly is controlled through the following
11 | // set of attributes. Change these attribute values to modify the information
12 | // associated with an assembly.
13 | [assembly: AssemblyTitle("Shared")]
14 | [assembly: AssemblyDescription("")]
15 | [assembly: AssemblyConfiguration("")]
16 | [assembly: AssemblyCompany("")]
17 | [assembly: AssemblyProduct("Shared")]
18 | [assembly: AssemblyCopyright("Copyright © 2015")]
19 | [assembly: AssemblyTrademark("")]
20 | [assembly: AssemblyCulture("")]
21 |
22 | // Setting ComVisible to false makes the types in this assembly not visible
23 | // to COM components. If you need to access a type in this assembly from
24 | // COM, set the ComVisible attribute to true on that type.
25 | [assembly: ComVisible(false)]
26 |
27 | // The following GUID is for the ID of the typelib if this project is exposed to COM
28 | [assembly: Guid("34069ed0-63d0-47f7-a1ec-f9b621508629")]
29 |
30 | // Version information for an assembly consists of the following four values:
31 | //
32 | // Major Version
33 | // Minor Version
34 | // Build Number
35 | // Revision
36 | //
37 | // You can specify all the values or you can default the Build and Revision Numbers
38 | // by using the '*' as shown below:
39 | // [assembly: AssemblyVersion("1.0.*")]
40 | [assembly: AssemblyVersion("1.0.0.0")]
41 | [assembly: AssemblyFileVersion("1.0.0.0")]
42 |
--------------------------------------------------------------------------------
/Shared/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace Mcaddy.Properties {
12 |
13 |
14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.4.0.0")]
16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
17 |
18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
19 |
20 | public static Settings Default {
21 | get {
22 | return defaultInstance;
23 | }
24 | }
25 |
26 | [global::System.Configuration.UserScopedSettingAttribute()]
27 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
28 | [global::System.Configuration.DefaultSettingValueAttribute("https://raw.githubusercontent.com/mcaddy/audipoi/master/Shared/config.json")]
29 | public string OnlineConfig {
30 | get {
31 | return ((string)(this["OnlineConfig"]));
32 | }
33 | set {
34 | this["OnlineConfig"] = value;
35 | }
36 | }
37 |
38 | [global::System.Configuration.UserScopedSettingAttribute()]
39 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
40 | [global::System.Configuration.DefaultSettingValueAttribute("./config.json")]
41 | public string OfflineConfig {
42 | get {
43 | return ((string)(this["OfflineConfig"]));
44 | }
45 | set {
46 | this["OfflineConfig"] = value;
47 | }
48 | }
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/Shared/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | https://raw.githubusercontent.com/mcaddy/audipoi/master/Shared/config.json
7 |
8 |
9 | ./config.json
10 |
11 |
12 |
--------------------------------------------------------------------------------
/Shared/SecureStrings.cs:
--------------------------------------------------------------------------------
1 | //-----------------------------------------------------------------------
2 | //
3 | // All rights reserved
4 | //
5 | //-----------------------------------------------------------------------
6 |
7 | namespace Mcaddy
8 | {
9 | using System;
10 | using System.Runtime.InteropServices;
11 | using System.Security;
12 | using System.Security.Cryptography;
13 | using System.Text;
14 |
15 | ///
16 | /// Secure Strings class
17 | ///
18 | public static class SecureStrings
19 | {
20 | ///
21 | /// Some Entropy
22 | ///
23 | private static byte[] entropy = Encoding.Unicode.GetBytes("SomeEntropy");
24 |
25 | ///
26 | /// Encrypt a secure string
27 | ///
28 | /// The secure string
29 | /// An encrypted string
30 | public static string EncryptString(SecureString input)
31 | {
32 | byte[] encryptedData = ProtectedData.Protect(
33 | Encoding.Unicode.GetBytes(ToInsecureString(input)),
34 | entropy,
35 | DataProtectionScope.CurrentUser);
36 | return Convert.ToBase64String(encryptedData);
37 | }
38 |
39 | ///
40 | /// Decrypt a secure string
41 | ///
42 | /// the encrypted string
43 | /// A secure string
44 | public static SecureString DecryptString(string encryptedData)
45 | {
46 | try
47 | {
48 | byte[] decryptedData = ProtectedData.Unprotect(
49 | Convert.FromBase64String(encryptedData),
50 | entropy,
51 | DataProtectionScope.CurrentUser);
52 | return ToSecureString(Encoding.Unicode.GetString(decryptedData));
53 | }
54 | catch
55 | {
56 | return null;
57 | }
58 | }
59 |
60 | ///
61 | /// Converts a string to a secure string
62 | ///
63 | /// a string
64 | /// A secure string
65 | public static SecureString ToSecureString(string input)
66 | {
67 | SecureString secure = new SecureString();
68 | foreach (char c in input)
69 | {
70 | secure.AppendChar(c);
71 | }
72 |
73 | secure.MakeReadOnly();
74 |
75 | return secure;
76 | }
77 |
78 | ///
79 | /// Converts a SecureString to a string
80 | ///
81 | /// The SecureString
82 | /// A string
83 | public static string ToInsecureString(SecureString input)
84 | {
85 | if (input == null)
86 | {
87 | throw new ArgumentNullException("input");
88 | }
89 |
90 | string returnValue = string.Empty;
91 | IntPtr ptr = Marshal.SecureStringToBSTR(input);
92 | try
93 | {
94 | returnValue = Marshal.PtrToStringBSTR(ptr);
95 | }
96 | finally
97 | {
98 | Marshal.ZeroFreeBSTR(ptr);
99 | }
100 |
101 | return returnValue;
102 | }
103 | }
104 | }
105 |
--------------------------------------------------------------------------------
/Shared/Shared.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {34069ED0-63D0-47F7-A1EC-F9B621508629}
8 | Library
9 | Properties
10 | Mcaddy
11 | Mcaddy.Shared
12 | v4.8
13 | 512
14 |
15 |
16 |
17 | true
18 | full
19 | false
20 | bin\Debug\
21 | DEBUG;TRACE
22 | prompt
23 | 4
24 |
25 |
26 | pdbonly
27 | true
28 | bin\Release\
29 | TRACE
30 | prompt
31 | 4
32 |
33 |
34 | true
35 |
36 |
37 | Mike Caddy.pfx
38 |
39 |
40 |
41 | False
42 | ..\..\..\..\..\Program Files\dotnet\sdk\NuGetFallbackFolder\newtonsoft.json\11.0.2\lib\netstandard2.0\Newtonsoft.Json.dll
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 | True
66 | True
67 | Settings.settings
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 | Always
76 |
77 |
78 |
79 | SettingsSingleFileGenerator
80 | Settings.Designer.cs
81 |
82 |
83 |
84 |
85 |
86 | 4.6.1055
87 |
88 |
89 |
90 |
97 |
--------------------------------------------------------------------------------
/Shared/Shared.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 14
4 | VisualStudioVersion = 14.0.23107.0
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Shared", "Shared.csproj", "{34069ED0-63D0-47F7-A1EC-F9B621508629}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|Any CPU = Debug|Any CPU
11 | Release|Any CPU = Release|Any CPU
12 | EndGlobalSection
13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
14 | {34069ED0-63D0-47F7-A1EC-F9B621508629}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
15 | {34069ED0-63D0-47F7-A1EC-F9B621508629}.Debug|Any CPU.Build.0 = Debug|Any CPU
16 | {34069ED0-63D0-47F7-A1EC-F9B621508629}.Release|Any CPU.ActiveCfg = Release|Any CPU
17 | {34069ED0-63D0-47F7-A1EC-F9B621508629}.Release|Any CPU.Build.0 = Release|Any CPU
18 | EndGlobalSection
19 | GlobalSection(SolutionProperties) = preSolution
20 | HideSolutionNode = FALSE
21 | EndGlobalSection
22 | EndGlobal
23 |
--------------------------------------------------------------------------------
/Shared/Shared.snk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcaddy/audipoi/cf43be99d26c666117b0fdf63c955afabd2f7be8/Shared/Shared.snk
--------------------------------------------------------------------------------
/Shared/UIUtils.cs:
--------------------------------------------------------------------------------
1 | //-----------------------------------------------------------------------
2 | //
3 | // All rights reserved
4 | //
5 | //-----------------------------------------------------------------------
6 | namespace Mcaddy
7 | {
8 | using System;
9 | using System.IO;
10 | using System.Windows.Controls;
11 |
12 | ///
13 | /// Shared utilities for User Interfaces
14 | ///
15 | public class UIUtils
16 | {
17 | ///
18 | /// Size Suffixes Array
19 | ///
20 | private static readonly string[] SizeSuffixes = { "bytes", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB" };
21 |
22 | ///
23 | /// Gets the optimum Size suffix for a storage size
24 | ///
25 | /// value in bytes
26 | /// number of decimal places to return
27 | /// a display friendly size
28 | public static string SizeSuffix(long value, int decimalPlaces = 1)
29 | {
30 | if (decimalPlaces < 0)
31 | {
32 | throw new ArgumentOutOfRangeException("decimalPlaces");
33 | }
34 |
35 | if (value < 0)
36 | {
37 | return "-" + SizeSuffix(-value);
38 | }
39 |
40 | if (value == 0)
41 | {
42 | return string.Format("{0:n" + decimalPlaces + "} bytes", 0);
43 | }
44 |
45 | // mag is 0 for bytes, 1 for KB, 2, for MB, etc.
46 | int mag = (int)Math.Log(value, 1024);
47 |
48 | // 1L << (mag * 10) == 2 ^ (10 * mag)
49 | // [i.e. the number of bytes in the unit corresponding to mag]
50 | decimal adjustedSize = (decimal)value / (1L << (mag * 10));
51 |
52 | // make adjustment when the value is large enough that
53 | // it would round up to 1000 or more
54 | if (Math.Round(adjustedSize, decimalPlaces) >= 1000)
55 | {
56 | mag += 1;
57 | adjustedSize /= 1024;
58 | }
59 |
60 | return string.Format(
61 | "{0:n" + decimalPlaces + "} {1}",
62 | adjustedSize,
63 | SizeSuffixes[mag]);
64 | }
65 |
66 | ///
67 | /// Selects an item from a ComboBox based on it's tag value
68 | ///
69 | /// Combo Box to enumerate
70 | /// Tag to select
71 | /// true if item found, false otherwise
72 | public static bool SelectItemByTag(ComboBox comboBox, string tag)
73 | {
74 | comboBox.SelectedIndex = -1;
75 | foreach (ComboBoxItem item in comboBox.Items)
76 | {
77 | if (item.Tag.ToString().ToUpper().Equals(tag.ToUpper()))
78 | {
79 | item.IsSelected = true;
80 | return true;
81 | }
82 | }
83 |
84 | return false;
85 | }
86 |
87 | ///
88 | /// Bind the Drive List
89 | ///
90 | /// Combo Box to populate
91 | /// Number of items in the Drive list
92 | public static bool BindDriveList(ComboBox comboBox)
93 | {
94 | comboBox.Items.Clear();
95 | comboBox.Text = string.Empty;
96 |
97 | DriveInfo[] allDrives = DriveInfo.GetDrives();
98 |
99 | foreach (DriveInfo d in allDrives)
100 | {
101 | if (d.DriveType.Equals(DriveType.Removable) && d.IsReady)
102 | {
103 | ComboBoxItem item = new ComboBoxItem()
104 | {
105 | Content = $"{d.Name} - {d.VolumeLabel} ({SizeSuffix(d.TotalSize, 1)})",
106 | Tag = d.Name
107 | };
108 | comboBox.Items.Add(item);
109 | }
110 | }
111 |
112 | if (comboBox.Items.Count > 0)
113 | {
114 | comboBox.SelectedIndex = 0;
115 | }
116 |
117 | return comboBox.Items.Count > 0;
118 | }
119 | }
120 | }
121 |
--------------------------------------------------------------------------------
/Shared/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | https://raw.githubusercontent.com/mcaddy/audipoi/master/Shared/config.json
12 |
13 |
14 | ./config.json
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/Shared/config.json:
--------------------------------------------------------------------------------
1 | {
2 | "AccountName": "mclogging",
3 | "CategoriesFunctionPath": "https://poiloaderbackend.azurewebsites.net/api/Categories",
4 | "CategoryImagesFunctionPath": "https://poiloaderbackend.azurewebsites.net/api/CategoryImages/{0}",
5 | "Container": "csv",
6 | "GetAccessTokenFunctionPath": "https://mclogging.azurewebsites.net/api/GetAccessToken/{0}",
7 | "LogEventFunctionPath": "https://mclogging.azurewebsites.net/api/LogEvent/{0}/{1}",
8 | "POIsFunctionPath": "https://poiloaderbackend.azurewebsites.net/api/POIs/{0}"
9 | }
10 |
--------------------------------------------------------------------------------
/SpeedCameraToPoi/.gitignore:
--------------------------------------------------------------------------------
1 | bin/*
2 | packages/*
3 | obj/*
4 |
--------------------------------------------------------------------------------
/SpeedCameraToPoi/App.xaml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/SpeedCameraToPoi/App.xaml.cs:
--------------------------------------------------------------------------------
1 | //-----------------------------------------------------------------------
2 | //
3 | // All rights reserved
4 | //
5 | //-----------------------------------------------------------------------
6 | namespace SpeedCameraToPoi
7 | {
8 | using System.Windows;
9 | using Mcaddy;
10 |
11 | ///
12 | /// Interaction logic for App.xaml
13 | ///
14 | public partial class App : Application
15 | {
16 | ///
17 | /// Configuration object
18 | ///
19 | private static Config configuration = new Config();
20 |
21 | ///
22 | /// Gets the configuration object
23 | ///
24 | public static Config Configuration { get => configuration; private set => configuration = value; }
25 |
26 | ///
27 | /// App Startup Event - Process the Command Line arguments
28 | ///
29 | /// Sender Argument
30 | /// Startup Event Arguments
31 | private void Application_Startup(object sender, StartupEventArgs e)
32 | {
33 | bool auto = false;
34 | string targetDrive = string.Empty;
35 |
36 | // Parse Command Line
37 | for (int i = 0; i < e.Args.Length; i++)
38 | {
39 | switch (e.Args[i].ToLower())
40 | {
41 | case "-auto":
42 | auto = true;
43 | break;
44 | case "-target":
45 | if (e.Args.Length > (i + 1))
46 | {
47 | targetDrive = e.Args[i + 1];
48 | }
49 |
50 | break;
51 | default:
52 | break;
53 | }
54 | }
55 |
56 | App.Current.Properties["targetDrive"] = targetDrive;
57 | App.Current.Properties["auto"] = auto;
58 | }
59 | }
60 | }
--------------------------------------------------------------------------------
/SpeedCameraToPoi/CustomDictionary.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | xaml
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/SpeedCameraToPoi/MainWindow.xaml:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
--------------------------------------------------------------------------------
/SpeedCameraToPoi/Mike Caddy.pfx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcaddy/audipoi/cf43be99d26c666117b0fdf63c955afabd2f7be8/SpeedCameraToPoi/Mike Caddy.pfx
--------------------------------------------------------------------------------
/SpeedCameraToPoi/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | //-----------------------------------------------------------------------
2 | //
3 | // All rights reserved
4 | //
5 | //-----------------------------------------------------------------------
6 |
7 | using System.Reflection;
8 | using System.Resources;
9 | using System.Runtime.CompilerServices;
10 | using System.Runtime.InteropServices;
11 | using System.Windows;
12 |
13 | // General Information about an assembly is controlled through the following
14 | // set of attributes. Change these attribute values to modify the information
15 | // associated with an assembly.
16 | [assembly: AssemblyTitle("Speed Camera To Audi Poi Utility")]
17 | [assembly: AssemblyDescription("")]
18 | [assembly: AssemblyConfiguration("")]
19 | [assembly: AssemblyCompany("")]
20 | [assembly: AssemblyProduct("SpeedCameraToPoi")]
21 | [assembly: AssemblyCopyright("Copyright © 2019")]
22 | [assembly: AssemblyTrademark("")]
23 | [assembly: AssemblyCulture("")]
24 |
25 | [assembly: ComVisible(false)]
26 |
27 | [assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)]
28 |
29 | [assembly: AssemblyVersion("0.9.4.0")]
30 | [assembly: AssemblyFileVersion("0.9.4.0")]
31 |
--------------------------------------------------------------------------------
/SpeedCameraToPoi/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace SpeedCameraToPoi.Properties {
12 | using System;
13 |
14 |
15 | ///
16 | /// A strongly-typed resource class, for looking up localized strings, etc.
17 | ///
18 | // This class was auto-generated by the StronglyTypedResourceBuilder
19 | // class via a tool like ResGen or Visual Studio.
20 | // To add or remove a member, edit your .ResX file then rerun ResGen
21 | // with the /str option, or rebuild your VS project.
22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
25 | internal class Resources {
26 |
27 | private static global::System.Resources.ResourceManager resourceMan;
28 |
29 | private static global::System.Globalization.CultureInfo resourceCulture;
30 |
31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
32 | internal Resources() {
33 | }
34 |
35 | ///
36 | /// Returns the cached ResourceManager instance used by this class.
37 | ///
38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
39 | internal static global::System.Resources.ResourceManager ResourceManager {
40 | get {
41 | if (object.ReferenceEquals(resourceMan, null)) {
42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SpeedCameraToPoi.Properties.Resources", typeof(Resources).Assembly);
43 | resourceMan = temp;
44 | }
45 | return resourceMan;
46 | }
47 | }
48 |
49 | ///
50 | /// Overrides the current thread's CurrentUICulture property for all
51 | /// resource lookups using this strongly typed resource class.
52 | ///
53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
54 | internal static global::System.Globalization.CultureInfo Culture {
55 | get {
56 | return resourceCulture;
57 | }
58 | set {
59 | resourceCulture = value;
60 | }
61 | }
62 |
63 | ///
64 | /// Looks up a localized string similar to {0} waypoints loaded!.
65 | ///
66 | internal static string CompletionFormatString {
67 | get {
68 | return ResourceManager.GetString("CompletionFormatString", resourceCulture);
69 | }
70 | }
71 |
72 | ///
73 | /// Looks up a localized string similar to Done!.
74 | ///
75 | internal static string CompletionTitle {
76 | get {
77 | return ResourceManager.GetString("CompletionTitle", resourceCulture);
78 | }
79 | }
80 |
81 | ///
82 | /// Looks up a localized string similar to Error.
83 | ///
84 | internal static string ErrorTitle {
85 | get {
86 | return ResourceManager.GetString("ErrorTitle", resourceCulture);
87 | }
88 | }
89 |
90 | ///
91 | /// Looks up a localized string similar to Soruce or destination invalid.
92 | ///
93 | internal static string FileNotFoundError {
94 | get {
95 | return ResourceManager.GetString("FileNotFoundError", resourceCulture);
96 | }
97 | }
98 |
99 | ///
100 | /// Looks up a localized string similar to Invalid target drive specified on command line.
101 | ///
102 | internal static string InvalidTargetDriveOnCommandLine {
103 | get {
104 | return ResourceManager.GetString("InvalidTargetDriveOnCommandLine", resourceCulture);
105 | }
106 | }
107 |
108 | ///
109 | /// Looks up a localized string similar to Log into PocketGPSWorld and browse to the Downloads section
110 | ///
111 | ///Select the 'Other - CSV' and 'UK - Single file with all cameras' options and click download to obtian the Camera POIs file.
112 | ///
113 | internal static string ManualDownloadGuidance {
114 | get {
115 | return ResourceManager.GetString("ManualDownloadGuidance", resourceCulture);
116 | }
117 | }
118 |
119 | ///
120 | /// Looks up a localized string similar to Manual Download.
121 | ///
122 | internal static string ManualDownloadGuidanceTitle {
123 | get {
124 | return ResourceManager.GetString("ManualDownloadGuidanceTitle", resourceCulture);
125 | }
126 | }
127 |
128 | ///
129 | /// Looks up a localized string similar to Would you like to try building from a manually downloaded file?.
130 | ///
131 | internal static string ManualDownloadPrompt {
132 | get {
133 | return ResourceManager.GetString("ManualDownloadPrompt", resourceCulture);
134 | }
135 | }
136 |
137 | ///
138 | /// Looks up a localized string similar to Password not entered.
139 | ///
140 | internal static string PasswordError {
141 | get {
142 | return ResourceManager.GetString("PasswordError", resourceCulture);
143 | }
144 | }
145 |
146 | ///
147 | /// Looks up a localized string similar to Target drive not selected.
148 | ///
149 | internal static string TargetDriveError {
150 | get {
151 | return ResourceManager.GetString("TargetDriveError", resourceCulture);
152 | }
153 | }
154 |
155 | ///
156 | /// Looks up a localized string similar to Username not entered.
157 | ///
158 | internal static string UsernameError {
159 | get {
160 | return ResourceManager.GetString("UsernameError", resourceCulture);
161 | }
162 | }
163 | }
164 | }
165 |
--------------------------------------------------------------------------------
/SpeedCameraToPoi/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace SpeedCameraToPoi.Properties {
12 |
13 |
14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.1.0.0")]
16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
17 |
18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
19 |
20 | public static Settings Default {
21 | get {
22 | return defaultInstance;
23 | }
24 | }
25 |
26 | [global::System.Configuration.UserScopedSettingAttribute()]
27 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
28 | [global::System.Configuration.DefaultSettingValueAttribute("")]
29 | public string PocketGpsWorldUsername {
30 | get {
31 | return ((string)(this["PocketGpsWorldUsername"]));
32 | }
33 | set {
34 | this["PocketGpsWorldUsername"] = value;
35 | }
36 | }
37 |
38 | [global::System.Configuration.UserScopedSettingAttribute()]
39 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
40 | [global::System.Configuration.DefaultSettingValueAttribute("")]
41 | public string PocketGpsWorldPassword {
42 | get {
43 | return ((string)(this["PocketGpsWorldPassword"]));
44 | }
45 | set {
46 | this["PocketGpsWorldPassword"] = value;
47 | }
48 | }
49 |
50 | [global::System.Configuration.UserScopedSettingAttribute()]
51 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
52 | [global::System.Configuration.DefaultSettingValueAttribute("True")]
53 | public bool IncludeUnverifiedCameras {
54 | get {
55 | return ((bool)(this["IncludeUnverifiedCameras"]));
56 | }
57 | set {
58 | this["IncludeUnverifiedCameras"] = value;
59 | }
60 | }
61 |
62 | [global::System.Configuration.UserScopedSettingAttribute()]
63 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
64 | [global::System.Configuration.DefaultSettingValueAttribute("True")]
65 | public bool IncludeFixedCameras {
66 | get {
67 | return ((bool)(this["IncludeFixedCameras"]));
68 | }
69 | set {
70 | this["IncludeFixedCameras"] = value;
71 | }
72 | }
73 |
74 | [global::System.Configuration.UserScopedSettingAttribute()]
75 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
76 | [global::System.Configuration.DefaultSettingValueAttribute("True")]
77 | public bool IncludeMobileCameras {
78 | get {
79 | return ((bool)(this["IncludeMobileCameras"]));
80 | }
81 | set {
82 | this["IncludeMobileCameras"] = value;
83 | }
84 | }
85 |
86 | [global::System.Configuration.UserScopedSettingAttribute()]
87 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
88 | [global::System.Configuration.DefaultSettingValueAttribute("True")]
89 | public bool IncludeSpecsCameras {
90 | get {
91 | return ((bool)(this["IncludeSpecsCameras"]));
92 | }
93 | set {
94 | this["IncludeSpecsCameras"] = value;
95 | }
96 | }
97 |
98 | [global::System.Configuration.UserScopedSettingAttribute()]
99 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
100 | [global::System.Configuration.DefaultSettingValueAttribute("True")]
101 | public bool IncludeRedlightCameras {
102 | get {
103 | return ((bool)(this["IncludeRedlightCameras"]));
104 | }
105 | set {
106 | this["IncludeRedlightCameras"] = value;
107 | }
108 | }
109 |
110 | [global::System.Configuration.UserScopedSettingAttribute()]
111 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
112 | [global::System.Configuration.DefaultSettingValueAttribute("")]
113 | public string DatabaseFormat {
114 | get {
115 | return ((string)(this["DatabaseFormat"]));
116 | }
117 | set {
118 | this["DatabaseFormat"] = value;
119 | }
120 | }
121 | }
122 | }
123 |
--------------------------------------------------------------------------------
/SpeedCameraToPoi/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | True
13 |
14 |
15 | True
16 |
17 |
18 | True
19 |
20 |
21 | True
22 |
23 |
24 | True
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/SpeedCameraToPoi/Settings.StyleCop:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | xaml
5 |
6 |
7 |
--------------------------------------------------------------------------------
/SpeedCameraToPoi/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/_config.yml:
--------------------------------------------------------------------------------
1 | theme: jekyll-theme-hacker
--------------------------------------------------------------------------------