diff --git a/.gitignore b/.gitignore
index 8b09180..ec1bd12 100644
--- a/.gitignore
+++ b/.gitignore
@@ -182,4 +182,10 @@ Desktop.ini
$RECYCLE.BIN/
# Roslyn VS2015 junk
-*.sln.ide/
\ No newline at end of file
+*.sln.ide/
+*.nupkg
+
+# Visual Studio temp and user data
+*/.vs/
+/Source/.idea
+.idea/
diff --git a/CSharpAnalytics.sln b/CSharpAnalytics.sln
new file mode 100644
index 0000000..a7634e4
--- /dev/null
+++ b/CSharpAnalytics.sln
@@ -0,0 +1,104 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.29009.5
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CSharpAnalytics", "src\CSharpAnalytics\CSharpAnalytics.csproj", "{0334B071-1FB1-4372-B500-4BC58A11EE59}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpAnalytics.Tests", "src\CSharpAnalytics.Tests\CSharpAnalytics.Tests.csproj", "{0BCC678D-7C68-4A6F-AE96-E1EEE2C217DA}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{DA1F96FF-05EC-45C8-BFF6-06089C739CA0}"
+ ProjectSection(SolutionItems) = preProject
+ src\LICENCE.txt = src\LICENCE.txt
+ README.md = README.md
+ Directory.Build.props = Directory.Build.props
+ EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpAnalytics.Sample.WinForms", "src\Samples\CSharpAnalytics.Sample.WinForms\CSharpAnalytics.Sample.WinForms.csproj", "{07DDA3AD-EE3B-4FE5-B532-059629C6A24E}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Samples", "Samples", "{3F625E98-D620-4CF3-BD83-5C97B7360496}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpAnalytics.Sample.Wpf", "src\Samples\CSharpAnalytics.Sample.Wpf\CSharpAnalytics.Sample.Wpf.csproj", "{A599EEEA-FC89-47FB-B8A9-DFD16FC3201D}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Debug|ARM = Debug|ARM
+ Debug|Mixed Platforms = Debug|Mixed Platforms
+ Debug|x64 = Debug|x64
+ Debug|x86 = Debug|x86
+ Release|Any CPU = Release|Any CPU
+ Release|ARM = Release|ARM
+ Release|Mixed Platforms = Release|Mixed Platforms
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {0334B071-1FB1-4372-B500-4BC58A11EE59}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {0334B071-1FB1-4372-B500-4BC58A11EE59}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0334B071-1FB1-4372-B500-4BC58A11EE59}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {0334B071-1FB1-4372-B500-4BC58A11EE59}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {0334B071-1FB1-4372-B500-4BC58A11EE59}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {0334B071-1FB1-4372-B500-4BC58A11EE59}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {0334B071-1FB1-4372-B500-4BC58A11EE59}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {0334B071-1FB1-4372-B500-4BC58A11EE59}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {0334B071-1FB1-4372-B500-4BC58A11EE59}.Release|Any CPU.Build.0 = Release|Any CPU
+ {0334B071-1FB1-4372-B500-4BC58A11EE59}.Release|ARM.ActiveCfg = Release|Any CPU
+ {0334B071-1FB1-4372-B500-4BC58A11EE59}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {0334B071-1FB1-4372-B500-4BC58A11EE59}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {0334B071-1FB1-4372-B500-4BC58A11EE59}.Release|x64.ActiveCfg = Release|Any CPU
+ {0334B071-1FB1-4372-B500-4BC58A11EE59}.Release|x86.ActiveCfg = Release|Any CPU
+ {0BCC678D-7C68-4A6F-AE96-E1EEE2C217DA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {0BCC678D-7C68-4A6F-AE96-E1EEE2C217DA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0BCC678D-7C68-4A6F-AE96-E1EEE2C217DA}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {0BCC678D-7C68-4A6F-AE96-E1EEE2C217DA}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {0BCC678D-7C68-4A6F-AE96-E1EEE2C217DA}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {0BCC678D-7C68-4A6F-AE96-E1EEE2C217DA}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {0BCC678D-7C68-4A6F-AE96-E1EEE2C217DA}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {0BCC678D-7C68-4A6F-AE96-E1EEE2C217DA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {0BCC678D-7C68-4A6F-AE96-E1EEE2C217DA}.Release|Any CPU.Build.0 = Release|Any CPU
+ {0BCC678D-7C68-4A6F-AE96-E1EEE2C217DA}.Release|ARM.ActiveCfg = Release|Any CPU
+ {0BCC678D-7C68-4A6F-AE96-E1EEE2C217DA}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {0BCC678D-7C68-4A6F-AE96-E1EEE2C217DA}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {0BCC678D-7C68-4A6F-AE96-E1EEE2C217DA}.Release|x64.ActiveCfg = Release|Any CPU
+ {0BCC678D-7C68-4A6F-AE96-E1EEE2C217DA}.Release|x86.ActiveCfg = Release|Any CPU
+ {07DDA3AD-EE3B-4FE5-B532-059629C6A24E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {07DDA3AD-EE3B-4FE5-B532-059629C6A24E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {07DDA3AD-EE3B-4FE5-B532-059629C6A24E}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {07DDA3AD-EE3B-4FE5-B532-059629C6A24E}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {07DDA3AD-EE3B-4FE5-B532-059629C6A24E}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {07DDA3AD-EE3B-4FE5-B532-059629C6A24E}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {07DDA3AD-EE3B-4FE5-B532-059629C6A24E}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {07DDA3AD-EE3B-4FE5-B532-059629C6A24E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {07DDA3AD-EE3B-4FE5-B532-059629C6A24E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {07DDA3AD-EE3B-4FE5-B532-059629C6A24E}.Release|ARM.ActiveCfg = Release|Any CPU
+ {07DDA3AD-EE3B-4FE5-B532-059629C6A24E}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {07DDA3AD-EE3B-4FE5-B532-059629C6A24E}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {07DDA3AD-EE3B-4FE5-B532-059629C6A24E}.Release|x64.ActiveCfg = Release|Any CPU
+ {07DDA3AD-EE3B-4FE5-B532-059629C6A24E}.Release|x86.ActiveCfg = Release|Any CPU
+ {A599EEEA-FC89-47FB-B8A9-DFD16FC3201D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A599EEEA-FC89-47FB-B8A9-DFD16FC3201D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A599EEEA-FC89-47FB-B8A9-DFD16FC3201D}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {A599EEEA-FC89-47FB-B8A9-DFD16FC3201D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {A599EEEA-FC89-47FB-B8A9-DFD16FC3201D}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {A599EEEA-FC89-47FB-B8A9-DFD16FC3201D}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {A599EEEA-FC89-47FB-B8A9-DFD16FC3201D}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {A599EEEA-FC89-47FB-B8A9-DFD16FC3201D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A599EEEA-FC89-47FB-B8A9-DFD16FC3201D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A599EEEA-FC89-47FB-B8A9-DFD16FC3201D}.Release|ARM.ActiveCfg = Release|Any CPU
+ {A599EEEA-FC89-47FB-B8A9-DFD16FC3201D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {A599EEEA-FC89-47FB-B8A9-DFD16FC3201D}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {A599EEEA-FC89-47FB-B8A9-DFD16FC3201D}.Release|x64.ActiveCfg = Release|Any CPU
+ {A599EEEA-FC89-47FB-B8A9-DFD16FC3201D}.Release|x86.ActiveCfg = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(NestedProjects) = preSolution
+ {07DDA3AD-EE3B-4FE5-B532-059629C6A24E} = {3F625E98-D620-4CF3-BD83-5C97B7360496}
+ {A599EEEA-FC89-47FB-B8A9-DFD16FC3201D} = {3F625E98-D620-4CF3-BD83-5C97B7360496}
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {8181473F-92C8-4C1D-A143-DE6AB7671CFB}
+ EndGlobalSection
+EndGlobal
diff --git a/Source/CSharpAnalytics.sln.DotSettings b/CSharpAnalytics.sln.DotSettings
similarity index 100%
rename from Source/CSharpAnalytics.sln.DotSettings
rename to CSharpAnalytics.sln.DotSettings
diff --git a/Directory.Build.props b/Directory.Build.props
new file mode 100644
index 0000000..f3216e9
--- /dev/null
+++ b/Directory.Build.props
@@ -0,0 +1,19 @@
+
+
+ Sonova.CSharpAnalytics
+ Damien Guard
+ Attack Pattern
+ Copyright 2012-2015 Attack Pattern LLC
+ "Google Analytics client for C# applications.
+ Debug
+ $(MSBuildThisFileDirectory)obj/$(MSBuildProjectName)/
+ $(MSBuildThisFileDirectory)bin/$(MSBuildProjectName)/$(Configuration)/
+ latest
+ 1.6.1
+ dev
+ 4
+ true
+ prompt
+ AnyCPU
+
+
\ No newline at end of file
diff --git a/NuGet/CSharpAnalytics.nuspec b/NuGet/CSharpAnalytics.nuspec
deleted file mode 100644
index e2b1dc0..0000000
--- a/NuGet/CSharpAnalytics.nuspec
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
- CSharpAnalytics
- 1.2.1
- Damien Guard
- Attack Pattern
- https://raw.github.com/AttackPattern/CSharpAnalytics/master/Source/LICENCE.txt
- https://github.com/AttackPattern/CSharpAnalytics
- false
- Google Analytics client for C# applications with automatic wire-up for Windows 8/8.1 store applications.
- Stop some phantom sessions by not sending queue time (qt) with session control (sc)
-Detect Windows OS version in store apps even on machines with a custom HAL
-Save session id and session number at startup to avoid loss should the app crash
-Custom metrics and dimensions can now be set on a specific activity (recommended)
-
- Copyright 2012-2015 Attack Pattern LLC
- google analytics, metrics, analytics, ga, measurement protocol
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/README.md b/README.md
index 978a499..7ecbc34 100644
--- a/README.md
+++ b/README.md
@@ -30,10 +30,9 @@ Google produce a library for *reading* analytics data in .NET apps but not recor
Our goal is to support all major C# platforms. Right now we have project files for:
-* Windows 8 Store applications
-* Windows 8.1 Store applications
-* Windows Phone 8 "Silverlight" applications
* WinForms .NET 4.5 applications
+* WinForms .NET 4.6.1 applications
+* WPF .NET Core 3 applications
All of these platforms include the AutoMeasurement class that let you get up and running with only a few lines of code.
@@ -69,46 +68,6 @@ You can either:
1. Get a more stable release via NuGet
2. Clone the source code and add a reference to CSharpAnalytics.Windows81.csproj (or Windows8, .NET45 depending on your environment)
-### Automatic analytics for Windows 8/8.1 Store apps
-
-The easiest way to start is to use the AutoMeasurement helper class. It hooks into a few events and will automatically give you:
-
-* Application launch and reason
-* Visitor, session activity, time-spent
-* Social sharing events
-* Screen navigation activity
-* Operating system, screen resolution, CPU type identification
-* Save/persist last 60 hits for offline/online support
-
-At the start of the OnLaunched method in App.xaml.cs add (replacing UA-319000-8 with your own Google Analytics property ID and 'e' with 'args' if using a Windows 8.0 template):
-
-```csharp
-CSharpAnalytics.AutoMeasurement.Start(new CSharpAnalytics.MeasurementConfiguration("UA-319000-8"), e);
-```
-
-If your app is not a single page but uses Frames to navigate you can automatically track page navigation events by adding this line to the end of OnLaunched:
-
-```csharp
-CSharpAnalytics.AutoMeasurement.Attach(rootFrame);
-```
-
-### Automatic analytics for Windows Phone 8 "Silverlight" apps
-
-The easiest way to start is to use the AutoMeasurement helper class. It hooks into a few events and will automatically give you:
-
-* Application launch and reason
-* Visitor, session activity, time-spent
-* Screen navigation activity
-* Operating system version, screen resolution, CPU type identification
-* Save/persist last 60 hits for offline/online support
-
-Add these two lines to your Application_Launching method in App.xaml.cs (replacing UA-319000-8 with your own Google Analytics property ID):
-
-```csharp
-CSharpAnalytics.AutoMeasurement.Start(new CSharpAnalytics.MeasurementConfiguration("UA-319000-8"), e);
-CSharpAnalytics.AutoMeasurement.Attach(RootFrame);
-```
-
### Going further
See [going further with CSharpAnalytics](https://github.com/AttackPattern/CSharpAnalytics/wiki/Going-further)
@@ -153,3 +112,17 @@ Licensed under the Apache License, Version 2.0 (the "License"); you may not use
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+
+## Packing
+
+### dotnet pack
+
+More info at:
+
+https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-pack
+
+Example:
+```
+dotnet pack -c release --include-symbols --version-suffix ""
+```
+
diff --git a/Source/CSharpAnalytics.Tests/CSharpAnalytics.Test.Net45.csproj b/Source/CSharpAnalytics.Tests/CSharpAnalytics.Test.Net45.csproj
deleted file mode 100644
index b8171fb..0000000
--- a/Source/CSharpAnalytics.Tests/CSharpAnalytics.Test.Net45.csproj
+++ /dev/null
@@ -1,119 +0,0 @@
-
-
-
- Debug
- AnyCPU
- {0BCC678D-7C68-4A6F-AE96-E1EEE2C217DA}
- Library
- Properties
- CSharpAnalytics.Test
- CSharpAnalytics.Test.Net45
- v4.5
- 512
- {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
- 10.0
- $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)
- $(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages
- False
- UnitTest
-
-
- true
- full
- false
- bin\Debug\Net45\
- obj\Debug\Net45\
- TRACE;DEBUG;NET45
- prompt
- 4
- MinimumRecommendedRules.ruleset
-
-
- pdbonly
- true
- bin\Release\Net45\
- obj\Release\Net45\
- TRACE;NET45
- prompt
- 4
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {0334b071-1fb1-4372-b500-4bc58a11ee59}
- CSharpAnalytics.Net45
-
-
-
-
-
-
-
- False
-
-
- False
-
-
- False
-
-
- False
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Source/CSharpAnalytics.Tests/CSharpAnalytics.Test.Windows8.csproj b/Source/CSharpAnalytics.Tests/CSharpAnalytics.Test.Windows8.csproj
deleted file mode 100644
index d194f29..0000000
--- a/Source/CSharpAnalytics.Tests/CSharpAnalytics.Test.Windows8.csproj
+++ /dev/null
@@ -1,181 +0,0 @@
-
-
-
-
- Debug
- AnyCPU
- 8.0.30703
- 2.0
- {830EA2C1-A706-4194-A9A4-9318C67C09DB}
- Library
- Properties
- CSharpAnalytics.Test
- CSharpAnalytics.Test.Windows8
- en-US
- 512
- {BC8A1FFA-BEE3-4634-8014-F334798102B3};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
- Windows8\CSharpAnalytics.Test.Windows8_TemporaryKey.pfx
- 06C0C853378D0DA50079573F316E613AF25CA352
-
-
- true
- full
- false
- bin\Debug\Windows8\
- obj\Debug\Windows8\
- TRACE;DEBUG;NETFX_CORE;WINDOWS_STORE
- prompt
- 4
- false
-
-
- pdbonly
- true
- bin\Release\Windows8\
- obj\Release\Windows8\
- TRACE;NETFX_CORE;WINDOWS_STORE
- prompt
- 4
-
-
- true
- bin\ARM\Debug\WindowsStore\
- TRACE;DEBUG;NETFX_CORE;WINDOWS_STORE
- ;2008
- full
- ARM
- false
- prompt
- true
-
-
- bin\ARM\Release\WindowsStore\
- TRACE;NETFX_CORE;WINDOWS_STORE
- true
- ;2008
- pdbonly
- ARM
- false
- prompt
- true
-
-
- true
- bin\x64\Debug\WindowsStore\
- TRACE;DEBUG;NETFX_CORE;WINDOWS_STORE
- ;2008
- full
- x64
- false
- prompt
- true
-
-
- bin\x64\Release\WindowsStore\
- TRACE;NETFX_CORE;WINDOWS_STORE
- true
- ;2008
- pdbonly
- x64
- false
- prompt
- true
-
-
- true
- bin\x86\Debug\WindowsStore\
- TRACE;DEBUG;NETFX_CORE;WINDOWS_STORE
- ;2008
- full
- x86
- false
- prompt
- true
-
-
- bin\x86\Release\WindowsStore\
- TRACE;NETFX_CORE;WINDOWS_STORE
- true
- ;2008
- pdbonly
- x86
- false
- prompt
- true
-
-
- True
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {31872bea-1f8a-4ff0-b796-7768a0cdf256}
- CSharpAnalytics.Windows8
-
-
-
-
-
- Designer
-
-
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
-
- 11.0
-
-
-
-
\ No newline at end of file
diff --git a/Source/CSharpAnalytics.Tests/CSharpAnalytics.Test.Windows81.csproj b/Source/CSharpAnalytics.Tests/CSharpAnalytics.Test.Windows81.csproj
deleted file mode 100644
index d5a77a2..0000000
--- a/Source/CSharpAnalytics.Tests/CSharpAnalytics.Test.Windows81.csproj
+++ /dev/null
@@ -1,183 +0,0 @@
-
-
-
-
- Debug
- AnyCPU
- 8.0.30703
- 2.0
- {4FD70215-C708-4BB1-AD8A-758BA038F3F6}
- Library
- Properties
- CSharpAnalytics.Test
- CSharpAnalytics.Test.Windows81
- en-US
- 8.1
- 12
- 512
- {BC8A1FFA-BEE3-4634-8014-F334798102B3};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
- Windows81\CSharpAnalytics.Test.Windows81_TemporaryKey.pfx
- Never
- 1FC8F3E1B0D2B42BAAC0C5FA124E0A3AA0CABE9A
-
-
- true
- full
- false
- bin\Debug\Windows81\
- obj\Debug\Windows81\
- TRACE;DEBUG;NETFX_CORE;WINDOWS_STORE
- prompt
- 4
-
-
- pdbonly
- true
- bin\Release\Windows81\
- obj\Release\Windows81\
- TRACE;NETFX_CORE;WINDOWS_STORE
- prompt
- 4
-
-
- true
- bin\ARM\Debug\
- DEBUG;TRACE;NETFX_CORE
- ;2008
- full
- ARM
- false
- prompt
- true
-
-
- bin\ARM\Release\
- TRACE;NETFX_CORE
- true
- ;2008
- pdbonly
- ARM
- false
- prompt
- true
-
-
- true
- bin\x64\Debug\
- DEBUG;TRACE;NETFX_CORE
- ;2008
- full
- x64
- false
- prompt
- true
-
-
- bin\x64\Release\
- TRACE;NETFX_CORE
- true
- ;2008
- pdbonly
- x64
- false
- prompt
- true
-
-
- true
- bin\x86\Debug\
- DEBUG;TRACE;NETFX_CORE
- ;2008
- full
- x86
- false
- prompt
- true
-
-
- bin\x86\Release\
- TRACE;NETFX_CORE
- true
- ;2008
- pdbonly
- x86
- false
- prompt
- true
-
-
- True
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
-
-
- {e1988f29-2722-4f83-a4d2-14067911f182}
- CSharpAnalytics.Windows81
-
-
-
-
-
- Designer
-
-
-
- 12.0
-
-
-
-
\ No newline at end of file
diff --git a/Source/CSharpAnalytics.Tests/Properties/AssemblyInfo.cs b/Source/CSharpAnalytics.Tests/Properties/AssemblyInfo.cs
deleted file mode 100644
index 4615e18..0000000
--- a/Source/CSharpAnalytics.Tests/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-using System.Reflection;
-using System.Resources;
-
-[assembly: AssemblyTitle("CSharpAnalytics.Test")]
-[assembly: AssemblyProduct("CSharpAnalytics")]
-[assembly: AssemblyCopyright("Copyright © 2012-2014 Attack Pattern LLC.")]
-
-[assembly: AssemblyVersion("1.2.0.0")]
-[assembly: AssemblyFileVersion("1.2.0.0")]
-[assembly: AssemblyDescriptionAttribute("Unit tests for CSharpAnalytics")]
-[assembly: NeutralResourcesLanguageAttribute("")]
\ No newline at end of file
diff --git a/Source/CSharpAnalytics.Tests/Windows8/CSharpAnalytics.Test.Windows8_TemporaryKey.pfx b/Source/CSharpAnalytics.Tests/Windows8/CSharpAnalytics.Test.Windows8_TemporaryKey.pfx
deleted file mode 100644
index 79cb9ba..0000000
Binary files a/Source/CSharpAnalytics.Tests/Windows8/CSharpAnalytics.Test.Windows8_TemporaryKey.pfx and /dev/null differ
diff --git a/Source/CSharpAnalytics.Tests/Windows8/Images/UnitTestLogo.png b/Source/CSharpAnalytics.Tests/Windows8/Images/UnitTestLogo.png
deleted file mode 100644
index ebd735a..0000000
Binary files a/Source/CSharpAnalytics.Tests/Windows8/Images/UnitTestLogo.png and /dev/null differ
diff --git a/Source/CSharpAnalytics.Tests/Windows8/Images/UnitTestSmallLogo.png b/Source/CSharpAnalytics.Tests/Windows8/Images/UnitTestSmallLogo.png
deleted file mode 100644
index 92dd105..0000000
Binary files a/Source/CSharpAnalytics.Tests/Windows8/Images/UnitTestSmallLogo.png and /dev/null differ
diff --git a/Source/CSharpAnalytics.Tests/Windows8/Images/UnitTestSplashScreen.png b/Source/CSharpAnalytics.Tests/Windows8/Images/UnitTestSplashScreen.png
deleted file mode 100644
index 193187f..0000000
Binary files a/Source/CSharpAnalytics.Tests/Windows8/Images/UnitTestSplashScreen.png and /dev/null differ
diff --git a/Source/CSharpAnalytics.Tests/Windows8/Images/UnitTestStoreLogo.png b/Source/CSharpAnalytics.Tests/Windows8/Images/UnitTestStoreLogo.png
deleted file mode 100644
index 3765186..0000000
Binary files a/Source/CSharpAnalytics.Tests/Windows8/Images/UnitTestStoreLogo.png and /dev/null differ
diff --git a/Source/CSharpAnalytics.Tests/Windows8/Package.appxmanifest b/Source/CSharpAnalytics.Tests/Windows8/Package.appxmanifest
deleted file mode 100644
index fdc9881..0000000
--- a/Source/CSharpAnalytics.Tests/Windows8/Package.appxmanifest
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
- CSharpAnalytics.Test.Windows8
- Attack Pattern
- Windows8\Images\UnitTestStoreLogo.png
- CSharpAnalytics.Test.Windows8
-
-
- 6.2.1
- 6.2.1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Source/CSharpAnalytics.Tests/Windows81/CSharpAnalytics.Test.Windows81_TemporaryKey.pfx b/Source/CSharpAnalytics.Tests/Windows81/CSharpAnalytics.Test.Windows81_TemporaryKey.pfx
deleted file mode 100644
index 82335c3..0000000
Binary files a/Source/CSharpAnalytics.Tests/Windows81/CSharpAnalytics.Test.Windows81_TemporaryKey.pfx and /dev/null differ
diff --git a/Source/CSharpAnalytics.Tests/Windows81/Images/UnitTestLogo.scale-100.png b/Source/CSharpAnalytics.Tests/Windows81/Images/UnitTestLogo.scale-100.png
deleted file mode 100644
index ebd735a..0000000
Binary files a/Source/CSharpAnalytics.Tests/Windows81/Images/UnitTestLogo.scale-100.png and /dev/null differ
diff --git a/Source/CSharpAnalytics.Tests/Windows81/Images/UnitTestSmallLogo.scale-100.png b/Source/CSharpAnalytics.Tests/Windows81/Images/UnitTestSmallLogo.scale-100.png
deleted file mode 100644
index 92dd105..0000000
Binary files a/Source/CSharpAnalytics.Tests/Windows81/Images/UnitTestSmallLogo.scale-100.png and /dev/null differ
diff --git a/Source/CSharpAnalytics.Tests/Windows81/Images/UnitTestSplashScreen.scale-100.png b/Source/CSharpAnalytics.Tests/Windows81/Images/UnitTestSplashScreen.scale-100.png
deleted file mode 100644
index 193187f..0000000
Binary files a/Source/CSharpAnalytics.Tests/Windows81/Images/UnitTestSplashScreen.scale-100.png and /dev/null differ
diff --git a/Source/CSharpAnalytics.Tests/Windows81/Images/UnitTestStoreLogo.scale-100.png b/Source/CSharpAnalytics.Tests/Windows81/Images/UnitTestStoreLogo.scale-100.png
deleted file mode 100644
index 3765186..0000000
Binary files a/Source/CSharpAnalytics.Tests/Windows81/Images/UnitTestStoreLogo.scale-100.png and /dev/null differ
diff --git a/Source/CSharpAnalytics.Tests/Windows81/Package.appxmanifest b/Source/CSharpAnalytics.Tests/Windows81/Package.appxmanifest
deleted file mode 100644
index c3fb1b3..0000000
--- a/Source/CSharpAnalytics.Tests/Windows81/Package.appxmanifest
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
- CSharpAnalytics.Test.Windows81
- Attack Pattern
- Windows81\Images\UnitTestStoreLogo.png
- CSharpAnalytics.Test.Windows81
-
-
- 6.3.0
- 6.3.0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Source/CSharpAnalytics.Tests/WindowsPhone8/App.xaml b/Source/CSharpAnalytics.Tests/WindowsPhone8/App.xaml
deleted file mode 100644
index 609141c..0000000
--- a/Source/CSharpAnalytics.Tests/WindowsPhone8/App.xaml
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Source/CSharpAnalytics.Tests/WindowsPhone8/App.xaml.cs b/Source/CSharpAnalytics.Tests/WindowsPhone8/App.xaml.cs
deleted file mode 100644
index 6767024..0000000
--- a/Source/CSharpAnalytics.Tests/WindowsPhone8/App.xaml.cs
+++ /dev/null
@@ -1,223 +0,0 @@
-using System;
-using System.Diagnostics;
-using System.Resources;
-using System.Windows;
-using System.Windows.Markup;
-using System.Windows.Navigation;
-using Microsoft.Phone.Controls;
-using Microsoft.Phone.Shell;
-using CSharpAnalytics.Test.WindowsPhone8.Resources;
-
-namespace CSharpAnalytics.Test.WindowsPhone8
-{
- public partial class App : Application
- {
- ///
- /// Provides easy access to the root frame of the Phone Application.
- ///
- /// The root frame of the Phone Application.
- public static PhoneApplicationFrame RootFrame { get; private set; }
-
- ///
- /// Constructor for the Application object.
- ///
- public App()
- {
- // Global handler for uncaught exceptions.
- UnhandledException += Application_UnhandledException;
-
- // Standard XAML initialization
- InitializeComponent();
-
- // Phone-specific initialization
- InitializePhoneApplication();
-
- // Language display initialization
- InitializeLanguage();
-
- // Show graphics profiling information while debugging.
- if (Debugger.IsAttached)
- {
- // Display the current frame rate counters.
- Application.Current.Host.Settings.EnableFrameRateCounter = true;
-
- // Show the areas of the app that are being redrawn in each frame.
- //Application.Current.Host.Settings.EnableRedrawRegions = true;
-
- // Enable non-production analysis visualization mode,
- // which shows areas of a page that are handed off to GPU with a colored overlay.
- //Application.Current.Host.Settings.EnableCacheVisualization = true;
-
- // Prevent the screen from turning off while under the debugger by disabling
- // the application's idle detection.
- // Caution:- Use this under debug mode only. Application that disables user idle detection will continue to run
- // and consume battery power when the user is not using the phone.
- PhoneApplicationService.Current.UserIdleDetectionMode = IdleDetectionMode.Disabled;
- }
-
- }
-
- // Code to execute when the application is launching (eg, from Start)
- // This code will not execute when the application is reactivated
- private void Application_Launching(object sender, LaunchingEventArgs e)
- {
- }
-
- // Code to execute when the application is activated (brought to foreground)
- // This code will not execute when the application is first launched
- private void Application_Activated(object sender, ActivatedEventArgs e)
- {
- }
-
- // Code to execute when the application is deactivated (sent to background)
- // This code will not execute when the application is closing
- private void Application_Deactivated(object sender, DeactivatedEventArgs e)
- {
- }
-
- // Code to execute when the application is closing (eg, user hit Back)
- // This code will not execute when the application is deactivated
- private void Application_Closing(object sender, ClosingEventArgs e)
- {
- }
-
- // Code to execute if a navigation fails
- private void RootFrame_NavigationFailed(object sender, NavigationFailedEventArgs e)
- {
- if (Debugger.IsAttached)
- {
- // A navigation has failed; break into the debugger
- Debugger.Break();
- }
- }
-
- // Code to execute on Unhandled Exceptions
- private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
- {
- if (Debugger.IsAttached)
- {
- // An unhandled exception has occurred; break into the debugger
- Debugger.Break();
- }
- }
-
- #region Phone application initialization
-
- // Avoid double-initialization
- private bool phoneApplicationInitialized = false;
-
- // Do not add any additional code to this method
- private void InitializePhoneApplication()
- {
- if (phoneApplicationInitialized)
- return;
-
- // Create the frame but don't set it as RootVisual yet; this allows the splash
- // screen to remain active until the application is ready to render.
- RootFrame = new PhoneApplicationFrame();
- RootFrame.Navigated += CompleteInitializePhoneApplication;
-
- // Handle navigation failures
- RootFrame.NavigationFailed += RootFrame_NavigationFailed;
-
- // Handle reset requests for clearing the backstack
- RootFrame.Navigated += CheckForResetNavigation;
-
- // Ensure we don't initialize again
- phoneApplicationInitialized = true;
- }
-
- // Do not add any additional code to this method
- private void CompleteInitializePhoneApplication(object sender, NavigationEventArgs e)
- {
- // Set the root visual to allow the application to render
- if (RootVisual != RootFrame)
- RootVisual = RootFrame;
-
- // Remove this handler since it is no longer needed
- RootFrame.Navigated -= CompleteInitializePhoneApplication;
- }
-
- private void CheckForResetNavigation(object sender, NavigationEventArgs e)
- {
- // If the app has received a 'reset' navigation, then we need to check
- // on the next navigation to see if the page stack should be reset
- if (e.NavigationMode == NavigationMode.Reset)
- RootFrame.Navigated += ClearBackStackAfterReset;
- }
-
- private void ClearBackStackAfterReset(object sender, NavigationEventArgs e)
- {
- // Unregister the event so it doesn't get called again
- RootFrame.Navigated -= ClearBackStackAfterReset;
-
- // Only clear the stack for 'new' (forward) and 'refresh' navigations
- if (e.NavigationMode != NavigationMode.New && e.NavigationMode != NavigationMode.Refresh)
- return;
-
- // For UI consistency, clear the entire page stack
- while (RootFrame.RemoveBackEntry() != null)
- {
- ; // do nothing
- }
- }
-
- #endregion
-
- // Initialize the app's font and flow direction as defined in its localized resource strings.
- //
- // To ensure that the font of your application is aligned with its supported languages and that the
- // FlowDirection for each of those languages follows its traditional direction, ResourceLanguage
- // and ResourceFlowDirection should be initialized in each resx file to match these values with that
- // file's culture. For example:
- //
- // AppResources.es-ES.resx
- // ResourceLanguage's value should be "es-ES"
- // ResourceFlowDirection's value should be "LeftToRight"
- //
- // AppResources.ar-SA.resx
- // ResourceLanguage's value should be "ar-SA"
- // ResourceFlowDirection's value should be "RightToLeft"
- //
- // For more info on localizing Windows Phone apps see http://go.microsoft.com/fwlink/?LinkId=262072.
- //
- private void InitializeLanguage()
- {
- try
- {
- // Set the font to match the display language defined by the
- // ResourceLanguage resource string for each supported language.
- //
- // Fall back to the font of the neutral language if the Display
- // language of the phone is not supported.
- //
- // If a compiler error is hit then ResourceLanguage is missing from
- // the resource file.
- RootFrame.Language = XmlLanguage.GetLanguage(AppResources.ResourceLanguage);
-
- // Set the FlowDirection of all elements under the root frame based
- // on the ResourceFlowDirection resource string for each
- // supported language.
- //
- // If a compiler error is hit then ResourceFlowDirection is missing from
- // the resource file.
- FlowDirection flow = (FlowDirection)Enum.Parse(typeof(FlowDirection), AppResources.ResourceFlowDirection);
- RootFrame.FlowDirection = flow;
- }
- catch
- {
- // If an exception is caught here it is most likely due to either
- // ResourceLangauge not being correctly set to a supported language
- // code or ResourceFlowDirection is set to a value other than LeftToRight
- // or RightToLeft.
-
- if (Debugger.IsAttached)
- {
- Debugger.Break();
- }
-
- throw;
- }
- }
- }
-}
\ No newline at end of file
diff --git a/Source/CSharpAnalytics.Tests/WindowsPhone8/Assets/AlignmentGrid.png b/Source/CSharpAnalytics.Tests/WindowsPhone8/Assets/AlignmentGrid.png
deleted file mode 100644
index f7d2e97..0000000
Binary files a/Source/CSharpAnalytics.Tests/WindowsPhone8/Assets/AlignmentGrid.png and /dev/null differ
diff --git a/Source/CSharpAnalytics.Tests/WindowsPhone8/Assets/ApplicationIcon.png b/Source/CSharpAnalytics.Tests/WindowsPhone8/Assets/ApplicationIcon.png
deleted file mode 100644
index 7d95d4e..0000000
Binary files a/Source/CSharpAnalytics.Tests/WindowsPhone8/Assets/ApplicationIcon.png and /dev/null differ
diff --git a/Source/CSharpAnalytics.Tests/WindowsPhone8/Assets/Tiles/FlipCycleTileLarge.png b/Source/CSharpAnalytics.Tests/WindowsPhone8/Assets/Tiles/FlipCycleTileLarge.png
deleted file mode 100644
index e0c59ac..0000000
Binary files a/Source/CSharpAnalytics.Tests/WindowsPhone8/Assets/Tiles/FlipCycleTileLarge.png and /dev/null differ
diff --git a/Source/CSharpAnalytics.Tests/WindowsPhone8/Assets/Tiles/FlipCycleTileMedium.png b/Source/CSharpAnalytics.Tests/WindowsPhone8/Assets/Tiles/FlipCycleTileMedium.png
deleted file mode 100644
index e93b89d..0000000
Binary files a/Source/CSharpAnalytics.Tests/WindowsPhone8/Assets/Tiles/FlipCycleTileMedium.png and /dev/null differ
diff --git a/Source/CSharpAnalytics.Tests/WindowsPhone8/Assets/Tiles/FlipCycleTileSmall.png b/Source/CSharpAnalytics.Tests/WindowsPhone8/Assets/Tiles/FlipCycleTileSmall.png
deleted file mode 100644
index 550b1b5..0000000
Binary files a/Source/CSharpAnalytics.Tests/WindowsPhone8/Assets/Tiles/FlipCycleTileSmall.png and /dev/null differ
diff --git a/Source/CSharpAnalytics.Tests/WindowsPhone8/CSharpAnalytics.Test.WindowsPhone8.csproj b/Source/CSharpAnalytics.Tests/WindowsPhone8/CSharpAnalytics.Test.WindowsPhone8.csproj
deleted file mode 100644
index 4e83108..0000000
--- a/Source/CSharpAnalytics.Tests/WindowsPhone8/CSharpAnalytics.Test.WindowsPhone8.csproj
+++ /dev/null
@@ -1,228 +0,0 @@
-
-
-
- Debug
- x86
- 10.0.20506
- 2.0
- {2716A467-838A-4553-8FBC-AE29BD83F845}
- {C089C8C0-30E0-4E22-80C0-CE093F111A43};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}
- Library
- Properties
- CSharpAnalytics.Test.WindowsPhone8
- CSharpAnalytics.Test.WindowsPhone8
- WindowsPhone
- v8.0
- $(TargetFrameworkVersion)
- true
- true
-
-
- true
- true
- CSharpAnalytics.Test.WindowsPhone8_$(Configuration)_$(Platform).xap
- Properties\AppManifest.xml
- CSharpAnalytics.Test.WindowsPhone8.App
- false
- 11.0
- true
-
-
- true
- full
- false
- Bin\x86\Debug
- DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE
- true
- true
- prompt
- 4
-
-
- pdbonly
- true
- Bin\x86\Release
- TRACE;SILVERLIGHT;WINDOWS_PHONE
- true
- true
- prompt
- 4
-
-
- true
- full
- false
- Bin\ARM\Debug
- DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE
- true
- true
- prompt
- 4
-
-
- pdbonly
- true
- Bin\ARM\Release
- TRACE;SILVERLIGHT;WINDOWS_PHONE
- true
- true
- prompt
- 4
-
-
-
- Activities\AutoTimedEventActivityTests.cs
-
-
- Activities\ContentViewActivityTests.cs
-
-
- Activities\EventActivityTests.cs
-
-
- Activities\ExceptionActivityTests.cs
-
-
- Activities\ScreenViewActivityTests.cs
-
-
- Activities\SocialActivityTests.cs
-
-
- Activities\TimedEventActivityTests.cs
-
-
- Activities\TransactionActivityTests.cs
-
-
- Activities\TransactionItemActivityTests.cs
-
-
- AutoMeasurement\AnalyticsScreenNameAttributeTests.cs
-
-
- Debugging\ParameterDefinitionTests.cs
-
-
- Environment\EnvironmentTests.cs
-
-
- Environment\TestableEnvironment.cs
-
-
- Network\BackgroundUriRequesterTests.cs
-
-
- Network\HttpWebRequesterTests.cs
-
-
- Properties\AssemblyInfo.cs
-
-
- Protocols\Measurement\MeasurementActivityParameterBuilderTrackerTests.cs
-
-
- Protocols\Measurement\MeasurementAnalyticsClientTests.cs
-
-
- Protocols\Measurement\MeasurementConfigurationTests.cs
-
-
- Protocols\Measurement\MeasurementTestHelpers.cs
-
-
- Protocols\Measurement\MeasurementTrackerTests.cs
-
-
- Protocols\Measurement\MeasurementUriBuilderTests.cs
-
-
- Sessions\SessionManagerTests.cs
-
-
- Sessions\SessionStateTests.cs
-
-
- Sessions\TimeoutSessionManager.cs
-
-
- Sessions\VisitorTests.cs
-
-
- TestHelpers.cs
-
-
- App.xaml
-
-
-
- MainPage.xaml
-
-
- True
- True
- AppResources.resx
-
-
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
-
-
-
- Designer
-
-
-
-
-
-
-
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
-
-
- PublicResXFileCodeGenerator
- AppResources.Designer.cs
-
-
-
-
- {ADCBE54B-6255-403E-A54D-2589686CD668}
- CSharpAnalytics.WindowsPhone8
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Source/CSharpAnalytics.Tests/WindowsPhone8/LocalizedStrings.cs b/Source/CSharpAnalytics.Tests/WindowsPhone8/LocalizedStrings.cs
deleted file mode 100644
index 26b54a6..0000000
--- a/Source/CSharpAnalytics.Tests/WindowsPhone8/LocalizedStrings.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-using CSharpAnalytics.Test.WindowsPhone8.Resources;
-
-namespace CSharpAnalytics.Test.WindowsPhone8
-{
- ///
- /// Provides access to string resources.
- ///
- public class LocalizedStrings
- {
- private static AppResources _localizedResources = new AppResources();
-
- public AppResources LocalizedResources { get { return _localizedResources; } }
- }
-}
\ No newline at end of file
diff --git a/Source/CSharpAnalytics.Tests/WindowsPhone8/MainPage.xaml b/Source/CSharpAnalytics.Tests/WindowsPhone8/MainPage.xaml
deleted file mode 100644
index 56b8589..0000000
--- a/Source/CSharpAnalytics.Tests/WindowsPhone8/MainPage.xaml
+++ /dev/null
@@ -1,62 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Source/CSharpAnalytics.Tests/WindowsPhone8/MainPage.xaml.cs b/Source/CSharpAnalytics.Tests/WindowsPhone8/MainPage.xaml.cs
deleted file mode 100644
index e367b51..0000000
--- a/Source/CSharpAnalytics.Tests/WindowsPhone8/MainPage.xaml.cs
+++ /dev/null
@@ -1,31 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Net;
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Navigation;
-using Microsoft.Phone.Controls;
-using Microsoft.Phone.Shell;
-using CSharpAnalytics.Test.WindowsPhone8.Resources;
-using System.Threading;
-using Microsoft.VisualStudio.TestPlatform.Core;
-using vstest_executionengine_platformbridge;
-using Microsoft.VisualStudio.TestPlatform.TestExecutor;
-using System.Reflection;
-
-namespace CSharpAnalytics.Test.WindowsPhone8
-{
- public partial class MainPage : PhoneApplicationPage
- {
- // Constructor
- public MainPage()
- {
- InitializeComponent();
-
- var wrapper = new TestExecutorServiceWrapper();
- new Thread(new ServiceMain((param0, param1) => wrapper.SendMessage((ContractName)param0, param1)).Run).Start();
-
- }
- }
-}
\ No newline at end of file
diff --git a/Source/CSharpAnalytics.Tests/WindowsPhone8/Properties/AppManifest.xml b/Source/CSharpAnalytics.Tests/WindowsPhone8/Properties/AppManifest.xml
deleted file mode 100644
index 6712a11..0000000
--- a/Source/CSharpAnalytics.Tests/WindowsPhone8/Properties/AppManifest.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
diff --git a/Source/CSharpAnalytics.Tests/WindowsPhone8/Properties/WMAppManifest.xml b/Source/CSharpAnalytics.Tests/WindowsPhone8/Properties/WMAppManifest.xml
deleted file mode 100644
index d3152ae..0000000
--- a/Source/CSharpAnalytics.Tests/WindowsPhone8/Properties/WMAppManifest.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-
-
-
-
- Assets\ApplicationIcon.png
-
-
-
-
-
-
-
-
-
-
- Assets\Tiles\FlipCycleTileSmall.png
- 0
- Assets\Tiles\FlipCycleTileMedium.png
- CSharpAnalytics.Test.WindowsPhone8
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- vstest_executionengine_platformbridge.dll
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Source/CSharpAnalytics.Tests/WindowsPhone8/Resources/AppResources.Designer.cs b/Source/CSharpAnalytics.Tests/WindowsPhone8/Resources/AppResources.Designer.cs
deleted file mode 100644
index c82f2df..0000000
--- a/Source/CSharpAnalytics.Tests/WindowsPhone8/Resources/AppResources.Designer.cs
+++ /dev/null
@@ -1,127 +0,0 @@
-//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
-// Runtime Version:4.0.30319.17626
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
-
-namespace CSharpAnalytics.Test.WindowsPhone8.Resources
-{
- using System;
-
-
- ///
- /// A strongly-typed resource class, for looking up localized strings, etc.
- ///
- // This class was auto-generated by the StronglyTypedResourceBuilder
- // class via a tool like ResGen or Visual Studio.
- // To add or remove a member, edit your .ResX file then rerun ResGen
- // with the /str option, or rebuild your VS project.
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- public class AppResources
- {
-
- private static global::System.Resources.ResourceManager resourceMan;
-
- private static global::System.Globalization.CultureInfo resourceCulture;
-
- [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- internal AppResources()
- {
- }
-
- ///
- /// Returns the cached ResourceManager instance used by this class.
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- public static global::System.Resources.ResourceManager ResourceManager
- {
- get
- {
- if (object.ReferenceEquals(resourceMan, null))
- {
- global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("CSharpAnalytics.Test.WindowsPhone8.Resources.AppResources", typeof(AppResources).Assembly);
- resourceMan = temp;
- }
- return resourceMan;
- }
- }
-
- ///
- /// Overrides the current thread's CurrentUICulture property for all
- /// resource lookups using this strongly typed resource class.
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- public static global::System.Globalization.CultureInfo Culture
- {
- get
- {
- return resourceCulture;
- }
- set
- {
- resourceCulture = value;
- }
- }
-
- ///
- /// Looks up a localized string similar to LeftToRight.
- ///
- public static string ResourceFlowDirection
- {
- get
- {
- return ResourceManager.GetString("ResourceFlowDirection", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to us-EN.
- ///
- public static string ResourceLanguage
- {
- get
- {
- return ResourceManager.GetString("ResourceLanguage", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to MY APPLICATION.
- ///
- public static string ApplicationTitle
- {
- get
- {
- return ResourceManager.GetString("ApplicationTitle", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to button.
- ///
- public static string AppBarButtonText
- {
- get
- {
- return ResourceManager.GetString("AppBarButtonText", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to menu item.
- ///
- public static string AppBarMenuItemText
- {
- get
- {
- return ResourceManager.GetString("AppBarMenuItemText", resourceCulture);
- }
- }
- }
-}
diff --git a/Source/CSharpAnalytics.Tests/WindowsPhone8/Resources/AppResources.resx b/Source/CSharpAnalytics.Tests/WindowsPhone8/Resources/AppResources.resx
deleted file mode 100644
index 529a194..0000000
--- a/Source/CSharpAnalytics.Tests/WindowsPhone8/Resources/AppResources.resx
+++ /dev/null
@@ -1,137 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- LeftToRight
- Controls the FlowDirection for all elements in the RootFrame. Set to the traditional direction of this resource file's language
-
-
- en-US
- Controls the Language and ensures that the font for all elements in the RootFrame aligns with the app's language. Set to the language code of this resource file's language.
-
-
- MY APPLICATION
-
-
- add
-
-
- Menu Item
-
-
\ No newline at end of file
diff --git a/Source/CSharpAnalytics.sln b/Source/CSharpAnalytics.sln
deleted file mode 100644
index 3a57d3f..0000000
--- a/Source/CSharpAnalytics.sln
+++ /dev/null
@@ -1,423 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 14
-VisualStudioVersion = 14.0.22231.1
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpAnalytics.Windows8", "CSharpAnalytics\CSharpAnalytics.Windows8.csproj", "{31872BEA-1F8A-4FF0-B796-7768A0CDF256}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpAnalytics.Test.Windows8", "CSharpAnalytics.Tests\CSharpAnalytics.Test.Windows8.csproj", "{830EA2C1-A706-4194-A9A4-9318C67C09DB}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpAnalytics.Net45", "CSharpAnalytics\CSharpAnalytics.Net45.csproj", "{0334B071-1FB1-4372-B500-4BC58A11EE59}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".NET 4.5", ".NET 4.5", "{B6D30B2A-B2CC-4BAD-A5AB-8ABD7B665EE7}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Windows 8", "Windows 8", "{941B2A0F-9D93-4B3A-951E-1C447496DEAD}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpAnalytics.Test.Net45", "CSharpAnalytics.Tests\CSharpAnalytics.Test.Net45.csproj", "{0BCC678D-7C68-4A6F-AE96-E1EEE2C217DA}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpAnalytics.Sample.Windows8", "Samples\CSharpAnalytics.Sample.Windows8\CSharpAnalytics.Sample.Windows8.csproj", "{106A4C29-9F13-47F5-8D14-16F20EBB35A3}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{DA1F96FF-05EC-45C8-BFF6-06089C739CA0}"
- ProjectSection(SolutionItems) = preProject
- ..\NuGet\CSharpAnalytics.nuspec = ..\NuGet\CSharpAnalytics.nuspec
- LICENCE.txt = LICENCE.txt
- ..\README.md = ..\README.md
- EndProjectSection
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Windows 8.1", "Windows 8.1", "{FBF7214C-C891-48CF-8A9A-A9243FFB0824}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpAnalytics.Sample.Windows81", "Samples\CSharpAnalytics.Sample.Windows81\CSharpAnalytics.Sample.Windows81.csproj", "{32DFBC46-96B4-4333-BCF3-CFCEE1621597}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpAnalytics.Windows81", "CSharpAnalytics\CSharpAnalytics.Windows81.csproj", "{E1988F29-2722-4F83-A4D2-14067911F182}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpAnalytics.Test.Windows81", "CSharpAnalytics.Tests\CSharpAnalytics.Test.Windows81.csproj", "{4FD70215-C708-4BB1-AD8A-758BA038F3F6}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpAnalytics.Sample.WinForms", "Samples\CSharpAnalytics.Sample.WinForms\CSharpAnalytics.Sample.WinForms.csproj", "{07DDA3AD-EE3B-4FE5-B532-059629C6A24E}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Samples", "Samples", "{3F625E98-D620-4CF3-BD83-5C97B7360496}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Windows Phone 8", "Windows Phone 8", "{6145367D-3F9E-440B-AAE5-2FDF6864C111}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpAnalytics.WindowsPhone8", "CSharpAnalytics\CSharpAnalytics.WindowsPhone8.csproj", "{ADCBE54B-6255-403E-A54D-2589686CD668}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpAnalytics.Test.WindowsPhone8", "CSharpAnalytics.Tests\WindowsPhone8\CSharpAnalytics.Test.WindowsPhone8.csproj", "{2716A467-838A-4553-8FBC-AE29BD83F845}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpAnalytics.Sample.WindowsPhone8", "Samples\CSharpAnalytics.Sample.WindowsPhone8\CSharpAnalytics.Sample.WindowsPhone8.csproj", "{1A9591AF-E5CD-42DE-80A4-B17B227DD45B}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpAnalytics.Sample.Wpf", "Samples\CSharpAnalytics.Sample.Wpf\CSharpAnalytics.Sample.Wpf.csproj", "{A599EEEA-FC89-47FB-B8A9-DFD16FC3201D}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Windows Phone 8.1", "Windows Phone 8.1", "{8A95E16A-D32C-407B-B130-D0D56482A6DF}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpAnalytics.WindowsPhone81", "CSharpAnalytics\CSharpAnalytics.WindowsPhone81.csproj", "{64EB7726-8FD2-4764-94E7-347977E1FEEE}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpAnalytics.Sample.WindowsPhone81", "Samples\CSharpAnalytics.Sample.WindowsPhone81\CSharpAnalytics.Sample.WindowsPhone81.csproj", "{522CC2A8-71BD-4DA6-B10D-E214B0873B4D}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Any CPU = Debug|Any CPU
- Debug|ARM = Debug|ARM
- Debug|Mixed Platforms = Debug|Mixed Platforms
- Debug|x64 = Debug|x64
- Debug|x86 = Debug|x86
- Release|Any CPU = Release|Any CPU
- Release|ARM = Release|ARM
- Release|Mixed Platforms = Release|Mixed Platforms
- Release|x64 = Release|x64
- Release|x86 = Release|x86
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {31872BEA-1F8A-4FF0-B796-7768A0CDF256}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {31872BEA-1F8A-4FF0-B796-7768A0CDF256}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {31872BEA-1F8A-4FF0-B796-7768A0CDF256}.Debug|ARM.ActiveCfg = Debug|ARM
- {31872BEA-1F8A-4FF0-B796-7768A0CDF256}.Debug|ARM.Build.0 = Debug|ARM
- {31872BEA-1F8A-4FF0-B796-7768A0CDF256}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
- {31872BEA-1F8A-4FF0-B796-7768A0CDF256}.Debug|Mixed Platforms.Build.0 = Debug|x86
- {31872BEA-1F8A-4FF0-B796-7768A0CDF256}.Debug|x64.ActiveCfg = Debug|x64
- {31872BEA-1F8A-4FF0-B796-7768A0CDF256}.Debug|x64.Build.0 = Debug|x64
- {31872BEA-1F8A-4FF0-B796-7768A0CDF256}.Debug|x86.ActiveCfg = Debug|x86
- {31872BEA-1F8A-4FF0-B796-7768A0CDF256}.Debug|x86.Build.0 = Debug|x86
- {31872BEA-1F8A-4FF0-B796-7768A0CDF256}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {31872BEA-1F8A-4FF0-B796-7768A0CDF256}.Release|Any CPU.Build.0 = Release|Any CPU
- {31872BEA-1F8A-4FF0-B796-7768A0CDF256}.Release|ARM.ActiveCfg = Release|ARM
- {31872BEA-1F8A-4FF0-B796-7768A0CDF256}.Release|ARM.Build.0 = Release|ARM
- {31872BEA-1F8A-4FF0-B796-7768A0CDF256}.Release|Mixed Platforms.ActiveCfg = Release|x86
- {31872BEA-1F8A-4FF0-B796-7768A0CDF256}.Release|Mixed Platforms.Build.0 = Release|x86
- {31872BEA-1F8A-4FF0-B796-7768A0CDF256}.Release|x64.ActiveCfg = Release|x64
- {31872BEA-1F8A-4FF0-B796-7768A0CDF256}.Release|x64.Build.0 = Release|x64
- {31872BEA-1F8A-4FF0-B796-7768A0CDF256}.Release|x86.ActiveCfg = Release|x86
- {31872BEA-1F8A-4FF0-B796-7768A0CDF256}.Release|x86.Build.0 = Release|x86
- {830EA2C1-A706-4194-A9A4-9318C67C09DB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {830EA2C1-A706-4194-A9A4-9318C67C09DB}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {830EA2C1-A706-4194-A9A4-9318C67C09DB}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
- {830EA2C1-A706-4194-A9A4-9318C67C09DB}.Debug|ARM.ActiveCfg = Debug|ARM
- {830EA2C1-A706-4194-A9A4-9318C67C09DB}.Debug|ARM.Build.0 = Debug|ARM
- {830EA2C1-A706-4194-A9A4-9318C67C09DB}.Debug|ARM.Deploy.0 = Debug|ARM
- {830EA2C1-A706-4194-A9A4-9318C67C09DB}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
- {830EA2C1-A706-4194-A9A4-9318C67C09DB}.Debug|Mixed Platforms.Build.0 = Debug|x86
- {830EA2C1-A706-4194-A9A4-9318C67C09DB}.Debug|Mixed Platforms.Deploy.0 = Debug|x86
- {830EA2C1-A706-4194-A9A4-9318C67C09DB}.Debug|x64.ActiveCfg = Debug|x64
- {830EA2C1-A706-4194-A9A4-9318C67C09DB}.Debug|x64.Build.0 = Debug|x64
- {830EA2C1-A706-4194-A9A4-9318C67C09DB}.Debug|x64.Deploy.0 = Debug|x64
- {830EA2C1-A706-4194-A9A4-9318C67C09DB}.Debug|x86.ActiveCfg = Debug|x86
- {830EA2C1-A706-4194-A9A4-9318C67C09DB}.Debug|x86.Build.0 = Debug|x86
- {830EA2C1-A706-4194-A9A4-9318C67C09DB}.Debug|x86.Deploy.0 = Debug|x86
- {830EA2C1-A706-4194-A9A4-9318C67C09DB}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {830EA2C1-A706-4194-A9A4-9318C67C09DB}.Release|Any CPU.Build.0 = Release|Any CPU
- {830EA2C1-A706-4194-A9A4-9318C67C09DB}.Release|Any CPU.Deploy.0 = Release|Any CPU
- {830EA2C1-A706-4194-A9A4-9318C67C09DB}.Release|ARM.ActiveCfg = Release|ARM
- {830EA2C1-A706-4194-A9A4-9318C67C09DB}.Release|ARM.Build.0 = Release|ARM
- {830EA2C1-A706-4194-A9A4-9318C67C09DB}.Release|ARM.Deploy.0 = Release|ARM
- {830EA2C1-A706-4194-A9A4-9318C67C09DB}.Release|Mixed Platforms.ActiveCfg = Release|x86
- {830EA2C1-A706-4194-A9A4-9318C67C09DB}.Release|Mixed Platforms.Build.0 = Release|x86
- {830EA2C1-A706-4194-A9A4-9318C67C09DB}.Release|Mixed Platforms.Deploy.0 = Release|x86
- {830EA2C1-A706-4194-A9A4-9318C67C09DB}.Release|x64.ActiveCfg = Release|x64
- {830EA2C1-A706-4194-A9A4-9318C67C09DB}.Release|x64.Build.0 = Release|x64
- {830EA2C1-A706-4194-A9A4-9318C67C09DB}.Release|x64.Deploy.0 = Release|x64
- {830EA2C1-A706-4194-A9A4-9318C67C09DB}.Release|x86.ActiveCfg = Release|x86
- {830EA2C1-A706-4194-A9A4-9318C67C09DB}.Release|x86.Build.0 = Release|x86
- {830EA2C1-A706-4194-A9A4-9318C67C09DB}.Release|x86.Deploy.0 = Release|x86
- {0334B071-1FB1-4372-B500-4BC58A11EE59}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {0334B071-1FB1-4372-B500-4BC58A11EE59}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {0334B071-1FB1-4372-B500-4BC58A11EE59}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {0334B071-1FB1-4372-B500-4BC58A11EE59}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
- {0334B071-1FB1-4372-B500-4BC58A11EE59}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
- {0334B071-1FB1-4372-B500-4BC58A11EE59}.Debug|x64.ActiveCfg = Debug|Any CPU
- {0334B071-1FB1-4372-B500-4BC58A11EE59}.Debug|x86.ActiveCfg = Debug|Any CPU
- {0334B071-1FB1-4372-B500-4BC58A11EE59}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {0334B071-1FB1-4372-B500-4BC58A11EE59}.Release|Any CPU.Build.0 = Release|Any CPU
- {0334B071-1FB1-4372-B500-4BC58A11EE59}.Release|ARM.ActiveCfg = Release|Any CPU
- {0334B071-1FB1-4372-B500-4BC58A11EE59}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
- {0334B071-1FB1-4372-B500-4BC58A11EE59}.Release|Mixed Platforms.Build.0 = Release|Any CPU
- {0334B071-1FB1-4372-B500-4BC58A11EE59}.Release|x64.ActiveCfg = Release|Any CPU
- {0334B071-1FB1-4372-B500-4BC58A11EE59}.Release|x86.ActiveCfg = Release|Any CPU
- {0BCC678D-7C68-4A6F-AE96-E1EEE2C217DA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {0BCC678D-7C68-4A6F-AE96-E1EEE2C217DA}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {0BCC678D-7C68-4A6F-AE96-E1EEE2C217DA}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {0BCC678D-7C68-4A6F-AE96-E1EEE2C217DA}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
- {0BCC678D-7C68-4A6F-AE96-E1EEE2C217DA}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
- {0BCC678D-7C68-4A6F-AE96-E1EEE2C217DA}.Debug|x64.ActiveCfg = Debug|Any CPU
- {0BCC678D-7C68-4A6F-AE96-E1EEE2C217DA}.Debug|x86.ActiveCfg = Debug|Any CPU
- {0BCC678D-7C68-4A6F-AE96-E1EEE2C217DA}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {0BCC678D-7C68-4A6F-AE96-E1EEE2C217DA}.Release|Any CPU.Build.0 = Release|Any CPU
- {0BCC678D-7C68-4A6F-AE96-E1EEE2C217DA}.Release|ARM.ActiveCfg = Release|Any CPU
- {0BCC678D-7C68-4A6F-AE96-E1EEE2C217DA}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
- {0BCC678D-7C68-4A6F-AE96-E1EEE2C217DA}.Release|Mixed Platforms.Build.0 = Release|Any CPU
- {0BCC678D-7C68-4A6F-AE96-E1EEE2C217DA}.Release|x64.ActiveCfg = Release|Any CPU
- {0BCC678D-7C68-4A6F-AE96-E1EEE2C217DA}.Release|x86.ActiveCfg = Release|Any CPU
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3}.Debug|ARM.ActiveCfg = Debug|ARM
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3}.Debug|ARM.Build.0 = Debug|ARM
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3}.Debug|ARM.Deploy.0 = Debug|ARM
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3}.Debug|Mixed Platforms.Build.0 = Debug|x86
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3}.Debug|Mixed Platforms.Deploy.0 = Debug|x86
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3}.Debug|x64.ActiveCfg = Debug|x64
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3}.Debug|x64.Build.0 = Debug|x64
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3}.Debug|x64.Deploy.0 = Debug|x64
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3}.Debug|x86.ActiveCfg = Debug|x86
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3}.Debug|x86.Build.0 = Debug|x86
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3}.Debug|x86.Deploy.0 = Debug|x86
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3}.Release|Any CPU.Build.0 = Release|Any CPU
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3}.Release|Any CPU.Deploy.0 = Release|Any CPU
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3}.Release|ARM.ActiveCfg = Release|ARM
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3}.Release|ARM.Build.0 = Release|ARM
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3}.Release|ARM.Deploy.0 = Release|ARM
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3}.Release|Mixed Platforms.ActiveCfg = Release|x86
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3}.Release|Mixed Platforms.Build.0 = Release|x86
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3}.Release|Mixed Platforms.Deploy.0 = Release|x86
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3}.Release|x64.ActiveCfg = Release|x64
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3}.Release|x64.Build.0 = Release|x64
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3}.Release|x64.Deploy.0 = Release|x64
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3}.Release|x86.ActiveCfg = Release|x86
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3}.Release|x86.Build.0 = Release|x86
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3}.Release|x86.Deploy.0 = Release|x86
- {32DFBC46-96B4-4333-BCF3-CFCEE1621597}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {32DFBC46-96B4-4333-BCF3-CFCEE1621597}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {32DFBC46-96B4-4333-BCF3-CFCEE1621597}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
- {32DFBC46-96B4-4333-BCF3-CFCEE1621597}.Debug|ARM.ActiveCfg = Debug|ARM
- {32DFBC46-96B4-4333-BCF3-CFCEE1621597}.Debug|ARM.Build.0 = Debug|ARM
- {32DFBC46-96B4-4333-BCF3-CFCEE1621597}.Debug|ARM.Deploy.0 = Debug|ARM
- {32DFBC46-96B4-4333-BCF3-CFCEE1621597}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
- {32DFBC46-96B4-4333-BCF3-CFCEE1621597}.Debug|Mixed Platforms.Build.0 = Debug|x86
- {32DFBC46-96B4-4333-BCF3-CFCEE1621597}.Debug|Mixed Platforms.Deploy.0 = Debug|x86
- {32DFBC46-96B4-4333-BCF3-CFCEE1621597}.Debug|x64.ActiveCfg = Debug|x64
- {32DFBC46-96B4-4333-BCF3-CFCEE1621597}.Debug|x64.Build.0 = Debug|x64
- {32DFBC46-96B4-4333-BCF3-CFCEE1621597}.Debug|x64.Deploy.0 = Debug|x64
- {32DFBC46-96B4-4333-BCF3-CFCEE1621597}.Debug|x86.ActiveCfg = Debug|x86
- {32DFBC46-96B4-4333-BCF3-CFCEE1621597}.Debug|x86.Build.0 = Debug|x86
- {32DFBC46-96B4-4333-BCF3-CFCEE1621597}.Debug|x86.Deploy.0 = Debug|x86
- {32DFBC46-96B4-4333-BCF3-CFCEE1621597}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {32DFBC46-96B4-4333-BCF3-CFCEE1621597}.Release|Any CPU.Build.0 = Release|Any CPU
- {32DFBC46-96B4-4333-BCF3-CFCEE1621597}.Release|Any CPU.Deploy.0 = Release|Any CPU
- {32DFBC46-96B4-4333-BCF3-CFCEE1621597}.Release|ARM.ActiveCfg = Release|ARM
- {32DFBC46-96B4-4333-BCF3-CFCEE1621597}.Release|ARM.Build.0 = Release|ARM
- {32DFBC46-96B4-4333-BCF3-CFCEE1621597}.Release|ARM.Deploy.0 = Release|ARM
- {32DFBC46-96B4-4333-BCF3-CFCEE1621597}.Release|Mixed Platforms.ActiveCfg = Release|x86
- {32DFBC46-96B4-4333-BCF3-CFCEE1621597}.Release|Mixed Platforms.Build.0 = Release|x86
- {32DFBC46-96B4-4333-BCF3-CFCEE1621597}.Release|Mixed Platforms.Deploy.0 = Release|x86
- {32DFBC46-96B4-4333-BCF3-CFCEE1621597}.Release|x64.ActiveCfg = Release|x64
- {32DFBC46-96B4-4333-BCF3-CFCEE1621597}.Release|x64.Build.0 = Release|x64
- {32DFBC46-96B4-4333-BCF3-CFCEE1621597}.Release|x64.Deploy.0 = Release|x64
- {32DFBC46-96B4-4333-BCF3-CFCEE1621597}.Release|x86.ActiveCfg = Release|x86
- {32DFBC46-96B4-4333-BCF3-CFCEE1621597}.Release|x86.Build.0 = Release|x86
- {32DFBC46-96B4-4333-BCF3-CFCEE1621597}.Release|x86.Deploy.0 = Release|x86
- {E1988F29-2722-4F83-A4D2-14067911F182}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {E1988F29-2722-4F83-A4D2-14067911F182}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {E1988F29-2722-4F83-A4D2-14067911F182}.Debug|ARM.ActiveCfg = Debug|ARM
- {E1988F29-2722-4F83-A4D2-14067911F182}.Debug|ARM.Build.0 = Debug|ARM
- {E1988F29-2722-4F83-A4D2-14067911F182}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
- {E1988F29-2722-4F83-A4D2-14067911F182}.Debug|Mixed Platforms.Build.0 = Debug|x86
- {E1988F29-2722-4F83-A4D2-14067911F182}.Debug|x64.ActiveCfg = Debug|x64
- {E1988F29-2722-4F83-A4D2-14067911F182}.Debug|x64.Build.0 = Debug|x64
- {E1988F29-2722-4F83-A4D2-14067911F182}.Debug|x86.ActiveCfg = Debug|x86
- {E1988F29-2722-4F83-A4D2-14067911F182}.Debug|x86.Build.0 = Debug|x86
- {E1988F29-2722-4F83-A4D2-14067911F182}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {E1988F29-2722-4F83-A4D2-14067911F182}.Release|Any CPU.Build.0 = Release|Any CPU
- {E1988F29-2722-4F83-A4D2-14067911F182}.Release|ARM.ActiveCfg = Release|ARM
- {E1988F29-2722-4F83-A4D2-14067911F182}.Release|ARM.Build.0 = Release|ARM
- {E1988F29-2722-4F83-A4D2-14067911F182}.Release|Mixed Platforms.ActiveCfg = Release|x86
- {E1988F29-2722-4F83-A4D2-14067911F182}.Release|Mixed Platforms.Build.0 = Release|x86
- {E1988F29-2722-4F83-A4D2-14067911F182}.Release|x64.ActiveCfg = Release|x64
- {E1988F29-2722-4F83-A4D2-14067911F182}.Release|x64.Build.0 = Release|x64
- {E1988F29-2722-4F83-A4D2-14067911F182}.Release|x86.ActiveCfg = Release|x86
- {E1988F29-2722-4F83-A4D2-14067911F182}.Release|x86.Build.0 = Release|x86
- {4FD70215-C708-4BB1-AD8A-758BA038F3F6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {4FD70215-C708-4BB1-AD8A-758BA038F3F6}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {4FD70215-C708-4BB1-AD8A-758BA038F3F6}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
- {4FD70215-C708-4BB1-AD8A-758BA038F3F6}.Debug|ARM.ActiveCfg = Debug|ARM
- {4FD70215-C708-4BB1-AD8A-758BA038F3F6}.Debug|ARM.Build.0 = Debug|ARM
- {4FD70215-C708-4BB1-AD8A-758BA038F3F6}.Debug|ARM.Deploy.0 = Debug|ARM
- {4FD70215-C708-4BB1-AD8A-758BA038F3F6}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
- {4FD70215-C708-4BB1-AD8A-758BA038F3F6}.Debug|Mixed Platforms.Build.0 = Debug|x86
- {4FD70215-C708-4BB1-AD8A-758BA038F3F6}.Debug|Mixed Platforms.Deploy.0 = Debug|x86
- {4FD70215-C708-4BB1-AD8A-758BA038F3F6}.Debug|x64.ActiveCfg = Debug|x64
- {4FD70215-C708-4BB1-AD8A-758BA038F3F6}.Debug|x64.Build.0 = Debug|x64
- {4FD70215-C708-4BB1-AD8A-758BA038F3F6}.Debug|x64.Deploy.0 = Debug|x64
- {4FD70215-C708-4BB1-AD8A-758BA038F3F6}.Debug|x86.ActiveCfg = Debug|x86
- {4FD70215-C708-4BB1-AD8A-758BA038F3F6}.Debug|x86.Build.0 = Debug|x86
- {4FD70215-C708-4BB1-AD8A-758BA038F3F6}.Debug|x86.Deploy.0 = Debug|x86
- {4FD70215-C708-4BB1-AD8A-758BA038F3F6}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {4FD70215-C708-4BB1-AD8A-758BA038F3F6}.Release|Any CPU.Build.0 = Release|Any CPU
- {4FD70215-C708-4BB1-AD8A-758BA038F3F6}.Release|Any CPU.Deploy.0 = Release|Any CPU
- {4FD70215-C708-4BB1-AD8A-758BA038F3F6}.Release|ARM.ActiveCfg = Release|ARM
- {4FD70215-C708-4BB1-AD8A-758BA038F3F6}.Release|ARM.Build.0 = Release|ARM
- {4FD70215-C708-4BB1-AD8A-758BA038F3F6}.Release|ARM.Deploy.0 = Release|ARM
- {4FD70215-C708-4BB1-AD8A-758BA038F3F6}.Release|Mixed Platforms.ActiveCfg = Release|x86
- {4FD70215-C708-4BB1-AD8A-758BA038F3F6}.Release|Mixed Platforms.Build.0 = Release|x86
- {4FD70215-C708-4BB1-AD8A-758BA038F3F6}.Release|Mixed Platforms.Deploy.0 = Release|x86
- {4FD70215-C708-4BB1-AD8A-758BA038F3F6}.Release|x64.ActiveCfg = Release|x64
- {4FD70215-C708-4BB1-AD8A-758BA038F3F6}.Release|x64.Build.0 = Release|x64
- {4FD70215-C708-4BB1-AD8A-758BA038F3F6}.Release|x64.Deploy.0 = Release|x64
- {4FD70215-C708-4BB1-AD8A-758BA038F3F6}.Release|x86.ActiveCfg = Release|x86
- {4FD70215-C708-4BB1-AD8A-758BA038F3F6}.Release|x86.Build.0 = Release|x86
- {4FD70215-C708-4BB1-AD8A-758BA038F3F6}.Release|x86.Deploy.0 = Release|x86
- {07DDA3AD-EE3B-4FE5-B532-059629C6A24E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {07DDA3AD-EE3B-4FE5-B532-059629C6A24E}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {07DDA3AD-EE3B-4FE5-B532-059629C6A24E}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {07DDA3AD-EE3B-4FE5-B532-059629C6A24E}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
- {07DDA3AD-EE3B-4FE5-B532-059629C6A24E}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
- {07DDA3AD-EE3B-4FE5-B532-059629C6A24E}.Debug|x64.ActiveCfg = Debug|Any CPU
- {07DDA3AD-EE3B-4FE5-B532-059629C6A24E}.Debug|x86.ActiveCfg = Debug|Any CPU
- {07DDA3AD-EE3B-4FE5-B532-059629C6A24E}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {07DDA3AD-EE3B-4FE5-B532-059629C6A24E}.Release|Any CPU.Build.0 = Release|Any CPU
- {07DDA3AD-EE3B-4FE5-B532-059629C6A24E}.Release|ARM.ActiveCfg = Release|Any CPU
- {07DDA3AD-EE3B-4FE5-B532-059629C6A24E}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
- {07DDA3AD-EE3B-4FE5-B532-059629C6A24E}.Release|Mixed Platforms.Build.0 = Release|Any CPU
- {07DDA3AD-EE3B-4FE5-B532-059629C6A24E}.Release|x64.ActiveCfg = Release|Any CPU
- {07DDA3AD-EE3B-4FE5-B532-059629C6A24E}.Release|x86.ActiveCfg = Release|Any CPU
- {ADCBE54B-6255-403E-A54D-2589686CD668}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {ADCBE54B-6255-403E-A54D-2589686CD668}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {ADCBE54B-6255-403E-A54D-2589686CD668}.Debug|ARM.ActiveCfg = Debug|ARM
- {ADCBE54B-6255-403E-A54D-2589686CD668}.Debug|ARM.Build.0 = Debug|ARM
- {ADCBE54B-6255-403E-A54D-2589686CD668}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
- {ADCBE54B-6255-403E-A54D-2589686CD668}.Debug|Mixed Platforms.Build.0 = Debug|x86
- {ADCBE54B-6255-403E-A54D-2589686CD668}.Debug|x64.ActiveCfg = Debug|Any CPU
- {ADCBE54B-6255-403E-A54D-2589686CD668}.Debug|x86.ActiveCfg = Debug|x86
- {ADCBE54B-6255-403E-A54D-2589686CD668}.Debug|x86.Build.0 = Debug|x86
- {ADCBE54B-6255-403E-A54D-2589686CD668}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {ADCBE54B-6255-403E-A54D-2589686CD668}.Release|Any CPU.Build.0 = Release|Any CPU
- {ADCBE54B-6255-403E-A54D-2589686CD668}.Release|ARM.ActiveCfg = Release|ARM
- {ADCBE54B-6255-403E-A54D-2589686CD668}.Release|ARM.Build.0 = Release|ARM
- {ADCBE54B-6255-403E-A54D-2589686CD668}.Release|Mixed Platforms.ActiveCfg = Release|x86
- {ADCBE54B-6255-403E-A54D-2589686CD668}.Release|Mixed Platforms.Build.0 = Release|x86
- {ADCBE54B-6255-403E-A54D-2589686CD668}.Release|x64.ActiveCfg = Release|Any CPU
- {ADCBE54B-6255-403E-A54D-2589686CD668}.Release|x86.ActiveCfg = Release|x86
- {ADCBE54B-6255-403E-A54D-2589686CD668}.Release|x86.Build.0 = Release|x86
- {2716A467-838A-4553-8FBC-AE29BD83F845}.Debug|Any CPU.ActiveCfg = Debug|x86
- {2716A467-838A-4553-8FBC-AE29BD83F845}.Debug|Any CPU.Build.0 = Debug|x86
- {2716A467-838A-4553-8FBC-AE29BD83F845}.Debug|ARM.ActiveCfg = Debug|ARM
- {2716A467-838A-4553-8FBC-AE29BD83F845}.Debug|ARM.Build.0 = Debug|ARM
- {2716A467-838A-4553-8FBC-AE29BD83F845}.Debug|ARM.Deploy.0 = Debug|ARM
- {2716A467-838A-4553-8FBC-AE29BD83F845}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
- {2716A467-838A-4553-8FBC-AE29BD83F845}.Debug|Mixed Platforms.Build.0 = Debug|x86
- {2716A467-838A-4553-8FBC-AE29BD83F845}.Debug|Mixed Platforms.Deploy.0 = Debug|x86
- {2716A467-838A-4553-8FBC-AE29BD83F845}.Debug|x64.ActiveCfg = Debug|x86
- {2716A467-838A-4553-8FBC-AE29BD83F845}.Debug|x86.ActiveCfg = Debug|x86
- {2716A467-838A-4553-8FBC-AE29BD83F845}.Debug|x86.Build.0 = Debug|x86
- {2716A467-838A-4553-8FBC-AE29BD83F845}.Debug|x86.Deploy.0 = Debug|x86
- {2716A467-838A-4553-8FBC-AE29BD83F845}.Release|Any CPU.ActiveCfg = Release|x86
- {2716A467-838A-4553-8FBC-AE29BD83F845}.Release|Any CPU.Build.0 = Release|x86
- {2716A467-838A-4553-8FBC-AE29BD83F845}.Release|ARM.ActiveCfg = Release|ARM
- {2716A467-838A-4553-8FBC-AE29BD83F845}.Release|ARM.Build.0 = Release|ARM
- {2716A467-838A-4553-8FBC-AE29BD83F845}.Release|ARM.Deploy.0 = Release|ARM
- {2716A467-838A-4553-8FBC-AE29BD83F845}.Release|Mixed Platforms.ActiveCfg = Release|x86
- {2716A467-838A-4553-8FBC-AE29BD83F845}.Release|Mixed Platforms.Build.0 = Release|x86
- {2716A467-838A-4553-8FBC-AE29BD83F845}.Release|Mixed Platforms.Deploy.0 = Release|x86
- {2716A467-838A-4553-8FBC-AE29BD83F845}.Release|x64.ActiveCfg = Release|x86
- {2716A467-838A-4553-8FBC-AE29BD83F845}.Release|x86.ActiveCfg = Release|x86
- {2716A467-838A-4553-8FBC-AE29BD83F845}.Release|x86.Build.0 = Release|x86
- {2716A467-838A-4553-8FBC-AE29BD83F845}.Release|x86.Deploy.0 = Release|x86
- {1A9591AF-E5CD-42DE-80A4-B17B227DD45B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {1A9591AF-E5CD-42DE-80A4-B17B227DD45B}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {1A9591AF-E5CD-42DE-80A4-B17B227DD45B}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
- {1A9591AF-E5CD-42DE-80A4-B17B227DD45B}.Debug|ARM.ActiveCfg = Debug|ARM
- {1A9591AF-E5CD-42DE-80A4-B17B227DD45B}.Debug|ARM.Build.0 = Debug|ARM
- {1A9591AF-E5CD-42DE-80A4-B17B227DD45B}.Debug|ARM.Deploy.0 = Debug|ARM
- {1A9591AF-E5CD-42DE-80A4-B17B227DD45B}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
- {1A9591AF-E5CD-42DE-80A4-B17B227DD45B}.Debug|Mixed Platforms.Build.0 = Debug|x86
- {1A9591AF-E5CD-42DE-80A4-B17B227DD45B}.Debug|Mixed Platforms.Deploy.0 = Debug|x86
- {1A9591AF-E5CD-42DE-80A4-B17B227DD45B}.Debug|x64.ActiveCfg = Debug|Any CPU
- {1A9591AF-E5CD-42DE-80A4-B17B227DD45B}.Debug|x86.ActiveCfg = Debug|x86
- {1A9591AF-E5CD-42DE-80A4-B17B227DD45B}.Debug|x86.Build.0 = Debug|x86
- {1A9591AF-E5CD-42DE-80A4-B17B227DD45B}.Debug|x86.Deploy.0 = Debug|x86
- {1A9591AF-E5CD-42DE-80A4-B17B227DD45B}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {1A9591AF-E5CD-42DE-80A4-B17B227DD45B}.Release|Any CPU.Build.0 = Release|Any CPU
- {1A9591AF-E5CD-42DE-80A4-B17B227DD45B}.Release|Any CPU.Deploy.0 = Release|Any CPU
- {1A9591AF-E5CD-42DE-80A4-B17B227DD45B}.Release|ARM.ActiveCfg = Release|ARM
- {1A9591AF-E5CD-42DE-80A4-B17B227DD45B}.Release|ARM.Build.0 = Release|ARM
- {1A9591AF-E5CD-42DE-80A4-B17B227DD45B}.Release|ARM.Deploy.0 = Release|ARM
- {1A9591AF-E5CD-42DE-80A4-B17B227DD45B}.Release|Mixed Platforms.ActiveCfg = Release|x86
- {1A9591AF-E5CD-42DE-80A4-B17B227DD45B}.Release|Mixed Platforms.Build.0 = Release|x86
- {1A9591AF-E5CD-42DE-80A4-B17B227DD45B}.Release|Mixed Platforms.Deploy.0 = Release|x86
- {1A9591AF-E5CD-42DE-80A4-B17B227DD45B}.Release|x64.ActiveCfg = Release|Any CPU
- {1A9591AF-E5CD-42DE-80A4-B17B227DD45B}.Release|x86.ActiveCfg = Release|x86
- {1A9591AF-E5CD-42DE-80A4-B17B227DD45B}.Release|x86.Build.0 = Release|x86
- {1A9591AF-E5CD-42DE-80A4-B17B227DD45B}.Release|x86.Deploy.0 = Release|x86
- {A599EEEA-FC89-47FB-B8A9-DFD16FC3201D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {A599EEEA-FC89-47FB-B8A9-DFD16FC3201D}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {A599EEEA-FC89-47FB-B8A9-DFD16FC3201D}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {A599EEEA-FC89-47FB-B8A9-DFD16FC3201D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
- {A599EEEA-FC89-47FB-B8A9-DFD16FC3201D}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
- {A599EEEA-FC89-47FB-B8A9-DFD16FC3201D}.Debug|x64.ActiveCfg = Debug|Any CPU
- {A599EEEA-FC89-47FB-B8A9-DFD16FC3201D}.Debug|x86.ActiveCfg = Debug|Any CPU
- {A599EEEA-FC89-47FB-B8A9-DFD16FC3201D}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {A599EEEA-FC89-47FB-B8A9-DFD16FC3201D}.Release|Any CPU.Build.0 = Release|Any CPU
- {A599EEEA-FC89-47FB-B8A9-DFD16FC3201D}.Release|ARM.ActiveCfg = Release|Any CPU
- {A599EEEA-FC89-47FB-B8A9-DFD16FC3201D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
- {A599EEEA-FC89-47FB-B8A9-DFD16FC3201D}.Release|Mixed Platforms.Build.0 = Release|Any CPU
- {A599EEEA-FC89-47FB-B8A9-DFD16FC3201D}.Release|x64.ActiveCfg = Release|Any CPU
- {A599EEEA-FC89-47FB-B8A9-DFD16FC3201D}.Release|x86.ActiveCfg = Release|Any CPU
- {64EB7726-8FD2-4764-94E7-347977E1FEEE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {64EB7726-8FD2-4764-94E7-347977E1FEEE}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {64EB7726-8FD2-4764-94E7-347977E1FEEE}.Debug|ARM.ActiveCfg = Debug|ARM
- {64EB7726-8FD2-4764-94E7-347977E1FEEE}.Debug|ARM.Build.0 = Debug|ARM
- {64EB7726-8FD2-4764-94E7-347977E1FEEE}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
- {64EB7726-8FD2-4764-94E7-347977E1FEEE}.Debug|Mixed Platforms.Build.0 = Debug|x86
- {64EB7726-8FD2-4764-94E7-347977E1FEEE}.Debug|x64.ActiveCfg = Debug|Any CPU
- {64EB7726-8FD2-4764-94E7-347977E1FEEE}.Debug|x86.ActiveCfg = Debug|x86
- {64EB7726-8FD2-4764-94E7-347977E1FEEE}.Debug|x86.Build.0 = Debug|x86
- {64EB7726-8FD2-4764-94E7-347977E1FEEE}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {64EB7726-8FD2-4764-94E7-347977E1FEEE}.Release|Any CPU.Build.0 = Release|Any CPU
- {64EB7726-8FD2-4764-94E7-347977E1FEEE}.Release|ARM.ActiveCfg = Release|ARM
- {64EB7726-8FD2-4764-94E7-347977E1FEEE}.Release|ARM.Build.0 = Release|ARM
- {64EB7726-8FD2-4764-94E7-347977E1FEEE}.Release|Mixed Platforms.ActiveCfg = Release|x86
- {64EB7726-8FD2-4764-94E7-347977E1FEEE}.Release|Mixed Platforms.Build.0 = Release|x86
- {64EB7726-8FD2-4764-94E7-347977E1FEEE}.Release|x64.ActiveCfg = Release|Any CPU
- {64EB7726-8FD2-4764-94E7-347977E1FEEE}.Release|x86.ActiveCfg = Release|x86
- {64EB7726-8FD2-4764-94E7-347977E1FEEE}.Release|x86.Build.0 = Release|x86
- {522CC2A8-71BD-4DA6-B10D-E214B0873B4D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {522CC2A8-71BD-4DA6-B10D-E214B0873B4D}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {522CC2A8-71BD-4DA6-B10D-E214B0873B4D}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
- {522CC2A8-71BD-4DA6-B10D-E214B0873B4D}.Debug|ARM.ActiveCfg = Debug|ARM
- {522CC2A8-71BD-4DA6-B10D-E214B0873B4D}.Debug|ARM.Build.0 = Debug|ARM
- {522CC2A8-71BD-4DA6-B10D-E214B0873B4D}.Debug|ARM.Deploy.0 = Debug|ARM
- {522CC2A8-71BD-4DA6-B10D-E214B0873B4D}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
- {522CC2A8-71BD-4DA6-B10D-E214B0873B4D}.Debug|Mixed Platforms.Build.0 = Debug|x86
- {522CC2A8-71BD-4DA6-B10D-E214B0873B4D}.Debug|Mixed Platforms.Deploy.0 = Debug|x86
- {522CC2A8-71BD-4DA6-B10D-E214B0873B4D}.Debug|x64.ActiveCfg = Debug|Any CPU
- {522CC2A8-71BD-4DA6-B10D-E214B0873B4D}.Debug|x64.Build.0 = Debug|Any CPU
- {522CC2A8-71BD-4DA6-B10D-E214B0873B4D}.Debug|x64.Deploy.0 = Debug|Any CPU
- {522CC2A8-71BD-4DA6-B10D-E214B0873B4D}.Debug|x86.ActiveCfg = Debug|x86
- {522CC2A8-71BD-4DA6-B10D-E214B0873B4D}.Debug|x86.Build.0 = Debug|x86
- {522CC2A8-71BD-4DA6-B10D-E214B0873B4D}.Debug|x86.Deploy.0 = Debug|x86
- {522CC2A8-71BD-4DA6-B10D-E214B0873B4D}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {522CC2A8-71BD-4DA6-B10D-E214B0873B4D}.Release|Any CPU.Build.0 = Release|Any CPU
- {522CC2A8-71BD-4DA6-B10D-E214B0873B4D}.Release|Any CPU.Deploy.0 = Release|Any CPU
- {522CC2A8-71BD-4DA6-B10D-E214B0873B4D}.Release|ARM.ActiveCfg = Release|ARM
- {522CC2A8-71BD-4DA6-B10D-E214B0873B4D}.Release|ARM.Build.0 = Release|ARM
- {522CC2A8-71BD-4DA6-B10D-E214B0873B4D}.Release|ARM.Deploy.0 = Release|ARM
- {522CC2A8-71BD-4DA6-B10D-E214B0873B4D}.Release|Mixed Platforms.ActiveCfg = Release|x86
- {522CC2A8-71BD-4DA6-B10D-E214B0873B4D}.Release|Mixed Platforms.Build.0 = Release|x86
- {522CC2A8-71BD-4DA6-B10D-E214B0873B4D}.Release|Mixed Platforms.Deploy.0 = Release|x86
- {522CC2A8-71BD-4DA6-B10D-E214B0873B4D}.Release|x64.ActiveCfg = Release|Any CPU
- {522CC2A8-71BD-4DA6-B10D-E214B0873B4D}.Release|x64.Build.0 = Release|Any CPU
- {522CC2A8-71BD-4DA6-B10D-E214B0873B4D}.Release|x64.Deploy.0 = Release|Any CPU
- {522CC2A8-71BD-4DA6-B10D-E214B0873B4D}.Release|x86.ActiveCfg = Release|x86
- {522CC2A8-71BD-4DA6-B10D-E214B0873B4D}.Release|x86.Build.0 = Release|x86
- {522CC2A8-71BD-4DA6-B10D-E214B0873B4D}.Release|x86.Deploy.0 = Release|x86
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
- GlobalSection(NestedProjects) = preSolution
- {31872BEA-1F8A-4FF0-B796-7768A0CDF256} = {941B2A0F-9D93-4B3A-951E-1C447496DEAD}
- {830EA2C1-A706-4194-A9A4-9318C67C09DB} = {941B2A0F-9D93-4B3A-951E-1C447496DEAD}
- {0334B071-1FB1-4372-B500-4BC58A11EE59} = {B6D30B2A-B2CC-4BAD-A5AB-8ABD7B665EE7}
- {0BCC678D-7C68-4A6F-AE96-E1EEE2C217DA} = {B6D30B2A-B2CC-4BAD-A5AB-8ABD7B665EE7}
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3} = {941B2A0F-9D93-4B3A-951E-1C447496DEAD}
- {32DFBC46-96B4-4333-BCF3-CFCEE1621597} = {FBF7214C-C891-48CF-8A9A-A9243FFB0824}
- {E1988F29-2722-4F83-A4D2-14067911F182} = {FBF7214C-C891-48CF-8A9A-A9243FFB0824}
- {4FD70215-C708-4BB1-AD8A-758BA038F3F6} = {FBF7214C-C891-48CF-8A9A-A9243FFB0824}
- {07DDA3AD-EE3B-4FE5-B532-059629C6A24E} = {3F625E98-D620-4CF3-BD83-5C97B7360496}
- {3F625E98-D620-4CF3-BD83-5C97B7360496} = {B6D30B2A-B2CC-4BAD-A5AB-8ABD7B665EE7}
- {ADCBE54B-6255-403E-A54D-2589686CD668} = {6145367D-3F9E-440B-AAE5-2FDF6864C111}
- {2716A467-838A-4553-8FBC-AE29BD83F845} = {6145367D-3F9E-440B-AAE5-2FDF6864C111}
- {1A9591AF-E5CD-42DE-80A4-B17B227DD45B} = {6145367D-3F9E-440B-AAE5-2FDF6864C111}
- {A599EEEA-FC89-47FB-B8A9-DFD16FC3201D} = {3F625E98-D620-4CF3-BD83-5C97B7360496}
- {64EB7726-8FD2-4764-94E7-347977E1FEEE} = {8A95E16A-D32C-407B-B130-D0D56482A6DF}
- {522CC2A8-71BD-4DA6-B10D-E214B0873B4D} = {8A95E16A-D32C-407B-B130-D0D56482A6DF}
- EndGlobalSection
-EndGlobal
diff --git a/Source/CSharpAnalytics/AutoMeasurement/WindowsPhone81AutoMeasurement.cs b/Source/CSharpAnalytics/AutoMeasurement/WindowsPhone81AutoMeasurement.cs
deleted file mode 100644
index ae6f887..0000000
--- a/Source/CSharpAnalytics/AutoMeasurement/WindowsPhone81AutoMeasurement.cs
+++ /dev/null
@@ -1,214 +0,0 @@
-// Copyright (c) Attack Pattern LLC. All rights reserved.
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
-
-using CSharpAnalytics.Environment;
-using CSharpAnalytics.Network;
-using CSharpAnalytics.Protocols.Measurement;
-using CSharpAnalytics.Serializers;
-using CSharpAnalytics.Sessions;
-using CSharpAnalytics.SystemInfo;
-using System;
-using System.Threading.Tasks;
-using Windows.Networking.Connectivity;
-using Windows.ApplicationModel.Activation;
-using Windows.UI.Xaml;
-using Windows.UI.Xaml.Controls;
-using Windows.UI.Xaml.Navigation;
-using Windows.ApplicationModel;
-
-namespace CSharpAnalytics
-{
- ///
- /// Helper class to get up and running with CSharpAnalytics in Winows Phone 8 applications.
- /// Either use as-is by calling StartAsync, Attach and StopAsync from your App.xaml.cs or use as a
- /// starting point to wire up your own way.
- ///
- public class WindowsPhone81AutoMeasurement : BaseAutoMeasurement
- {
- private static Frame attachedFrame;
-
- ///
- /// Attach to the root frame, hook into the navigation event and track initial screen view.
- /// Call this just before Window.Current.Activate() in your App.OnLaunched method.
- ///
- public void Attach(Frame frame)
- {
- if (frame == null)
- throw new ArgumentNullException("frame");
-
- if (frame != attachedFrame)
- {
- if (attachedFrame != null)
- attachedFrame.Navigated -= FrameNavigated;
- frame.Navigated += FrameNavigated;
- attachedFrame = frame;
- }
-
- var content = frame.Content;
- if (content != null)
- TrackScreenView(content.GetType());
- }
-
- ///
- /// Get the environment details for this system.
- ///
- ///
- /// IEnvironment implementation for getting screen, language and other system details.
- ///
- protected override IEnvironment GetEnvironment()
- {
- return new WindowsPhoneEnvironment();
- }
-
- ///
- /// Hook into various events to automatically track suspend, resume, page navigation,
- /// social sharing etc.
- ///
- protected override void HookEvents()
- {
- var application = Application.Current;
- application.Resuming += ApplicationOnResuming;
- application.Suspending += ApplicationOnSuspending;
- }
-
- ///
- /// Unhook events that were wired up in HookEvents.
- ///
- ///
- /// Not actually used in AutoMeasurement but here to show you what to do if you wanted to.
- ///
- protected override void UnhookEvents()
- {
- var application = Application.Current;
- application.Resuming -= ApplicationOnResuming;
- application.Suspending -= ApplicationOnSuspending;
-
- if (attachedFrame != null)
- attachedFrame.Navigated -= FrameNavigated;
- attachedFrame = null;
- }
-
- ///
- /// Setup the Uri requester complete with user agent etc.
- ///
- /// Task that completes when the requester is ready to use.
- protected override Task SetupRequesterAsync()
- {
- var webRequester = new HttpWebRequester(ClientUserAgent + " " + WindowsPhone81SystemInfo.GetSystemUserAgent());
- Requester = webRequester.Request;
-
- return Task.FromResult(true);
- }
-
- ///
- /// Determine if the Internet is available at this point in time.
- ///
- /// True if the Internet is available, false otherwise.
- protected override bool IsInternetAvailable()
- {
- var internetProfile = NetworkInformation.GetInternetConnectionProfile();
- if (internetProfile == null) return false;
-
- // Don't send analytics if data limit is close/over or they are roaming
- var cost = internetProfile.GetConnectionCost();
- return !cost.ApproachingDataLimit && !cost.OverDataLimit && !cost.Roaming;
- }
-
- ///
- /// Load the session state from storage if it exists, null if it does not.
- ///
- /// Task that completes when the SessionState is available.
- protected override async Task Load(string name)
- {
- return await LocalFolderContractSerializer.RestoreAsync(name);
- }
-
- ///
- /// Save the session state to preserve state between application launches.
- ///
- /// Task that completes when the session state has been saved.
- protected override async Task Save(T data, string name)
- {
- await LocalFolderContractSerializer.SaveAsync(data, name);
- }
-
- ///
- /// Receive navigation events to translate them into analytics page views.
- ///
- ///
- /// Implement IAnalyticsPageView if your pages look up content so you can
- /// track better detail from the end of your LoadState method.
- ///
- /// Sender of the event.
- /// NavigationEventArgs for the event.
- private void FrameNavigated(object sender, NavigationEventArgs e)
- {
- if (e.Content != null)
- TrackScreenView(e.Content.GetType());
- }
-
- ///
- /// Handle application starting up.
- ///
- /// Sender of the event.
- /// Startup event parameter.
- private async void ApplicationOnResuming(object sender, object o)
- {
- await StartRequesterAsync();
- }
-
- ///
- /// Handle application suspending.
- ///
- /// Sender of the event.
- /// Empty event information.
- private async void ApplicationOnSuspending(object sender, SuspendingEventArgs suspendingEventArgs)
- {
- UnhookEvents();
- await StopRequesterAsync();
- }
- }
-
- ///
- /// AutoMeasurement static wrapper to make it easier to use across a Windows Phone 8.1 application.
- ///
- public static class AutoMeasurement
- {
- private static readonly WindowsPhone81AutoMeasurement instance = new WindowsPhone81AutoMeasurement();
-
- public static VisitorStatus VisitorStatus
- {
- get { return instance.VisitorStatus; }
- }
-
- public static MeasurementAnalyticsClient Client
- {
- get { return instance.Client; }
- }
-
- public static Action DebugWriter
- {
- set { instance.DebugWriter = value; }
- }
-
- public static void Attach(Frame rootFrame)
- {
- instance.Attach(rootFrame);
- }
-
- public static void SetOptOut(bool optOut)
- {
- instance.SetOptOut(optOut);
- }
-
- public static void Start(MeasurementConfiguration measurementConfiguration, LaunchActivatedEventArgs args, TimeSpan? uploadInterval = null)
- {
- var launchKind = args == null
- ? ""
- : args.GetType().Name.Replace("LaunchActivatedEventArgs", "");
-
- instance.Start(measurementConfiguration, launchKind, uploadInterval);
- }
- }
-}
\ No newline at end of file
diff --git a/Source/CSharpAnalytics/AutoMeasurement/WindowsPhoneAutoMeasurement.cs b/Source/CSharpAnalytics/AutoMeasurement/WindowsPhoneAutoMeasurement.cs
deleted file mode 100644
index f156042..0000000
--- a/Source/CSharpAnalytics/AutoMeasurement/WindowsPhoneAutoMeasurement.cs
+++ /dev/null
@@ -1,213 +0,0 @@
-// Copyright (c) Attack Pattern LLC. All rights reserved.
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
-
-using CSharpAnalytics.Environment;
-using CSharpAnalytics.Network;
-using CSharpAnalytics.Protocols.Measurement;
-using CSharpAnalytics.Serializers;
-using CSharpAnalytics.Sessions;
-using CSharpAnalytics.SystemInfo;
-using Microsoft.Phone.Controls;
-using Microsoft.Phone.Shell;
-using System;
-using System.Threading.Tasks;
-using System.Windows;
-using System.Windows.Navigation;
-using Windows.Networking.Connectivity;
-
-namespace CSharpAnalytics
-{
- ///
- /// Helper class to get up and running with CSharpAnalytics in Winows Phone 8 applications.
- /// Either use as-is by calling StartAsync, Attach and StopAsync from your App.xaml.cs or use as a
- /// starting point to wire up your own way.
- ///
- public class WindowsPhoneAutoMeasurement : BaseAutoMeasurement
- {
- private static PhoneApplicationFrame attachedFrame;
-
- ///
- /// Attach to the root frame, hook into the navigation event and track initial screen view.
- /// Call this just before Window.Current.Activate() in your App.OnLaunched method.
- ///
- public void Attach(PhoneApplicationFrame frame)
- {
- if (frame == null)
- throw new ArgumentNullException("frame");
-
- if (frame != attachedFrame)
- {
- if (attachedFrame != null)
- attachedFrame.Navigated -= FrameNavigated;
- frame.Navigated += FrameNavigated;
- attachedFrame = frame;
- }
-
- var content = frame.Content;
- if (content != null)
- TrackScreenView(content.GetType());
- }
-
- ///
- /// Get the environment details for this system.
- ///
- ///
- /// IEnvironment implementation for getting screen, language and other system details.
- ///
- protected override IEnvironment GetEnvironment()
- {
- return new WindowsPhoneEnvironment();
- }
-
- ///
- /// Hook into various events to automatically track suspend, resume, page navigation,
- /// social sharing etc.
- ///
- protected override void HookEvents()
- {
- var application = Application.Current;
- application.Startup += ApplicationOnStartup;
- application.Exit += ApplicationOnExit;
- }
-
- ///
- /// Unhook events that were wired up in HookEvents.
- ///
- ///
- /// Not actually used in AutoMeasurement but here to show you what to do if you wanted to.
- ///
- protected override void UnhookEvents()
- {
- var application = Application.Current;
- application.Startup -= ApplicationOnStartup;
- application.Exit -= ApplicationOnExit;
-
- if (attachedFrame != null)
- attachedFrame.Navigated -= FrameNavigated;
- attachedFrame = null;
- }
-
- ///
- /// Setup the Uri requester complete with user agent etc.
- ///
- /// Task that completes when the requester is ready to use.
- protected override Task SetupRequesterAsync()
- {
- var webRequester = new HttpWebRequester(ClientUserAgent + " " + WindowsPhoneSystemInfo.GetSystemUserAgent());
- Requester = webRequester.Request;
-
- return Task.FromResult(true);
- }
-
- ///
- /// Determine if the Internet is available at this point in time.
- ///
- /// True if the Internet is available, false otherwise.
- protected override bool IsInternetAvailable()
- {
- var internetProfile = NetworkInformation.GetInternetConnectionProfile();
- if (internetProfile == null) return false;
-
- // Don't send analytics if data limit is close/over or they are roaming
- var cost = internetProfile.GetConnectionCost();
- return !cost.ApproachingDataLimit && !cost.OverDataLimit && !cost.Roaming;
- }
-
- ///
- /// Load the session state from storage if it exists, null if it does not.
- ///
- /// Task that completes when the SessionState is available.
- protected override async Task Load(string name)
- {
- return await LocalFolderContractSerializer.RestoreAsync(name);
- }
-
- ///
- /// Save the session state to preserve state between application launches.
- ///
- /// Task that completes when the session state has been saved.
- protected override async Task Save(T data, string name)
- {
- await LocalFolderContractSerializer.SaveAsync(data, name);
- }
-
- ///
- /// Receive navigation events to translate them into analytics page views.
- ///
- ///
- /// Implement IAnalyticsPageView if your pages look up content so you can
- /// track better detail from the end of your LoadState method.
- ///
- /// Sender of the event.
- /// NavigationEventArgs for the event.
- private void FrameNavigated(object sender, NavigationEventArgs e)
- {
- if (e.Content != null)
- TrackScreenView(e.Content.GetType());
- }
-
- ///
- /// Handle application starting up.
- ///
- /// Sender of the event.
- /// Startup event parameter.
- private async void ApplicationOnStartup(object sender, StartupEventArgs e)
- {
- await StartRequesterAsync();
- }
-
- ///
- /// Handle application suspending.
- ///
- /// Sender of the event.
- /// Empty event information.
- private async void ApplicationOnExit(object sender, EventArgs e)
- {
- UnhookEvents();
- await StopRequesterAsync();
- }
- }
-
- ///
- /// AutoMeasurement static wrapper to make it easier to use across a Windows Phone "Silverlight" application.
- ///
- public static class AutoMeasurement
- {
- private static readonly WindowsPhoneAutoMeasurement instance = new WindowsPhoneAutoMeasurement();
-
- public static VisitorStatus VisitorStatus
- {
- get { return instance.VisitorStatus; }
- }
-
- public static MeasurementAnalyticsClient Client
- {
- get { return instance.Client; }
- }
-
- public static Action DebugWriter
- {
- set { instance.DebugWriter = value; }
- }
-
- public static void Attach(PhoneApplicationFrame rootFrame)
- {
- instance.Attach(rootFrame);
- }
-
- public static void SetOptOut(bool optOut)
- {
- instance.SetOptOut(optOut);
- }
-
- public static void Start(MeasurementConfiguration measurementConfiguration, LaunchingEventArgs args, TimeSpan? uploadInterval = null)
- {
- var launchKind = args == null
- ? ""
- : args.GetType().Name.Replace("LaunchingEventArgs", "");
-
- instance.Start(measurementConfiguration, launchKind, uploadInterval);
- }
- }
-}
\ No newline at end of file
diff --git a/Source/CSharpAnalytics/AutoMeasurement/WindowsStoreAutoMeasurement.cs b/Source/CSharpAnalytics/AutoMeasurement/WindowsStoreAutoMeasurement.cs
deleted file mode 100644
index a465d07..0000000
--- a/Source/CSharpAnalytics/AutoMeasurement/WindowsStoreAutoMeasurement.cs
+++ /dev/null
@@ -1,242 +0,0 @@
-// Copyright (c) Attack Pattern LLC. All rights reserved.
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
-
-using CSharpAnalytics.Environment;
-using CSharpAnalytics.Network;
-using CSharpAnalytics.Protocols.Measurement;
-using CSharpAnalytics.Serializers;
-using CSharpAnalytics.Sessions;
-using CSharpAnalytics.SystemInfo;
-using System;
-using System.Threading.Tasks;
-using Windows.ApplicationModel;
-using Windows.ApplicationModel.Activation;
-using Windows.ApplicationModel.DataTransfer;
-using Windows.Networking.Connectivity;
-using Windows.UI.Xaml;
-using Windows.UI.Xaml.Controls;
-using Windows.UI.Xaml.Navigation;
-
-namespace CSharpAnalytics
-{
- ///
- /// Helper class to get up and running with CSharpAnalytics in WindowsStore applications.
- /// Either use as-is by calling StartAsync, Attach and StopAsync from your App.xaml.cs or use as a
- /// starting point to wire up your own way.
- ///
- public class WindowsStoreAutoMeasurement : BaseAutoMeasurement
- {
- private DataTransferManager attachedDataTransferManager;
- private Frame attachedFrame;
-
- ///
- /// Attach to the root frame, hook into the navigation event and track initial screen view.
- /// Call this just before Window.Current.Activate() in your App.OnLaunched method.
- ///
- public void Attach(Frame frame)
- {
- if (frame == null)
- throw new ArgumentNullException("frame");
-
- if (frame != attachedFrame)
- {
- if (attachedFrame != null)
- attachedFrame.Navigated -= FrameNavigated;
- frame.Navigated += FrameNavigated;
- attachedFrame = frame;
- }
-
- var content = frame.Content;
- if (content != null)
- TrackScreenView(content.GetType());
- }
-
- ///
- /// Get the environment details for this system.
- ///
- ///
- /// IEnvironment implementation for getting screen, language and other system details.
- ///
- protected override IEnvironment GetEnvironment()
- {
- return new WindowsStoreEnvironment();
- }
-
- ///
- /// Hook into various events to automatically track suspend, resume, page navigation,
- /// social sharing etc.
- ///
- protected override void HookEvents()
- {
- var application = Application.Current;
- application.Resuming += ApplicationOnResuming;
- application.Suspending += ApplicationOnSuspending;
-
- attachedDataTransferManager = DataTransferManager.GetForCurrentView();
- attachedDataTransferManager.TargetApplicationChosen += SocialShare;
- }
-
- ///
- /// Unhook events that were wired up in HookEvents.
- ///
- ///
- /// Not actually used in AutoMeasurement but here to show you what to do if you wanted to.
- ///
- protected override void UnhookEvents()
- {
- var application = Application.Current;
- application.Resuming -= ApplicationOnResuming;
- application.Suspending -= ApplicationOnSuspending;
- attachedDataTransferManager.TargetApplicationChosen -= SocialShare;
-
- if (attachedFrame != null)
- attachedFrame.Navigated -= FrameNavigated;
- attachedFrame = null;
- }
-
- ///
- /// Setup the Uri requester complete with user agent etc.
- ///
- /// Task that completes when the requester is ready to use.
- protected override async Task SetupRequesterAsync()
- {
- var systemUserAgent = await WindowsStoreSystemInfo.GetSystemUserAgentAsync();
-
- var httpClientRequester = new HttpClientRequester();
- httpClientRequester.HttpClient.DefaultRequestHeaders.UserAgent.ParseAdd(ClientUserAgent);
-
- if (!String.IsNullOrEmpty(systemUserAgent))
- httpClientRequester.HttpClient.DefaultRequestHeaders.UserAgent.ParseAdd(systemUserAgent);
-
- Requester = httpClientRequester.Request;
- }
-
- ///
- /// Determine if the Internet is available at this point in time.
- ///
- /// True if the Internet is available, false otherwise.
- protected override bool IsInternetAvailable()
- {
- var internetProfile = NetworkInformation.GetInternetConnectionProfile();
- if (internetProfile == null) return false;
-
- switch (internetProfile.GetNetworkConnectivityLevel())
- {
- case NetworkConnectivityLevel.None:
- case NetworkConnectivityLevel.LocalAccess:
- return false;
- default:
- return true;
- }
- }
-
- ///
- /// Load the data object from storage with the given name.
- ///
- /// Type of data to load from storage.
- /// Name of the data in storage.
- /// Instance of T containing the loaded data or null if did not exist.
- protected override async Task Load(string name)
- {
- return await LocalFolderContractSerializer.RestoreAsync(name);
- }
-
- ///
- /// Save the data object to storage with the given name overwriting if required.
- ///
- /// Type of data object to persist.
- /// Data object to persist.
- /// Name to give to the object in storage.
- /// Task that is complete when the data has been saved to storage.
- protected override async Task Save(T data, string name)
- {
- await LocalFolderContractSerializer.SaveAsync(data, name);
- }
-
- ///
- /// Handle application resuming from suspend without shutdown.
- ///
- /// Sender of the event.
- /// Undocumented event parameter that is null.
- private async void ApplicationOnResuming(object sender, object o)
- {
- await StartRequesterAsync();
- }
-
- ///
- /// Handle application suspending.
- ///
- /// Sender of the event.
- /// Details about the suspending event.
- private async void ApplicationOnSuspending(object sender, SuspendingEventArgs suspendingEventArgs)
- {
- var deferral = suspendingEventArgs.SuspendingOperation.GetDeferral();
- await StopRequesterAsync();
- deferral.Complete();
- }
-
- ///
- /// Receive navigation events to translate them into analytics page views.
- ///
- ///
- /// Implement IAnalyticsPageView if your pages look up content so you can
- /// track better detail from the end of your LoadState method.
- ///
- /// Sender of the event.
- /// NavigationEventArgs for the event.
- private void FrameNavigated(object sender, NavigationEventArgs e)
- {
- TrackScreenView(e.SourcePageType);
- }
-
- ///
- /// Record an event that the social sharing charm has been completed and
- /// which application data was shared with.
- ///
- /// DataTransferManager responsible for the share.
- /// Event containing details of which target application was chosen.
- private void SocialShare(DataTransferManager sender, TargetApplicationChosenEventArgs e)
- {
- Client.TrackEvent("Share", "Charms", e.ApplicationName);
- }
- }
-
- ///
- /// AutoMeasurement static wrapper to make it easier to use across a Windows Store application.
- ///
- public static class AutoMeasurement
- {
- private static readonly WindowsStoreAutoMeasurement instance = new WindowsStoreAutoMeasurement();
-
- public static VisitorStatus VisitorStatus
- {
- get { return instance.VisitorStatus; }
- }
-
- public static MeasurementAnalyticsClient Client
- {
- get { return instance.Client; }
- }
-
- public static Action DebugWriter
- {
- set { instance.DebugWriter = value; }
- }
-
- public static void Attach(Frame rootFrame)
- {
- instance.Attach(rootFrame);
- }
-
- public static void SetOptOut(bool optOut)
- {
- instance.SetOptOut(optOut);
- }
-
- public static void Start(MeasurementConfiguration measurementConfiguration, LaunchActivatedEventArgs args, TimeSpan? uploadInterval = null)
- {
- instance.Start(measurementConfiguration, args.Kind.ToString(), uploadInterval);
- }
- }
-}
\ No newline at end of file
diff --git a/Source/CSharpAnalytics/CSharpAnalytics.Net45.csproj b/Source/CSharpAnalytics/CSharpAnalytics.Net45.csproj
deleted file mode 100644
index a927557..0000000
--- a/Source/CSharpAnalytics/CSharpAnalytics.Net45.csproj
+++ /dev/null
@@ -1,100 +0,0 @@
-
-
-
-
- Debug
- AnyCPU
- {0334B071-1FB1-4372-B500-4BC58A11EE59}
- Library
- Properties
- CSharpAnalytics
- CSharpAnalytics.Net45
- v4.5
- 512
-
-
- true
- full
- false
- ..\..\Binaries\Debug\Net45\
- obj\Debug\Net45\
- TRACE;DEBUG;NET45
- prompt
- 4
- ExtendedCorrectnessRules.ruleset
-
-
- pdbonly
- true
- ..\..\Binaries\Release\Net45\
- obj\Release\Net45\
- TRACE;NET45
- prompt
- 4
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Code
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Source/CSharpAnalytics/CSharpAnalytics.Windows8.csproj b/Source/CSharpAnalytics/CSharpAnalytics.Windows8.csproj
deleted file mode 100644
index a2f4a5a..0000000
--- a/Source/CSharpAnalytics/CSharpAnalytics.Windows8.csproj
+++ /dev/null
@@ -1,161 +0,0 @@
-
-
-
-
- Debug
- AnyCPU
- 8.0.30703
- 2.0
- {31872BEA-1F8A-4FF0-B796-7768A0CDF256}
- Library
- Properties
- CSharpAnalytics
- CSharpAnalytics.Windows8
- en
- 512
- {BC8A1FFA-BEE3-4634-8014-F334798102B3};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
-
-
- true
- full
- false
- ..\..\Binaries\Debug\Windows8\
- obj\Debug\Windows8\
- TRACE;DEBUG;NETFX_CORE;WINDOWS_STORE
- prompt
- 4
- ExtendedCorrectnessRules.ruleset
-
-
- pdbonly
- true
- ..\..\Binaries\Release\Windows8\
- obj\Release\Windows8\
- TRACE;NETFX_CORE;WINDOWS_STORE
- prompt
- 4
-
-
- true
- bin\ARM\Debug\
- TRACE;DEBUG;NETFX_CORE;WINDOWS_STORE
- ;2008
- full
- ARM
- false
- prompt
- ExpressRules.ruleset
- true
-
-
- bin\ARM\Release\
- TRACE;NETFX_CORE;WINDOWS_STORE
- true
- ;2008
- pdbonly
- ARM
- false
- prompt
- ExpressRules.ruleset
- true
-
-
- true
- bin\x64\Debug\
- TRACE;DEBUG;NETFX_CORE;WINDOWS_STORE
- ;2008
- full
- x64
- false
- prompt
- ExpressRules.ruleset
- true
-
-
- bin\x64\Release\
- TRACE;NETFX_CORE;WINDOWS_STORE
- true
- ;2008
- pdbonly
- x64
- false
- prompt
- ExpressRules.ruleset
- true
-
-
- true
- bin\x86\Debug\
- TRACE;DEBUG;NETFX_CORE;WINDOWS_STORE
- ;2008
- full
- x86
- false
- prompt
- ExpressRules.ruleset
- true
-
-
- bin\x86\Release\
- TRACE;NETFX_CORE;WINDOWS_STORE
- true
- ;2008
- pdbonly
- x86
- false
- prompt
- ExpressRules.ruleset
- true
-
-
-
-
-
-
-
-
- Code
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 11.0
-
-
-
-
\ No newline at end of file
diff --git a/Source/CSharpAnalytics/CSharpAnalytics.Windows81.csproj b/Source/CSharpAnalytics/CSharpAnalytics.Windows81.csproj
deleted file mode 100644
index 4c61285..0000000
--- a/Source/CSharpAnalytics/CSharpAnalytics.Windows81.csproj
+++ /dev/null
@@ -1,157 +0,0 @@
-
-
-
-
- Debug
- AnyCPU
- 8.0.30703
- 2.0
- {E1988F29-2722-4F83-A4D2-14067911F182}
- Library
- Properties
- CSharpAnalytics
- CSharpAnalytics.Windows81
- en-US
- 8.1
- 12
- 512
- {BC8A1FFA-BEE3-4634-8014-F334798102B3};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
-
-
- true
- full
- false
- ..\..\Binaries\Debug\Windows81\
- obj\Debug\Windows81\
- TRACE;DEBUG;NETFX_CORE;WINDOWS_STORE
- prompt
- 4
-
-
- pdbonly
- true
- ..\..\Binaries\Release\Windows81\
- obj\Release\Windows81\
- TRACE;NETFX_CORE;WINDOWS_STORE
- prompt
- 4
-
-
- true
- bin\ARM\Debug\
- DEBUG;TRACE;NETFX_CORE
- ;2008
- full
- ARM
- false
- prompt
- true
-
-
- bin\ARM\Release\
- TRACE;NETFX_CORE
- true
- ;2008
- pdbonly
- ARM
- false
- prompt
- true
-
-
- true
- bin\x64\Debug\
- DEBUG;TRACE;NETFX_CORE
- ;2008
- full
- x64
- false
- prompt
- true
-
-
- bin\x64\Release\
- TRACE;NETFX_CORE
- true
- ;2008
- pdbonly
- x64
- false
- prompt
- true
-
-
- true
- bin\x86\Debug\
- DEBUG;TRACE;NETFX_CORE
- ;2008
- full
- x86
- false
- prompt
- true
-
-
- bin\x86\Release\
- TRACE;NETFX_CORE
- true
- ;2008
- pdbonly
- x86
- false
- prompt
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 12.0
-
-
-
-
\ No newline at end of file
diff --git a/Source/CSharpAnalytics/CSharpAnalytics.WindowsPhone8.csproj b/Source/CSharpAnalytics/CSharpAnalytics.WindowsPhone8.csproj
deleted file mode 100644
index 4874503..0000000
--- a/Source/CSharpAnalytics/CSharpAnalytics.WindowsPhone8.csproj
+++ /dev/null
@@ -1,137 +0,0 @@
-
-
-
- Debug
- AnyCPU
- 10.0.20506
- 2.0
- {ADCBE54B-6255-403E-A54D-2589686CD668}
- {C089C8C0-30E0-4E22-80C0-CE093F111A43};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}
- Library
- Properties
- CSharpAnalytics
- CSharpAnalytics.WindowsPhone8
- WindowsPhone
- v8.0
- $(TargetFrameworkVersion)
- false
- true
- 11.0
- true
-
-
- true
- full
- false
- ..\..\Binaries\Debug\WindowsPhone8\
- DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE
- true
- true
- prompt
- 4
-
-
- pdbonly
- true
- ..\..\Binaries\Release\WindowsPhone8\
- TRACE;SILVERLIGHT;WINDOWS_PHONE
- true
- true
- prompt
- 4
-
-
- true
- full
- false
- Bin\x86\Debug
- DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE
- true
- true
- prompt
- 4
-
-
- pdbonly
- true
- Bin\x86\Release
- TRACE;SILVERLIGHT;WINDOWS_PHONE
- true
- true
- prompt
- 4
-
-
- true
- full
- false
- Bin\ARM\Debug
- DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE
- true
- true
- prompt
- 4
-
-
- pdbonly
- true
- Bin\ARM\Release
- TRACE;SILVERLIGHT;WINDOWS_PHONE
- true
- true
- prompt
- 4
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Code
-
-
-
-
- Code
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Source/CSharpAnalytics/CSharpAnalytics.WindowsPhone81.csproj b/Source/CSharpAnalytics/CSharpAnalytics.WindowsPhone81.csproj
deleted file mode 100644
index f5b7b30..0000000
--- a/Source/CSharpAnalytics/CSharpAnalytics.WindowsPhone81.csproj
+++ /dev/null
@@ -1,142 +0,0 @@
-
-
-
-
- Debug
- AnyCPU
- 8.0.30703
- 2.0
- {64EB7726-8FD2-4764-94E7-347977E1FEEE}
- Library
- Properties
- CSharpAnalytics
- CSharpAnalytics.WindowsPhone81
- en-US
- 8.1
- 12
- 512
- {76F1466A-8B6D-4E39-A767-685A06062A39};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
-
-
- true
- full
- false
- ..\..\Binaries\Debug\WindowsPhone81\
- DEBUG;TRACE;NETFX_CORE;WINDOWS_PHONE_APP
- true
- true
- prompt
- 4
-
-
- pdbonly
- true
- ..\..\Binaries\Release\WindowsPhone81\
- TRACE;NETFX_CORE;WINDOWS_PHONE_APP
- true
- true
- prompt
- 4
-
-
- true
- full
- false
- Bin\x86\Debug
- TRACE;DEBUG;NETFX_CORE;WINDOWS_PHONE_APP
- true
- true
- prompt
- 4
-
-
-
- pdbonly
- true
- Bin\x86\Release
- TRACE;NETFX_CORE;WINDOWS_PHONE_APP
- true
- true
- prompt
- 4
-
-
-
- true
- full
- false
- Bin\ARM\Debug
- DEBUG;TRACE;NETFX_CORE;WINDOWS_PHONE_APP
- true
- true
- prompt
- 4
-
-
-
- pdbonly
- true
- Bin\ARM\Release
- TRACE;NETFX_CORE;WINDOWS_PHONE_APP
- true
- true
- prompt
- 4
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Code
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 12.0
-
-
- WindowsPhoneApp
-
-
-
-
\ No newline at end of file
diff --git a/Source/CSharpAnalytics/Environment/WindowsPhone81Environment.cs b/Source/CSharpAnalytics/Environment/WindowsPhone81Environment.cs
deleted file mode 100644
index 59f5b4c..0000000
--- a/Source/CSharpAnalytics/Environment/WindowsPhone81Environment.cs
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright (c) Attack Pattern LLC. All rights reserved.
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
-
-using System.Globalization;
-using System.Windows;
-using Windows.Graphics.Display;
-
-namespace CSharpAnalytics.Environment
-{
- ///
- /// Implements the IEnvironment interface required by analytics to track details of the machine
- /// in a Windows Phone application.
- ///
- internal class WindowsPhoneEnvironment : IEnvironment
- {
- public string CharacterSet { get { return "UTF-8"; } }
-
- public string LanguageCode { get { return CultureInfo.CurrentCulture.ToString(); } }
-
- public string FlashVersion { get { return null; } }
- public bool? JavaEnabled { get { return null; } }
-
- public uint ScreenColorDepth { get { return 32; } }
-
- public uint ScreenHeight
- {
- get { return (uint)Windows.UI.Xaml.Window.Current.Bounds.Height; }
- }
-
- public uint ScreenWidth
- {
- get { return (uint)Windows.UI.Xaml.Window.Current.Bounds.Width; }
- }
-
- public uint ViewportHeight
- {
- /// @todo not sure what the WP8.1 equivalent is
- get { return ScreenHeight; }
- }
-
- public uint ViewportWidth
- {
- /// @todo not sure what the WP8.1 equivalent is
- get { return ScreenWidth; }
- }
- }
-}
\ No newline at end of file
diff --git a/Source/CSharpAnalytics/Environment/WindowsPhoneEnvironment.cs b/Source/CSharpAnalytics/Environment/WindowsPhoneEnvironment.cs
deleted file mode 100644
index b1a5d68..0000000
--- a/Source/CSharpAnalytics/Environment/WindowsPhoneEnvironment.cs
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright (c) Attack Pattern LLC. All rights reserved.
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
-
-using System.Globalization;
-using System.Windows;
-
-namespace CSharpAnalytics.Environment
-{
- ///
- /// Implements the IEnvironment interface required by analytics to track details of the machine
- /// in a Windows Phone application.
- ///
- internal class WindowsPhoneEnvironment : IEnvironment
- {
- public string CharacterSet { get { return "UTF-8"; } }
-
- public string LanguageCode { get { return CultureInfo.CurrentCulture.ToString(); } }
-
- public string FlashVersion { get { return null; } }
- public bool? JavaEnabled { get { return null; } }
-
- public uint ScreenColorDepth { get { return 32; } }
-
- public uint ScreenHeight
- {
- get { return (uint)(ViewportHeight * (Application.Current.Host.Content.ScaleFactor / 100)); }
- }
-
- public uint ScreenWidth
- {
- get { return (uint)(ViewportWidth * (Application.Current.Host.Content.ScaleFactor / 100)); }
- }
-
- public uint ViewportHeight
- {
- get { return (uint)Application.Current.Host.Content.ActualHeight; }
- }
-
- public uint ViewportWidth
- {
- get { return (uint)Application.Current.Host.Content.ActualWidth; }
- }
- }
-}
\ No newline at end of file
diff --git a/Source/CSharpAnalytics/Environment/WindowsStoreEnvironment.cs b/Source/CSharpAnalytics/Environment/WindowsStoreEnvironment.cs
deleted file mode 100644
index 2a5f178..0000000
--- a/Source/CSharpAnalytics/Environment/WindowsStoreEnvironment.cs
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright (c) Attack Pattern LLC. All rights reserved.
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
-
-using System.Linq;
-using Windows.Foundation;
-using Windows.Globalization;
-using Windows.UI.Xaml;
-
-namespace CSharpAnalytics.Environment
-{
- ///
- /// Implements the IEnvironment interface required by analytics to track details of the machine
- /// in a WindowsStore application.
- ///
- internal class WindowsStoreEnvironment : IEnvironment
- {
- private Rect lastGoodScreen = new Rect(0, 0, 0, 0);
-
- public string CharacterSet { get { return "UTF-8"; } }
- public string LanguageCode { get { return ApplicationLanguages.Languages.First(); } }
-
- public string FlashVersion { get { return null; } }
- public bool? JavaEnabled { get { return null; } }
-
- public uint ScreenColorDepth { get { return 32; } }
-
- public uint ScreenHeight
- {
- get { return (uint)Screen.Height; }
- }
-
- public uint ScreenWidth
- {
- get { return (uint)Screen.Width; }
- }
-
- public uint ViewportHeight
- {
- get { return (uint)Screen.Height; }
- }
-
- public uint ViewportWidth
- {
- get { return (uint)Screen.Width; }
- }
-
- private Rect Screen
- {
- get
- {
- var currentWindow = Window.Current;
- if (currentWindow != null)
- lastGoodScreen = currentWindow.CoreWindow.Bounds;
- return lastGoodScreen;
- }
- }
- }
-}
\ No newline at end of file
diff --git a/Source/CSharpAnalytics/Properties/AssemblyInfo.cs b/Source/CSharpAnalytics/Properties/AssemblyInfo.cs
deleted file mode 100644
index d6b2b08..0000000
--- a/Source/CSharpAnalytics/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-[assembly: AssemblyTitle("CSharpAnalytics")]
-[assembly: AssemblyDescription("Google Analytics client for C# applications.")]
-[assembly: AssemblyCompany("Attack Pattern")]
-[assembly: AssemblyProduct("CSharpAnalytics")]
-[assembly: AssemblyCopyright("Copyright © 2012-2014 Attack Pattern LLC.")]
-
-[assembly: AssemblyVersion("1.2.0.0")]
-[assembly: AssemblyFileVersion("1.2.0.0")]
-[assembly: ComVisible(false)]
-
-[assembly: InternalsVisibleTo("CSharpAnalytics.Test.Net45")]
-[assembly: InternalsVisibleTo("CSharpAnalytics.Test.Windows8")]
-[assembly: InternalsVisibleTo("CSharpAnalytics.Test.Windows81")]
-[assembly: InternalsVisibleTo("CSharpAnalytics.Test.WindowsPhone8")]
\ No newline at end of file
diff --git a/Source/CSharpAnalytics/Serializers/LocalFolderContractSerializer.cs b/Source/CSharpAnalytics/Serializers/LocalFolderContractSerializer.cs
deleted file mode 100644
index e81b565..0000000
--- a/Source/CSharpAnalytics/Serializers/LocalFolderContractSerializer.cs
+++ /dev/null
@@ -1,79 +0,0 @@
-// Copyright (c) Attack Pattern LLC. All rights reserved.
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
-
-using System;
-using System.IO;
-using System.Runtime.Serialization;
-using System.Threading.Tasks;
-using Windows.Storage;
-
-namespace CSharpAnalytics.Serializers
-{
- ///
- /// Provides an easy way to serialize and deserialize simple classes to the local folder in
- /// WindowsStore applications.
- ///
- /// Type of class to serialize.
- internal static class LocalFolderContractSerializer
- {
- ///
- /// Restore an object from local folder storage.
- ///
- /// Optional filename to use, name of the class if not provided.
- /// Optional boolean on whether delete the existing file if deserialization fails, defaults to false.
- /// Task that holds the deserialized object once complete.
- public static async Task RestoreAsync(string filename = null, bool deleteBadData = false)
- {
- var serializer = new DataContractSerializer(typeof (T), new[] { typeof (DateTimeOffset) });
-
- try
- {
- // We use create and not open to avoid missing file exceptions as they really mess with
- // exception-enabled debugging.
- var file = await ApplicationData.Current.LocalFolder.CreateFileAsync(filename ?? typeof(T).Name, CreationCollisionOption.OpenIfExists);
-
- try
- {
- using (var inputStream = await file.OpenStreamForReadAsync())
- return inputStream.Length == 0
- ? default(T)
- : (T)serializer.ReadObject(inputStream);
- }
- catch (SerializationException)
- {
- if (deleteBadData)
- file.DeleteAsync().AsTask().Wait();
- throw;
- }
- }
- catch (FileNotFoundException)
- {
- return default(T);
- }
- }
-
- ///
- /// Save an object to local folder storage asynchronously.
- ///
- /// Object to save to local storage.
- /// Optional filename to save to, defaults to the name of the class.
- /// Task that completes once the object is saved.
- public static async Task SaveAsync(T value, string filename = null)
- {
- var serializer = new DataContractSerializer(typeof(T), new[] { typeof(DateTimeOffset) });
-
- using (var memoryStream = new MemoryStream())
- {
- serializer.WriteObject(memoryStream, value);
- var file = await ApplicationData.Current.LocalFolder.CreateFileAsync(filename ?? typeof(T).Name, CreationCollisionOption.ReplaceExisting);
- using (var fileStream = await file.OpenStreamForWriteAsync())
- {
- memoryStream.Seek(0, SeekOrigin.Begin);
- await memoryStream.CopyToAsync(fileStream);
- await fileStream.FlushAsync();
- }
- }
- }
- }
-}
\ No newline at end of file
diff --git a/Source/CSharpAnalytics/SystemInfo/WindowsPhone81SystemInfo.cs b/Source/CSharpAnalytics/SystemInfo/WindowsPhone81SystemInfo.cs
deleted file mode 100644
index 062a45b..0000000
--- a/Source/CSharpAnalytics/SystemInfo/WindowsPhone81SystemInfo.cs
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright (c) Attack Pattern LLC. All rights reserved.
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
-
-using System;
-using System.Linq;
-using Windows.ApplicationModel;
-using Windows.Security.ExchangeActiveSyncProvisioning;
-
-namespace CSharpAnalytics.SystemInfo
-{
- public static class WindowsPhone81SystemInfo
- {
- private static readonly string applicationName;
- private static readonly string applicationVersion;
-
- static WindowsPhone81SystemInfo()
- {
- applicationName = Package.Current.Id.Name;
- applicationVersion = String.Format("{0}.{1}", Package.Current.Id.Version.Major, Package.Current.Id.Version.Minor);
- }
-
- ///
- /// Get the Windows version number and processor architecture and cache it
- /// as a user agent string so it can be sent with HTTP requests.
- ///
- /// String containing formatted system parts of the user agent.
- public static string GetSystemUserAgent()
- {
- try
- {
- var info = new EasClientDeviceInformation();
-
- var parts = new[] {
- "Windows Phone " + info.OperatingSystem,
- "ARM",
- "Touch",
- info.SystemManufacturer,
- info.SystemProductName
- };
-
- return "(" + String.Join("; ", parts.Where(e => !String.IsNullOrEmpty(e))) + ")";
- }
- catch
- {
- return "";
- }
- }
-
- public static string ApplicationName { get { return applicationName; } }
- public static string ApplicationVersion { get { return applicationVersion; } }
- }
-}
\ No newline at end of file
diff --git a/Source/CSharpAnalytics/SystemInfo/WindowsPhoneSystemInfo.cs b/Source/CSharpAnalytics/SystemInfo/WindowsPhoneSystemInfo.cs
deleted file mode 100644
index 9a4597d..0000000
--- a/Source/CSharpAnalytics/SystemInfo/WindowsPhoneSystemInfo.cs
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright (c) Attack Pattern LLC. All rights reserved.
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
-
-using Microsoft.Phone.Info;
-using System;
-using System.Linq;
-using System.Xml.Linq;
-
-namespace CSharpAnalytics.SystemInfo
-{
- public static class WindowsPhoneSystemInfo
- {
- private static readonly string applicationName;
- private static readonly string applicationVersion;
-
- static WindowsPhoneSystemInfo()
- {
- var manifest = XDocument.Load("WMAppManifest.xml");
- if (manifest.Root == null) return;
-
- var app = manifest.Root.Element("App");
- if (app == null) return;
-
- applicationName = (string)app.Attribute("Title");
- applicationVersion = (string)app.Attribute("Version");
- }
-
- ///
- /// Get the Windows version number and processor architecture and cache it
- /// as a user agent string so it can be sent with HTTP requests.
- ///
- /// String containing formatted system parts of the user agent.
- public static string GetSystemUserAgent()
- {
- try
- {
- var osVersion = System.Environment.OSVersion.Version;
- var minor = osVersion.Minor;
- if (minor > 9) minor /= 10;
-
- var parts = new[] {
- "Windows Phone " + osVersion.Major + "." + minor,
- "ARM",
- "Touch",
- DeviceStatus.DeviceManufacturer,
- DeviceStatus.DeviceName
- };
-
- return "(" + String.Join("; ", parts.Where(e => !String.IsNullOrEmpty(e))) + ")";
- }
- catch
- {
- return "";
- }
- }
-
- public static string ApplicationName { get { return applicationName; } }
- public static string ApplicationVersion { get { return applicationVersion; } }
- }
-}
\ No newline at end of file
diff --git a/Source/CSharpAnalytics/SystemInfo/WindowsStoreSystemInfo.cs b/Source/CSharpAnalytics/SystemInfo/WindowsStoreSystemInfo.cs
deleted file mode 100644
index ef21a6c..0000000
--- a/Source/CSharpAnalytics/SystemInfo/WindowsStoreSystemInfo.cs
+++ /dev/null
@@ -1,195 +0,0 @@
-// Copyright (c) Attack Pattern LLC. All rights reserved.
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Runtime.InteropServices;
-using System.Threading.Tasks;
-using Windows.Devices.Enumeration.Pnp;
-
-namespace CSharpAnalytics.SystemInfo
-{
- ///
- /// Obtain system information not conveniently exposed by WinRT APIs.
- ///
- ///
- /// Microsoft doesn't really want you getting this information and makes it difficult.
- /// The techniques used here are not bullet proof but are good enough for analytics.
- /// Do not use these methods or techniques for anything more important than that.
- /// (Note that this class was also published as SystemInfoEstimate on our blog)
- ///
- public static class WindowsStoreSystemInfo
- {
- private const string ModelNameKey = "System.Devices.ModelName";
- private const string ManufacturerKey = "System.Devices.Manufacturer";
- private const string DisplayPrimaryCategoryKey = "{78C34FC8-104A-4ACA-9EA4-524D52996E57},97";
- private const string DeviceDriverKey = "{A8B865DD-2E3D-4094-AD97-E593A70C75D6}";
- private const string DeviceDriverVersionKey = DeviceDriverKey + ",3";
- private const string DeviceDriverProviderKey = DeviceDriverKey + ",9";
- private const string RootContainer = "{00000000-0000-0000-FFFF-FFFFFFFFFFFF}";
- private const string RootContainerQuery = "System.Devices.ContainerId:=\"" + RootContainer + "\"";
-
- ///
- /// Build a system user agent string that contains the Windows version number
- /// and CPU architecture.
- ///
- /// String containing formatted system parts of the user agent.
- public static async Task GetSystemUserAgentAsync()
- {
- try
- {
- var parts = new[] {
- "Windows NT " + await GetWindowsVersionAsync(),
- FormatForUserAgent(GetProcessorArchitecture())
- };
-
- return "(" + String.Join("; ", parts.Where(e => !String.IsNullOrEmpty(e))) + ")";
- }
- catch
- {
- return "";
- }
- }
-
- ///
- /// Format a ProcessorArchitecture as it would be expected in a user agent of a browser.
- ///
- /// String containing the format processor architecture.
- static string FormatForUserAgent(ProcessorArchitecture architecture)
- {
- switch (architecture)
- {
- case ProcessorArchitecture.AMD64:
- return "x64";
- case ProcessorArchitecture.ARM:
- return "ARM";
- default:
- return "";
- }
- }
-
- ///
- /// Get the processor architecture of this computer.
- ///
- /// The processor architecture of this computer.
- public static ProcessorArchitecture GetProcessorArchitecture()
- {
- try
- {
- var sysInfo = new _SYSTEM_INFO();
- GetNativeSystemInfo(ref sysInfo);
-
- return Enum.IsDefined(typeof(ProcessorArchitecture), sysInfo.wProcessorArchitecture)
- ? (ProcessorArchitecture)sysInfo.wProcessorArchitecture
- : ProcessorArchitecture.UNKNOWN;
- }
- catch
- {
- }
-
- return ProcessorArchitecture.UNKNOWN;
- }
-
- ///
- /// Get the name of the manufacturer of this computer.
- ///
- /// Microsoft Corporation
- /// The name of the manufacturer of this computer.
- public static async Task GetDeviceManufacturerAsync()
- {
- var rootContainer = await PnpObject.CreateFromIdAsync(PnpObjectType.DeviceContainer, RootContainer, new[] { ManufacturerKey });
- return (string)rootContainer.Properties[ManufacturerKey];
- }
-
- ///
- /// Get the name of the model of this computer.
- ///
- /// Surface with Windows 8
- /// The name of the model of this computer.
- public static async Task GetDeviceModelAsync()
- {
- var rootContainer = await PnpObject.CreateFromIdAsync(PnpObjectType.DeviceContainer, RootContainer, new[] { ModelNameKey });
- return (string)rootContainer.Properties[ModelNameKey];
- }
-
- ///
- /// Get the device category this computer belongs to.
- ///
- /// Computer.Desktop, Computer.Tablet
- /// The category of this device.
- public static async Task GetDeviceCategoryAsync()
- {
- var rootContainer = await PnpObject.CreateFromIdAsync(PnpObjectType.DeviceContainer, RootContainer, new[] { DisplayPrimaryCategoryKey });
- return (string)rootContainer.Properties[DisplayPrimaryCategoryKey];
- }
-
- ///
- /// Get the version of Windows for this computer.
- ///
- /// 6.2
- /// Version number of Windows running on this computer.
- public static async Task GetWindowsVersionAsync()
- {
- // There is no good place to get this so we're going to use the most popular
- // Microsoft driver version number from the device tree.
- var requestedProperties = new[] { DeviceDriverVersionKey, DeviceDriverProviderKey };
-
- var microsoftVersionedDevices = (await PnpObject.FindAllAsync(PnpObjectType.Device, requestedProperties, RootContainerQuery))
- .Select(d => new { Provider = (string)d.Properties.GetValueOrDefault(DeviceDriverProviderKey),
- Version = (string)d.Properties.GetValueOrDefault(DeviceDriverVersionKey) })
- .Where(d => d.Provider == "Microsoft" && d.Version != null)
- .ToList();
-
- var versionNumbers = microsoftVersionedDevices
- .GroupBy(d => d.Version.Substring(0, d.Version.IndexOf('.', d.Version.IndexOf('.') + 1)))
- .OrderByDescending(d => d.Count())
- .ToList();
-
- var confidence = (versionNumbers[0].Count() * 100 / microsoftVersionedDevices.Count);
- return versionNumbers.Count > 0 ? versionNumbers[0].Key : "";
- }
-
- static TValue GetValueOrDefault(this IReadOnlyDictionary dictionary, TKey key)
- {
- TValue value;
- return dictionary.TryGetValue(key, out value) ? value : default(TValue);
- }
-
- [DllImport("kernel32.dll")]
- static extern void GetNativeSystemInfo(ref _SYSTEM_INFO lpSystemInfo);
-
- [StructLayout(LayoutKind.Sequential)]
- struct _SYSTEM_INFO
- {
- public ushort wProcessorArchitecture;
- public ushort wReserved;
- public uint dwPageSize;
- public IntPtr lpMinimumApplicationAddress;
- public IntPtr lpMaximumApplicationAddress;
- public UIntPtr dwActiveProcessorMask;
- public uint dwNumberOfProcessors;
- public uint dwProcessorType;
- public uint dwAllocationGranularity;
- public ushort wProcessorLevel;
- public ushort wProcessorRevision;
- };
- }
-
- public enum ProcessorArchitecture : ushort
- {
- INTEL = 0,
- MIPS = 1,
- ALPHA = 2,
- PPC = 3,
- SHX = 4,
- ARM = 5,
- IA64 = 6,
- ALPHA64 = 7,
- MSIL = 8,
- AMD64 = 9,
- IA32_ON_WIN64 = 10,
- UNKNOWN = 0xFFFF
- }
-}
\ No newline at end of file
diff --git a/Source/Samples/CSharpAnalytics.Sample.WinForms/CSharpAnalytics.Sample.WinForms.csproj b/Source/Samples/CSharpAnalytics.Sample.WinForms/CSharpAnalytics.Sample.WinForms.csproj
deleted file mode 100644
index 59bdb3d..0000000
--- a/Source/Samples/CSharpAnalytics.Sample.WinForms/CSharpAnalytics.Sample.WinForms.csproj
+++ /dev/null
@@ -1,68 +0,0 @@
-
-
-
-
- Debug
- AnyCPU
- {07DDA3AD-EE3B-4FE5-B532-059629C6A24E}
- WinExe
- Properties
- CSharpAnalytics.Sample.WinForms
- CSharpAnalytics.Sample.WinForms
- v4.5
- 512
-
-
- AnyCPU
- true
- full
- false
- bin\Debug\
- DEBUG;TRACE
- prompt
- 4
-
-
- AnyCPU
- pdbonly
- true
- bin\Release\
- TRACE
- prompt
- 4
-
-
-
-
-
-
-
-
-
-
- Form
-
-
- MainForm.cs
-
-
-
-
- MainForm.cs
-
-
-
-
- {0334B071-1FB1-4372-B500-4BC58A11EE59}
- CSharpAnalytics.Net45
-
-
-
-
-
\ No newline at end of file
diff --git a/Source/Samples/CSharpAnalytics.Sample.WinForms/Properties/AssemblyInfo.cs b/Source/Samples/CSharpAnalytics.Sample.WinForms/Properties/AssemblyInfo.cs
deleted file mode 100644
index a289650..0000000
--- a/Source/Samples/CSharpAnalytics.Sample.WinForms/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-using System.Reflection;
-using System.Runtime.InteropServices;
-
-[assembly: AssemblyTitle("CSharpAnalytics.Sample.WinForms")]
-[assembly: AssemblyDescription("CSharpAnalytics sample Windows Forms application.")]
-[assembly: AssemblyCompany("Attack Pattern")]
-[assembly: AssemblyProduct("CSharpAnalytics")]
-[assembly: AssemblyCopyright("Copyright © 2012-2014 Attack Pattern LLC.")]
-
-[assembly: AssemblyVersion("1.2.0.0")]
-[assembly: AssemblyFileVersion("1.2.0.0")]
-[assembly: ComVisible(false)]
\ No newline at end of file
diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/App.xaml b/Source/Samples/CSharpAnalytics.Sample.Windows8/App.xaml
deleted file mode 100644
index 38a11ed..0000000
--- a/Source/Samples/CSharpAnalytics.Sample.Windows8/App.xaml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
- CSharpAnalytics sample for Windows 8 apps
-
-
-
\ No newline at end of file
diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/App.xaml.cs b/Source/Samples/CSharpAnalytics.Sample.Windows8/App.xaml.cs
deleted file mode 100644
index 69be4a7..0000000
--- a/Source/Samples/CSharpAnalytics.Sample.Windows8/App.xaml.cs
+++ /dev/null
@@ -1,116 +0,0 @@
-using CSharpAnalytics.Sample.Windows8.Common;
-using System;
-using System.Diagnostics;
-using Windows.ApplicationModel;
-using Windows.ApplicationModel.Activation;
-using Windows.UI.ApplicationSettings;
-using Windows.UI.Xaml;
-using Windows.UI.Xaml.Controls;
-
-namespace CSharpAnalytics.Sample.Windows8
-{
- ///
- /// Provides application-specific behavior to supplement the default Application class.
- ///
- sealed partial class App
- {
- ///
- /// Initializes the singleton Application object. This is the first line of authored code
- /// executed, and as such is the logical equivalent of main() or WinMain().
- ///
- public App()
- {
- InitializeComponent();
- Suspending += OnSuspending;
- }
-
- ///
- /// Invoked when the application is launched normally by the end user. Other entry points
- /// will be used when the application is launched to open a specific file, to display
- /// search results, and so forth.
- ///
- /// Details about the launch request and process.
- protected override async void OnLaunched(LaunchActivatedEventArgs args)
- {
- // CSharpAnalytics initialization
- AutoMeasurement.DebugWriter = d => Debug.WriteLine(d);
- AutoMeasurement.Start(new MeasurementConfiguration("UA-319000-8"), args);
-
- var rootFrame = Window.Current.Content as Frame;
-
- // Do not repeat app initialization when the Window already has content,
- // just ensure that the window is active
-
- if (rootFrame == null)
- {
- // Create a Frame to act as the navigation context and navigate to the first page
- rootFrame = new Frame();
- // Associate the frame with a SuspensionManager key
- SuspensionManager.RegisterFrame(rootFrame, "AppFrame");
-
- if (args.PreviousExecutionState == ApplicationExecutionState.Terminated)
- {
- // Restore the saved session state only when appropriate
- try
- {
- await SuspensionManager.RestoreAsync();
- }
- catch (SuspensionManagerException)
- {
- // Something went wrong restoring state.
- // Assume there is no state and continue
- }
- }
-
- // Place the frame in the current Window
- Window.Current.Content = rootFrame;
- }
- if (rootFrame.Content == null)
- {
- // When the navigation stack isn't restored navigate to the first page,
- // configuring the new page by passing required information as a navigation
- // parameter
- if (!rootFrame.Navigate(typeof(GroupedItemsPage), "AllGroups"))
- {
- throw new Exception("Failed to create initial page");
- }
- }
-
- // CSharpAnalytics init complete
- AutoMeasurement.Attach(rootFrame);
-
- // Ensure the current window is active
- Window.Current.Activate();
- }
-
- ///
- /// Invoked when application execution is being suspended. Application state is saved
- /// without knowing whether the application will be terminated or resumed with the contents
- /// of memory still intact.
- ///
- /// The source of the suspend request.
- /// Details about the suspend request.
- private static void OnSuspending(object sender, SuspendingEventArgs e)
- {
- }
-
- ///
- /// Used to tell the settings pane what to display. Normally includes options, privacy policy etc.
- ///
- /// SettingsPane that is being displayed.
- /// Additional arguments to allow hooking into the settings pane.
- private static void SettingsCommandsRequested(SettingsPane sender, SettingsPaneCommandsRequestedEventArgs args)
- {
- args.Request.ApplicationCommands.Add(new SettingsCommand("options", "Options", _ => Flyout.Open(Flyout.FlyoutWidth.Regular)));
- }
-
- ///
- /// Fires when the Window is created and you should sign up for charm notifications.
- ///
- /// Arguments relating to which window was created.
- protected override void OnWindowCreated(WindowCreatedEventArgs args)
- {
- SettingsPane.GetForCurrentView().CommandsRequested += SettingsCommandsRequested;
- }
- }
-}
\ No newline at end of file
diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/Assets/DarkGray.png b/Source/Samples/CSharpAnalytics.Sample.Windows8/Assets/DarkGray.png
deleted file mode 100644
index 6cb268a..0000000
Binary files a/Source/Samples/CSharpAnalytics.Sample.Windows8/Assets/DarkGray.png and /dev/null differ
diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/Assets/LightGray.png b/Source/Samples/CSharpAnalytics.Sample.Windows8/Assets/LightGray.png
deleted file mode 100644
index 6ccc22b..0000000
Binary files a/Source/Samples/CSharpAnalytics.Sample.Windows8/Assets/LightGray.png and /dev/null differ
diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/Assets/Logo.png b/Source/Samples/CSharpAnalytics.Sample.Windows8/Assets/Logo.png
deleted file mode 100644
index e26771c..0000000
Binary files a/Source/Samples/CSharpAnalytics.Sample.Windows8/Assets/Logo.png and /dev/null differ
diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/Assets/MediumGray.png b/Source/Samples/CSharpAnalytics.Sample.Windows8/Assets/MediumGray.png
deleted file mode 100644
index cadb696..0000000
Binary files a/Source/Samples/CSharpAnalytics.Sample.Windows8/Assets/MediumGray.png and /dev/null differ
diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/Assets/SmallLogo.png b/Source/Samples/CSharpAnalytics.Sample.Windows8/Assets/SmallLogo.png
deleted file mode 100644
index 1eb0d9d..0000000
Binary files a/Source/Samples/CSharpAnalytics.Sample.Windows8/Assets/SmallLogo.png and /dev/null differ
diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/Assets/SplashScreen.png b/Source/Samples/CSharpAnalytics.Sample.Windows8/Assets/SplashScreen.png
deleted file mode 100644
index c951e03..0000000
Binary files a/Source/Samples/CSharpAnalytics.Sample.Windows8/Assets/SplashScreen.png and /dev/null differ
diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/Assets/StoreLogo.png b/Source/Samples/CSharpAnalytics.Sample.Windows8/Assets/StoreLogo.png
deleted file mode 100644
index dcb6727..0000000
Binary files a/Source/Samples/CSharpAnalytics.Sample.Windows8/Assets/StoreLogo.png and /dev/null differ
diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/CSharpAnalytics.Sample.Windows8.csproj b/Source/Samples/CSharpAnalytics.Sample.Windows8/CSharpAnalytics.Sample.Windows8.csproj
deleted file mode 100644
index ccbf6b5..0000000
--- a/Source/Samples/CSharpAnalytics.Sample.Windows8/CSharpAnalytics.Sample.Windows8.csproj
+++ /dev/null
@@ -1,186 +0,0 @@
-
-
-
-
- Debug
- AnyCPU
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3}
- AppContainerExe
- Properties
- CSharpAnalytics.Sample.Windows8
- CSharpAnalytics.Sample.Windows8
- en-US
- 512
- {BC8A1FFA-BEE3-4634-8014-F334798102B3};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
- CSharpAnalytics.Sample.Windows8_TemporaryKey.pfx
- 2044B0F448AE2065CD000FCF70F7DB853FAF43D4
-
-
- AnyCPU
- true
- full
- false
- bin\Debug\
- DEBUG;TRACE;NETFX_CORE
- prompt
- 4
- MinimumRecommendedRules.ruleset
-
-
- AnyCPU
- pdbonly
- true
- bin\Release\
- TRACE;NETFX_CORE
- prompt
- 4
-
-
- true
- bin\ARM\Debug\
- DEBUG;TRACE;NETFX_CORE
- ;2008
- full
- ARM
- false
- prompt
- true
-
-
- bin\ARM\Release\
- TRACE;NETFX_CORE
- true
- ;2008
- pdbonly
- ARM
- false
- prompt
- true
-
-
- true
- bin\x64\Debug\
- DEBUG;TRACE;NETFX_CORE
- ;2008
- full
- x64
- false
- prompt
- true
-
-
- bin\x64\Release\
- TRACE;NETFX_CORE
- true
- ;2008
- pdbonly
- x64
- false
- prompt
- true
-
-
- true
- bin\x86\Debug\
- DEBUG;TRACE;NETFX_CORE
- ;2008
- full
- x86
- false
- prompt
- true
-
-
- bin\x86\Release\
- TRACE;NETFX_CORE
- true
- ;2008
- pdbonly
- x86
- false
- prompt
- true
-
-
-
- App.xaml
-
-
- GroupedItemsPage.xaml
-
-
- GroupDetailPage.xaml
-
-
- ItemDetailPage.xaml
-
-
-
-
-
-
-
-
-
- OptionsFlyout.xaml
-
-
-
-
- Designer
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- MSBuild:Compile
- Designer
-
-
- MSBuild:Compile
- Designer
-
-
- MSBuild:Compile
- Designer
-
-
- MSBuild:Compile
- Designer
-
-
- MSBuild:Compile
- Designer
-
-
- Designer
- MSBuild:Compile
-
-
-
-
- {31872bea-1f8a-4ff0-b796-7768a0cdf256}
- CSharpAnalytics.Windows8
-
-
-
- 11.0
-
-
-
-
\ No newline at end of file
diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/CSharpAnalytics.Sample.Windows8_TemporaryKey.pfx b/Source/Samples/CSharpAnalytics.Sample.Windows8/CSharpAnalytics.Sample.Windows8_TemporaryKey.pfx
deleted file mode 100644
index b574ee2..0000000
Binary files a/Source/Samples/CSharpAnalytics.Sample.Windows8/CSharpAnalytics.Sample.Windows8_TemporaryKey.pfx and /dev/null differ
diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/CSharpAnalytics.Sample.WindowsStore.sln b/Source/Samples/CSharpAnalytics.Sample.Windows8/CSharpAnalytics.Sample.WindowsStore.sln
deleted file mode 100644
index 3b7c7e0..0000000
--- a/Source/Samples/CSharpAnalytics.Sample.Windows8/CSharpAnalytics.Sample.WindowsStore.sln
+++ /dev/null
@@ -1,64 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 2012
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpAnalytics.Sample.WindowsStore", "CSharpAnalytics.Sample.WindowsStore.csproj", "{106A4C29-9F13-47F5-8D14-16F20EBB35A3}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpAnalytics.WindowsStore", "..\..\CSharpAnalytics\CSharpAnalytics.WindowsStore.csproj", "{31872BEA-1F8A-4FF0-B796-7768A0CDF256}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Any CPU = Debug|Any CPU
- Debug|ARM = Debug|ARM
- Debug|x64 = Debug|x64
- Debug|x86 = Debug|x86
- Release|Any CPU = Release|Any CPU
- Release|ARM = Release|ARM
- Release|x64 = Release|x64
- Release|x86 = Release|x86
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3}.Debug|ARM.ActiveCfg = Debug|ARM
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3}.Debug|ARM.Build.0 = Debug|ARM
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3}.Debug|ARM.Deploy.0 = Debug|ARM
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3}.Debug|x64.ActiveCfg = Debug|x64
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3}.Debug|x64.Build.0 = Debug|x64
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3}.Debug|x64.Deploy.0 = Debug|x64
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3}.Debug|x86.ActiveCfg = Debug|x86
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3}.Debug|x86.Build.0 = Debug|x86
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3}.Debug|x86.Deploy.0 = Debug|x86
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3}.Release|Any CPU.Build.0 = Release|Any CPU
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3}.Release|Any CPU.Deploy.0 = Release|Any CPU
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3}.Release|ARM.ActiveCfg = Release|ARM
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3}.Release|ARM.Build.0 = Release|ARM
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3}.Release|ARM.Deploy.0 = Release|ARM
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3}.Release|x64.ActiveCfg = Release|x64
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3}.Release|x64.Build.0 = Release|x64
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3}.Release|x64.Deploy.0 = Release|x64
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3}.Release|x86.ActiveCfg = Release|x86
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3}.Release|x86.Build.0 = Release|x86
- {106A4C29-9F13-47F5-8D14-16F20EBB35A3}.Release|x86.Deploy.0 = Release|x86
- {31872BEA-1F8A-4FF0-B796-7768A0CDF256}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {31872BEA-1F8A-4FF0-B796-7768A0CDF256}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {31872BEA-1F8A-4FF0-B796-7768A0CDF256}.Debug|ARM.ActiveCfg = Debug|ARM
- {31872BEA-1F8A-4FF0-B796-7768A0CDF256}.Debug|ARM.Build.0 = Debug|ARM
- {31872BEA-1F8A-4FF0-B796-7768A0CDF256}.Debug|x64.ActiveCfg = Debug|x64
- {31872BEA-1F8A-4FF0-B796-7768A0CDF256}.Debug|x64.Build.0 = Debug|x64
- {31872BEA-1F8A-4FF0-B796-7768A0CDF256}.Debug|x86.ActiveCfg = Debug|x86
- {31872BEA-1F8A-4FF0-B796-7768A0CDF256}.Debug|x86.Build.0 = Debug|x86
- {31872BEA-1F8A-4FF0-B796-7768A0CDF256}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {31872BEA-1F8A-4FF0-B796-7768A0CDF256}.Release|Any CPU.Build.0 = Release|Any CPU
- {31872BEA-1F8A-4FF0-B796-7768A0CDF256}.Release|ARM.ActiveCfg = Release|ARM
- {31872BEA-1F8A-4FF0-B796-7768A0CDF256}.Release|ARM.Build.0 = Release|ARM
- {31872BEA-1F8A-4FF0-B796-7768A0CDF256}.Release|x64.ActiveCfg = Release|x64
- {31872BEA-1F8A-4FF0-B796-7768A0CDF256}.Release|x64.Build.0 = Release|x64
- {31872BEA-1F8A-4FF0-B796-7768A0CDF256}.Release|x86.ActiveCfg = Release|x86
- {31872BEA-1F8A-4FF0-B796-7768A0CDF256}.Release|x86.Build.0 = Release|x86
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/Common/BindableBase.cs b/Source/Samples/CSharpAnalytics.Sample.Windows8/Common/BindableBase.cs
deleted file mode 100644
index 81410f8..0000000
--- a/Source/Samples/CSharpAnalytics.Sample.Windows8/Common/BindableBase.cs
+++ /dev/null
@@ -1,54 +0,0 @@
-using System;
-using System.ComponentModel;
-using System.Runtime.CompilerServices;
-
-namespace CSharpAnalytics.Sample.Windows8.Common
-{
- ///
- /// Implementation of to simplify models.
- ///
- [Windows.Foundation.Metadata.WebHostHidden]
- public abstract class BindableBase : INotifyPropertyChanged
- {
- ///
- /// Multicast event for property change notifications.
- ///
- public event PropertyChangedEventHandler PropertyChanged;
-
- ///
- /// Checks if a property already matches a desired value. Sets the property and
- /// notifies listeners only when necessary.
- ///
- /// Type of the property.
- /// Reference to a property with both getter and setter.
- /// Desired value for the property.
- /// Name of the property used to notify listeners. This
- /// value is optional and can be provided automatically when invoked from compilers that
- /// support CallerMemberName.
- /// True if the value was changed, false if the existing value matched the
- /// desired value.
- protected bool SetProperty(ref T storage, T value, [CallerMemberName] String propertyName = null)
- {
- if (Equals(storage, value)) return false;
-
- storage = value;
- OnPropertyChanged(propertyName);
- return true;
- }
-
- ///
- /// Notifies listeners that a property value has changed.
- ///
- /// Name of the property used to notify listeners. This
- /// value is optional and can be provided automatically when invoked from compilers
- /// that support .
- protected void OnPropertyChanged([CallerMemberName] string propertyName = null)
- {
- var eventHandler = PropertyChanged;
- if (eventHandler != null)
- {
- eventHandler(this, new PropertyChangedEventArgs(propertyName));
- }
- }
- }
-}
diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/Common/BooleanToVisibilityConverter.cs b/Source/Samples/CSharpAnalytics.Sample.Windows8/Common/BooleanToVisibilityConverter.cs
deleted file mode 100644
index 1c506e5..0000000
--- a/Source/Samples/CSharpAnalytics.Sample.Windows8/Common/BooleanToVisibilityConverter.cs
+++ /dev/null
@@ -1,23 +0,0 @@
-using System;
-using Windows.UI.Xaml;
-using Windows.UI.Xaml.Data;
-
-namespace CSharpAnalytics.Sample.Windows8.Common
-{
- ///
- /// Value converter that translates true to and false to
- /// .
- ///
- public sealed class BooleanToVisibilityConverter : IValueConverter
- {
- public object Convert(object value, Type targetType, object parameter, string language)
- {
- return (value is bool && (bool)value) ? Visibility.Visible : Visibility.Collapsed;
- }
-
- public object ConvertBack(object value, Type targetType, object parameter, string language)
- {
- return value is Visibility && (Visibility)value == Visibility.Visible;
- }
- }
-}
\ No newline at end of file
diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/Common/LayoutAwarePage.cs b/Source/Samples/CSharpAnalytics.Sample.Windows8/Common/LayoutAwarePage.cs
deleted file mode 100644
index 362cda9..0000000
--- a/Source/Samples/CSharpAnalytics.Sample.Windows8/Common/LayoutAwarePage.cs
+++ /dev/null
@@ -1,541 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using Windows.Foundation.Collections;
-using Windows.System;
-using Windows.UI.Core;
-using Windows.UI.ViewManagement;
-using Windows.UI.Xaml;
-using Windows.UI.Xaml.Controls;
-using Windows.UI.Xaml.Navigation;
-
-namespace CSharpAnalytics.Sample.Windows8.Common
-{
- ///
- /// Typical implementation of Page that provides several important conveniences:
- ///
- /// -
- /// Application view state to visual state mapping
- ///
- /// -
- /// GoBack, GoForward, and GoHome event handlers
- ///
- /// -
- /// Mouse and keyboard shortcuts for navigation
- ///
- /// -
- /// State management for navigation and process lifetime management
- ///
- /// -
- /// A default view model
- ///
- ///
- ///
- [Windows.Foundation.Metadata.WebHostHidden]
- public class LayoutAwarePage : Page
- {
- ///
- /// Identifies the dependency property.
- ///
- public static readonly DependencyProperty DefaultViewModelProperty =
- DependencyProperty.Register("DefaultViewModel", typeof(IObservableMap),
- typeof(LayoutAwarePage), null);
-
- private List _layoutAwareControls;
-
- ///
- /// Initializes a new instance of the class.
- ///
- public LayoutAwarePage()
- {
- if (Windows.ApplicationModel.DesignMode.DesignModeEnabled) return;
-
- // Create an empty default view model
- DefaultViewModel = new ObservableDictionary();
-
- // When this page is part of the visual tree make two changes:
- // 1) Map application view state to visual state for the page
- // 2) Handle keyboard and mouse navigation requests
- Loaded += (sender, e) =>
- {
- StartLayoutUpdates(sender, e);
-
- // Keyboard and mouse navigation only apply when occupying the entire window
- if (ActualHeight == Window.Current.Bounds.Height &&
- ActualWidth == Window.Current.Bounds.Width)
- {
- // Listen to the window directly so focus isn't required
- Window.Current.CoreWindow.Dispatcher.AcceleratorKeyActivated +=
- CoreDispatcher_AcceleratorKeyActivated;
- Window.Current.CoreWindow.PointerPressed +=
- CoreWindow_PointerPressed;
- }
- };
-
- // Undo the same changes when the page is no longer visible
- Unloaded += (sender, e) =>
- {
- StopLayoutUpdates(sender, e);
- Window.Current.CoreWindow.Dispatcher.AcceleratorKeyActivated -=
- CoreDispatcher_AcceleratorKeyActivated;
- Window.Current.CoreWindow.PointerPressed -=
- CoreWindow_PointerPressed;
- };
- }
-
- ///
- /// An implementation of designed to be
- /// used as a trivial view model.
- ///
- protected IObservableMap DefaultViewModel
- {
- get
- {
- return GetValue(DefaultViewModelProperty) as IObservableMap;
- }
-
- set
- {
- SetValue(DefaultViewModelProperty, value);
- }
- }
-
- #region Navigation support
-
- ///
- /// Invoked as an event handler to navigate backward in the page's associated
- /// until it reaches the top of the navigation stack.
- ///
- /// Instance that triggered the event.
- /// Event data describing the conditions that led to the event.
- protected virtual void GoHome(object sender, RoutedEventArgs e)
- {
- // Use the navigation frame to return to the topmost page
- if (Frame != null)
- {
- while (Frame.CanGoBack) Frame.GoBack();
- }
- }
-
- ///
- /// Invoked as an event handler to navigate backward in the navigation stack
- /// associated with this page's .
- ///
- /// Instance that triggered the event.
- /// Event data describing the conditions that led to the
- /// event.
- protected virtual void GoBack(object sender, RoutedEventArgs e)
- {
- // Use the navigation frame to return to the previous page
- if (Frame != null && Frame.CanGoBack) Frame.GoBack();
- }
-
- ///
- /// Invoked as an event handler to navigate forward in the navigation stack
- /// associated with this page's .
- ///
- /// Instance that triggered the event.
- /// Event data describing the conditions that led to the
- /// event.
- protected virtual void GoForward(object sender, RoutedEventArgs e)
- {
- // Use the navigation frame to move to the next page
- if (Frame != null && Frame.CanGoForward) Frame.GoForward();
- }
-
- ///
- /// Invoked on every keystroke, including system keys such as Alt key combinations, when
- /// this page is active and occupies the entire window. Used to detect keyboard navigation
- /// between pages even when the page itself doesn't have focus.
- ///
- /// Instance that triggered the event.
- /// Event data describing the conditions that led to the event.
- private void CoreDispatcher_AcceleratorKeyActivated(CoreDispatcher sender,
- AcceleratorKeyEventArgs args)
- {
- var virtualKey = args.VirtualKey;
-
- // Only investigate further when Left, Right, or the dedicated Previous or Next keys
- // are pressed
- if ((args.EventType == CoreAcceleratorKeyEventType.SystemKeyDown ||
- args.EventType == CoreAcceleratorKeyEventType.KeyDown) &&
- (virtualKey == VirtualKey.Left || virtualKey == VirtualKey.Right ||
- (int)virtualKey == 166 || (int)virtualKey == 167))
- {
- var coreWindow = Window.Current.CoreWindow;
- var downState = CoreVirtualKeyStates.Down;
- bool menuKey = (coreWindow.GetKeyState(VirtualKey.Menu) & downState) == downState;
- bool controlKey = (coreWindow.GetKeyState(VirtualKey.Control) & downState) == downState;
- bool shiftKey = (coreWindow.GetKeyState(VirtualKey.Shift) & downState) == downState;
- bool noModifiers = !menuKey && !controlKey && !shiftKey;
- bool onlyAlt = menuKey && !controlKey && !shiftKey;
-
- if (((int)virtualKey == 166 && noModifiers) ||
- (virtualKey == VirtualKey.Left && onlyAlt))
- {
- // When the previous key or Alt+Left are pressed navigate back
- args.Handled = true;
- GoBack(this, new RoutedEventArgs());
- }
- else if (((int)virtualKey == 167 && noModifiers) ||
- (virtualKey == VirtualKey.Right && onlyAlt))
- {
- // When the next key or Alt+Right are pressed navigate forward
- args.Handled = true;
- GoForward(this, new RoutedEventArgs());
- }
- }
- }
-
- ///
- /// Invoked on every mouse click, touch screen tap, or equivalent interaction when this
- /// page is active and occupies the entire window. Used to detect browser-style next and
- /// previous mouse button clicks to navigate between pages.
- ///
- /// Instance that triggered the event.
- /// Event data describing the conditions that led to the event.
- private void CoreWindow_PointerPressed(CoreWindow sender,
- PointerEventArgs args)
- {
- var properties = args.CurrentPoint.Properties;
-
- // Ignore button chords with the left, right, and middle buttons
- if (properties.IsLeftButtonPressed || properties.IsRightButtonPressed ||
- properties.IsMiddleButtonPressed) return;
-
- // If back or foward are pressed (but not both) navigate appropriately
- bool backPressed = properties.IsXButton1Pressed;
- bool forwardPressed = properties.IsXButton2Pressed;
- if (backPressed ^ forwardPressed)
- {
- args.Handled = true;
- if (backPressed) GoBack(this, new RoutedEventArgs());
- if (forwardPressed) GoForward(this, new RoutedEventArgs());
- }
- }
-
- #endregion
-
- #region Visual state switching
-
- ///
- /// Invoked as an event handler, typically on the
- /// event of a within the page, to indicate that the sender should
- /// start receiving visual state management changes that correspond to application view
- /// state changes.
- ///
- /// Instance of that supports visual state
- /// management corresponding to view states.
- /// Event data that describes how the request was made.
- /// The current view state will immediately be used to set the corresponding
- /// visual state when layout updates are requested. A corresponding
- /// event handler connected to
- /// is strongly encouraged. Instances of
- /// automatically invoke these handlers in their Loaded and
- /// Unloaded events.
- ///
- ///
- public void StartLayoutUpdates(object sender, RoutedEventArgs e)
- {
- var control = sender as Control;
- if (control == null) return;
- if (_layoutAwareControls == null)
- {
- // Start listening to view state changes when there are controls interested in updates
- Window.Current.SizeChanged += WindowSizeChanged;
- _layoutAwareControls = new List();
- }
- _layoutAwareControls.Add(control);
-
- // Set the initial visual state of the control
- VisualStateManager.GoToState(control, DetermineVisualState(ApplicationView.Value), false);
- }
-
- private void WindowSizeChanged(object sender, WindowSizeChangedEventArgs e)
- {
- InvalidateVisualState();
- }
-
- ///
- /// Invoked as an event handler, typically on the
- /// event of a , to indicate that the sender should start receiving
- /// visual state management changes that correspond to application view state changes.
- ///
- /// Instance of that supports visual state
- /// management corresponding to view states.
- /// Event data that describes how the request was made.
- /// The current view state will immediately be used to set the corresponding
- /// visual state when layout updates are requested.
- ///
- public void StopLayoutUpdates(object sender, RoutedEventArgs e)
- {
- var control = sender as Control;
- if (control == null || _layoutAwareControls == null) return;
- _layoutAwareControls.Remove(control);
- if (_layoutAwareControls.Count == 0)
- {
- // Stop listening to view state changes when no controls are interested in updates
- _layoutAwareControls = null;
- Window.Current.SizeChanged -= WindowSizeChanged;
- }
- }
-
- ///
- /// Translates values into strings for visual state
- /// management within the page. The default implementation uses the names of enum values.
- /// Subclasses may override this method to control the mapping scheme used.
- ///
- /// View state for which a visual state is desired.
- /// Visual state name used to drive the
- ///
- ///
- protected virtual string DetermineVisualState(ApplicationViewState viewState)
- {
- return viewState.ToString();
- }
-
- ///
- /// Updates all controls that are listening for visual state changes with the correct
- /// visual state.
- ///
- ///
- /// Typically used in conjunction with overriding to
- /// signal that a different value may be returned even though the view state has not
- /// changed.
- ///
- public void InvalidateVisualState()
- {
- if (_layoutAwareControls != null)
- {
- string visualState = DetermineVisualState(ApplicationView.Value);
- foreach (var layoutAwareControl in _layoutAwareControls)
- {
- VisualStateManager.GoToState(layoutAwareControl, visualState, false);
- }
- }
- }
-
- #endregion
-
- #region Process lifetime management
-
- private String _pageKey;
-
- ///
- /// Invoked when this page is about to be displayed in a Frame.
- ///
- /// Event data that describes how this page was reached. The Parameter
- /// property provides the group to be displayed.
- protected override void OnNavigatedTo(NavigationEventArgs e)
- {
- // Returning to a cached page through navigation shouldn't trigger state loading
- if (_pageKey != null) return;
-
- var frameState = SuspensionManager.SessionStateForFrame(Frame);
- _pageKey = "Page-" + Frame.BackStackDepth;
-
- if (e.NavigationMode == NavigationMode.New)
- {
- // Clear existing state for forward navigation when adding a new page to the
- // navigation stack
- var nextPageKey = _pageKey;
- int nextPageIndex = Frame.BackStackDepth;
- while (frameState.Remove(nextPageKey))
- {
- nextPageIndex++;
- nextPageKey = "Page-" + nextPageIndex;
- }
-
- // Pass the navigation parameter to the new page
- LoadState(e.Parameter, null);
- }
- else
- {
- // Pass the navigation parameter and preserved page state to the page, using
- // the same strategy for loading suspended state and recreating pages discarded
- // from cache
- LoadState(e.Parameter, (Dictionary)frameState[_pageKey]);
- }
- }
-
- ///
- /// Invoked when this page will no longer be displayed in a Frame.
- ///
- /// Event data that describes how this page was reached. The Parameter
- /// property provides the group to be displayed.
- protected override void OnNavigatedFrom(NavigationEventArgs e)
- {
- var frameState = SuspensionManager.SessionStateForFrame(Frame);
- var pageState = new Dictionary();
- SaveState(pageState);
- frameState[_pageKey] = pageState;
- }
-
- ///
- /// Populates the page with content passed during navigation. Any saved state is also
- /// provided when recreating a page from a prior session.
- ///
- /// The parameter value passed to
- /// when this page was initially requested.
- ///
- /// A dictionary of state preserved by this page during an earlier
- /// session. This will be null the first time a page is visited.
- protected virtual void LoadState(Object navigationParameter, Dictionary pageState)
- {
- }
-
- ///
- /// Preserves state associated with this page in case the application is suspended or the
- /// page is discarded from the navigation cache. Values must conform to the serialization
- /// requirements of .
- ///
- /// An empty dictionary to be populated with serializable state.
- protected virtual void SaveState(Dictionary pageState)
- {
- }
-
- #endregion
-
- ///
- /// Implementation of IObservableMap that supports reentrancy for use as a default view
- /// model.
- ///
- private class ObservableDictionary : IObservableMap
- {
- private class ObservableDictionaryChangedEventArgs : IMapChangedEventArgs
- {
- public ObservableDictionaryChangedEventArgs(CollectionChange change, K key)
- {
- CollectionChange = change;
- Key = key;
- }
-
- public CollectionChange CollectionChange { get; private set; }
- public K Key { get; private set; }
- }
-
- private Dictionary _dictionary = new Dictionary();
- public event MapChangedEventHandler MapChanged;
-
- private void InvokeMapChanged(CollectionChange change, K key)
- {
- var eventHandler = MapChanged;
- if (eventHandler != null)
- {
- eventHandler(this, new ObservableDictionaryChangedEventArgs(change, key));
- }
- }
-
- public void Add(K key, V value)
- {
- _dictionary.Add(key, value);
- InvokeMapChanged(CollectionChange.ItemInserted, key);
- }
-
- public void Add(KeyValuePair item)
- {
- Add(item.Key, item.Value);
- }
-
- public bool Remove(K key)
- {
- if (_dictionary.Remove(key))
- {
- InvokeMapChanged(CollectionChange.ItemRemoved, key);
- return true;
- }
- return false;
- }
-
- public bool Remove(KeyValuePair item)
- {
- V currentValue;
- if (_dictionary.TryGetValue(item.Key, out currentValue) &&
- Object.Equals(item.Value, currentValue) && _dictionary.Remove(item.Key))
- {
- InvokeMapChanged(CollectionChange.ItemRemoved, item.Key);
- return true;
- }
- return false;
- }
-
- public V this[K key]
- {
- get
- {
- return _dictionary[key];
- }
- set
- {
- _dictionary[key] = value;
- InvokeMapChanged(CollectionChange.ItemChanged, key);
- }
- }
-
- public void Clear()
- {
- var priorKeys = _dictionary.Keys.ToArray();
- _dictionary.Clear();
- foreach (var key in priorKeys)
- {
- InvokeMapChanged(CollectionChange.ItemRemoved, key);
- }
- }
-
- public ICollection Keys
- {
- get { return _dictionary.Keys; }
- }
-
- public bool ContainsKey(K key)
- {
- return _dictionary.ContainsKey(key);
- }
-
- public bool TryGetValue(K key, out V value)
- {
- return _dictionary.TryGetValue(key, out value);
- }
-
- public ICollection Values
- {
- get { return _dictionary.Values; }
- }
-
- public bool Contains(KeyValuePair item)
- {
- return _dictionary.Contains(item);
- }
-
- public int Count
- {
- get { return _dictionary.Count; }
- }
-
- public bool IsReadOnly
- {
- get { return false; }
- }
-
- public IEnumerator> GetEnumerator()
- {
- return _dictionary.GetEnumerator();
- }
-
- System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
- {
- return _dictionary.GetEnumerator();
- }
-
- public void CopyTo(KeyValuePair[] array, int arrayIndex)
- {
- int arraySize = array.Length;
- foreach (var pair in _dictionary)
- {
- if (arrayIndex >= arraySize) break;
- array[arrayIndex++] = pair;
- }
- }
- }
- }
-}
diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/Common/RichTextColumns.cs b/Source/Samples/CSharpAnalytics.Sample.Windows8/Common/RichTextColumns.cs
deleted file mode 100644
index 8c6978e..0000000
--- a/Source/Samples/CSharpAnalytics.Sample.Windows8/Common/RichTextColumns.cs
+++ /dev/null
@@ -1,206 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Windows.Foundation;
-using Windows.UI.Xaml;
-using Windows.UI.Xaml.Controls;
-
-namespace CSharpAnalytics.Sample.Windows8.Common
-{
- ///
- /// Wrapper for that creates as many additional overflow
- /// columns as needed to fit the available content.
- ///
- ///
- /// The following creates a collection of 400-pixel wide columns spaced 50 pixels apart
- /// to contain arbitrary data-bound content:
- ///
- ///
- ///
- ///
- ///
- ///
- ///
- ///
- ///
- ///
- ///
- ///
- ///
- ///
- ///
- ///
- /// Typically used in a horizontally scrolling region where an unbounded amount of
- /// space allows for all needed columns to be created. When used in a vertically scrolling
- /// space there will never be any additional columns.
- [Windows.UI.Xaml.Markup.ContentProperty(Name = "RichTextContent")]
- public sealed class RichTextColumns : Panel
- {
- ///
- /// Identifies the dependency property.
- ///
- public static readonly DependencyProperty RichTextContentProperty =
- DependencyProperty.Register("RichTextContent", typeof(RichTextBlock),
- typeof(RichTextColumns), new PropertyMetadata(null, ResetOverflowLayout));
-
- ///
- /// Identifies the dependency property.
- ///
- public static readonly DependencyProperty ColumnTemplateProperty =
- DependencyProperty.Register("ColumnTemplate", typeof(DataTemplate),
- typeof(RichTextColumns), new PropertyMetadata(null, ResetOverflowLayout));
-
- ///
- /// Initializes a new instance of the class.
- ///
- public RichTextColumns()
- {
- HorizontalAlignment = HorizontalAlignment.Left;
- }
-
- ///
- /// Gets or sets the initial rich text content to be used as the first column.
- ///
- public RichTextBlock RichTextContent
- {
- get { return (RichTextBlock)GetValue(RichTextContentProperty); }
- set { SetValue(RichTextContentProperty, value); }
- }
-
- ///
- /// Gets or sets the template used to create additional
- /// instances.
- ///
- public DataTemplate ColumnTemplate
- {
- get { return (DataTemplate)GetValue(ColumnTemplateProperty); }
- set { SetValue(ColumnTemplateProperty, value); }
- }
-
- ///
- /// Invoked when the content or overflow template is changed to recreate the column layout.
- ///
- /// Instance of where the change
- /// occurred.
- /// Event data describing the specific change.
- private static void ResetOverflowLayout(DependencyObject d, DependencyPropertyChangedEventArgs e)
- {
- // When dramatic changes occur, rebuild the column layout from scratch
- var target = d as RichTextColumns;
- if (target != null)
- {
- target._overflowColumns = null;
- target.Children.Clear();
- target.InvalidateMeasure();
- }
- }
-
- ///
- /// Lists overflow columns already created. Must maintain a 1:1 relationship with
- /// instances in the collection following the initial
- /// RichTextBlock child.
- ///
- private List _overflowColumns;
-
- ///
- /// Determines whether additional overflow columns are needed and if existing columns can
- /// be removed.
- ///
- /// The size of the space available, used to constrain the
- /// number of additional columns that can be created.
- /// The resulting size of the original content plus any extra columns.
- protected override Size MeasureOverride(Size availableSize)
- {
- if (RichTextContent == null) return new Size(0, 0);
-
- // Make sure the RichTextBlock is a child, using the lack of
- // a list of additional columns as a sign that this hasn't been
- // done yet
- if (_overflowColumns == null)
- {
- Children.Add(RichTextContent);
- _overflowColumns = new List();
- }
-
- // Start by measuring the original RichTextBlock content
- RichTextContent.Measure(availableSize);
- var maxWidth = RichTextContent.DesiredSize.Width;
- var maxHeight = RichTextContent.DesiredSize.Height;
- var hasOverflow = RichTextContent.HasOverflowContent;
-
- // Make sure there are enough overflow columns
- int overflowIndex = 0;
- while (hasOverflow && maxWidth < availableSize.Width && ColumnTemplate != null)
- {
- // Use existing overflow columns until we run out, then create
- // more from the supplied template
- RichTextBlockOverflow overflow;
- if (_overflowColumns.Count > overflowIndex)
- {
- overflow = _overflowColumns[overflowIndex];
- }
- else
- {
- overflow = (RichTextBlockOverflow)ColumnTemplate.LoadContent();
- _overflowColumns.Add(overflow);
- Children.Add(overflow);
- if (overflowIndex == 0)
- {
- RichTextContent.OverflowContentTarget = overflow;
- }
- else
- {
- _overflowColumns[overflowIndex - 1].OverflowContentTarget = overflow;
- }
- }
-
- // Measure the new column and prepare to repeat as necessary
- overflow.Measure(new Size(availableSize.Width - maxWidth, availableSize.Height));
- maxWidth += overflow.DesiredSize.Width;
- maxHeight = Math.Max(maxHeight, overflow.DesiredSize.Height);
- hasOverflow = overflow.HasOverflowContent;
- overflowIndex++;
- }
-
- // Disconnect extra columns from the overflow chain, remove them from our private list
- // of columns, and remove them as children
- if (_overflowColumns.Count > overflowIndex)
- {
- if (overflowIndex == 0)
- {
- RichTextContent.OverflowContentTarget = null;
- }
- else
- {
- _overflowColumns[overflowIndex - 1].OverflowContentTarget = null;
- }
- while (_overflowColumns.Count > overflowIndex)
- {
- _overflowColumns.RemoveAt(overflowIndex);
- Children.RemoveAt(overflowIndex + 1);
- }
- }
-
- // Report final determined size
- return new Size(maxWidth, maxHeight);
- }
-
- ///
- /// Arranges the original content and all extra columns.
- ///
- /// Defines the size of the area the children must be arranged
- /// within.
- /// The size of the area the children actually required.
- protected override Size ArrangeOverride(Size finalSize)
- {
- double maxWidth = 0;
- double maxHeight = 0;
- foreach (var child in Children)
- {
- child.Arrange(new Rect(maxWidth, 0, child.DesiredSize.Width, finalSize.Height));
- maxWidth += child.DesiredSize.Width;
- maxHeight = Math.Max(maxHeight, child.DesiredSize.Height);
- }
- return new Size(maxWidth, maxHeight);
- }
- }
-}
\ No newline at end of file
diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/Common/StandardStyles.xaml b/Source/Samples/CSharpAnalytics.Sample.Windows8/Common/StandardStyles.xaml
deleted file mode 100644
index 85f4ed6..0000000
--- a/Source/Samples/CSharpAnalytics.Sample.Windows8/Common/StandardStyles.xaml
+++ /dev/null
@@ -1,1829 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Mouse
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/Common/SuspensionManager.cs b/Source/Samples/CSharpAnalytics.Sample.Windows8/Common/SuspensionManager.cs
deleted file mode 100644
index 71b2584..0000000
--- a/Source/Samples/CSharpAnalytics.Sample.Windows8/Common/SuspensionManager.cs
+++ /dev/null
@@ -1,253 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Runtime.Serialization;
-using System.Threading.Tasks;
-using Windows.Storage;
-using Windows.UI.Xaml;
-using Windows.UI.Xaml.Controls;
-
-namespace CSharpAnalytics.Sample.Windows8.Common
-{
- ///
- /// SuspensionManager captures global session state to simplify process lifetime management
- /// for an application. Note that session state will be automatically cleared under a variety
- /// of conditions and should only be used to store information that would be convenient to
- /// carry across sessions, but that should be discarded when an application crashes or is
- /// upgraded.
- ///
- internal sealed class SuspensionManager
- {
- private static Dictionary _sessionState = new Dictionary();
- private static readonly List _knownTypes = new List();
- private const string SessionStateFilename = "_sessionState.xml";
-
- ///
- /// Provides access to global session state for the current session. This state is
- /// serialized by and restored by
- /// , so values must be serializable by
- /// and should be as compact as possible. Strings
- /// and other self-contained data types are strongly recommended.
- ///
- public static Dictionary SessionState
- {
- get { return _sessionState; }
- }
-
- ///
- /// List of custom types provided to the when
- /// reading and writing session state. Initially empty, additional types may be
- /// added to customize the serialization process.
- ///
- public static List KnownTypes
- {
- get { return _knownTypes; }
- }
-
- ///
- /// Save the current . Any instances
- /// registered with will also preserve their current
- /// navigation stack, which in turn gives their active an opportunity
- /// to save its state.
- ///
- /// An asynchronous task that reflects when session state has been saved.
- public static async Task SaveAsync()
- {
- try
- {
- // Save the navigation state for all registered frames
- foreach (var weakFrameReference in _registeredFrames)
- {
- Frame frame;
- if (weakFrameReference.TryGetTarget(out frame))
- {
- SaveFrameNavigationState(frame);
- }
- }
-
- // Serialize the session state synchronously to avoid asynchronous access to shared
- // state
- var sessionData = new MemoryStream();
- var serializer = new DataContractSerializer(typeof(Dictionary), _knownTypes);
- serializer.WriteObject(sessionData, _sessionState);
-
- // Get an output stream for the SessionState file and write the state asynchronously
- var file = await ApplicationData.Current.LocalFolder.CreateFileAsync(SessionStateFilename, CreationCollisionOption.ReplaceExisting);
- using (var fileStream = await file.OpenStreamForWriteAsync())
- {
- sessionData.Seek(0, SeekOrigin.Begin);
- await sessionData.CopyToAsync(fileStream);
- await fileStream.FlushAsync();
- }
- }
- catch (Exception e)
- {
- throw new SuspensionManagerException(e);
- }
- }
-
- ///
- /// Restores previously saved . Any instances
- /// registered with will also restore their prior navigation
- /// state, which in turn gives their active an opportunity restore its
- /// state.
- ///
- /// An asynchronous task that reflects when session state has been read. The
- /// content of should not be relied upon until this task
- /// completes.
- public static async Task RestoreAsync()
- {
- _sessionState = new Dictionary();
-
- try
- {
- // Get the input stream for the SessionState file
- var file = await ApplicationData.Current.LocalFolder.GetFileAsync(SessionStateFilename);
- using (var inStream = await file.OpenSequentialReadAsync())
- {
- // Deserialize the Session State
- var serializer = new DataContractSerializer(typeof(Dictionary), _knownTypes);
- _sessionState = (Dictionary)serializer.ReadObject(inStream.AsStreamForRead());
- }
-
- // Restore any registered frames to their saved state
- foreach (var weakFrameReference in _registeredFrames)
- {
- Frame frame;
- if (weakFrameReference.TryGetTarget(out frame))
- {
- frame.ClearValue(FrameSessionStateProperty);
- RestoreFrameNavigationState(frame);
- }
- }
- }
- catch (Exception e)
- {
- throw new SuspensionManagerException(e);
- }
- }
-
- private static readonly DependencyProperty FrameSessionStateKeyProperty =
- DependencyProperty.RegisterAttached("_FrameSessionStateKey", typeof(String), typeof(SuspensionManager), null);
- private static readonly DependencyProperty FrameSessionStateProperty =
- DependencyProperty.RegisterAttached("_FrameSessionState", typeof(Dictionary), typeof(SuspensionManager), null);
- private static readonly List> _registeredFrames = new List>();
-
- ///
- /// Registers a instance to allow its navigation history to be saved to
- /// and restored from . Frames should be registered once
- /// immediately after creation if they will participate in session state management. Upon
- /// registration if state has already been restored for the specified key
- /// the navigation history will immediately be restored. Subsequent invocations of
- /// will also restore navigation history.
- ///
- /// An instance whose navigation history should be managed by
- ///
- /// A unique key into used to
- /// store navigation-related information.
- public static void RegisterFrame(Frame frame, String sessionStateKey)
- {
- if (frame.GetValue(FrameSessionStateKeyProperty) != null)
- {
- throw new InvalidOperationException("Frames can only be registered to one session state key");
- }
-
- if (frame.GetValue(FrameSessionStateProperty) != null)
- {
- throw new InvalidOperationException("Frames must be either be registered before accessing frame session state, or not registered at all");
- }
-
- // Use a dependency property to associate the session key with a frame, and keep a list of frames whose
- // navigation state should be managed
- frame.SetValue(FrameSessionStateKeyProperty, sessionStateKey);
- _registeredFrames.Add(new WeakReference(frame));
-
- // Check to see if navigation state can be restored
- RestoreFrameNavigationState(frame);
- }
-
- ///
- /// Disassociates a previously registered by
- /// from . Any navigation state previously captured will be
- /// removed.
- ///
- /// An instance whose navigation history should no longer be
- /// managed.
- public static void UnregisterFrame(Frame frame)
- {
- // Remove session state and remove the frame from the list of frames whose navigation
- // state will be saved (along with any weak references that are no longer reachable)
- SessionState.Remove((String)frame.GetValue(FrameSessionStateKeyProperty));
- _registeredFrames.RemoveAll((weakFrameReference) =>
- {
- Frame testFrame;
- return !weakFrameReference.TryGetTarget(out testFrame) || testFrame == frame;
- });
- }
-
- ///
- /// Provides storage for session state associated with the specified .
- /// Frames that have been previously registered with have
- /// their session state saved and restored automatically as a part of the global
- /// . Frames that are not registered have transient state
- /// that can still be useful when restoring pages that have been discarded from the
- /// navigation cache.
- ///
- /// Apps may choose to rely on to manage
- /// page-specific state instead of working with frame session state directly.
- /// The instance for which session state is desired.
- /// A collection of state subject to the same serialization mechanism as
- /// .
- public static Dictionary SessionStateForFrame(Frame frame)
- {
- var frameState = (Dictionary)frame.GetValue(FrameSessionStateProperty);
-
- if (frameState == null)
- {
- var frameSessionKey = (String)frame.GetValue(FrameSessionStateKeyProperty);
- if (frameSessionKey != null)
- {
- // Registered frames reflect the corresponding session state
- if (!_sessionState.ContainsKey(frameSessionKey))
- {
- _sessionState[frameSessionKey] = new Dictionary();
- }
- frameState = (Dictionary)_sessionState[frameSessionKey];
- }
- else
- {
- // Frames that aren't registered have transient state
- frameState = new Dictionary();
- }
- frame.SetValue(FrameSessionStateProperty, frameState);
- }
- return frameState;
- }
-
- private static void RestoreFrameNavigationState(Frame frame)
- {
- var frameState = SessionStateForFrame(frame);
- if (frameState.ContainsKey("Navigation"))
- {
- frame.SetNavigationState((String)frameState["Navigation"]);
- }
- }
-
- private static void SaveFrameNavigationState(Frame frame)
- {
- var frameState = SessionStateForFrame(frame);
- frameState["Navigation"] = frame.GetNavigationState();
- }
- }
- public class SuspensionManagerException : Exception
- {
- public SuspensionManagerException()
- {
- }
-
- public SuspensionManagerException(Exception e)
- : base("SuspensionManager failed", e)
- {
- }
- }
-}
\ No newline at end of file
diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/DataModel/SampleDataSource.cs b/Source/Samples/CSharpAnalytics.Sample.Windows8/DataModel/SampleDataSource.cs
deleted file mode 100644
index 9f45350..0000000
--- a/Source/Samples/CSharpAnalytics.Sample.Windows8/DataModel/SampleDataSource.cs
+++ /dev/null
@@ -1,527 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.Collections.Specialized;
-using System.Linq;
-using Windows.Foundation.Metadata;
-using Windows.UI.Xaml.Media;
-using Windows.UI.Xaml.Media.Imaging;
-
-// The data model defined by this file serves as a representative example of a strongly-typed
-// model that supports notification when members are added, removed, or modified. The property
-// names chosen coincide with data bindings in the standard item templates.
-//
-// Applications may use this model as a starting point and build on it, or discard it entirely and
-// replace it with something appropriate to their needs.
-
-namespace CSharpAnalytics.Sample.Windows8.Data
-{
- ///
- /// Base class for and that
- /// defines properties common to both.
- ///
- [WebHostHidden]
- public abstract class SampleDataCommon : Common.BindableBase
- {
- private static readonly Uri _baseUri = new Uri("ms-appx:///");
-
- protected SampleDataCommon(String uniqueId, String title, String subtitle, String imagePath, String description)
- {
- _uniqueId = uniqueId;
- _title = title;
- _subtitle = subtitle;
- _description = description;
- _imagePath = imagePath;
- }
-
- private string _uniqueId = string.Empty;
- public string UniqueId
- {
- get { return _uniqueId; }
- set { SetProperty(ref _uniqueId, value); }
- }
-
- private string _title = string.Empty;
- public string Title
- {
- get { return _title; }
- set { SetProperty(ref _title, value); }
- }
-
- private string _subtitle = string.Empty;
- public string Subtitle
- {
- get { return _subtitle; }
- set { SetProperty(ref _subtitle, value); }
- }
-
- private string _description = string.Empty;
- public string Description
- {
- get { return _description; }
- set { SetProperty(ref _description, value); }
- }
-
- private ImageSource _image;
- private String _imagePath;
- public ImageSource Image
- {
- get
- {
- if (_image == null && _imagePath != null)
- {
- _image = new BitmapImage(new Uri(_baseUri, _imagePath));
- }
- return _image;
- }
-
- set
- {
- _imagePath = null;
- SetProperty(ref _image, value);
- }
- }
-
- public void SetImage(String path)
- {
- _image = null;
- _imagePath = path;
- OnPropertyChanged("Image");
- }
-
- public override string ToString()
- {
- return Title;
- }
- }
-
- ///
- /// Generic item data model.
- ///
- public class SampleDataItem : SampleDataCommon
- {
- public SampleDataItem(String uniqueId, String title, String subtitle, String imagePath, String description, String content, SampleDataGroup group)
- : base(uniqueId, title, subtitle, imagePath, description)
- {
- _content = content;
- _group = group;
- }
-
- private string _content = string.Empty;
- public string Content
- {
- get { return _content; }
- set { SetProperty(ref _content, value); }
- }
-
- private SampleDataGroup _group;
- public SampleDataGroup Group
- {
- get { return _group; }
- set { SetProperty(ref _group, value); }
- }
- }
-
- ///
- /// Generic group data model.
- ///
- public class SampleDataGroup : SampleDataCommon
- {
- public SampleDataGroup(String uniqueId, String title, String subtitle, String imagePath, String description)
- : base(uniqueId, title, subtitle, imagePath, description)
- {
- Items.CollectionChanged += ItemsCollectionChanged;
- }
-
- private void ItemsCollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
- {
- // Provides a subset of the full items collection to bind to from a GroupedItemsPage
- // for two reasons: GridView will not virtualize large items collections, and it
- // improves the user experience when browsing through groups with large numbers of
- // items.
- //
- // A maximum of 12 items are displayed because it results in filled grid columns
- // whether there are 1, 2, 3, 4, or 6 rows displayed
-
- switch (e.Action)
- {
- case NotifyCollectionChangedAction.Add:
- if (e.NewStartingIndex < 12)
- {
- TopItems.Insert(e.NewStartingIndex,Items[e.NewStartingIndex]);
- if (TopItems.Count > 12)
- {
- TopItems.RemoveAt(12);
- }
- }
- break;
- case NotifyCollectionChangedAction.Move:
- if (e.OldStartingIndex < 12 && e.NewStartingIndex < 12)
- {
- TopItems.Move(e.OldStartingIndex, e.NewStartingIndex);
- }
- else if (e.OldStartingIndex < 12)
- {
- TopItems.RemoveAt(e.OldStartingIndex);
- TopItems.Add(Items[11]);
- }
- else if (e.NewStartingIndex < 12)
- {
- TopItems.Insert(e.NewStartingIndex, Items[e.NewStartingIndex]);
- TopItems.RemoveAt(12);
- }
- break;
- case NotifyCollectionChangedAction.Remove:
- if (e.OldStartingIndex < 12)
- {
- TopItems.RemoveAt(e.OldStartingIndex);
- if (Items.Count >= 12)
- {
- TopItems.Add(Items[11]);
- }
- }
- break;
- case NotifyCollectionChangedAction.Replace:
- if (e.OldStartingIndex < 12)
- {
- TopItems[e.OldStartingIndex] = Items[e.OldStartingIndex];
- }
- break;
- case NotifyCollectionChangedAction.Reset:
- TopItems.Clear();
- while (TopItems.Count < Items.Count && TopItems.Count < 12)
- {
- TopItems.Add(Items[TopItems.Count]);
- }
- break;
- }
- }
-
- private readonly ObservableCollection _items = new ObservableCollection();
- public ObservableCollection Items
- {
- get { return _items; }
- }
-
- private readonly ObservableCollection _topItem = new ObservableCollection();
- public ObservableCollection TopItems
- {
- get {return _topItem; }
- }
- }
-
- ///
- /// Creates a collection of groups and items with hard-coded content.
- ///
- /// SampleDataSource initializes with placeholder data rather than live production
- /// data so that sample data is provided at both design-time and run-time.
- ///
- public sealed class SampleDataSource
- {
- private static readonly SampleDataSource _sampleDataSource = new SampleDataSource();
-
- private readonly ObservableCollection _allGroups = new ObservableCollection();
- public ObservableCollection AllGroups
- {
- get { return _allGroups; }
- }
-
- public static IEnumerable GetGroups(string uniqueId)
- {
- if (!uniqueId.Equals("AllGroups")) throw new ArgumentException("Only 'AllGroups' is supported as a collection of groups");
-
- return _sampleDataSource.AllGroups;
- }
-
- public static SampleDataGroup GetGroup(string uniqueId)
- {
- // Simple linear search is acceptable for small data sets
- return _sampleDataSource.AllGroups.FirstOrDefault(group => group.UniqueId.Equals(uniqueId));
- }
-
- public static SampleDataItem GetItem(string uniqueId)
- {
- // Simple linear search is acceptable for small data sets
- return _sampleDataSource.AllGroups.SelectMany(group => group.Items).FirstOrDefault(item => item.UniqueId.Equals(uniqueId));
- }
-
- public SampleDataSource()
- {
- var itemContent = String.Format("Item Content: {0}\n\n{0}\n\n{0}\n\n{0}\n\n{0}\n\n{0}\n\n{0}",
- "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat");
-
- var group1 = new SampleDataGroup("Group-1",
- "Group Title: 1",
- "Group Subtitle: 1",
- "Assets/DarkGray.png",
- "Group Description: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus tempor scelerisque lorem in vehicula. Aliquam tincidunt, lacus ut sagittis tristique, turpis massa volutpat augue, eu rutrum ligula ante a ante");
- group1.Items.Add(new SampleDataItem("Group-1-Item-1",
- "Item Title: 1",
- "Item Subtitle: 1",
- "Assets/LightGray.png",
- "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
- itemContent,
- group1));
- group1.Items.Add(new SampleDataItem("Group-1-Item-2",
- "Item Title: 2",
- "Item Subtitle: 2",
- "Assets/DarkGray.png",
- "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
- itemContent,
- group1));
- group1.Items.Add(new SampleDataItem("Group-1-Item-3",
- "Item Title: 3",
- "Item Subtitle: 3",
- "Assets/MediumGray.png",
- "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
- itemContent,
- group1));
- group1.Items.Add(new SampleDataItem("Group-1-Item-4",
- "Item Title: 4",
- "Item Subtitle: 4",
- "Assets/DarkGray.png",
- "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
- itemContent,
- group1));
- group1.Items.Add(new SampleDataItem("Group-1-Item-5",
- "Item Title: 5",
- "Item Subtitle: 5",
- "Assets/MediumGray.png",
- "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
- itemContent,
- group1));
- AllGroups.Add(group1);
-
- var group2 = new SampleDataGroup("Group-2",
- "Group Title: 2",
- "Group Subtitle: 2",
- "Assets/LightGray.png",
- "Group Description: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus tempor scelerisque lorem in vehicula. Aliquam tincidunt, lacus ut sagittis tristique, turpis massa volutpat augue, eu rutrum ligula ante a ante");
- group2.Items.Add(new SampleDataItem("Group-2-Item-1",
- "Item Title: 1",
- "Item Subtitle: 1",
- "Assets/DarkGray.png",
- "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
- itemContent,
- group2));
- group2.Items.Add(new SampleDataItem("Group-2-Item-2",
- "Item Title: 2",
- "Item Subtitle: 2",
- "Assets/MediumGray.png",
- "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
- itemContent,
- group2));
- group2.Items.Add(new SampleDataItem("Group-2-Item-3",
- "Item Title: 3",
- "Item Subtitle: 3",
- "Assets/LightGray.png",
- "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
- itemContent,
- group2));
- AllGroups.Add(group2);
-
- var group3 = new SampleDataGroup("Group-3",
- "Group Title: 3",
- "Group Subtitle: 3",
- "Assets/MediumGray.png",
- "Group Description: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus tempor scelerisque lorem in vehicula. Aliquam tincidunt, lacus ut sagittis tristique, turpis massa volutpat augue, eu rutrum ligula ante a ante");
- group3.Items.Add(new SampleDataItem("Group-3-Item-1",
- "Item Title: 1",
- "Item Subtitle: 1",
- "Assets/MediumGray.png",
- "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
- itemContent,
- group3));
- group3.Items.Add(new SampleDataItem("Group-3-Item-2",
- "Item Title: 2",
- "Item Subtitle: 2",
- "Assets/LightGray.png",
- "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
- itemContent,
- group3));
- group3.Items.Add(new SampleDataItem("Group-3-Item-3",
- "Item Title: 3",
- "Item Subtitle: 3",
- "Assets/DarkGray.png",
- "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
- itemContent,
- group3));
- group3.Items.Add(new SampleDataItem("Group-3-Item-4",
- "Item Title: 4",
- "Item Subtitle: 4",
- "Assets/LightGray.png",
- "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
- itemContent,
- group3));
- group3.Items.Add(new SampleDataItem("Group-3-Item-5",
- "Item Title: 5",
- "Item Subtitle: 5",
- "Assets/MediumGray.png",
- "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
- itemContent,
- group3));
- group3.Items.Add(new SampleDataItem("Group-3-Item-6",
- "Item Title: 6",
- "Item Subtitle: 6",
- "Assets/DarkGray.png",
- "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
- itemContent,
- group3));
- group3.Items.Add(new SampleDataItem("Group-3-Item-7",
- "Item Title: 7",
- "Item Subtitle: 7",
- "Assets/MediumGray.png",
- "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
- itemContent,
- group3));
- AllGroups.Add(group3);
-
- var group4 = new SampleDataGroup("Group-4",
- "Group Title: 4",
- "Group Subtitle: 4",
- "Assets/LightGray.png",
- "Group Description: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus tempor scelerisque lorem in vehicula. Aliquam tincidunt, lacus ut sagittis tristique, turpis massa volutpat augue, eu rutrum ligula ante a ante");
- group4.Items.Add(new SampleDataItem("Group-4-Item-1",
- "Item Title: 1",
- "Item Subtitle: 1",
- "Assets/DarkGray.png",
- "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
- itemContent,
- group4));
- group4.Items.Add(new SampleDataItem("Group-4-Item-2",
- "Item Title: 2",
- "Item Subtitle: 2",
- "Assets/LightGray.png",
- "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
- itemContent,
- group4));
- group4.Items.Add(new SampleDataItem("Group-4-Item-3",
- "Item Title: 3",
- "Item Subtitle: 3",
- "Assets/DarkGray.png",
- "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
- itemContent,
- group4));
- group4.Items.Add(new SampleDataItem("Group-4-Item-4",
- "Item Title: 4",
- "Item Subtitle: 4",
- "Assets/LightGray.png",
- "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
- itemContent,
- group4));
- group4.Items.Add(new SampleDataItem("Group-4-Item-5",
- "Item Title: 5",
- "Item Subtitle: 5",
- "Assets/MediumGray.png",
- "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
- itemContent,
- group4));
- group4.Items.Add(new SampleDataItem("Group-4-Item-6",
- "Item Title: 6",
- "Item Subtitle: 6",
- "Assets/LightGray.png",
- "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
- itemContent,
- group4));
- AllGroups.Add(group4);
-
- var group5 = new SampleDataGroup("Group-5",
- "Group Title: 5",
- "Group Subtitle: 5",
- "Assets/MediumGray.png",
- "Group Description: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus tempor scelerisque lorem in vehicula. Aliquam tincidunt, lacus ut sagittis tristique, turpis massa volutpat augue, eu rutrum ligula ante a ante");
- group5.Items.Add(new SampleDataItem("Group-5-Item-1",
- "Item Title: 1",
- "Item Subtitle: 1",
- "Assets/LightGray.png",
- "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
- itemContent,
- group5));
- group5.Items.Add(new SampleDataItem("Group-5-Item-2",
- "Item Title: 2",
- "Item Subtitle: 2",
- "Assets/DarkGray.png",
- "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
- itemContent,
- group5));
- group5.Items.Add(new SampleDataItem("Group-5-Item-3",
- "Item Title: 3",
- "Item Subtitle: 3",
- "Assets/LightGray.png",
- "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
- itemContent,
- group5));
- group5.Items.Add(new SampleDataItem("Group-5-Item-4",
- "Item Title: 4",
- "Item Subtitle: 4",
- "Assets/MediumGray.png",
- "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
- itemContent,
- group5));
- AllGroups.Add(group5);
-
- var group6 = new SampleDataGroup("Group-6",
- "Group Title: 6",
- "Group Subtitle: 6",
- "Assets/DarkGray.png",
- "Group Description: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus tempor scelerisque lorem in vehicula. Aliquam tincidunt, lacus ut sagittis tristique, turpis massa volutpat augue, eu rutrum ligula ante a ante");
- group6.Items.Add(new SampleDataItem("Group-6-Item-1",
- "Item Title: 1",
- "Item Subtitle: 1",
- "Assets/LightGray.png",
- "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
- itemContent,
- group6));
- group6.Items.Add(new SampleDataItem("Group-6-Item-2",
- "Item Title: 2",
- "Item Subtitle: 2",
- "Assets/DarkGray.png",
- "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
- itemContent,
- group6));
- group6.Items.Add(new SampleDataItem("Group-6-Item-3",
- "Item Title: 3",
- "Item Subtitle: 3",
- "Assets/MediumGray.png",
- "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
- itemContent,
- group6));
- group6.Items.Add(new SampleDataItem("Group-6-Item-4",
- "Item Title: 4",
- "Item Subtitle: 4",
- "Assets/DarkGray.png",
- "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
- itemContent,
- group6));
- group6.Items.Add(new SampleDataItem("Group-6-Item-5",
- "Item Title: 5",
- "Item Subtitle: 5",
- "Assets/LightGray.png",
- "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
- itemContent,
- group6));
- group6.Items.Add(new SampleDataItem("Group-6-Item-6",
- "Item Title: 6",
- "Item Subtitle: 6",
- "Assets/MediumGray.png",
- "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
- itemContent,
- group6));
- group6.Items.Add(new SampleDataItem("Group-6-Item-7",
- "Item Title: 7",
- "Item Subtitle: 7",
- "Assets/DarkGray.png",
- "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
- itemContent,
- group6));
- group6.Items.Add(new SampleDataItem("Group-6-Item-8",
- "Item Title: 8",
- "Item Subtitle: 8",
- "Assets/LightGray.png",
- "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
- itemContent,
- group6));
- AllGroups.Add(group6);
- }
- }
-}
\ No newline at end of file
diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/GroupDetailPage.xaml b/Source/Samples/CSharpAnalytics.Sample.Windows8/GroupDetailPage.xaml
deleted file mode 100644
index c1b1734..0000000
--- a/Source/Samples/CSharpAnalytics.Sample.Windows8/GroupDetailPage.xaml
+++ /dev/null
@@ -1,145 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/GroupDetailPage.xaml.cs b/Source/Samples/CSharpAnalytics.Sample.Windows8/GroupDetailPage.xaml.cs
deleted file mode 100644
index fd6d0fd..0000000
--- a/Source/Samples/CSharpAnalytics.Sample.Windows8/GroupDetailPage.xaml.cs
+++ /dev/null
@@ -1,71 +0,0 @@
-using CSharpAnalytics.Sample.Windows8.Data;
-using System;
-using System.Collections.Generic;
-using Windows.ApplicationModel.DataTransfer;
-using Windows.UI.Xaml.Controls;
-using Windows.UI.Xaml.Navigation;
-
-namespace CSharpAnalytics.Sample.Windows8
-{
- ///
- /// A page that displays an overview of a single group, including a preview of the items
- /// within the group.
- ///
- public sealed partial class GroupDetailPage
- {
- private SampleDataGroup group;
-
- public GroupDetailPage()
- {
- InitializeComponent();
- }
-
- ///
- /// Populates the page with content passed during navigation. Any saved state is also
- /// provided when recreating a page from a prior session.
- ///
- /// The parameter value passed to
- /// when this page was initially requested.
- ///
- /// A dictionary of state preserved by this page during an earlier
- /// session. This will be null the first time a page is visited.
- protected override void LoadState(Object navigationParameter, Dictionary pageState)
- {
- // TODO: Create an appropriate data model for your problem domain to replace the sample data
- group = SampleDataSource.GetGroup((String)navigationParameter);
- DefaultViewModel["Group"] = group;
- DefaultViewModel["Items"] = group.Items;
- DataTransferManager.GetForCurrentView().DataRequested += OnDataRequested;
- }
-
- protected override void OnNavigatedFrom(NavigationEventArgs e)
- {
- base.OnNavigatedFrom(e);
- DataTransferManager.GetForCurrentView().DataRequested -= OnDataRequested;
- }
-
- private void OnDataRequested(DataTransferManager sender, DataRequestedEventArgs args)
- {
- var deferral = args.Request.GetDeferral();
- var data = args.Request.Data;
- data.SetText(group.Description);
- data.Properties.Title = group.Title;
- data.Properties.Description = group.Subtitle;
- deferral.Complete();
- }
-
- ///
- /// Invoked when an item is clicked.
- ///
- /// The GridView (or ListView when the application is snapped)
- /// displaying the item clicked.
- /// Event data that describes the item clicked.
- void ItemView_ItemClick(object sender, ItemClickEventArgs e)
- {
- // Navigate to the appropriate destination page, configuring the new page
- // by passing required information as a navigation parameter
- var itemId = ((SampleDataItem)e.ClickedItem).UniqueId;
- Frame.Navigate(typeof(ItemDetailOwn), itemId);
- }
- }
-}
\ No newline at end of file
diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/GroupedItemsPage.xaml b/Source/Samples/CSharpAnalytics.Sample.Windows8/GroupedItemsPage.xaml
deleted file mode 100644
index fe588a7..0000000
--- a/Source/Samples/CSharpAnalytics.Sample.Windows8/GroupedItemsPage.xaml
+++ /dev/null
@@ -1,174 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/GroupedItemsPage.xaml.cs b/Source/Samples/CSharpAnalytics.Sample.Windows8/GroupedItemsPage.xaml.cs
deleted file mode 100644
index 63044ab..0000000
--- a/Source/Samples/CSharpAnalytics.Sample.Windows8/GroupedItemsPage.xaml.cs
+++ /dev/null
@@ -1,65 +0,0 @@
-using CSharpAnalytics.Sample.Windows8.Data;
-using System;
-using System.Collections.Generic;
-using Windows.UI.Xaml;
-using Windows.UI.Xaml.Controls;
-
-namespace CSharpAnalytics.Sample.Windows8
-{
- ///
- /// A page that displays a grouped collection of items.
- ///
- [AnalyticsScreenName("Grouped Items")]
- public sealed partial class GroupedItemsPage
- {
- public GroupedItemsPage()
- {
- InitializeComponent();
- }
-
- ///
- /// Populates the page with content passed during navigation. Any saved state is also
- /// provided when recreating a page from a prior session.
- ///
- /// The parameter value passed to
- /// when this page was initially requested.
- ///
- /// A dictionary of state preserved by this page during an earlier
- /// session. This will be null the first time a page is visited.
- protected override void LoadState(Object navigationParameter, Dictionary pageState)
- {
- // TODO: Create an appropriate data model for your problem domain to replace the sample data
- var sampleDataGroups = SampleDataSource.GetGroups((String)navigationParameter);
- DefaultViewModel["Groups"] = sampleDataGroups;
- }
-
- ///
- /// Invoked when a group header is clicked.
- ///
- /// The Button used as a group header for the selected group.
- /// Event data that describes how the click was initiated.
- void Header_Click(object sender, RoutedEventArgs e)
- {
- // Determine what group the Button instance represents
- var group = ((FrameworkElement)sender).DataContext;
-
- // Navigate to the appropriate destination page, configuring the new page
- // by passing required information as a navigation parameter
- Frame.Navigate(typeof(GroupDetailPage), ((SampleDataGroup)group).UniqueId);
- }
-
- ///
- /// Invoked when an item within a group is clicked.
- ///
- /// The GridView (or ListView when the application is snapped)
- /// displaying the item clicked.
- /// Event data that describes the item clicked.
- void ItemView_ItemClick(object sender, ItemClickEventArgs e)
- {
- // Navigate to the appropriate destination page, configuring the new page
- // by passing required information as a navigation parameter
- var itemId = ((SampleDataItem)e.ClickedItem).UniqueId;
- Frame.Navigate(typeof(ItemDetailOwn), itemId);
- }
- }
-}
\ No newline at end of file
diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/ItemDetailPage.xaml b/Source/Samples/CSharpAnalytics.Sample.Windows8/ItemDetailPage.xaml
deleted file mode 100644
index f5ec470..0000000
--- a/Source/Samples/CSharpAnalytics.Sample.Windows8/ItemDetailPage.xaml
+++ /dev/null
@@ -1,181 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/ItemDetailPage.xaml.cs b/Source/Samples/CSharpAnalytics.Sample.Windows8/ItemDetailPage.xaml.cs
deleted file mode 100644
index a9f284d..0000000
--- a/Source/Samples/CSharpAnalytics.Sample.Windows8/ItemDetailPage.xaml.cs
+++ /dev/null
@@ -1,79 +0,0 @@
-using CSharpAnalytics.Sample.Windows8.Common;
-using CSharpAnalytics.Sample.Windows8.Data;
-using System;
-using System.Collections.Generic;
-using Windows.ApplicationModel.DataTransfer;
-using Windows.UI.Xaml.Controls;
-using Windows.UI.Xaml.Navigation;
-
-namespace CSharpAnalytics.Sample.Windows8
-{
- ///
- /// A page that displays details for a single item within a group while allowing gestures to
- /// flip through other items belonging to the same group.
- ///
- public sealed partial class ItemDetailOwn : ITrackOwnView
- {
- private SampleDataItem item;
-
- public ItemDetailOwn()
- {
- InitializeComponent();
- }
-
- ///
- /// Populates the page with content passed during navigation. Any saved state is also
- /// provided when recreating a page from a prior session.
- ///
- /// The parameter value passed to
- /// when this page was initially requested.
- ///
- /// A dictionary of state preserved by this page during an earlier
- /// session. This will be null the first time a page is visited.
- protected override void LoadState(Object navigationParameter, Dictionary pageState)
- {
- // Allow saved page state to override the initial item to display
- if (pageState != null && pageState.ContainsKey("SelectedItem"))
- {
- navigationParameter = pageState["SelectedItem"];
- }
-
- // TODO: Create an appropriate data model for your problem domain to replace the sample data
- item = SampleDataSource.GetItem((String)navigationParameter);
- DefaultViewModel["Group"] = item.Group;
- DefaultViewModel["Items"] = item.Group.Items;
- flipView.SelectedItem = item;
- AutoMeasurement.Client.TrackScreenView(item.Title);
-
- DataTransferManager.GetForCurrentView().DataRequested += OnDataRequested;
- }
-
- protected override void OnNavigatedFrom(NavigationEventArgs e)
- {
- base.OnNavigatedFrom(e);
- DataTransferManager.GetForCurrentView().DataRequested -= OnDataRequested;
- }
-
- private void OnDataRequested(DataTransferManager sender, DataRequestedEventArgs args)
- {
- var deferral = args.Request.GetDeferral();
- var data = args.Request.Data;
- data.SetText(item.Content);
- data.Properties.Title = item.Title;
- data.Properties.Description = item.Description;
- deferral.Complete();
- }
-
- ///
- /// Preserves state associated with this page in case the application is suspended or the
- /// page is discarded from the navigation cache. Values must conform to the serialization
- /// requirements of .
- ///
- /// An empty dictionary to be populated with serializable state.
- protected override void SaveState(Dictionary pageState)
- {
- var selectedItem = (SampleDataItem)flipView.SelectedItem;
- pageState["SelectedItem"] = selectedItem.UniqueId;
- }
- }
-}
\ No newline at end of file
diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/OptionsFlyout.xaml b/Source/Samples/CSharpAnalytics.Sample.Windows8/OptionsFlyout.xaml
deleted file mode 100644
index 936971f..0000000
--- a/Source/Samples/CSharpAnalytics.Sample.Windows8/OptionsFlyout.xaml
+++ /dev/null
@@ -1,143 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/OptionsFlyout.xaml.cs b/Source/Samples/CSharpAnalytics.Sample.Windows8/OptionsFlyout.xaml.cs
deleted file mode 100644
index 26280b6..0000000
--- a/Source/Samples/CSharpAnalytics.Sample.Windows8/OptionsFlyout.xaml.cs
+++ /dev/null
@@ -1,99 +0,0 @@
-using Windows.ApplicationModel;
-using Windows.UI.ApplicationSettings;
-using Windows.UI.Core;
-using Windows.UI.ViewManagement;
-using Windows.UI.Xaml;
-using Windows.UI.Xaml.Controls;
-using Windows.UI.Xaml.Controls.Primitives;
-using Windows.UI.Xaml.Media.Animation;
-
-namespace CSharpAnalytics.Sample.Windows8
-{
- public sealed partial class OptionsFlyout
- {
- private const int ContentAnimationOffset = 100;
-
- public OptionsFlyout()
- {
- InitializeComponent();
-
- if (!DesignMode.DesignModeEnabled)
- {
- FlyoutContent.Transitions = new TransitionCollection {
- new EntranceThemeTransition {
- FromHorizontalOffset = (SettingsPane.Edge == SettingsEdgeLocation.Right) ? ContentAnimationOffset : (ContentAnimationOffset*-1)
- }
- };
- }
- }
-
- private void OnBackButton(object sender, RoutedEventArgs e)
- {
- var parent = (Popup)Parent;
- if (parent != null)
- parent.IsOpen = false;
-
- if (ApplicationView.Value != ApplicationViewState.Snapped)
- SettingsPane.Show();
- }
- }
-
- public static class Flyout
- {
- public enum FlyoutWidth
- {
- Regular = 346,
- Wide = 646
- };
-
- private static Popup popup;
-
- public static void Open(FlyoutWidth flyoutWidth)
- where T : UserControl, new()
- {
- var windowBounds = Window.Current.Bounds;
-
- popup = new Popup {
- IsLightDismissEnabled = true,
- Height = windowBounds.Height,
- Width = (double) flyoutWidth,
- ChildTransitions = new TransitionCollection {
- new PaneThemeTransition {
- Edge = (SettingsPane.Edge == SettingsEdgeLocation.Right ? EdgeTransitionLocation.Right : EdgeTransitionLocation.Left)
- }
- },
- };
-
- Window.Current.Activated += OnWindowActivated;
-
- popup.Child = new T { Width = popup.Width, Height = popup.Height };
- popup.SetValue(Canvas.LeftProperty, SettingsPane.Edge == SettingsEdgeLocation.Right ? (windowBounds.Width - popup.Width) : 0);
- popup.SetValue(Canvas.TopProperty, 0);
- popup.Closed += PopupOnClosed;
- popup.IsOpen = true;
- }
-
- private static void PopupOnClosed(object sender, object o)
- {
- Window.Current.Activated -= OnWindowActivated;
- Close();
- }
-
- public static void Close()
- {
- var safePopup = popup;
- if (safePopup != null)
- {
- safePopup.IsOpen = false;
- popup.Closed -= PopupOnClosed;
- popup = null;
- }
- }
-
- private static void OnWindowActivated(object sender, WindowActivatedEventArgs e)
- {
- if (e.WindowActivationState == CoreWindowActivationState.Deactivated)
- Close();
- }
- }
-}
\ No newline at end of file
diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/Package.appxmanifest b/Source/Samples/CSharpAnalytics.Sample.Windows8/Package.appxmanifest
deleted file mode 100644
index 83eeb60..0000000
--- a/Source/Samples/CSharpAnalytics.Sample.Windows8/Package.appxmanifest
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
- CSharpAnalytics.Sample.Windows8
- Attack Pattern
- Assets\StoreLogo.png
-
-
- 6.2.1
- 6.2.1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/Properties/AssemblyInfo.cs b/Source/Samples/CSharpAnalytics.Sample.Windows8/Properties/AssemblyInfo.cs
deleted file mode 100644
index b030fd2..0000000
--- a/Source/Samples/CSharpAnalytics.Sample.Windows8/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-using System.Reflection;
-using System.Runtime.InteropServices;
-
-[assembly: AssemblyTitle("CSharpAnalytics.Sample.Windows8")]
-[assembly: AssemblyDescription("CSharpAnalytics sample Windows 8 application.")]
-[assembly: AssemblyCompany("Attack Pattern")]
-[assembly: AssemblyProduct("CSharpAnalytics")]
-[assembly: AssemblyCopyright("Copyright © 2012-2014 Attack Pattern LLC.")]
-
-[assembly: AssemblyVersion("1.2.0.0")]
-[assembly: AssemblyFileVersion("1.2.0.0")]
-[assembly: ComVisible(false)]
\ No newline at end of file
diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows81/App.xaml b/Source/Samples/CSharpAnalytics.Sample.Windows81/App.xaml
deleted file mode 100644
index 7b4245f..0000000
--- a/Source/Samples/CSharpAnalytics.Sample.Windows81/App.xaml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
- CSharpAnalytics sample for Windows 8.1 apps
-
-
diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows81/App.xaml.cs b/Source/Samples/CSharpAnalytics.Sample.Windows81/App.xaml.cs
deleted file mode 100644
index d56cbb1..0000000
--- a/Source/Samples/CSharpAnalytics.Sample.Windows81/App.xaml.cs
+++ /dev/null
@@ -1,142 +0,0 @@
-using Windows.UI.ApplicationSettings;
-using CSharpAnalytics.Sample.Windows81.Common;
-using System;
-using Windows.ApplicationModel;
-using Windows.ApplicationModel.Activation;
-using Windows.UI.Xaml;
-using Windows.UI.Xaml.Controls;
-using Windows.UI.Xaml.Navigation;
-
-// The Grid App template is documented at http://go.microsoft.com/fwlink/?LinkId=234226
-
-namespace CSharpAnalytics.Sample.Windows81
-{
- ///
- /// Provides application-specific behavior to supplement the default Application class.
- ///
- sealed partial class App : Application
- {
- ///
- /// Initializes the singleton Application object. This is the first line of authored code
- /// executed, and as such is the logical equivalent of main() or WinMain().
- ///
- public App()
- {
- this.InitializeComponent();
- this.Suspending += OnSuspending;
- }
-
- ///
- /// Invoked when the application is launched normally by the end user. Other entry points
- /// will be used such as when the application is launched to open a specific file.
- ///
- /// Details about the launch request and process.
- protected override async void OnLaunched(LaunchActivatedEventArgs e)
- {
- // CSharpAnalytics initialization
- AutoMeasurement.DebugWriter = d => System.Diagnostics.Debug.WriteLine(d);
- AutoMeasurement.Start(new MeasurementConfiguration("UA-319000-8", "SampleApp", "1.0"), e);
-
-#if DEBUG
- // Show graphics profiling information while debugging.
- if (System.Diagnostics.Debugger.IsAttached)
- {
- // Display the current frame rate counters
- this.DebugSettings.EnableFrameRateCounter = true;
- }
-#endif
-
- Frame rootFrame = Window.Current.Content as Frame;
-
- // Do not repeat app initialization when the Window already has content,
- // just ensure that the window is active
-
- if (rootFrame == null)
- {
- // Create a Frame to act as the navigation context and navigate to the first page
- rootFrame = new Frame();
- //Associate the frame with a SuspensionManager key
- SuspensionManager.RegisterFrame(rootFrame, "AppFrame");
- // Set the default language
- rootFrame.Language = Windows.Globalization.ApplicationLanguages.Languages[0];
-
- rootFrame.NavigationFailed += OnNavigationFailed;
-
- if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)
- {
- // Restore the saved session state only when appropriate
- try
- {
- await SuspensionManager.RestoreAsync();
- }
- catch (SuspensionManagerException)
- {
- //Something went wrong restoring state.
- //Assume there is no state and continue
- }
- }
-
- // Place the frame in the current Window
- Window.Current.Content = rootFrame;
- }
- if (rootFrame.Content == null)
- {
- // When the navigation stack isn't restored navigate to the first page,
- // configuring the new page by passing required information as a navigation
- // parameter
- rootFrame.Navigate(typeof(GroupedItemsPage), e.Arguments);
- }
-
- // CSharpAnalytics init complete
- AutoMeasurement.Attach(rootFrame);
-
- // Ensure the current window is active
- Window.Current.Activate();
- }
-
- ///
- /// Invoked when Navigation to a certain page fails
- ///
- /// The Frame which failed navigation
- /// Details about the navigation failure
- void OnNavigationFailed(object sender, NavigationFailedEventArgs e)
- {
- throw new Exception("Failed to load Page " + e.SourcePageType.FullName);
- }
-
- ///
- /// Invoked when application execution is being suspended. Application state is saved
- /// without knowing whether the application will be terminated or resumed with the contents
- /// of memory still intact.
- ///
- /// The source of the suspend request.
- /// Details about the suspend request.
- private async void OnSuspending(object sender, SuspendingEventArgs e)
- {
- var deferral = e.SuspendingOperation.GetDeferral();
- await SuspensionManager.SaveAsync();
- deferral.Complete();
- }
-
- ///
- /// Fires when the Window is created and you should sign up for charm notifications.
- ///
- /// Arguments relating to which window was created.
- protected override void OnWindowCreated(WindowCreatedEventArgs args)
- {
- base.OnWindowCreated(args);
- SettingsPane.GetForCurrentView().CommandsRequested += SettingsCommandsRequested;
- }
-
- ///
- /// Settings charm is requesting commands, register the Options flyout.
- ///
- /// Sender of the event
- /// Application Commands object to register settings with.
- private static void SettingsCommandsRequested(SettingsPane sender, SettingsPaneCommandsRequestedEventArgs args)
- {
- args.Request.ApplicationCommands
- .Add(new SettingsCommand("options", "Options", _ => new OptionsSettingsFlyout().Show()));
- }
- }
-}
diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows81/Assets/DarkGray.png b/Source/Samples/CSharpAnalytics.Sample.Windows81/Assets/DarkGray.png
deleted file mode 100644
index 6cb268a..0000000
Binary files a/Source/Samples/CSharpAnalytics.Sample.Windows81/Assets/DarkGray.png and /dev/null differ
diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows81/Assets/LightGray.png b/Source/Samples/CSharpAnalytics.Sample.Windows81/Assets/LightGray.png
deleted file mode 100644
index 6ccc22b..0000000
Binary files a/Source/Samples/CSharpAnalytics.Sample.Windows81/Assets/LightGray.png and /dev/null differ
diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows81/Assets/Logo.scale-100.png b/Source/Samples/CSharpAnalytics.Sample.Windows81/Assets/Logo.scale-100.png
deleted file mode 100644
index e26771c..0000000
Binary files a/Source/Samples/CSharpAnalytics.Sample.Windows81/Assets/Logo.scale-100.png and /dev/null differ
diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows81/Assets/MediumGray.png b/Source/Samples/CSharpAnalytics.Sample.Windows81/Assets/MediumGray.png
deleted file mode 100644
index cadb696..0000000
Binary files a/Source/Samples/CSharpAnalytics.Sample.Windows81/Assets/MediumGray.png and /dev/null differ
diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows81/Assets/SmallLogo.scale-100.png b/Source/Samples/CSharpAnalytics.Sample.Windows81/Assets/SmallLogo.scale-100.png
deleted file mode 100644
index 1eb0d9d..0000000
Binary files a/Source/Samples/CSharpAnalytics.Sample.Windows81/Assets/SmallLogo.scale-100.png and /dev/null differ
diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows81/Assets/SplashScreen.scale-100.png b/Source/Samples/CSharpAnalytics.Sample.Windows81/Assets/SplashScreen.scale-100.png
deleted file mode 100644
index c951e03..0000000
Binary files a/Source/Samples/CSharpAnalytics.Sample.Windows81/Assets/SplashScreen.scale-100.png and /dev/null differ
diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows81/Assets/StoreLogo.scale-100.png b/Source/Samples/CSharpAnalytics.Sample.Windows81/Assets/StoreLogo.scale-100.png
deleted file mode 100644
index dcb6727..0000000
Binary files a/Source/Samples/CSharpAnalytics.Sample.Windows81/Assets/StoreLogo.scale-100.png and /dev/null differ
diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows81/CSharpAnalytics.Sample.Windows81.csproj b/Source/Samples/CSharpAnalytics.Sample.Windows81/CSharpAnalytics.Sample.Windows81.csproj
deleted file mode 100644
index 8b2b580..0000000
--- a/Source/Samples/CSharpAnalytics.Sample.Windows81/CSharpAnalytics.Sample.Windows81.csproj
+++ /dev/null
@@ -1,185 +0,0 @@
-
-
-
-
- Debug
- AnyCPU
- {32DFBC46-96B4-4333-BCF3-CFCEE1621597}
- AppContainerExe
- Properties
- CSharpAnalytics.Sample.Windows81
- CSharpAnalytics.Sample.Windows81
- en-US
- 8.1
- 12
- 512
- {BC8A1FFA-BEE3-4634-8014-F334798102B3};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
- CSharpAnalytics.Sample.Windows81_TemporaryKey.pfx
- 6DB0EECD3010EAD08800E906659944F21E6494E4
-
-
- AnyCPU
- true
- full
- false
- bin\Debug\
- DEBUG;TRACE;NETFX_CORE
- prompt
- 4
-
-
- AnyCPU
- pdbonly
- true
- bin\Release\
- TRACE;NETFX_CORE
- prompt
- 4
-
-
- true
- bin\ARM\Debug\
- DEBUG;TRACE;NETFX_CORE
- ;2008
- full
- ARM
- false
- prompt
- true
-
-
- bin\ARM\Release\
- TRACE;NETFX_CORE
- true
- ;2008
- pdbonly
- ARM
- false
- prompt
- true
-
-
- true
- bin\x64\Debug\
- DEBUG;TRACE;NETFX_CORE
- ;2008
- full
- x64
- false
- prompt
- true
-
-
- bin\x64\Release\
- TRACE;NETFX_CORE
- true
- ;2008
- pdbonly
- x64
- false
- prompt
- true
-
-
- true
- bin\x86\Debug\
- DEBUG;TRACE;NETFX_CORE
- ;2008
- full
- x86
- false
- prompt
- true
-
-
- bin\x86\Release\
- TRACE;NETFX_CORE
- true
- ;2008
- pdbonly
- x86
- false
- prompt
- true
-
-
-
-
- {e1988f29-2722-4f83-a4d2-14067911f182}
- CSharpAnalytics.Windows81
-
-
-
-
- App.xaml
-
-
- GroupedItemsPage.xaml
-
-
- GroupDetailPage.xaml
-
-
- ItemDetailPage.xaml
-
-
- OptionsSettingsFlyout.xaml
-
-
-
-
-
-
-
-
-
-
- Designer
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- MSBuild:Compile
- Designer
-
-
- MSBuild:Compile
- Designer
-
-
- MSBuild:Compile
- Designer
-
-
- MSBuild:Compile
- Designer
-
-
- Designer
- MSBuild:Compile
-
-
-
- 12.0
-
-
-
-
\ No newline at end of file
diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows81/CSharpAnalytics.Sample.Windows81_TemporaryKey.pfx b/Source/Samples/CSharpAnalytics.Sample.Windows81/CSharpAnalytics.Sample.Windows81_TemporaryKey.pfx
deleted file mode 100644
index 45281cd..0000000
Binary files a/Source/Samples/CSharpAnalytics.Sample.Windows81/CSharpAnalytics.Sample.Windows81_TemporaryKey.pfx and /dev/null differ
diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows81/Common/NavigationHelper.cs b/Source/Samples/CSharpAnalytics.Sample.Windows81/Common/NavigationHelper.cs
deleted file mode 100644
index f96fc29..0000000
--- a/Source/Samples/CSharpAnalytics.Sample.Windows81/Common/NavigationHelper.cs
+++ /dev/null
@@ -1,412 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using System.Windows.Input;
-using Windows.System;
-using Windows.UI.Core;
-using Windows.UI.Xaml;
-using Windows.UI.Xaml.Controls;
-using Windows.UI.Xaml.Navigation;
-
-namespace CSharpAnalytics.Sample.Windows81.Common
-{
- ///
- /// NavigationManager aids in navigation between pages. It provides commands used to
- /// navigate back and forward as well as registers for standard mouse and keyboard
- /// shortcuts used to go back and forward. In addition it integrates SuspensionManger
- /// to handle process lifetime management and state management when navigating between
- /// pages.
- ///
- ///
- /// To make use of NavigationManager, follow these two steps or
- /// start with a BasicPage or any other Page item template other than BlankPage.
- ///
- /// 1) Create an instance of the NaivgationHelper somewhere such as in the
- /// constructor for the page and register a callback for the LoadState and
- /// SaveState events.
- ///
- /// public MyPage()
- /// {
- /// this.InitializeComponent();
- /// var navigationHelper = new NavigationHelper(this);
- /// this.navigationHelper.LoadState += navigationHelper_LoadState;
- /// this.navigationHelper.SaveState += navigationHelper_SaveState;
- /// }
- ///
- /// private async void navigationHelper_LoadState(object sender, LoadStateEventArgs e)
- /// { }
- /// private async void navigationHelper_SaveState(object sender, LoadStateEventArgs e)
- /// { }
- ///
- ///
- /// 2) Register the page to call into the NavigationManager whenever the page participates
- /// in navigation by overriding the
- /// and events.
- ///
- /// protected override void OnNavigatedTo(NavigationEventArgs e)
- /// {
- /// navigationHelper.OnNavigatedTo(e);
- /// }
- ///
- /// protected override void OnNavigatedFrom(NavigationEventArgs e)
- /// {
- /// navigationHelper.OnNavigatedFrom(e);
- /// }
- ///
- ///
- [Windows.Foundation.Metadata.WebHostHidden]
- public class NavigationHelper : DependencyObject
- {
- private Page Page { get; set; }
- private Frame Frame { get { return this.Page.Frame; } }
-
- ///
- /// Initializes a new instance of the class.
- ///
- /// A reference to the current page used for navigation.
- /// This reference allows for frame manipulation and to ensure that keyboard
- /// navigation requests only occur when the page is occupying the entire window.
- public NavigationHelper(Page page)
- {
- this.Page = page;
-
- // When this page is part of the visual tree make two changes:
- // 1) Map application view state to visual state for the page
- // 2) Handle keyboard and mouse navigation requests
- this.Page.Loaded += (sender, e) =>
- {
- // Keyboard and mouse navigation only apply when occupying the entire window
- if (this.Page.ActualHeight == Window.Current.Bounds.Height &&
- this.Page.ActualWidth == Window.Current.Bounds.Width)
- {
- // Listen to the window directly so focus isn't required
- Window.Current.CoreWindow.Dispatcher.AcceleratorKeyActivated +=
- CoreDispatcher_AcceleratorKeyActivated;
- Window.Current.CoreWindow.PointerPressed +=
- this.CoreWindow_PointerPressed;
- }
- };
-
- // Undo the same changes when the page is no longer visible
- this.Page.Unloaded += (sender, e) =>
- {
- Window.Current.CoreWindow.Dispatcher.AcceleratorKeyActivated -=
- CoreDispatcher_AcceleratorKeyActivated;
- Window.Current.CoreWindow.PointerPressed -=
- this.CoreWindow_PointerPressed;
- };
- }
-
- #region Navigation support
-
- RelayCommand _goBackCommand;
- RelayCommand _goForwardCommand;
-
- ///
- /// used to bind to the back Button's Command property
- /// for navigating to the most recent item in back navigation history, if a Frame
- /// manages its own navigation history.
- ///
- /// The is set up to use the virtual method
- /// as the Execute Action and for CanExecute.
- ///
- public RelayCommand GoBackCommand
- {
- get
- {
- if (_goBackCommand == null)
- {
- _goBackCommand = new RelayCommand(
- () => this.GoBack(),
- () => this.CanGoBack());
- }
- return _goBackCommand;
- }
- set
- {
- _goBackCommand = value;
- }
- }
- ///
- /// used for navigating to the most recent item in
- /// the forward navigation history, if a Frame manages its own navigation history.
- ///
- /// The is set up to use the virtual method
- /// as the Execute Action and for CanExecute.
- ///
- public RelayCommand GoForwardCommand
- {
- get
- {
- if (_goForwardCommand == null)
- {
- _goForwardCommand = new RelayCommand(
- () => this.GoForward(),
- () => this.CanGoForward());
- }
- return _goForwardCommand;
- }
- }
-
- ///
- /// Virtual method used by the property
- /// to determine if the can go back.
- ///
- ///
- /// true if the has at least one entry
- /// in the back navigation history.
- ///
- public virtual bool CanGoBack()
- {
- return this.Frame != null && this.Frame.CanGoBack;
- }
- ///
- /// Virtual method used by the property
- /// to determine if the can go forward.
- ///
- ///
- /// true if the has at least one entry
- /// in the forward navigation history.
- ///
- public virtual bool CanGoForward()
- {
- return this.Frame != null && this.Frame.CanGoForward;
- }
-
- ///
- /// Virtual method used by the property
- /// to invoke the method.
- ///
- public virtual void GoBack()
- {
- if (this.Frame != null && this.Frame.CanGoBack) this.Frame.GoBack();
- }
- ///
- /// Virtual method used by the property
- /// to invoke the method.
- ///
- public virtual void GoForward()
- {
- if (this.Frame != null && this.Frame.CanGoForward) this.Frame.GoForward();
- }
-
- ///
- /// Invoked on every keystroke, including system keys such as Alt key combinations, when
- /// this page is active and occupies the entire window. Used to detect keyboard navigation
- /// between pages even when the page itself doesn't have focus.
- ///
- /// Instance that triggered the event.
- /// Event data describing the conditions that led to the event.
- private void CoreDispatcher_AcceleratorKeyActivated(CoreDispatcher sender,
- AcceleratorKeyEventArgs e)
- {
- var virtualKey = e.VirtualKey;
-
- // Only investigate further when Left, Right, or the dedicated Previous or Next keys
- // are pressed
- if ((e.EventType == CoreAcceleratorKeyEventType.SystemKeyDown ||
- e.EventType == CoreAcceleratorKeyEventType.KeyDown) &&
- (virtualKey == VirtualKey.Left || virtualKey == VirtualKey.Right ||
- (int)virtualKey == 166 || (int)virtualKey == 167))
- {
- var coreWindow = Window.Current.CoreWindow;
- var downState = CoreVirtualKeyStates.Down;
- bool menuKey = (coreWindow.GetKeyState(VirtualKey.Menu) & downState) == downState;
- bool controlKey = (coreWindow.GetKeyState(VirtualKey.Control) & downState) == downState;
- bool shiftKey = (coreWindow.GetKeyState(VirtualKey.Shift) & downState) == downState;
- bool noModifiers = !menuKey && !controlKey && !shiftKey;
- bool onlyAlt = menuKey && !controlKey && !shiftKey;
-
- if (((int)virtualKey == 166 && noModifiers) ||
- (virtualKey == VirtualKey.Left && onlyAlt))
- {
- // When the previous key or Alt+Left are pressed navigate back
- e.Handled = true;
- this.GoBackCommand.Execute(null);
- }
- else if (((int)virtualKey == 167 && noModifiers) ||
- (virtualKey == VirtualKey.Right && onlyAlt))
- {
- // When the next key or Alt+Right are pressed navigate forward
- e.Handled = true;
- this.GoForwardCommand.Execute(null);
- }
- }
- }
-
- ///
- /// Invoked on every mouse click, touch screen tap, or equivalent interaction when this
- /// page is active and occupies the entire window. Used to detect browser-style next and
- /// previous mouse button clicks to navigate between pages.
- ///
- /// Instance that triggered the event.
- /// Event data describing the conditions that led to the event.
- private void CoreWindow_PointerPressed(CoreWindow sender,
- PointerEventArgs e)
- {
- var properties = e.CurrentPoint.Properties;
-
- // Ignore button chords with the left, right, and middle buttons
- if (properties.IsLeftButtonPressed || properties.IsRightButtonPressed ||
- properties.IsMiddleButtonPressed) return;
-
- // If back or foward are pressed (but not both) navigate appropriately
- bool backPressed = properties.IsXButton1Pressed;
- bool forwardPressed = properties.IsXButton2Pressed;
- if (backPressed ^ forwardPressed)
- {
- e.Handled = true;
- if (backPressed) this.GoBackCommand.Execute(null);
- if (forwardPressed) this.GoForwardCommand.Execute(null);
- }
- }
-
- #endregion
-
- #region Process lifetime management
-
- private String _pageKey;
-
- ///
- /// Register this event on the current page to populate the page
- /// with content passed during navigation as well as any saved
- /// state provided when recreating a page from a prior session.
- ///
- public event LoadStateEventHandler LoadState;
- ///
- /// Register this event on the current page to preserve
- /// state associated with the current page in case the
- /// application is suspended or the page is discarded from
- /// the navigaqtion cache.
- ///
- public event SaveStateEventHandler SaveState;
-
- ///
- /// Invoked when this page is about to be displayed in a Frame.
- /// This method calls , where all page specific
- /// navigation and process lifetime management logic should be placed.
- ///
- /// Event data that describes how this page was reached. The Parameter
- /// property provides the group to be displayed.
- public void OnNavigatedTo(NavigationEventArgs e)
- {
- var frameState = SuspensionManager.SessionStateForFrame(this.Frame);
- this._pageKey = "Page-" + this.Frame.BackStackDepth;
-
- if (e.NavigationMode == NavigationMode.New)
- {
- // Clear existing state for forward navigation when adding a new page to the
- // navigation stack
- var nextPageKey = this._pageKey;
- int nextPageIndex = this.Frame.BackStackDepth;
- while (frameState.Remove(nextPageKey))
- {
- nextPageIndex++;
- nextPageKey = "Page-" + nextPageIndex;
- }
-
- // Pass the navigation parameter to the new page
- if (this.LoadState != null)
- {
- this.LoadState(this, new LoadStateEventArgs(e.Parameter, null));
- }
- }
- else
- {
- // Pass the navigation parameter and preserved page state to the page, using
- // the same strategy for loading suspended state and recreating pages discarded
- // from cache
- if (this.LoadState != null)
- {
- this.LoadState(this, new LoadStateEventArgs(e.Parameter, (Dictionary)frameState[this._pageKey]));
- }
- }
- }
-
- ///
- /// Invoked when this page will no longer be displayed in a Frame.
- /// This method calls , where all page specific
- /// navigation and process lifetime management logic should be placed.
- ///
- /// Event data that describes how this page was reached. The Parameter
- /// property provides the group to be displayed.
- public void OnNavigatedFrom(NavigationEventArgs e)
- {
- var frameState = SuspensionManager.SessionStateForFrame(this.Frame);
- var pageState = new Dictionary();
- if (this.SaveState != null)
- {
- this.SaveState(this, new SaveStateEventArgs(pageState));
- }
- frameState[_pageKey] = pageState;
- }
-
- #endregion
- }
-
- ///
- /// Represents the method that will handle the event
- ///
- public delegate void LoadStateEventHandler(object sender, LoadStateEventArgs e);
- ///
- /// Represents the method that will handle the event
- ///
- public delegate void SaveStateEventHandler(object sender, SaveStateEventArgs e);
-
- ///
- /// Class used to hold the event data required when a page attempts to load state.
- ///
- public class LoadStateEventArgs : EventArgs
- {
- ///
- /// The parameter value passed to
- /// when this page was initially requested.
- ///
- public Object NavigationParameter { get; private set; }
- ///
- /// A dictionary of state preserved by this page during an earlier
- /// session. This will be null the first time a page is visited.
- ///
- public Dictionary PageState { get; private set; }
-
- ///
- /// Initializes a new instance of the class.
- ///
- ///
- /// The parameter value passed to
- /// when this page was initially requested.
- ///
- ///
- /// A dictionary of state preserved by this page during an earlier
- /// session. This will be null the first time a page is visited.
- ///
- public LoadStateEventArgs(Object navigationParameter, Dictionary pageState)
- : base()
- {
- this.NavigationParameter = navigationParameter;
- this.PageState = pageState;
- }
- }
- ///
- /// Class used to hold the event data required when a page attempts to save state.
- ///
- public class SaveStateEventArgs : EventArgs
- {
- ///
- /// An empty dictionary to be populated with serializable state.
- ///
- public Dictionary PageState { get; private set; }
-
- ///
- /// Initializes a new instance of the class.
- ///
- /// An empty dictionary to be populated with serializable state.
- public SaveStateEventArgs(Dictionary pageState)
- : base()
- {
- this.PageState = pageState;
- }
- }
-}
diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows81/Common/ObservableDictionary.cs b/Source/Samples/CSharpAnalytics.Sample.Windows81/Common/ObservableDictionary.cs
deleted file mode 100644
index 4177ff6..0000000
--- a/Source/Samples/CSharpAnalytics.Sample.Windows81/Common/ObservableDictionary.cs
+++ /dev/null
@@ -1,149 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using Windows.Foundation.Collections;
-
-namespace CSharpAnalytics.Sample.Windows81.Common
-{
- ///
- /// Implementation of IObservableMap that supports reentrancy for use as a default view
- /// model.
- ///
- public class ObservableDictionary : IObservableMap
- {
- private class ObservableDictionaryChangedEventArgs : IMapChangedEventArgs
- {
- public ObservableDictionaryChangedEventArgs(CollectionChange change, string key)
- {
- this.CollectionChange = change;
- this.Key = key;
- }
-
- public CollectionChange CollectionChange { get; private set; }
- public string Key { get; private set; }
- }
-
- private Dictionary _dictionary = new Dictionary();
- public event MapChangedEventHandler MapChanged;
-
- private void InvokeMapChanged(CollectionChange change, string key)
- {
- var eventHandler = MapChanged;
- if (eventHandler != null)
- {
- eventHandler(this, new ObservableDictionaryChangedEventArgs(change, key));
- }
- }
-
- public void Add(string key, object value)
- {
- this._dictionary.Add(key, value);
- this.InvokeMapChanged(CollectionChange.ItemInserted, key);
- }
-
- public void Add(KeyValuePair item)
- {
- this.Add(item.Key, item.Value);
- }
-
- public bool Remove(string key)
- {
- if (this._dictionary.Remove(key))
- {
- this.InvokeMapChanged(CollectionChange.ItemRemoved, key);
- return true;
- }
- return false;
- }
-
- public bool Remove(KeyValuePair item)
- {
- object currentValue;
- if (this._dictionary.TryGetValue(item.Key, out currentValue) &&
- Object.Equals(item.Value, currentValue) && this._dictionary.Remove(item.Key))
- {
- this.InvokeMapChanged(CollectionChange.ItemRemoved, item.Key);
- return true;
- }
- return false;
- }
-
- public object this[string key]
- {
- get
- {
- return this._dictionary[key];
- }
- set
- {
- this._dictionary[key] = value;
- this.InvokeMapChanged(CollectionChange.ItemChanged, key);
- }
- }
-
- public void Clear()
- {
- var priorKeys = this._dictionary.Keys.ToArray();
- this._dictionary.Clear();
- foreach (var key in priorKeys)
- {
- this.InvokeMapChanged(CollectionChange.ItemRemoved, key);
- }
- }
-
- public ICollection Keys
- {
- get { return this._dictionary.Keys; }
- }
-
- public bool ContainsKey(string key)
- {
- return this._dictionary.ContainsKey(key);
- }
-
- public bool TryGetValue(string key, out object value)
- {
- return this._dictionary.TryGetValue(key, out value);
- }
-
- public ICollection