From 50138722c00ceff818653511e3c1ae6468745019 Mon Sep 17 00:00:00 2001 From: "Schaub, Robert" Date: Wed, 6 Sep 2017 09:30:08 +0200 Subject: [PATCH 01/14] Prepare for first Sonova release --- NuGet/CSharpAnalytics.nuspec | 18 +++++++----------- NuGet/package.bat | 1 + .../Properties/AssemblyInfo.cs | 4 ++-- .../AutoMeasurement/BaseAutoMeasurement.cs | 2 +- .../CSharpAnalytics/Properties/AssemblyInfo.cs | 4 ++-- .../Properties/AssemblyInfo.cs | 4 ++-- 6 files changed, 15 insertions(+), 18 deletions(-) create mode 100644 NuGet/package.bat diff --git a/NuGet/CSharpAnalytics.nuspec b/NuGet/CSharpAnalytics.nuspec index e2b1dc0..7b1013a 100644 --- a/NuGet/CSharpAnalytics.nuspec +++ b/NuGet/CSharpAnalytics.nuspec @@ -1,26 +1,22 @@ - CSharpAnalytics - 1.2.1 + Sonova.CSharpAnalytics + 1.3.0 Damien Guard Attack Pattern - https://raw.github.com/AttackPattern/CSharpAnalytics/master/Source/LICENCE.txt - https://github.com/AttackPattern/CSharpAnalytics + https://raw.githubusercontent.com/sonova/CSharpAnalytics/master/Source/LICENCE.txt + https://github.com/sonova/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) + + 1st Sonova release based on CSharpAnalytics 1.2.1 + Fix for issue #47 - session start and session end time stamps registered at GA are very often too late relative to other events Copyright 2012-2015 Attack Pattern LLC google analytics, metrics, analytics, ga, measurement protocol - - - \ No newline at end of file diff --git a/NuGet/package.bat b/NuGet/package.bat new file mode 100644 index 0000000..1fa1424 --- /dev/null +++ b/NuGet/package.bat @@ -0,0 +1 @@ +nuget pack CSharpAnalytics.nuspec \ No newline at end of file diff --git a/Source/CSharpAnalytics.Tests/Properties/AssemblyInfo.cs b/Source/CSharpAnalytics.Tests/Properties/AssemblyInfo.cs index 4615e18..b2ccfb7 100644 --- a/Source/CSharpAnalytics.Tests/Properties/AssemblyInfo.cs +++ b/Source/CSharpAnalytics.Tests/Properties/AssemblyInfo.cs @@ -5,7 +5,7 @@ [assembly: AssemblyProduct("CSharpAnalytics")] [assembly: AssemblyCopyright("Copyright © 2012-2014 Attack Pattern LLC.")] -[assembly: AssemblyVersion("1.2.0.0")] -[assembly: AssemblyFileVersion("1.2.0.0")] +[assembly: AssemblyVersion("1.3.0.0")] +[assembly: AssemblyFileVersion("1.3.0.0")] [assembly: AssemblyDescriptionAttribute("Unit tests for CSharpAnalytics")] [assembly: NeutralResourcesLanguageAttribute("")] \ No newline at end of file diff --git a/Source/CSharpAnalytics/AutoMeasurement/BaseAutoMeasurement.cs b/Source/CSharpAnalytics/AutoMeasurement/BaseAutoMeasurement.cs index ea0aa7e..47153e3 100644 --- a/Source/CSharpAnalytics/AutoMeasurement/BaseAutoMeasurement.cs +++ b/Source/CSharpAnalytics/AutoMeasurement/BaseAutoMeasurement.cs @@ -57,7 +57,7 @@ public abstract class BaseAutoMeasurement /// Configuration to use, must at a minimum specify your Google Analytics ID and app name. /// Kind of launch this application experienced. /// How often to upload to the server. Lower times = more traffic but realtime. Defaults to 5 seconds. - /// var analyticsTask = AutoMeasurement.StartAsync(new MeasurementConfiguration("UA-123123123-1", "MyApp", "1.2.0.0")); + /// var analyticsTask = AutoMeasurement.StartAsync(new MeasurementConfiguration("UA-123123123-1", "MyApp", "1.3.0.0")); public async void Start(MeasurementConfiguration configuration, string launchKind, TimeSpan? uploadInterval = null) { if (!isStarted) diff --git a/Source/CSharpAnalytics/Properties/AssemblyInfo.cs b/Source/CSharpAnalytics/Properties/AssemblyInfo.cs index d6b2b08..392bba5 100644 --- a/Source/CSharpAnalytics/Properties/AssemblyInfo.cs +++ b/Source/CSharpAnalytics/Properties/AssemblyInfo.cs @@ -8,8 +8,8 @@ [assembly: AssemblyProduct("CSharpAnalytics")] [assembly: AssemblyCopyright("Copyright © 2012-2014 Attack Pattern LLC.")] -[assembly: AssemblyVersion("1.2.0.0")] -[assembly: AssemblyFileVersion("1.2.0.0")] +[assembly: AssemblyVersion("1.3.0.0")] +[assembly: AssemblyFileVersion("1.3.0.0")] [assembly: ComVisible(false)] [assembly: InternalsVisibleTo("CSharpAnalytics.Test.Net45")] diff --git a/Source/Samples/CSharpAnalytics.Sample.WinForms/Properties/AssemblyInfo.cs b/Source/Samples/CSharpAnalytics.Sample.WinForms/Properties/AssemblyInfo.cs index a289650..610d9c4 100644 --- a/Source/Samples/CSharpAnalytics.Sample.WinForms/Properties/AssemblyInfo.cs +++ b/Source/Samples/CSharpAnalytics.Sample.WinForms/Properties/AssemblyInfo.cs @@ -7,6 +7,6 @@ [assembly: AssemblyProduct("CSharpAnalytics")] [assembly: AssemblyCopyright("Copyright © 2012-2014 Attack Pattern LLC.")] -[assembly: AssemblyVersion("1.2.0.0")] -[assembly: AssemblyFileVersion("1.2.0.0")] +[assembly: AssemblyVersion("1.3.0.0")] +[assembly: AssemblyFileVersion("1.3.0.0")] [assembly: ComVisible(false)] \ No newline at end of file From 37b239b5485614d4ce74f04c6796f28a6ffaf837 Mon Sep 17 00:00:00 2001 From: "Schaub, Robert" Date: Wed, 6 Sep 2017 09:46:31 +0200 Subject: [PATCH 02/14] Fixed issue #47 Session start and session end time stamps registered at GA are very often too late relative to other events. --- .../Measurement/MeasurementAnalyticsClientTests.cs | 10 ---------- .../Measurement/MeasurementAnalyticsClient.cs | 2 +- 2 files changed, 1 insertion(+), 11 deletions(-) diff --git a/Source/CSharpAnalytics.Tests/Protocols/Measurement/MeasurementAnalyticsClientTests.cs b/Source/CSharpAnalytics.Tests/Protocols/Measurement/MeasurementAnalyticsClientTests.cs index 9c35aff..f147180 100644 --- a/Source/CSharpAnalytics.Tests/Protocols/Measurement/MeasurementAnalyticsClientTests.cs +++ b/Source/CSharpAnalytics.Tests/Protocols/Measurement/MeasurementAnalyticsClientTests.cs @@ -124,16 +124,6 @@ public void MeasurementAnalyticsClient_AdjustUriBeforeRequest_Adds_Qt_Parameter( StringAssert.Contains(actual.Query, "qt="); } - [TestMethod] - public void MeasurementAnalyticsClient_AdjustUriBeforeRequest_Does_Not_Add_Qt_Parameter_If_Sc_Parameter_Present() - { - var originalUri = new Uri("http://anything.really.com/something?sc=start#" + DateTime.UtcNow.ToString("o")); - - var actual = new MeasurementAnalyticsClient().AdjustUriBeforeRequest(originalUri); - - Assert.IsFalse(actual.Query.Contains("qt=")); - } - [TestMethod] public void MeasurementAnalyticsClient_AdjustUriBeforeRequest_Clears_Fragment() { diff --git a/Source/CSharpAnalytics/Protocols/Measurement/MeasurementAnalyticsClient.cs b/Source/CSharpAnalytics/Protocols/Measurement/MeasurementAnalyticsClient.cs index b3dadfb..5f8e60d 100644 --- a/Source/CSharpAnalytics/Protocols/Measurement/MeasurementAnalyticsClient.cs +++ b/Source/CSharpAnalytics/Protocols/Measurement/MeasurementAnalyticsClient.cs @@ -263,7 +263,7 @@ public void TrackTimedEvent(string category, string variable, TimeSpan time, str /// URI parameters to add the relative QT parameter to. private static void AddQueueTimeFromFragment(Uri uri, IDictionary parameters) { - if (String.IsNullOrWhiteSpace(uri.Fragment) || parameters.ContainsKey("sc")) return; + if (String.IsNullOrWhiteSpace(uri.Fragment)) return; var decodedFragment = uri.GetComponents(UriComponents.Fragment, UriFormat.Unescaped); DateTime utcHitTime; From e988abadd82ac5a8be7b2a01732f66c731127198 Mon Sep 17 00:00:00 2001 From: "Schaub, Robert" Date: Wed, 6 Sep 2017 10:02:37 +0200 Subject: [PATCH 03/14] Ignore nuget packages --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 8b09180..b8c03b3 100644 --- a/.gitignore +++ b/.gitignore @@ -182,4 +182,5 @@ Desktop.ini $RECYCLE.BIN/ # Roslyn VS2015 junk -*.sln.ide/ \ No newline at end of file +*.sln.ide/ +*.nupkg From c15cf984297fe17673a4c361590145dee22817f8 Mon Sep 17 00:00:00 2001 From: "Schaub, Robert" Date: Thu, 12 Oct 2017 17:23:08 +0200 Subject: [PATCH 04/14] Added MeasurementConfiguration.TrackingEndpointOverride: If set (not null) then tracking will go to this url instead of going to the original google url. In this case UseSsl has no effect. --- .../Measurement/MeasurementUriBuilderTests.cs | 19 ++++++++++++++++++- .../Measurement/MeasurementConfiguration.cs | 6 ++++++ .../Measurement/MeasurementUriBuilder.cs | 5 ++++- 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/Source/CSharpAnalytics.Tests/Protocols/Measurement/MeasurementUriBuilderTests.cs b/Source/CSharpAnalytics.Tests/Protocols/Measurement/MeasurementUriBuilderTests.cs index 64e05af..2dcc9d1 100644 --- a/Source/CSharpAnalytics.Tests/Protocols/Measurement/MeasurementUriBuilderTests.cs +++ b/Source/CSharpAnalytics.Tests/Protocols/Measurement/MeasurementUriBuilderTests.cs @@ -1,4 +1,5 @@ -using System.Linq; +using System; +using System.Linq; using CSharpAnalytics.Activities; using CSharpAnalytics.Protocols.Measurement; using CSharpAnalytics.Test.Environment; @@ -95,6 +96,22 @@ public void MeasurementUriBuilderTests_BuildUri_Is_https_And_ssl_When_Using_SSL( Assert.AreEqual("ssl.google-analytics.com", actual.Host); } + + [TestMethod] + public void MeasurementUriBuilderTests_TrackingEndpointOverride_IsUsed_DontCare_UseSsl() + { + var config = MeasurementTestHelpers.Configuration; + config.UseSsl = false; + var trackingEnpointOverride = new Uri("https://www.sonova-ga-analytics.com/collect"); + config.TrackingEndpointOverride = trackingEnpointOverride; + var builder = new MeasurementUriBuilder(config, MeasurementTestHelpers.CreateSessionManager(), MeasurementTestHelpers.CreateEnvironment()); + + var actual = builder.BuildUri(new ScreenViewActivity("Home")); + + Assert.AreEqual(trackingEnpointOverride.Host, actual.Host); + Assert.AreEqual(trackingEnpointOverride.Scheme, actual.Scheme); + } + [TestMethod] public void MeasurementUriBuilderTests_BuildUri_Carries_Forward_Cd_Parameter() { diff --git a/Source/CSharpAnalytics/Protocols/Measurement/MeasurementConfiguration.cs b/Source/CSharpAnalytics/Protocols/Measurement/MeasurementConfiguration.cs index 2c01738..31c096d 100644 --- a/Source/CSharpAnalytics/Protocols/Measurement/MeasurementConfiguration.cs +++ b/Source/CSharpAnalytics/Protocols/Measurement/MeasurementConfiguration.cs @@ -46,6 +46,12 @@ public class MeasurementConfiguration /// public bool UseSsl { get; set; } + /// + /// If set (not null) then tracking will go to this url instead of going to the original google url. + /// In this case UseSsl has no effect. + /// + public Uri TrackingEndpointOverride { get; set; } + /// /// Sample rate percentage to determine how likely new visitors will be tracked. /// diff --git a/Source/CSharpAnalytics/Protocols/Measurement/MeasurementUriBuilder.cs b/Source/CSharpAnalytics/Protocols/Measurement/MeasurementUriBuilder.cs index 24e5151..4c06f0b 100644 --- a/Source/CSharpAnalytics/Protocols/Measurement/MeasurementUriBuilder.cs +++ b/Source/CSharpAnalytics/Protocols/Measurement/MeasurementUriBuilder.cs @@ -52,7 +52,10 @@ public Uri BuildUri(MeasurementActivity activity) { var parameters = BuildParameterList(activity); CarryForwardParameters(activity, parameters); - var endpoint = configuration.UseSsl ? secureTrackingEndpoint : trackingEndpoint; + + var endpoint = configuration.TrackingEndpointOverride != null + ? configuration.TrackingEndpointOverride + : (configuration.UseSsl ? secureTrackingEndpoint : trackingEndpoint); // Fragment is only added temporarily and used to calculate queue time. // It will be removed in MeasurementAnalyticsClient.AdjustUriBeforeRequest. From 670d0bb4efdc01a7af36dc4c4a1c0971d7ea96bc Mon Sep 17 00:00:00 2001 From: "Schaub, Robert" Date: Thu, 12 Oct 2017 18:03:00 +0200 Subject: [PATCH 05/14] Update Version --- NuGet/CSharpAnalytics.nuspec | 2 +- Source/CSharpAnalytics.Tests/Properties/AssemblyInfo.cs | 4 ++-- Source/CSharpAnalytics/Properties/AssemblyInfo.cs | 4 ++-- .../Properties/AssemblyInfo.cs | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/NuGet/CSharpAnalytics.nuspec b/NuGet/CSharpAnalytics.nuspec index 7b1013a..0284e19 100644 --- a/NuGet/CSharpAnalytics.nuspec +++ b/NuGet/CSharpAnalytics.nuspec @@ -2,7 +2,7 @@ Sonova.CSharpAnalytics - 1.3.0 + 1.4.0 Damien Guard Attack Pattern https://raw.githubusercontent.com/sonova/CSharpAnalytics/master/Source/LICENCE.txt diff --git a/Source/CSharpAnalytics.Tests/Properties/AssemblyInfo.cs b/Source/CSharpAnalytics.Tests/Properties/AssemblyInfo.cs index b2ccfb7..ebfb0c4 100644 --- a/Source/CSharpAnalytics.Tests/Properties/AssemblyInfo.cs +++ b/Source/CSharpAnalytics.Tests/Properties/AssemblyInfo.cs @@ -5,7 +5,7 @@ [assembly: AssemblyProduct("CSharpAnalytics")] [assembly: AssemblyCopyright("Copyright © 2012-2014 Attack Pattern LLC.")] -[assembly: AssemblyVersion("1.3.0.0")] -[assembly: AssemblyFileVersion("1.3.0.0")] +[assembly: AssemblyVersion("1.4.0.0")] +[assembly: AssemblyFileVersion("1.4.0.0")] [assembly: AssemblyDescriptionAttribute("Unit tests for CSharpAnalytics")] [assembly: NeutralResourcesLanguageAttribute("")] \ No newline at end of file diff --git a/Source/CSharpAnalytics/Properties/AssemblyInfo.cs b/Source/CSharpAnalytics/Properties/AssemblyInfo.cs index 392bba5..ae11683 100644 --- a/Source/CSharpAnalytics/Properties/AssemblyInfo.cs +++ b/Source/CSharpAnalytics/Properties/AssemblyInfo.cs @@ -8,8 +8,8 @@ [assembly: AssemblyProduct("CSharpAnalytics")] [assembly: AssemblyCopyright("Copyright © 2012-2014 Attack Pattern LLC.")] -[assembly: AssemblyVersion("1.3.0.0")] -[assembly: AssemblyFileVersion("1.3.0.0")] +[assembly: AssemblyVersion("1.4.0.0")] +[assembly: AssemblyFileVersion("1.4.0.0")] [assembly: ComVisible(false)] [assembly: InternalsVisibleTo("CSharpAnalytics.Test.Net45")] diff --git a/Source/Samples/CSharpAnalytics.Sample.WinForms/Properties/AssemblyInfo.cs b/Source/Samples/CSharpAnalytics.Sample.WinForms/Properties/AssemblyInfo.cs index 610d9c4..003a048 100644 --- a/Source/Samples/CSharpAnalytics.Sample.WinForms/Properties/AssemblyInfo.cs +++ b/Source/Samples/CSharpAnalytics.Sample.WinForms/Properties/AssemblyInfo.cs @@ -7,6 +7,6 @@ [assembly: AssemblyProduct("CSharpAnalytics")] [assembly: AssemblyCopyright("Copyright © 2012-2014 Attack Pattern LLC.")] -[assembly: AssemblyVersion("1.3.0.0")] -[assembly: AssemblyFileVersion("1.3.0.0")] +[assembly: AssemblyVersion("1.4.0.0")] +[assembly: AssemblyFileVersion("1.4.0.0")] [assembly: ComVisible(false)] \ No newline at end of file From cce15a6fbd109a55adc3bf080c66a255c4f6c2d6 Mon Sep 17 00:00:00 2001 From: "CORP\\11rschaub" Date: Sat, 9 Mar 2019 21:38:11 +0100 Subject: [PATCH 06/14] Event Time "et": add non measurement protocol parameter, can be used by a server side dispatcher to re-adjust "qt". "et" itselve will be ignored by Google. Updated Version --- .gitignore | 3 +++ Source/CSharpAnalytics.Tests/Properties/AssemblyInfo.cs | 4 ++-- .../Protocols/Measurement/MeasurementAnalyticsClientTests.cs | 3 ++- Source/CSharpAnalytics/Properties/AssemblyInfo.cs | 4 ++-- .../Protocols/Measurement/MeasurementAnalyticsClient.cs | 3 +++ .../Properties/AssemblyInfo.cs | 4 ++-- 6 files changed, 14 insertions(+), 7 deletions(-) diff --git a/.gitignore b/.gitignore index b8c03b3..858af75 100644 --- a/.gitignore +++ b/.gitignore @@ -184,3 +184,6 @@ $RECYCLE.BIN/ # Roslyn VS2015 junk *.sln.ide/ *.nupkg + +# Visual Studio temp and user data +*/.vs/ diff --git a/Source/CSharpAnalytics.Tests/Properties/AssemblyInfo.cs b/Source/CSharpAnalytics.Tests/Properties/AssemblyInfo.cs index ebfb0c4..48c0593 100644 --- a/Source/CSharpAnalytics.Tests/Properties/AssemblyInfo.cs +++ b/Source/CSharpAnalytics.Tests/Properties/AssemblyInfo.cs @@ -5,7 +5,7 @@ [assembly: AssemblyProduct("CSharpAnalytics")] [assembly: AssemblyCopyright("Copyright © 2012-2014 Attack Pattern LLC.")] -[assembly: AssemblyVersion("1.4.0.0")] -[assembly: AssemblyFileVersion("1.4.0.0")] +[assembly: AssemblyVersion("1.5.0.0")] +[assembly: AssemblyFileVersion("1.5.0.0")] [assembly: AssemblyDescriptionAttribute("Unit tests for CSharpAnalytics")] [assembly: NeutralResourcesLanguageAttribute("")] \ No newline at end of file diff --git a/Source/CSharpAnalytics.Tests/Protocols/Measurement/MeasurementAnalyticsClientTests.cs b/Source/CSharpAnalytics.Tests/Protocols/Measurement/MeasurementAnalyticsClientTests.cs index f147180..c113d3d 100644 --- a/Source/CSharpAnalytics.Tests/Protocols/Measurement/MeasurementAnalyticsClientTests.cs +++ b/Source/CSharpAnalytics.Tests/Protocols/Measurement/MeasurementAnalyticsClientTests.cs @@ -115,13 +115,14 @@ public void MeasurementAnalyticsClient_SetCustomMetric_Decimal_Is_Sent() } [TestMethod] - public void MeasurementAnalyticsClient_AdjustUriBeforeRequest_Adds_Qt_Parameter() + public void MeasurementAnalyticsClient_AdjustUriBeforeRequest_Adds_TimeStamp_Parameters() { var originalUri = new Uri("http://anything.really.com/something#" + DateTime.UtcNow.ToString("o")); var actual = new MeasurementAnalyticsClient().AdjustUriBeforeRequest(originalUri); StringAssert.Contains(actual.Query, "qt="); + StringAssert.Contains(actual.Query, "et="); } [TestMethod] diff --git a/Source/CSharpAnalytics/Properties/AssemblyInfo.cs b/Source/CSharpAnalytics/Properties/AssemblyInfo.cs index ae11683..edcb0fe 100644 --- a/Source/CSharpAnalytics/Properties/AssemblyInfo.cs +++ b/Source/CSharpAnalytics/Properties/AssemblyInfo.cs @@ -8,8 +8,8 @@ [assembly: AssemblyProduct("CSharpAnalytics")] [assembly: AssemblyCopyright("Copyright © 2012-2014 Attack Pattern LLC.")] -[assembly: AssemblyVersion("1.4.0.0")] -[assembly: AssemblyFileVersion("1.4.0.0")] +[assembly: AssemblyVersion("1.5.0.0")] +[assembly: AssemblyFileVersion("1.5.0.0")] [assembly: ComVisible(false)] [assembly: InternalsVisibleTo("CSharpAnalytics.Test.Net45")] diff --git a/Source/CSharpAnalytics/Protocols/Measurement/MeasurementAnalyticsClient.cs b/Source/CSharpAnalytics/Protocols/Measurement/MeasurementAnalyticsClient.cs index 5f8e60d..eafad82 100644 --- a/Source/CSharpAnalytics/Protocols/Measurement/MeasurementAnalyticsClient.cs +++ b/Source/CSharpAnalytics/Protocols/Measurement/MeasurementAnalyticsClient.cs @@ -269,6 +269,9 @@ private static void AddQueueTimeFromFragment(Uri uri, IDictionary Date: Tue, 2 Jul 2019 17:53:57 +0200 Subject: [PATCH 07/14] Added suppport to WPF Net Core 3 (cherry picked from commit 92602bbb4ff4a5471ea9fd453c249ab4561f31ed) --- NuGet/CSharpAnalytics.nuspec | 4 +- Source/CSharpAnalytics.sln | 32 ++++++++++++- .../CSharpAnalytics.WPFNetCore3.csproj | 45 +++++++++++++++++++ 3 files changed, 78 insertions(+), 3 deletions(-) create mode 100644 Source/CSharpAnalytics/CSharpAnalytics.WPFNetCore3.csproj diff --git a/NuGet/CSharpAnalytics.nuspec b/NuGet/CSharpAnalytics.nuspec index 0284e19..14bb729 100644 --- a/NuGet/CSharpAnalytics.nuspec +++ b/NuGet/CSharpAnalytics.nuspec @@ -2,7 +2,7 @@ Sonova.CSharpAnalytics - 1.4.0 + 1.6.1 Damien Guard Attack Pattern https://raw.githubusercontent.com/sonova/CSharpAnalytics/master/Source/LICENCE.txt @@ -12,11 +12,13 @@ 1st Sonova release based on CSharpAnalytics 1.2.1 Fix for issue #47 - session start and session end time stamps registered at GA are very often too late relative to other events + Added support to WPF Net Core 3. Copyright 2012-2015 Attack Pattern LLC google analytics, metrics, analytics, ga, measurement protocol + \ No newline at end of file diff --git a/Source/CSharpAnalytics.sln b/Source/CSharpAnalytics.sln index 3a57d3f..52b86bf 100644 --- a/Source/CSharpAnalytics.sln +++ b/Source/CSharpAnalytics.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 14 -VisualStudioVersion = 14.0.22231.1 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.29009.5 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpAnalytics.Windows8", "CSharpAnalytics\CSharpAnalytics.Windows8.csproj", "{31872BEA-1F8A-4FF0-B796-7768A0CDF256}" EndProject @@ -52,6 +52,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpAnalytics.WindowsPhon EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpAnalytics.Sample.WindowsPhone81", "Samples\CSharpAnalytics.Sample.WindowsPhone81\CSharpAnalytics.Sample.WindowsPhone81.csproj", "{522CC2A8-71BD-4DA6-B10D-E214B0873B4D}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WPF NET Core 3", "WPF NET Core 3", "{7A5A6616-420B-473B-A828-D59E5FDE8934}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CSharpAnalytics.WPFNetCore3", "CSharpAnalytics\CSharpAnalytics.WPFNetCore3.csproj", "{0C137937-99D4-4867-851F-36479D72EE58}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -398,6 +402,26 @@ Global {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 + {0C137937-99D4-4867-851F-36479D72EE58}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0C137937-99D4-4867-851F-36479D72EE58}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0C137937-99D4-4867-851F-36479D72EE58}.Debug|ARM.ActiveCfg = Debug|Any CPU + {0C137937-99D4-4867-851F-36479D72EE58}.Debug|ARM.Build.0 = Debug|Any CPU + {0C137937-99D4-4867-851F-36479D72EE58}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {0C137937-99D4-4867-851F-36479D72EE58}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {0C137937-99D4-4867-851F-36479D72EE58}.Debug|x64.ActiveCfg = Debug|Any CPU + {0C137937-99D4-4867-851F-36479D72EE58}.Debug|x64.Build.0 = Debug|Any CPU + {0C137937-99D4-4867-851F-36479D72EE58}.Debug|x86.ActiveCfg = Debug|Any CPU + {0C137937-99D4-4867-851F-36479D72EE58}.Debug|x86.Build.0 = Debug|Any CPU + {0C137937-99D4-4867-851F-36479D72EE58}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0C137937-99D4-4867-851F-36479D72EE58}.Release|Any CPU.Build.0 = Release|Any CPU + {0C137937-99D4-4867-851F-36479D72EE58}.Release|ARM.ActiveCfg = Release|Any CPU + {0C137937-99D4-4867-851F-36479D72EE58}.Release|ARM.Build.0 = Release|Any CPU + {0C137937-99D4-4867-851F-36479D72EE58}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {0C137937-99D4-4867-851F-36479D72EE58}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {0C137937-99D4-4867-851F-36479D72EE58}.Release|x64.ActiveCfg = Release|Any CPU + {0C137937-99D4-4867-851F-36479D72EE58}.Release|x64.Build.0 = Release|Any CPU + {0C137937-99D4-4867-851F-36479D72EE58}.Release|x86.ActiveCfg = Release|Any CPU + {0C137937-99D4-4867-851F-36479D72EE58}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -419,5 +443,9 @@ Global {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} + {0C137937-99D4-4867-851F-36479D72EE58} = {7A5A6616-420B-473B-A828-D59E5FDE8934} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {8181473F-92C8-4C1D-A143-DE6AB7671CFB} EndGlobalSection EndGlobal diff --git a/Source/CSharpAnalytics/CSharpAnalytics.WPFNetCore3.csproj b/Source/CSharpAnalytics/CSharpAnalytics.WPFNetCore3.csproj new file mode 100644 index 0000000..00437bc --- /dev/null +++ b/Source/CSharpAnalytics/CSharpAnalytics.WPFNetCore3.csproj @@ -0,0 +1,45 @@ + + + + Library + netcoreapp3.0 + true + false + CSharpAnalytics + CSharpAnalytics.WPFNetCore3 + + + + true + full + false + TRACE;DEBUG;CODE_ANALYSIS + ..\..\Binaries\Debug\ + obj\Debug\ + ExtendedCorrectnessRules.ruleset + + + + false + pdbonly + true + TRACE + ..\..\Binaries\Release\ + obj\Release\ + + + + + + + + + + + + + + + + + \ No newline at end of file From e4719b5635fcc453096d8dd9b574cfa36c9fd116 Mon Sep 17 00:00:00 2001 From: Alex Tamayo Date: Wed, 25 Mar 2020 14:44:20 +0100 Subject: [PATCH 08/14] Added CSharpAnalytics repository to sonova git (cherry picked from commit 2067e9ae613f969f9647f84748e27bde371c656d) --- .gitignore | 2 + CSharpAnalytics.sln | 134 ++++++ ...ettings => CSharpAnalytics.sln.DotSettings | 0 Directory.Build.props | 18 + .../CSharpAnalytics.Test.Windows8.csproj | 181 ------- .../CSharpAnalytics.Test.Windows81.csproj | 183 ------- ...rpAnalytics.Test.Windows8_TemporaryKey.pfx | Bin 2528 -> 0 bytes ...pAnalytics.Test.Windows81_TemporaryKey.pfx | Bin 2528 -> 0 bytes Source/CSharpAnalytics.sln | 451 ------------------ .../WindowsPhone81AutoMeasurement.cs | 214 --------- .../WindowsPhoneAutoMeasurement.cs | 213 --------- .../WindowsStoreAutoMeasurement.cs | 242 ---------- .../CSharpAnalytics.Net45.csproj | 100 ---- .../CSharpAnalytics.WPFNetCore3.csproj | 45 -- .../CSharpAnalytics.Windows8.csproj | 161 ------- .../CSharpAnalytics.Windows81.csproj | 157 ------ .../CSharpAnalytics.WindowsPhone8.csproj | 137 ------ .../CSharpAnalytics.WindowsPhone81.csproj | 142 ------ .../Environment/WindowsPhone81Environment.cs | 48 -- .../Environment/WindowsPhoneEnvironment.cs | 45 -- .../Environment/WindowsStoreEnvironment.cs | 59 --- .../Properties/AssemblyInfo.cs | 18 - .../LocalFolderContractSerializer.cs | 79 --- .../SystemInfo/WindowsPhone81SystemInfo.cs | 53 -- .../SystemInfo/WindowsPhoneSystemInfo.cs | 61 --- .../SystemInfo/WindowsStoreSystemInfo.cs | 195 -------- ...Analytics.Sample.Windows8_TemporaryKey.pfx | Bin 2528 -> 0 bytes ...nalytics.Sample.Windows81_TemporaryKey.pfx | Bin 2528 -> 0 bytes .../Activities/AutoTimedEventActivityTests.cs | 0 .../Activities/ContentViewActivityTests.cs | 0 .../Activities/EventActivityTests.cs | 0 .../Activities/ExceptionActivityTests.cs | 0 .../Activities/ScreenViewActivityTests.cs | 0 .../Activities/SocialActivityTests.cs | 0 .../Activities/TimedEventActivityTests.cs | 0 .../Activities/TransactionActivityTests.cs | 0 .../TransactionItemActivityTests.cs | 0 .../AnalyticsScreenNameAttributeTests.cs | 0 .../CSharpAnalytics.Test.Net45.csproj | 8 +- .../Debugging/ParameterDefinitionTests.cs | 0 .../Environment/EnvironmentTests.cs | 0 .../Environment/TestableEnvironment.cs | 0 .../Network/BackgroundUriRequesterTests.cs | 0 .../Network/HttpClientRequesterTests.cs | 0 .../Network/HttpWebRequesterTests.cs | 0 .../Properties/AssemblyInfo.cs | 0 ...entActivityParameterBuilderTrackerTests.cs | 0 .../MeasurementAnalyticsClientTests.cs | 0 .../MeasurementConfigurationTests.cs | 0 .../Measurement/MeasurementTestHelpers.cs | 0 .../Measurement/MeasurementTrackerTests.cs | 0 .../Measurement/MeasurementUriBuilderTests.cs | 0 .../Sessions/SessionManagerTests.cs | 0 .../Sessions/SessionStateTests.cs | 0 .../Sessions/TimeoutSessionManager.cs | 0 .../Sessions/VisitorTests.cs | 0 .../CSharpAnalytics.Tests/TestHelpers.cs | 0 .../Windows8/Images/UnitTestLogo.png | Bin .../Windows8/Images/UnitTestSmallLogo.png | Bin .../Windows8/Images/UnitTestSplashScreen.png | Bin .../Windows8/Images/UnitTestStoreLogo.png | Bin .../Windows8/Package.appxmanifest | 0 .../Images/UnitTestLogo.scale-100.png | Bin .../Images/UnitTestSmallLogo.scale-100.png | Bin .../Images/UnitTestSplashScreen.scale-100.png | Bin .../Images/UnitTestStoreLogo.scale-100.png | Bin .../Windows81/Package.appxmanifest | 0 .../WindowsPhone8/App.xaml | 0 .../WindowsPhone8/App.xaml.cs | 0 .../WindowsPhone8/Assets/AlignmentGrid.png | Bin .../WindowsPhone8/Assets/ApplicationIcon.png | Bin .../Assets/Tiles/FlipCycleTileLarge.png | Bin .../Assets/Tiles/FlipCycleTileMedium.png | Bin .../Assets/Tiles/FlipCycleTileSmall.png | Bin .../CSharpAnalytics.Test.WindowsPhone8.csproj | 0 .../WindowsPhone8/LocalizedStrings.cs | 0 .../WindowsPhone8/MainPage.xaml | 0 .../WindowsPhone8/MainPage.xaml.cs | 0 .../WindowsPhone8/Properties/AppManifest.xml | 0 .../Properties/WMAppManifest.xml | 0 .../Resources/AppResources.Designer.cs | 0 .../WindowsPhone8/Resources/AppResources.resx | 0 .../Activities/AutoTimedEventActivity.cs | 0 .../Activities/ContentViewActivity.cs | 0 .../Activities/EventActivity.cs | 0 .../Activities/ExceptionActivity.cs | 0 .../Activities/MeasurementActivity.cs | 0 .../Activities/ScreenViewActivity.cs | 0 .../Activities/SocialActivity.cs | 0 .../Activities/TimedEventActivity.cs | 0 .../Activities/TransactionActivity.cs | 0 .../Activities/TransactionItemActivity.cs | 0 .../AnalyticsScreenNameAttribute.cs | 0 .../AutoMeasurement/AnalyticsUserOptions.cs | 0 .../AutoMeasurement/AutoMeasurement.cs | 0 .../AutoMeasurement/BaseAutoMeasurement.cs | 0 .../AutoMeasurement/ITrackOwnView.cs | 0 .../WinFormsAutoMeasurement.cs | 0 .../AutoMeasurement/WpfAutoMeasurement.cs | 0 .../CSharpAnalytics.WPFNetCore3.csproj | 11 + src/CSharpAnalytics/CSharpAnalytics.csproj | 22 + .../MeasurementParameterDefinitions.cs | 0 .../Debugging/ParameterDefinition.cs | 0 .../Debugging/ProtocolDebugger.cs | 0 .../Environment/IEnvironment.cs | 0 .../Environment/WinFormsEnvironment.cs | 0 .../Environment/WpfEnvironment.cs | 0 .../Network/BackgroundUriRequester.cs | 0 .../Network/ExtensionMethods.cs | 0 .../Network/HttpClientRequester.cs | 0 .../Network/HttpWebRequester.cs | 0 .../Properties/AssemblyInfo.cs | 9 + .../CSharpAnalytics/Protocols/KeyValuePair.cs | 0 .../MeasurementActivityParameterBuilder.cs | 0 .../Measurement/MeasurementAnalyticsClient.cs | 0 .../Measurement/MeasurementConfiguration.cs | 0 .../Measurement/MeasurementTracker.cs | 0 .../Measurement/MeasurementUriBuilder.cs | 0 .../Serializers/AppDataContractSerializer.cs | 0 .../Sessions/SessionManager.cs | 0 .../CSharpAnalytics/Sessions/SessionState.cs | 0 .../Sessions/TimeoutSessionManager.cs | 0 .../CSharpAnalytics/Sessions/Visitor.cs | 0 .../SystemInfo/WindowsSystemInfo.cs | 0 {Source => src}/LICENCE.txt | 0 .../CSharpAnalytics.Sample.WinForms.csproj | 4 +- .../MainForm.Designer.cs | 0 .../MainForm.cs | 0 .../MainForm.resx | 0 .../Program.cs | 0 .../Properties/AssemblyInfo.cs | 0 .../CSharpAnalytics.Sample.Windows8/App.xaml | 0 .../App.xaml.cs | 0 .../Assets/DarkGray.png | Bin .../Assets/LightGray.png | Bin .../Assets/Logo.png | Bin .../Assets/MediumGray.png | Bin .../Assets/SmallLogo.png | Bin .../Assets/SplashScreen.png | Bin .../Assets/StoreLogo.png | Bin .../CSharpAnalytics.Sample.Windows8.csproj | 0 .../CSharpAnalytics.Sample.WindowsStore.sln | 0 .../Common/BindableBase.cs | 0 .../Common/BooleanToVisibilityConverter.cs | 0 .../Common/LayoutAwarePage.cs | 0 .../Common/RichTextColumns.cs | 0 .../Common/StandardStyles.xaml | 0 .../Common/SuspensionManager.cs | 0 .../DataModel/SampleDataSource.cs | 0 .../GroupDetailPage.xaml | 0 .../GroupDetailPage.xaml.cs | 0 .../GroupedItemsPage.xaml | 0 .../GroupedItemsPage.xaml.cs | 0 .../ItemDetailPage.xaml | 0 .../ItemDetailPage.xaml.cs | 0 .../OptionsFlyout.xaml | 0 .../OptionsFlyout.xaml.cs | 0 .../Package.appxmanifest | 0 .../Properties/AssemblyInfo.cs | 0 .../CSharpAnalytics.Sample.Windows81/App.xaml | 0 .../App.xaml.cs | 0 .../Assets/DarkGray.png | Bin .../Assets/LightGray.png | Bin .../Assets/Logo.scale-100.png | Bin .../Assets/MediumGray.png | Bin .../Assets/SmallLogo.scale-100.png | Bin .../Assets/SplashScreen.scale-100.png | Bin .../Assets/StoreLogo.scale-100.png | Bin .../CSharpAnalytics.Sample.Windows81.csproj | 0 .../Common/NavigationHelper.cs | 0 .../Common/ObservableDictionary.cs | 0 .../Common/ReadMe.txt | 0 .../Common/RelayCommand.cs | 0 .../Common/SuspensionManager.cs | 0 .../DataModel/SampleData.json | 0 .../DataModel/SampleDataSource.cs | 0 .../GroupDetailPage.xaml | 0 .../GroupDetailPage.xaml.cs | 0 .../GroupedItemsPage.xaml | 0 .../GroupedItemsPage.xaml.cs | 0 .../ItemDetailPage.xaml | 0 .../ItemDetailPage.xaml.cs | 0 .../OptionsSettingsFlyout.xaml | 0 .../OptionsSettingsFlyout.xaml.cs | 0 .../Package.appxmanifest | 0 .../Properties/AssemblyInfo.cs | 0 .../App.xaml | 0 .../App.xaml.cs | 0 .../Assets/ApplicationIcon.png | Bin .../Assets/SettingsIcon.png | Bin .../Assets/Tiles/FlipCycleTileLarge.png | Bin .../Assets/Tiles/FlipCycleTileMedium.png | Bin .../Assets/Tiles/FlipCycleTileSmall.png | Bin .../Assets/Tiles/IconicTileMediumLarge.png | Bin .../Assets/Tiles/IconicTileSmall.png | Bin ...SharpAnalytics.Sample.WindowsPhone8.csproj | 0 .../DetailsPage.xaml | 0 .../DetailsPage.xaml.cs | 0 .../LocalizedStrings.cs | 0 .../MainPage.xaml | 0 .../MainPage.xaml.cs | 0 .../Properties/AppManifest.xml | 0 .../Properties/AssemblyInfo.cs | 0 .../Properties/WMAppManifest.xml | 0 .../Resources/AppResources.Designer.cs | 0 .../Resources/AppResources.resx | 0 .../SampleData/MainViewModelSampleData.xaml | 0 .../SettingsPage.xaml | 0 .../SettingsPage.xaml.cs | 0 .../ViewModels/ItemViewModel.cs | 0 .../ViewModels/MainViewModel.cs | 0 .../packages.config | 0 .../App.xaml | 0 .../App.xaml.cs | 0 .../Assets/DarkGray.png | Bin .../Assets/HubBackground.theme-dark.png | Bin .../Assets/HubBackground.theme-light.png | Bin .../Assets/LightGray.png | Bin .../Assets/Logo.scale-240.png | Bin .../Assets/MediumGray.png | Bin .../Assets/SmallLogo.scale-240.png | Bin .../Assets/SplashScreen.scale-240.png | Bin .../Assets/Square71x71Logo.scale-240.png | Bin .../Assets/StoreLogo.scale-240.png | Bin .../Assets/WideLogo.scale-240.png | Bin ...harpAnalytics.Sample.WindowsPhone81.csproj | 0 .../Common/NavigationHelper.cs | 0 .../Common/ObservableDictionary.cs | 0 .../Common/ReadMe.txt | 0 .../Common/RelayCommand.cs | 0 .../Common/SuspensionManager.cs | 0 .../DataModel/SampleData.json | 0 .../DataModel/SampleDataSource.cs | 0 .../HubPage.xaml | 0 .../HubPage.xaml.cs | 0 .../ItemPage.xaml | 0 .../ItemPage.xaml.cs | 0 .../Package.appxmanifest | 0 .../Properties/AssemblyInfo.cs | 0 .../SectionPage.xaml | 0 .../SectionPage.xaml.cs | 0 .../Strings/en-US/Resources.resw | 0 .../CSharpAnalytics.Sample.Wpf/App.config | 0 .../CSharpAnalytics.Sample.Wpf/App.xaml | 0 .../CSharpAnalytics.Sample.Wpf/App.xaml.cs | 0 .../CSharpAnalytics.Sample.Wpf.csproj | 4 +- .../MainWindow.xaml | 0 .../MainWindow.xaml.cs | 0 .../Properties/AssemblyInfo.cs | 0 .../Properties/Resources.Designer.cs | 0 .../Properties/Resources.resx | 0 .../Properties/Settings.Designer.cs | 0 .../Properties/Settings.settings | 0 253 files changed, 202 insertions(+), 2794 deletions(-) create mode 100644 CSharpAnalytics.sln rename Source/CSharpAnalytics.sln.DotSettings => CSharpAnalytics.sln.DotSettings (100%) create mode 100644 Directory.Build.props delete mode 100644 Source/CSharpAnalytics.Tests/CSharpAnalytics.Test.Windows8.csproj delete mode 100644 Source/CSharpAnalytics.Tests/CSharpAnalytics.Test.Windows81.csproj delete mode 100644 Source/CSharpAnalytics.Tests/Windows8/CSharpAnalytics.Test.Windows8_TemporaryKey.pfx delete mode 100644 Source/CSharpAnalytics.Tests/Windows81/CSharpAnalytics.Test.Windows81_TemporaryKey.pfx delete mode 100644 Source/CSharpAnalytics.sln delete mode 100644 Source/CSharpAnalytics/AutoMeasurement/WindowsPhone81AutoMeasurement.cs delete mode 100644 Source/CSharpAnalytics/AutoMeasurement/WindowsPhoneAutoMeasurement.cs delete mode 100644 Source/CSharpAnalytics/AutoMeasurement/WindowsStoreAutoMeasurement.cs delete mode 100644 Source/CSharpAnalytics/CSharpAnalytics.Net45.csproj delete mode 100644 Source/CSharpAnalytics/CSharpAnalytics.WPFNetCore3.csproj delete mode 100644 Source/CSharpAnalytics/CSharpAnalytics.Windows8.csproj delete mode 100644 Source/CSharpAnalytics/CSharpAnalytics.Windows81.csproj delete mode 100644 Source/CSharpAnalytics/CSharpAnalytics.WindowsPhone8.csproj delete mode 100644 Source/CSharpAnalytics/CSharpAnalytics.WindowsPhone81.csproj delete mode 100644 Source/CSharpAnalytics/Environment/WindowsPhone81Environment.cs delete mode 100644 Source/CSharpAnalytics/Environment/WindowsPhoneEnvironment.cs delete mode 100644 Source/CSharpAnalytics/Environment/WindowsStoreEnvironment.cs delete mode 100644 Source/CSharpAnalytics/Properties/AssemblyInfo.cs delete mode 100644 Source/CSharpAnalytics/Serializers/LocalFolderContractSerializer.cs delete mode 100644 Source/CSharpAnalytics/SystemInfo/WindowsPhone81SystemInfo.cs delete mode 100644 Source/CSharpAnalytics/SystemInfo/WindowsPhoneSystemInfo.cs delete mode 100644 Source/CSharpAnalytics/SystemInfo/WindowsStoreSystemInfo.cs delete mode 100644 Source/Samples/CSharpAnalytics.Sample.Windows8/CSharpAnalytics.Sample.Windows8_TemporaryKey.pfx delete mode 100644 Source/Samples/CSharpAnalytics.Sample.Windows81/CSharpAnalytics.Sample.Windows81_TemporaryKey.pfx rename {Source => src}/CSharpAnalytics.Tests/Activities/AutoTimedEventActivityTests.cs (100%) rename {Source => src}/CSharpAnalytics.Tests/Activities/ContentViewActivityTests.cs (100%) rename {Source => src}/CSharpAnalytics.Tests/Activities/EventActivityTests.cs (100%) rename {Source => src}/CSharpAnalytics.Tests/Activities/ExceptionActivityTests.cs (100%) rename {Source => src}/CSharpAnalytics.Tests/Activities/ScreenViewActivityTests.cs (100%) rename {Source => src}/CSharpAnalytics.Tests/Activities/SocialActivityTests.cs (100%) rename {Source => src}/CSharpAnalytics.Tests/Activities/TimedEventActivityTests.cs (100%) rename {Source => src}/CSharpAnalytics.Tests/Activities/TransactionActivityTests.cs (100%) rename {Source => src}/CSharpAnalytics.Tests/Activities/TransactionItemActivityTests.cs (100%) rename {Source => src}/CSharpAnalytics.Tests/AutoMeasurement/AnalyticsScreenNameAttributeTests.cs (100%) rename {Source => src}/CSharpAnalytics.Tests/CSharpAnalytics.Test.Net45.csproj (95%) rename {Source => src}/CSharpAnalytics.Tests/Debugging/ParameterDefinitionTests.cs (100%) rename {Source => src}/CSharpAnalytics.Tests/Environment/EnvironmentTests.cs (100%) rename {Source => src}/CSharpAnalytics.Tests/Environment/TestableEnvironment.cs (100%) rename {Source => src}/CSharpAnalytics.Tests/Network/BackgroundUriRequesterTests.cs (100%) rename {Source => src}/CSharpAnalytics.Tests/Network/HttpClientRequesterTests.cs (100%) rename {Source => src}/CSharpAnalytics.Tests/Network/HttpWebRequesterTests.cs (100%) rename {Source => src}/CSharpAnalytics.Tests/Properties/AssemblyInfo.cs (100%) rename {Source => src}/CSharpAnalytics.Tests/Protocols/Measurement/MeasurementActivityParameterBuilderTrackerTests.cs (100%) rename {Source => src}/CSharpAnalytics.Tests/Protocols/Measurement/MeasurementAnalyticsClientTests.cs (100%) rename {Source => src}/CSharpAnalytics.Tests/Protocols/Measurement/MeasurementConfigurationTests.cs (100%) rename {Source => src}/CSharpAnalytics.Tests/Protocols/Measurement/MeasurementTestHelpers.cs (100%) rename {Source => src}/CSharpAnalytics.Tests/Protocols/Measurement/MeasurementTrackerTests.cs (100%) rename {Source => src}/CSharpAnalytics.Tests/Protocols/Measurement/MeasurementUriBuilderTests.cs (100%) rename {Source => src}/CSharpAnalytics.Tests/Sessions/SessionManagerTests.cs (100%) rename {Source => src}/CSharpAnalytics.Tests/Sessions/SessionStateTests.cs (100%) rename {Source => src}/CSharpAnalytics.Tests/Sessions/TimeoutSessionManager.cs (100%) rename {Source => src}/CSharpAnalytics.Tests/Sessions/VisitorTests.cs (100%) rename {Source => src}/CSharpAnalytics.Tests/TestHelpers.cs (100%) rename {Source => src}/CSharpAnalytics.Tests/Windows8/Images/UnitTestLogo.png (100%) rename {Source => src}/CSharpAnalytics.Tests/Windows8/Images/UnitTestSmallLogo.png (100%) rename {Source => src}/CSharpAnalytics.Tests/Windows8/Images/UnitTestSplashScreen.png (100%) rename {Source => src}/CSharpAnalytics.Tests/Windows8/Images/UnitTestStoreLogo.png (100%) rename {Source => src}/CSharpAnalytics.Tests/Windows8/Package.appxmanifest (100%) rename {Source => src}/CSharpAnalytics.Tests/Windows81/Images/UnitTestLogo.scale-100.png (100%) rename {Source => src}/CSharpAnalytics.Tests/Windows81/Images/UnitTestSmallLogo.scale-100.png (100%) rename {Source => src}/CSharpAnalytics.Tests/Windows81/Images/UnitTestSplashScreen.scale-100.png (100%) rename {Source => src}/CSharpAnalytics.Tests/Windows81/Images/UnitTestStoreLogo.scale-100.png (100%) rename {Source => src}/CSharpAnalytics.Tests/Windows81/Package.appxmanifest (100%) rename {Source => src}/CSharpAnalytics.Tests/WindowsPhone8/App.xaml (100%) rename {Source => src}/CSharpAnalytics.Tests/WindowsPhone8/App.xaml.cs (100%) rename {Source => src}/CSharpAnalytics.Tests/WindowsPhone8/Assets/AlignmentGrid.png (100%) rename {Source => src}/CSharpAnalytics.Tests/WindowsPhone8/Assets/ApplicationIcon.png (100%) rename {Source => src}/CSharpAnalytics.Tests/WindowsPhone8/Assets/Tiles/FlipCycleTileLarge.png (100%) rename {Source => src}/CSharpAnalytics.Tests/WindowsPhone8/Assets/Tiles/FlipCycleTileMedium.png (100%) rename {Source => src}/CSharpAnalytics.Tests/WindowsPhone8/Assets/Tiles/FlipCycleTileSmall.png (100%) rename {Source => src}/CSharpAnalytics.Tests/WindowsPhone8/CSharpAnalytics.Test.WindowsPhone8.csproj (100%) rename {Source => src}/CSharpAnalytics.Tests/WindowsPhone8/LocalizedStrings.cs (100%) rename {Source => src}/CSharpAnalytics.Tests/WindowsPhone8/MainPage.xaml (100%) rename {Source => src}/CSharpAnalytics.Tests/WindowsPhone8/MainPage.xaml.cs (100%) rename {Source => src}/CSharpAnalytics.Tests/WindowsPhone8/Properties/AppManifest.xml (100%) rename {Source => src}/CSharpAnalytics.Tests/WindowsPhone8/Properties/WMAppManifest.xml (100%) rename {Source => src}/CSharpAnalytics.Tests/WindowsPhone8/Resources/AppResources.Designer.cs (100%) rename {Source => src}/CSharpAnalytics.Tests/WindowsPhone8/Resources/AppResources.resx (100%) rename {Source => src}/CSharpAnalytics/Activities/AutoTimedEventActivity.cs (100%) rename {Source => src}/CSharpAnalytics/Activities/ContentViewActivity.cs (100%) rename {Source => src}/CSharpAnalytics/Activities/EventActivity.cs (100%) rename {Source => src}/CSharpAnalytics/Activities/ExceptionActivity.cs (100%) rename {Source => src}/CSharpAnalytics/Activities/MeasurementActivity.cs (100%) rename {Source => src}/CSharpAnalytics/Activities/ScreenViewActivity.cs (100%) rename {Source => src}/CSharpAnalytics/Activities/SocialActivity.cs (100%) rename {Source => src}/CSharpAnalytics/Activities/TimedEventActivity.cs (100%) rename {Source => src}/CSharpAnalytics/Activities/TransactionActivity.cs (100%) rename {Source => src}/CSharpAnalytics/Activities/TransactionItemActivity.cs (100%) rename {Source => src}/CSharpAnalytics/AutoMeasurement/AnalyticsScreenNameAttribute.cs (100%) rename {Source => src}/CSharpAnalytics/AutoMeasurement/AnalyticsUserOptions.cs (100%) rename {Source => src}/CSharpAnalytics/AutoMeasurement/AutoMeasurement.cs (100%) rename {Source => src}/CSharpAnalytics/AutoMeasurement/BaseAutoMeasurement.cs (100%) rename {Source => src}/CSharpAnalytics/AutoMeasurement/ITrackOwnView.cs (100%) rename {Source => src}/CSharpAnalytics/AutoMeasurement/WinFormsAutoMeasurement.cs (100%) rename {Source => src}/CSharpAnalytics/AutoMeasurement/WpfAutoMeasurement.cs (100%) create mode 100644 src/CSharpAnalytics/CSharpAnalytics.WPFNetCore3.csproj create mode 100644 src/CSharpAnalytics/CSharpAnalytics.csproj rename {Source => src}/CSharpAnalytics/Debugging/MeasurementParameterDefinitions.cs (100%) rename {Source => src}/CSharpAnalytics/Debugging/ParameterDefinition.cs (100%) rename {Source => src}/CSharpAnalytics/Debugging/ProtocolDebugger.cs (100%) rename {Source => src}/CSharpAnalytics/Environment/IEnvironment.cs (100%) rename {Source => src}/CSharpAnalytics/Environment/WinFormsEnvironment.cs (100%) rename {Source => src}/CSharpAnalytics/Environment/WpfEnvironment.cs (100%) rename {Source => src}/CSharpAnalytics/Network/BackgroundUriRequester.cs (100%) rename {Source => src}/CSharpAnalytics/Network/ExtensionMethods.cs (100%) rename {Source => src}/CSharpAnalytics/Network/HttpClientRequester.cs (100%) rename {Source => src}/CSharpAnalytics/Network/HttpWebRequester.cs (100%) create mode 100644 src/CSharpAnalytics/Properties/AssemblyInfo.cs rename {Source => src}/CSharpAnalytics/Protocols/KeyValuePair.cs (100%) rename {Source => src}/CSharpAnalytics/Protocols/Measurement/MeasurementActivityParameterBuilder.cs (100%) rename {Source => src}/CSharpAnalytics/Protocols/Measurement/MeasurementAnalyticsClient.cs (100%) rename {Source => src}/CSharpAnalytics/Protocols/Measurement/MeasurementConfiguration.cs (100%) rename {Source => src}/CSharpAnalytics/Protocols/Measurement/MeasurementTracker.cs (100%) rename {Source => src}/CSharpAnalytics/Protocols/Measurement/MeasurementUriBuilder.cs (100%) rename {Source => src}/CSharpAnalytics/Serializers/AppDataContractSerializer.cs (100%) rename {Source => src}/CSharpAnalytics/Sessions/SessionManager.cs (100%) rename {Source => src}/CSharpAnalytics/Sessions/SessionState.cs (100%) rename {Source => src}/CSharpAnalytics/Sessions/TimeoutSessionManager.cs (100%) rename {Source => src}/CSharpAnalytics/Sessions/Visitor.cs (100%) rename {Source => src}/CSharpAnalytics/SystemInfo/WindowsSystemInfo.cs (100%) rename {Source => src}/LICENCE.txt (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WinForms/CSharpAnalytics.Sample.WinForms.csproj (97%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WinForms/MainForm.Designer.cs (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WinForms/MainForm.cs (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WinForms/MainForm.resx (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WinForms/Program.cs (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WinForms/Properties/AssemblyInfo.cs (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Windows8/App.xaml (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Windows8/App.xaml.cs (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Windows8/Assets/DarkGray.png (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Windows8/Assets/LightGray.png (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Windows8/Assets/Logo.png (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Windows8/Assets/MediumGray.png (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Windows8/Assets/SmallLogo.png (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Windows8/Assets/SplashScreen.png (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Windows8/Assets/StoreLogo.png (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Windows8/CSharpAnalytics.Sample.Windows8.csproj (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Windows8/CSharpAnalytics.Sample.WindowsStore.sln (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Windows8/Common/BindableBase.cs (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Windows8/Common/BooleanToVisibilityConverter.cs (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Windows8/Common/LayoutAwarePage.cs (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Windows8/Common/RichTextColumns.cs (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Windows8/Common/StandardStyles.xaml (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Windows8/Common/SuspensionManager.cs (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Windows8/DataModel/SampleDataSource.cs (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Windows8/GroupDetailPage.xaml (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Windows8/GroupDetailPage.xaml.cs (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Windows8/GroupedItemsPage.xaml (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Windows8/GroupedItemsPage.xaml.cs (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Windows8/ItemDetailPage.xaml (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Windows8/ItemDetailPage.xaml.cs (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Windows8/OptionsFlyout.xaml (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Windows8/OptionsFlyout.xaml.cs (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Windows8/Package.appxmanifest (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Windows8/Properties/AssemblyInfo.cs (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Windows81/App.xaml (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Windows81/App.xaml.cs (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Windows81/Assets/DarkGray.png (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Windows81/Assets/LightGray.png (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Windows81/Assets/Logo.scale-100.png (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Windows81/Assets/MediumGray.png (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Windows81/Assets/SmallLogo.scale-100.png (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Windows81/Assets/SplashScreen.scale-100.png (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Windows81/Assets/StoreLogo.scale-100.png (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Windows81/CSharpAnalytics.Sample.Windows81.csproj (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Windows81/Common/NavigationHelper.cs (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Windows81/Common/ObservableDictionary.cs (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Windows81/Common/ReadMe.txt (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Windows81/Common/RelayCommand.cs (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Windows81/Common/SuspensionManager.cs (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Windows81/DataModel/SampleData.json (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Windows81/DataModel/SampleDataSource.cs (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Windows81/GroupDetailPage.xaml (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Windows81/GroupDetailPage.xaml.cs (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Windows81/GroupedItemsPage.xaml (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Windows81/GroupedItemsPage.xaml.cs (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Windows81/ItemDetailPage.xaml (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Windows81/ItemDetailPage.xaml.cs (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Windows81/OptionsSettingsFlyout.xaml (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Windows81/OptionsSettingsFlyout.xaml.cs (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Windows81/Package.appxmanifest (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Windows81/Properties/AssemblyInfo.cs (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone8/App.xaml (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone8/App.xaml.cs (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone8/Assets/ApplicationIcon.png (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone8/Assets/SettingsIcon.png (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone8/Assets/Tiles/FlipCycleTileLarge.png (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone8/Assets/Tiles/FlipCycleTileMedium.png (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone8/Assets/Tiles/FlipCycleTileSmall.png (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone8/Assets/Tiles/IconicTileMediumLarge.png (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone8/Assets/Tiles/IconicTileSmall.png (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone8/CSharpAnalytics.Sample.WindowsPhone8.csproj (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone8/DetailsPage.xaml (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone8/DetailsPage.xaml.cs (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone8/LocalizedStrings.cs (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone8/MainPage.xaml (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone8/MainPage.xaml.cs (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone8/Properties/AppManifest.xml (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone8/Properties/AssemblyInfo.cs (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone8/Properties/WMAppManifest.xml (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone8/Resources/AppResources.Designer.cs (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone8/Resources/AppResources.resx (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone8/SampleData/MainViewModelSampleData.xaml (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone8/SettingsPage.xaml (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone8/SettingsPage.xaml.cs (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone8/ViewModels/ItemViewModel.cs (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone8/ViewModels/MainViewModel.cs (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone8/packages.config (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone81/App.xaml (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone81/App.xaml.cs (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/DarkGray.png (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/HubBackground.theme-dark.png (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/HubBackground.theme-light.png (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/LightGray.png (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/Logo.scale-240.png (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/MediumGray.png (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/SmallLogo.scale-240.png (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/SplashScreen.scale-240.png (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/Square71x71Logo.scale-240.png (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/StoreLogo.scale-240.png (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/WideLogo.scale-240.png (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone81/CSharpAnalytics.Sample.WindowsPhone81.csproj (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone81/Common/NavigationHelper.cs (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone81/Common/ObservableDictionary.cs (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone81/Common/ReadMe.txt (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone81/Common/RelayCommand.cs (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone81/Common/SuspensionManager.cs (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone81/DataModel/SampleData.json (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone81/DataModel/SampleDataSource.cs (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone81/HubPage.xaml (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone81/HubPage.xaml.cs (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone81/ItemPage.xaml (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone81/ItemPage.xaml.cs (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone81/Package.appxmanifest (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone81/Properties/AssemblyInfo.cs (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone81/SectionPage.xaml (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone81/SectionPage.xaml.cs (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.WindowsPhone81/Strings/en-US/Resources.resw (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Wpf/App.config (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Wpf/App.xaml (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Wpf/App.xaml.cs (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Wpf/CSharpAnalytics.Sample.Wpf.csproj (98%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Wpf/MainWindow.xaml (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Wpf/MainWindow.xaml.cs (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Wpf/Properties/AssemblyInfo.cs (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Wpf/Properties/Resources.Designer.cs (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Wpf/Properties/Resources.resx (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Wpf/Properties/Settings.Designer.cs (100%) rename {Source => src}/Samples/CSharpAnalytics.Sample.Wpf/Properties/Settings.settings (100%) diff --git a/.gitignore b/.gitignore index 858af75..ec1bd12 100644 --- a/.gitignore +++ b/.gitignore @@ -187,3 +187,5 @@ $RECYCLE.BIN/ # Visual Studio temp and user data */.vs/ +/Source/.idea +.idea/ diff --git a/CSharpAnalytics.sln b/CSharpAnalytics.sln new file mode 100644 index 0000000..bdd02dd --- /dev/null +++ b/CSharpAnalytics.sln @@ -0,0 +1,134 @@ + +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("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".NET Framework", ".NET Framework", "{B6D30B2A-B2CC-4BAD-A5AB-8ABD7B665EE7}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpAnalytics.Test.Net45", "src\CSharpAnalytics.Tests\CSharpAnalytics.Test.Net45.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 + NuGet\CSharpAnalytics.nuspec = NuGet\CSharpAnalytics.nuspec + src\LICENCE.txt = src\LICENCE.txt + README.md = .README.md + 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 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WPF NET Core 3", "WPF NET Core 3", "{7A5A6616-420B-473B-A828-D59E5FDE8934}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CSharpAnalytics.WPFNetCore3", "src\CSharpAnalytics\CSharpAnalytics.WPFNetCore3.csproj", "{0C137937-99D4-4867-851F-36479D72EE58}" +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 + {0C137937-99D4-4867-851F-36479D72EE58}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0C137937-99D4-4867-851F-36479D72EE58}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0C137937-99D4-4867-851F-36479D72EE58}.Debug|ARM.ActiveCfg = Debug|Any CPU + {0C137937-99D4-4867-851F-36479D72EE58}.Debug|ARM.Build.0 = Debug|Any CPU + {0C137937-99D4-4867-851F-36479D72EE58}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {0C137937-99D4-4867-851F-36479D72EE58}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {0C137937-99D4-4867-851F-36479D72EE58}.Debug|x64.ActiveCfg = Debug|Any CPU + {0C137937-99D4-4867-851F-36479D72EE58}.Debug|x64.Build.0 = Debug|Any CPU + {0C137937-99D4-4867-851F-36479D72EE58}.Debug|x86.ActiveCfg = Debug|Any CPU + {0C137937-99D4-4867-851F-36479D72EE58}.Debug|x86.Build.0 = Debug|Any CPU + {0C137937-99D4-4867-851F-36479D72EE58}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0C137937-99D4-4867-851F-36479D72EE58}.Release|Any CPU.Build.0 = Release|Any CPU + {0C137937-99D4-4867-851F-36479D72EE58}.Release|ARM.ActiveCfg = Release|Any CPU + {0C137937-99D4-4867-851F-36479D72EE58}.Release|ARM.Build.0 = Release|Any CPU + {0C137937-99D4-4867-851F-36479D72EE58}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {0C137937-99D4-4867-851F-36479D72EE58}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {0C137937-99D4-4867-851F-36479D72EE58}.Release|x64.ActiveCfg = Release|Any CPU + {0C137937-99D4-4867-851F-36479D72EE58}.Release|x64.Build.0 = Release|Any CPU + {0C137937-99D4-4867-851F-36479D72EE58}.Release|x86.ActiveCfg = Release|Any CPU + {0C137937-99D4-4867-851F-36479D72EE58}.Release|x86.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {0334B071-1FB1-4372-B500-4BC58A11EE59} = {B6D30B2A-B2CC-4BAD-A5AB-8ABD7B665EE7} + {0BCC678D-7C68-4A6F-AE96-E1EEE2C217DA} = {B6D30B2A-B2CC-4BAD-A5AB-8ABD7B665EE7} + {07DDA3AD-EE3B-4FE5-B532-059629C6A24E} = {3F625E98-D620-4CF3-BD83-5C97B7360496} + {3F625E98-D620-4CF3-BD83-5C97B7360496} = {B6D30B2A-B2CC-4BAD-A5AB-8ABD7B665EE7} + {A599EEEA-FC89-47FB-B8A9-DFD16FC3201D} = {3F625E98-D620-4CF3-BD83-5C97B7360496} + {0C137937-99D4-4867-851F-36479D72EE58} = {7A5A6616-420B-473B-A828-D59E5FDE8934} + 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..d1cf568 --- /dev/null +++ b/Directory.Build.props @@ -0,0 +1,18 @@ + + + CSharpAnalytics + 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.0 + dev + 4 + true + prompt + AnyCPU + + \ 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/Windows8/CSharpAnalytics.Test.Windows8_TemporaryKey.pfx b/Source/CSharpAnalytics.Tests/Windows8/CSharpAnalytics.Test.Windows8_TemporaryKey.pfx deleted file mode 100644 index 79cb9baa3c054caa7baf8c52b0379864675faacf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2528 zcmY+Ec|6qX7stP2X6z6blH9B64K0a>&PDj^E`0 zv4Qf59ElJj$6Y3lMG>L<|FNK-Aw=jR6Tf4gSyrz9RdI8ISn`RG? zjdgJbDs%4d9%H>c4;~uFBd>jkA-zR-xVBFWJYD^;d^Bw%z$@aKWN@$kG(x|kq_*7k z+Jhra{j>gId#!wEgtAXy^W}Bf6?s8(2t|whR}Im^Tq;PqA#w~hZ+gkXI6P_OOf5^@ zAu+y6E>G>+?DyKFL%79^vhE?*d9tiy!P`E^1s9{J1d&-skmA&r)QL{IRv+%F)Y*o` zz>gl$>LzoNiF-S#!qlb+Lth4`OmFl~VoYi$yua0oC1tgVOHJj0M73mm)N%KRP`hea z%Uvap?3vRWSwhErzeLfNA&{fi+_8!RM8AA>vZz!?KtluVoKT!Jhm#d4g#lO4zp6`P zW2Baj24%R^yw=#OBwX#Q4wu%!+d2ya29@H}po(RZ@9OCr_zjoAAuolTP6N!Aha)>D zyPFvzmTQt$^Ee0UlR=5p4rsm;CZyao7&(qk-nCuJr4A^~=V@WEk*+M4jG@(J6k~!t zM%$Qc=ut}D>x7R_yKU`xXL+enAKC_M>a)|n6&f8agcfeoF*C*;1YUJfvfxIe=t7Q` zN!&rGk)G(pyQ`-1S*`x%ryVN=OM1I`5;N+Ow*IhpxFQjKvjRRkG1sMSd3)BVZ{*Vc zQo-sdPrd>zaO!5%z~_^N2y#BbO>lQ`Ckq)Q-0z)jwWM2AkzMcdm7rFy9~Jfm)kZc*v3^~&x+#bYE`d5G}w*oKOiwC zlDj`N8=c@;=bPNKmr{BZVf6jtmmCWhaVJy;4%>KZbCH~x140SC=W@dtB2laTqsWi? zS!Lm|3D>siwOB9v3SF5yK8YEdM`9JVsDgoA{-5U8SYNto2P!e|ZGXJSq$Nwkc!?cYZwG zzp6?)E1|`RU*k4Do|YH59eN=*oT9z1car)FGmq$!;gITd;1~wajmP4(&o{Zv;DO;U?86eyr97)vY&$>%le8G2xc5cL7Ct zdbP+Rwb_|bx7)@2sb%tdbz{^~mIId|tk2VZl8OxTBd#BdnoTjUQnZ{kFeli^ zd5;me;q)}S0TFg$xZbIxu*4x6p>Z2g-mThu_F}`yV0nHa1yVUh%6mELu3x;$%F+%z z78R+|#0gGa$m6d&%ALt0X*Qb}O^jtvy<8iCAWPq+nrXk1qk2B0xFh4_Ez22tnzYx6 z?F5+S5lKH?qJ>Ai;q#EvJwZ7sG?l!z9$kL88oRaoba?ZgC!ZXrilGV=LA$AOWsGtZ z)6O^}4!r}#Hw*UaSRUQXZ$hiaOG9whwta}r9wPpYR0q6=((9zDSi@PoQcYD%R7CizgRpPTj_imjngT9 zup1xWkQqVAB)^$PoS#%0o(XxTWwYYx1DCDzKP6?a)`vQWI)P$ig(|?nEFutot+KDS tnE_LZ;v;W1v2c;nUs2gm2*2;dLbT^nkt99Zauk~acYg9=LGj1O`x{J)h5-No 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 82335c33175052a78f1f395c95f6c074fd338a80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2528 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 rg+W4<=ZXyxNV9v{A7P@xWxv - /// 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.WPFNetCore3.csproj b/Source/CSharpAnalytics/CSharpAnalytics.WPFNetCore3.csproj deleted file mode 100644 index 00437bc..0000000 --- a/Source/CSharpAnalytics/CSharpAnalytics.WPFNetCore3.csproj +++ /dev/null @@ -1,45 +0,0 @@ - - - - Library - netcoreapp3.0 - true - false - CSharpAnalytics - CSharpAnalytics.WPFNetCore3 - - - - true - full - false - TRACE;DEBUG;CODE_ANALYSIS - ..\..\Binaries\Debug\ - obj\Debug\ - ExtendedCorrectnessRules.ruleset - - - - false - pdbonly - true - TRACE - ..\..\Binaries\Release\ - obj\Release\ - - - - - - - - - - - - - - - - - \ 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 edcb0fe..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.5.0.0")] -[assembly: AssemblyFileVersion("1.5.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.Windows8/CSharpAnalytics.Sample.Windows8_TemporaryKey.pfx b/Source/Samples/CSharpAnalytics.Sample.Windows8/CSharpAnalytics.Sample.Windows8_TemporaryKey.pfx deleted file mode 100644 index b574ee2a9ea0476cc4a3c7e1c7078805ad60fde7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2528 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 diff --git a/Source/CSharpAnalytics.Tests/Activities/AutoTimedEventActivityTests.cs b/src/CSharpAnalytics.Tests/Activities/AutoTimedEventActivityTests.cs similarity index 100% rename from Source/CSharpAnalytics.Tests/Activities/AutoTimedEventActivityTests.cs rename to src/CSharpAnalytics.Tests/Activities/AutoTimedEventActivityTests.cs diff --git a/Source/CSharpAnalytics.Tests/Activities/ContentViewActivityTests.cs b/src/CSharpAnalytics.Tests/Activities/ContentViewActivityTests.cs similarity index 100% rename from Source/CSharpAnalytics.Tests/Activities/ContentViewActivityTests.cs rename to src/CSharpAnalytics.Tests/Activities/ContentViewActivityTests.cs diff --git a/Source/CSharpAnalytics.Tests/Activities/EventActivityTests.cs b/src/CSharpAnalytics.Tests/Activities/EventActivityTests.cs similarity index 100% rename from Source/CSharpAnalytics.Tests/Activities/EventActivityTests.cs rename to src/CSharpAnalytics.Tests/Activities/EventActivityTests.cs diff --git a/Source/CSharpAnalytics.Tests/Activities/ExceptionActivityTests.cs b/src/CSharpAnalytics.Tests/Activities/ExceptionActivityTests.cs similarity index 100% rename from Source/CSharpAnalytics.Tests/Activities/ExceptionActivityTests.cs rename to src/CSharpAnalytics.Tests/Activities/ExceptionActivityTests.cs diff --git a/Source/CSharpAnalytics.Tests/Activities/ScreenViewActivityTests.cs b/src/CSharpAnalytics.Tests/Activities/ScreenViewActivityTests.cs similarity index 100% rename from Source/CSharpAnalytics.Tests/Activities/ScreenViewActivityTests.cs rename to src/CSharpAnalytics.Tests/Activities/ScreenViewActivityTests.cs diff --git a/Source/CSharpAnalytics.Tests/Activities/SocialActivityTests.cs b/src/CSharpAnalytics.Tests/Activities/SocialActivityTests.cs similarity index 100% rename from Source/CSharpAnalytics.Tests/Activities/SocialActivityTests.cs rename to src/CSharpAnalytics.Tests/Activities/SocialActivityTests.cs diff --git a/Source/CSharpAnalytics.Tests/Activities/TimedEventActivityTests.cs b/src/CSharpAnalytics.Tests/Activities/TimedEventActivityTests.cs similarity index 100% rename from Source/CSharpAnalytics.Tests/Activities/TimedEventActivityTests.cs rename to src/CSharpAnalytics.Tests/Activities/TimedEventActivityTests.cs diff --git a/Source/CSharpAnalytics.Tests/Activities/TransactionActivityTests.cs b/src/CSharpAnalytics.Tests/Activities/TransactionActivityTests.cs similarity index 100% rename from Source/CSharpAnalytics.Tests/Activities/TransactionActivityTests.cs rename to src/CSharpAnalytics.Tests/Activities/TransactionActivityTests.cs diff --git a/Source/CSharpAnalytics.Tests/Activities/TransactionItemActivityTests.cs b/src/CSharpAnalytics.Tests/Activities/TransactionItemActivityTests.cs similarity index 100% rename from Source/CSharpAnalytics.Tests/Activities/TransactionItemActivityTests.cs rename to src/CSharpAnalytics.Tests/Activities/TransactionItemActivityTests.cs diff --git a/Source/CSharpAnalytics.Tests/AutoMeasurement/AnalyticsScreenNameAttributeTests.cs b/src/CSharpAnalytics.Tests/AutoMeasurement/AnalyticsScreenNameAttributeTests.cs similarity index 100% rename from Source/CSharpAnalytics.Tests/AutoMeasurement/AnalyticsScreenNameAttributeTests.cs rename to src/CSharpAnalytics.Tests/AutoMeasurement/AnalyticsScreenNameAttributeTests.cs diff --git a/Source/CSharpAnalytics.Tests/CSharpAnalytics.Test.Net45.csproj b/src/CSharpAnalytics.Tests/CSharpAnalytics.Test.Net45.csproj similarity index 95% rename from Source/CSharpAnalytics.Tests/CSharpAnalytics.Test.Net45.csproj rename to src/CSharpAnalytics.Tests/CSharpAnalytics.Test.Net45.csproj index b8171fb..802d404 100644 --- a/Source/CSharpAnalytics.Tests/CSharpAnalytics.Test.Net45.csproj +++ b/src/CSharpAnalytics.Tests/CSharpAnalytics.Test.Net45.csproj @@ -21,8 +21,6 @@ true full false - bin\Debug\Net45\ - obj\Debug\Net45\ TRACE;DEBUG;NET45 prompt 4 @@ -31,8 +29,6 @@ pdbonly true - bin\Release\Net45\ - obj\Release\Net45\ TRACE;NET45 prompt 4 @@ -83,9 +79,9 @@ - + {0334b071-1fb1-4372-b500-4bc58a11ee59} - CSharpAnalytics.Net45 + CSharpAnalytics diff --git a/Source/CSharpAnalytics.Tests/Debugging/ParameterDefinitionTests.cs b/src/CSharpAnalytics.Tests/Debugging/ParameterDefinitionTests.cs similarity index 100% rename from Source/CSharpAnalytics.Tests/Debugging/ParameterDefinitionTests.cs rename to src/CSharpAnalytics.Tests/Debugging/ParameterDefinitionTests.cs diff --git a/Source/CSharpAnalytics.Tests/Environment/EnvironmentTests.cs b/src/CSharpAnalytics.Tests/Environment/EnvironmentTests.cs similarity index 100% rename from Source/CSharpAnalytics.Tests/Environment/EnvironmentTests.cs rename to src/CSharpAnalytics.Tests/Environment/EnvironmentTests.cs diff --git a/Source/CSharpAnalytics.Tests/Environment/TestableEnvironment.cs b/src/CSharpAnalytics.Tests/Environment/TestableEnvironment.cs similarity index 100% rename from Source/CSharpAnalytics.Tests/Environment/TestableEnvironment.cs rename to src/CSharpAnalytics.Tests/Environment/TestableEnvironment.cs diff --git a/Source/CSharpAnalytics.Tests/Network/BackgroundUriRequesterTests.cs b/src/CSharpAnalytics.Tests/Network/BackgroundUriRequesterTests.cs similarity index 100% rename from Source/CSharpAnalytics.Tests/Network/BackgroundUriRequesterTests.cs rename to src/CSharpAnalytics.Tests/Network/BackgroundUriRequesterTests.cs diff --git a/Source/CSharpAnalytics.Tests/Network/HttpClientRequesterTests.cs b/src/CSharpAnalytics.Tests/Network/HttpClientRequesterTests.cs similarity index 100% rename from Source/CSharpAnalytics.Tests/Network/HttpClientRequesterTests.cs rename to src/CSharpAnalytics.Tests/Network/HttpClientRequesterTests.cs diff --git a/Source/CSharpAnalytics.Tests/Network/HttpWebRequesterTests.cs b/src/CSharpAnalytics.Tests/Network/HttpWebRequesterTests.cs similarity index 100% rename from Source/CSharpAnalytics.Tests/Network/HttpWebRequesterTests.cs rename to src/CSharpAnalytics.Tests/Network/HttpWebRequesterTests.cs diff --git a/Source/CSharpAnalytics.Tests/Properties/AssemblyInfo.cs b/src/CSharpAnalytics.Tests/Properties/AssemblyInfo.cs similarity index 100% rename from Source/CSharpAnalytics.Tests/Properties/AssemblyInfo.cs rename to src/CSharpAnalytics.Tests/Properties/AssemblyInfo.cs diff --git a/Source/CSharpAnalytics.Tests/Protocols/Measurement/MeasurementActivityParameterBuilderTrackerTests.cs b/src/CSharpAnalytics.Tests/Protocols/Measurement/MeasurementActivityParameterBuilderTrackerTests.cs similarity index 100% rename from Source/CSharpAnalytics.Tests/Protocols/Measurement/MeasurementActivityParameterBuilderTrackerTests.cs rename to src/CSharpAnalytics.Tests/Protocols/Measurement/MeasurementActivityParameterBuilderTrackerTests.cs diff --git a/Source/CSharpAnalytics.Tests/Protocols/Measurement/MeasurementAnalyticsClientTests.cs b/src/CSharpAnalytics.Tests/Protocols/Measurement/MeasurementAnalyticsClientTests.cs similarity index 100% rename from Source/CSharpAnalytics.Tests/Protocols/Measurement/MeasurementAnalyticsClientTests.cs rename to src/CSharpAnalytics.Tests/Protocols/Measurement/MeasurementAnalyticsClientTests.cs diff --git a/Source/CSharpAnalytics.Tests/Protocols/Measurement/MeasurementConfigurationTests.cs b/src/CSharpAnalytics.Tests/Protocols/Measurement/MeasurementConfigurationTests.cs similarity index 100% rename from Source/CSharpAnalytics.Tests/Protocols/Measurement/MeasurementConfigurationTests.cs rename to src/CSharpAnalytics.Tests/Protocols/Measurement/MeasurementConfigurationTests.cs diff --git a/Source/CSharpAnalytics.Tests/Protocols/Measurement/MeasurementTestHelpers.cs b/src/CSharpAnalytics.Tests/Protocols/Measurement/MeasurementTestHelpers.cs similarity index 100% rename from Source/CSharpAnalytics.Tests/Protocols/Measurement/MeasurementTestHelpers.cs rename to src/CSharpAnalytics.Tests/Protocols/Measurement/MeasurementTestHelpers.cs diff --git a/Source/CSharpAnalytics.Tests/Protocols/Measurement/MeasurementTrackerTests.cs b/src/CSharpAnalytics.Tests/Protocols/Measurement/MeasurementTrackerTests.cs similarity index 100% rename from Source/CSharpAnalytics.Tests/Protocols/Measurement/MeasurementTrackerTests.cs rename to src/CSharpAnalytics.Tests/Protocols/Measurement/MeasurementTrackerTests.cs diff --git a/Source/CSharpAnalytics.Tests/Protocols/Measurement/MeasurementUriBuilderTests.cs b/src/CSharpAnalytics.Tests/Protocols/Measurement/MeasurementUriBuilderTests.cs similarity index 100% rename from Source/CSharpAnalytics.Tests/Protocols/Measurement/MeasurementUriBuilderTests.cs rename to src/CSharpAnalytics.Tests/Protocols/Measurement/MeasurementUriBuilderTests.cs diff --git a/Source/CSharpAnalytics.Tests/Sessions/SessionManagerTests.cs b/src/CSharpAnalytics.Tests/Sessions/SessionManagerTests.cs similarity index 100% rename from Source/CSharpAnalytics.Tests/Sessions/SessionManagerTests.cs rename to src/CSharpAnalytics.Tests/Sessions/SessionManagerTests.cs diff --git a/Source/CSharpAnalytics.Tests/Sessions/SessionStateTests.cs b/src/CSharpAnalytics.Tests/Sessions/SessionStateTests.cs similarity index 100% rename from Source/CSharpAnalytics.Tests/Sessions/SessionStateTests.cs rename to src/CSharpAnalytics.Tests/Sessions/SessionStateTests.cs diff --git a/Source/CSharpAnalytics.Tests/Sessions/TimeoutSessionManager.cs b/src/CSharpAnalytics.Tests/Sessions/TimeoutSessionManager.cs similarity index 100% rename from Source/CSharpAnalytics.Tests/Sessions/TimeoutSessionManager.cs rename to src/CSharpAnalytics.Tests/Sessions/TimeoutSessionManager.cs diff --git a/Source/CSharpAnalytics.Tests/Sessions/VisitorTests.cs b/src/CSharpAnalytics.Tests/Sessions/VisitorTests.cs similarity index 100% rename from Source/CSharpAnalytics.Tests/Sessions/VisitorTests.cs rename to src/CSharpAnalytics.Tests/Sessions/VisitorTests.cs diff --git a/Source/CSharpAnalytics.Tests/TestHelpers.cs b/src/CSharpAnalytics.Tests/TestHelpers.cs similarity index 100% rename from Source/CSharpAnalytics.Tests/TestHelpers.cs rename to src/CSharpAnalytics.Tests/TestHelpers.cs diff --git a/Source/CSharpAnalytics.Tests/Windows8/Images/UnitTestLogo.png b/src/CSharpAnalytics.Tests/Windows8/Images/UnitTestLogo.png similarity index 100% rename from Source/CSharpAnalytics.Tests/Windows8/Images/UnitTestLogo.png rename to src/CSharpAnalytics.Tests/Windows8/Images/UnitTestLogo.png diff --git a/Source/CSharpAnalytics.Tests/Windows8/Images/UnitTestSmallLogo.png b/src/CSharpAnalytics.Tests/Windows8/Images/UnitTestSmallLogo.png similarity index 100% rename from Source/CSharpAnalytics.Tests/Windows8/Images/UnitTestSmallLogo.png rename to src/CSharpAnalytics.Tests/Windows8/Images/UnitTestSmallLogo.png diff --git a/Source/CSharpAnalytics.Tests/Windows8/Images/UnitTestSplashScreen.png b/src/CSharpAnalytics.Tests/Windows8/Images/UnitTestSplashScreen.png similarity index 100% rename from Source/CSharpAnalytics.Tests/Windows8/Images/UnitTestSplashScreen.png rename to src/CSharpAnalytics.Tests/Windows8/Images/UnitTestSplashScreen.png diff --git a/Source/CSharpAnalytics.Tests/Windows8/Images/UnitTestStoreLogo.png b/src/CSharpAnalytics.Tests/Windows8/Images/UnitTestStoreLogo.png similarity index 100% rename from Source/CSharpAnalytics.Tests/Windows8/Images/UnitTestStoreLogo.png rename to src/CSharpAnalytics.Tests/Windows8/Images/UnitTestStoreLogo.png diff --git a/Source/CSharpAnalytics.Tests/Windows8/Package.appxmanifest b/src/CSharpAnalytics.Tests/Windows8/Package.appxmanifest similarity index 100% rename from Source/CSharpAnalytics.Tests/Windows8/Package.appxmanifest rename to src/CSharpAnalytics.Tests/Windows8/Package.appxmanifest diff --git a/Source/CSharpAnalytics.Tests/Windows81/Images/UnitTestLogo.scale-100.png b/src/CSharpAnalytics.Tests/Windows81/Images/UnitTestLogo.scale-100.png similarity index 100% rename from Source/CSharpAnalytics.Tests/Windows81/Images/UnitTestLogo.scale-100.png rename to src/CSharpAnalytics.Tests/Windows81/Images/UnitTestLogo.scale-100.png diff --git a/Source/CSharpAnalytics.Tests/Windows81/Images/UnitTestSmallLogo.scale-100.png b/src/CSharpAnalytics.Tests/Windows81/Images/UnitTestSmallLogo.scale-100.png similarity index 100% rename from Source/CSharpAnalytics.Tests/Windows81/Images/UnitTestSmallLogo.scale-100.png rename to src/CSharpAnalytics.Tests/Windows81/Images/UnitTestSmallLogo.scale-100.png diff --git a/Source/CSharpAnalytics.Tests/Windows81/Images/UnitTestSplashScreen.scale-100.png b/src/CSharpAnalytics.Tests/Windows81/Images/UnitTestSplashScreen.scale-100.png similarity index 100% rename from Source/CSharpAnalytics.Tests/Windows81/Images/UnitTestSplashScreen.scale-100.png rename to src/CSharpAnalytics.Tests/Windows81/Images/UnitTestSplashScreen.scale-100.png diff --git a/Source/CSharpAnalytics.Tests/Windows81/Images/UnitTestStoreLogo.scale-100.png b/src/CSharpAnalytics.Tests/Windows81/Images/UnitTestStoreLogo.scale-100.png similarity index 100% rename from Source/CSharpAnalytics.Tests/Windows81/Images/UnitTestStoreLogo.scale-100.png rename to src/CSharpAnalytics.Tests/Windows81/Images/UnitTestStoreLogo.scale-100.png diff --git a/Source/CSharpAnalytics.Tests/Windows81/Package.appxmanifest b/src/CSharpAnalytics.Tests/Windows81/Package.appxmanifest similarity index 100% rename from Source/CSharpAnalytics.Tests/Windows81/Package.appxmanifest rename to src/CSharpAnalytics.Tests/Windows81/Package.appxmanifest diff --git a/Source/CSharpAnalytics.Tests/WindowsPhone8/App.xaml b/src/CSharpAnalytics.Tests/WindowsPhone8/App.xaml similarity index 100% rename from Source/CSharpAnalytics.Tests/WindowsPhone8/App.xaml rename to src/CSharpAnalytics.Tests/WindowsPhone8/App.xaml diff --git a/Source/CSharpAnalytics.Tests/WindowsPhone8/App.xaml.cs b/src/CSharpAnalytics.Tests/WindowsPhone8/App.xaml.cs similarity index 100% rename from Source/CSharpAnalytics.Tests/WindowsPhone8/App.xaml.cs rename to src/CSharpAnalytics.Tests/WindowsPhone8/App.xaml.cs diff --git a/Source/CSharpAnalytics.Tests/WindowsPhone8/Assets/AlignmentGrid.png b/src/CSharpAnalytics.Tests/WindowsPhone8/Assets/AlignmentGrid.png similarity index 100% rename from Source/CSharpAnalytics.Tests/WindowsPhone8/Assets/AlignmentGrid.png rename to src/CSharpAnalytics.Tests/WindowsPhone8/Assets/AlignmentGrid.png diff --git a/Source/CSharpAnalytics.Tests/WindowsPhone8/Assets/ApplicationIcon.png b/src/CSharpAnalytics.Tests/WindowsPhone8/Assets/ApplicationIcon.png similarity index 100% rename from Source/CSharpAnalytics.Tests/WindowsPhone8/Assets/ApplicationIcon.png rename to src/CSharpAnalytics.Tests/WindowsPhone8/Assets/ApplicationIcon.png diff --git a/Source/CSharpAnalytics.Tests/WindowsPhone8/Assets/Tiles/FlipCycleTileLarge.png b/src/CSharpAnalytics.Tests/WindowsPhone8/Assets/Tiles/FlipCycleTileLarge.png similarity index 100% rename from Source/CSharpAnalytics.Tests/WindowsPhone8/Assets/Tiles/FlipCycleTileLarge.png rename to src/CSharpAnalytics.Tests/WindowsPhone8/Assets/Tiles/FlipCycleTileLarge.png diff --git a/Source/CSharpAnalytics.Tests/WindowsPhone8/Assets/Tiles/FlipCycleTileMedium.png b/src/CSharpAnalytics.Tests/WindowsPhone8/Assets/Tiles/FlipCycleTileMedium.png similarity index 100% rename from Source/CSharpAnalytics.Tests/WindowsPhone8/Assets/Tiles/FlipCycleTileMedium.png rename to src/CSharpAnalytics.Tests/WindowsPhone8/Assets/Tiles/FlipCycleTileMedium.png diff --git a/Source/CSharpAnalytics.Tests/WindowsPhone8/Assets/Tiles/FlipCycleTileSmall.png b/src/CSharpAnalytics.Tests/WindowsPhone8/Assets/Tiles/FlipCycleTileSmall.png similarity index 100% rename from Source/CSharpAnalytics.Tests/WindowsPhone8/Assets/Tiles/FlipCycleTileSmall.png rename to src/CSharpAnalytics.Tests/WindowsPhone8/Assets/Tiles/FlipCycleTileSmall.png diff --git a/Source/CSharpAnalytics.Tests/WindowsPhone8/CSharpAnalytics.Test.WindowsPhone8.csproj b/src/CSharpAnalytics.Tests/WindowsPhone8/CSharpAnalytics.Test.WindowsPhone8.csproj similarity index 100% rename from Source/CSharpAnalytics.Tests/WindowsPhone8/CSharpAnalytics.Test.WindowsPhone8.csproj rename to src/CSharpAnalytics.Tests/WindowsPhone8/CSharpAnalytics.Test.WindowsPhone8.csproj diff --git a/Source/CSharpAnalytics.Tests/WindowsPhone8/LocalizedStrings.cs b/src/CSharpAnalytics.Tests/WindowsPhone8/LocalizedStrings.cs similarity index 100% rename from Source/CSharpAnalytics.Tests/WindowsPhone8/LocalizedStrings.cs rename to src/CSharpAnalytics.Tests/WindowsPhone8/LocalizedStrings.cs diff --git a/Source/CSharpAnalytics.Tests/WindowsPhone8/MainPage.xaml b/src/CSharpAnalytics.Tests/WindowsPhone8/MainPage.xaml similarity index 100% rename from Source/CSharpAnalytics.Tests/WindowsPhone8/MainPage.xaml rename to src/CSharpAnalytics.Tests/WindowsPhone8/MainPage.xaml diff --git a/Source/CSharpAnalytics.Tests/WindowsPhone8/MainPage.xaml.cs b/src/CSharpAnalytics.Tests/WindowsPhone8/MainPage.xaml.cs similarity index 100% rename from Source/CSharpAnalytics.Tests/WindowsPhone8/MainPage.xaml.cs rename to src/CSharpAnalytics.Tests/WindowsPhone8/MainPage.xaml.cs diff --git a/Source/CSharpAnalytics.Tests/WindowsPhone8/Properties/AppManifest.xml b/src/CSharpAnalytics.Tests/WindowsPhone8/Properties/AppManifest.xml similarity index 100% rename from Source/CSharpAnalytics.Tests/WindowsPhone8/Properties/AppManifest.xml rename to src/CSharpAnalytics.Tests/WindowsPhone8/Properties/AppManifest.xml diff --git a/Source/CSharpAnalytics.Tests/WindowsPhone8/Properties/WMAppManifest.xml b/src/CSharpAnalytics.Tests/WindowsPhone8/Properties/WMAppManifest.xml similarity index 100% rename from Source/CSharpAnalytics.Tests/WindowsPhone8/Properties/WMAppManifest.xml rename to src/CSharpAnalytics.Tests/WindowsPhone8/Properties/WMAppManifest.xml diff --git a/Source/CSharpAnalytics.Tests/WindowsPhone8/Resources/AppResources.Designer.cs b/src/CSharpAnalytics.Tests/WindowsPhone8/Resources/AppResources.Designer.cs similarity index 100% rename from Source/CSharpAnalytics.Tests/WindowsPhone8/Resources/AppResources.Designer.cs rename to src/CSharpAnalytics.Tests/WindowsPhone8/Resources/AppResources.Designer.cs diff --git a/Source/CSharpAnalytics.Tests/WindowsPhone8/Resources/AppResources.resx b/src/CSharpAnalytics.Tests/WindowsPhone8/Resources/AppResources.resx similarity index 100% rename from Source/CSharpAnalytics.Tests/WindowsPhone8/Resources/AppResources.resx rename to src/CSharpAnalytics.Tests/WindowsPhone8/Resources/AppResources.resx diff --git a/Source/CSharpAnalytics/Activities/AutoTimedEventActivity.cs b/src/CSharpAnalytics/Activities/AutoTimedEventActivity.cs similarity index 100% rename from Source/CSharpAnalytics/Activities/AutoTimedEventActivity.cs rename to src/CSharpAnalytics/Activities/AutoTimedEventActivity.cs diff --git a/Source/CSharpAnalytics/Activities/ContentViewActivity.cs b/src/CSharpAnalytics/Activities/ContentViewActivity.cs similarity index 100% rename from Source/CSharpAnalytics/Activities/ContentViewActivity.cs rename to src/CSharpAnalytics/Activities/ContentViewActivity.cs diff --git a/Source/CSharpAnalytics/Activities/EventActivity.cs b/src/CSharpAnalytics/Activities/EventActivity.cs similarity index 100% rename from Source/CSharpAnalytics/Activities/EventActivity.cs rename to src/CSharpAnalytics/Activities/EventActivity.cs diff --git a/Source/CSharpAnalytics/Activities/ExceptionActivity.cs b/src/CSharpAnalytics/Activities/ExceptionActivity.cs similarity index 100% rename from Source/CSharpAnalytics/Activities/ExceptionActivity.cs rename to src/CSharpAnalytics/Activities/ExceptionActivity.cs diff --git a/Source/CSharpAnalytics/Activities/MeasurementActivity.cs b/src/CSharpAnalytics/Activities/MeasurementActivity.cs similarity index 100% rename from Source/CSharpAnalytics/Activities/MeasurementActivity.cs rename to src/CSharpAnalytics/Activities/MeasurementActivity.cs diff --git a/Source/CSharpAnalytics/Activities/ScreenViewActivity.cs b/src/CSharpAnalytics/Activities/ScreenViewActivity.cs similarity index 100% rename from Source/CSharpAnalytics/Activities/ScreenViewActivity.cs rename to src/CSharpAnalytics/Activities/ScreenViewActivity.cs diff --git a/Source/CSharpAnalytics/Activities/SocialActivity.cs b/src/CSharpAnalytics/Activities/SocialActivity.cs similarity index 100% rename from Source/CSharpAnalytics/Activities/SocialActivity.cs rename to src/CSharpAnalytics/Activities/SocialActivity.cs diff --git a/Source/CSharpAnalytics/Activities/TimedEventActivity.cs b/src/CSharpAnalytics/Activities/TimedEventActivity.cs similarity index 100% rename from Source/CSharpAnalytics/Activities/TimedEventActivity.cs rename to src/CSharpAnalytics/Activities/TimedEventActivity.cs diff --git a/Source/CSharpAnalytics/Activities/TransactionActivity.cs b/src/CSharpAnalytics/Activities/TransactionActivity.cs similarity index 100% rename from Source/CSharpAnalytics/Activities/TransactionActivity.cs rename to src/CSharpAnalytics/Activities/TransactionActivity.cs diff --git a/Source/CSharpAnalytics/Activities/TransactionItemActivity.cs b/src/CSharpAnalytics/Activities/TransactionItemActivity.cs similarity index 100% rename from Source/CSharpAnalytics/Activities/TransactionItemActivity.cs rename to src/CSharpAnalytics/Activities/TransactionItemActivity.cs diff --git a/Source/CSharpAnalytics/AutoMeasurement/AnalyticsScreenNameAttribute.cs b/src/CSharpAnalytics/AutoMeasurement/AnalyticsScreenNameAttribute.cs similarity index 100% rename from Source/CSharpAnalytics/AutoMeasurement/AnalyticsScreenNameAttribute.cs rename to src/CSharpAnalytics/AutoMeasurement/AnalyticsScreenNameAttribute.cs diff --git a/Source/CSharpAnalytics/AutoMeasurement/AnalyticsUserOptions.cs b/src/CSharpAnalytics/AutoMeasurement/AnalyticsUserOptions.cs similarity index 100% rename from Source/CSharpAnalytics/AutoMeasurement/AnalyticsUserOptions.cs rename to src/CSharpAnalytics/AutoMeasurement/AnalyticsUserOptions.cs diff --git a/Source/CSharpAnalytics/AutoMeasurement/AutoMeasurement.cs b/src/CSharpAnalytics/AutoMeasurement/AutoMeasurement.cs similarity index 100% rename from Source/CSharpAnalytics/AutoMeasurement/AutoMeasurement.cs rename to src/CSharpAnalytics/AutoMeasurement/AutoMeasurement.cs diff --git a/Source/CSharpAnalytics/AutoMeasurement/BaseAutoMeasurement.cs b/src/CSharpAnalytics/AutoMeasurement/BaseAutoMeasurement.cs similarity index 100% rename from Source/CSharpAnalytics/AutoMeasurement/BaseAutoMeasurement.cs rename to src/CSharpAnalytics/AutoMeasurement/BaseAutoMeasurement.cs diff --git a/Source/CSharpAnalytics/AutoMeasurement/ITrackOwnView.cs b/src/CSharpAnalytics/AutoMeasurement/ITrackOwnView.cs similarity index 100% rename from Source/CSharpAnalytics/AutoMeasurement/ITrackOwnView.cs rename to src/CSharpAnalytics/AutoMeasurement/ITrackOwnView.cs diff --git a/Source/CSharpAnalytics/AutoMeasurement/WinFormsAutoMeasurement.cs b/src/CSharpAnalytics/AutoMeasurement/WinFormsAutoMeasurement.cs similarity index 100% rename from Source/CSharpAnalytics/AutoMeasurement/WinFormsAutoMeasurement.cs rename to src/CSharpAnalytics/AutoMeasurement/WinFormsAutoMeasurement.cs diff --git a/Source/CSharpAnalytics/AutoMeasurement/WpfAutoMeasurement.cs b/src/CSharpAnalytics/AutoMeasurement/WpfAutoMeasurement.cs similarity index 100% rename from Source/CSharpAnalytics/AutoMeasurement/WpfAutoMeasurement.cs rename to src/CSharpAnalytics/AutoMeasurement/WpfAutoMeasurement.cs diff --git a/src/CSharpAnalytics/CSharpAnalytics.WPFNetCore3.csproj b/src/CSharpAnalytics/CSharpAnalytics.WPFNetCore3.csproj new file mode 100644 index 0000000..2112a9f --- /dev/null +++ b/src/CSharpAnalytics/CSharpAnalytics.WPFNetCore3.csproj @@ -0,0 +1,11 @@ + + + Library + netcoreapp3.1 + true + true + false + CSharpAnalytics + CSharpAnalytics + + \ No newline at end of file diff --git a/src/CSharpAnalytics/CSharpAnalytics.csproj b/src/CSharpAnalytics/CSharpAnalytics.csproj new file mode 100644 index 0000000..e7a6a7a --- /dev/null +++ b/src/CSharpAnalytics/CSharpAnalytics.csproj @@ -0,0 +1,22 @@ + + + Library + net45;net461 + CSharpAnalytics + CSharpAnalytics + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/CSharpAnalytics/Debugging/MeasurementParameterDefinitions.cs b/src/CSharpAnalytics/Debugging/MeasurementParameterDefinitions.cs similarity index 100% rename from Source/CSharpAnalytics/Debugging/MeasurementParameterDefinitions.cs rename to src/CSharpAnalytics/Debugging/MeasurementParameterDefinitions.cs diff --git a/Source/CSharpAnalytics/Debugging/ParameterDefinition.cs b/src/CSharpAnalytics/Debugging/ParameterDefinition.cs similarity index 100% rename from Source/CSharpAnalytics/Debugging/ParameterDefinition.cs rename to src/CSharpAnalytics/Debugging/ParameterDefinition.cs diff --git a/Source/CSharpAnalytics/Debugging/ProtocolDebugger.cs b/src/CSharpAnalytics/Debugging/ProtocolDebugger.cs similarity index 100% rename from Source/CSharpAnalytics/Debugging/ProtocolDebugger.cs rename to src/CSharpAnalytics/Debugging/ProtocolDebugger.cs diff --git a/Source/CSharpAnalytics/Environment/IEnvironment.cs b/src/CSharpAnalytics/Environment/IEnvironment.cs similarity index 100% rename from Source/CSharpAnalytics/Environment/IEnvironment.cs rename to src/CSharpAnalytics/Environment/IEnvironment.cs diff --git a/Source/CSharpAnalytics/Environment/WinFormsEnvironment.cs b/src/CSharpAnalytics/Environment/WinFormsEnvironment.cs similarity index 100% rename from Source/CSharpAnalytics/Environment/WinFormsEnvironment.cs rename to src/CSharpAnalytics/Environment/WinFormsEnvironment.cs diff --git a/Source/CSharpAnalytics/Environment/WpfEnvironment.cs b/src/CSharpAnalytics/Environment/WpfEnvironment.cs similarity index 100% rename from Source/CSharpAnalytics/Environment/WpfEnvironment.cs rename to src/CSharpAnalytics/Environment/WpfEnvironment.cs diff --git a/Source/CSharpAnalytics/Network/BackgroundUriRequester.cs b/src/CSharpAnalytics/Network/BackgroundUriRequester.cs similarity index 100% rename from Source/CSharpAnalytics/Network/BackgroundUriRequester.cs rename to src/CSharpAnalytics/Network/BackgroundUriRequester.cs diff --git a/Source/CSharpAnalytics/Network/ExtensionMethods.cs b/src/CSharpAnalytics/Network/ExtensionMethods.cs similarity index 100% rename from Source/CSharpAnalytics/Network/ExtensionMethods.cs rename to src/CSharpAnalytics/Network/ExtensionMethods.cs diff --git a/Source/CSharpAnalytics/Network/HttpClientRequester.cs b/src/CSharpAnalytics/Network/HttpClientRequester.cs similarity index 100% rename from Source/CSharpAnalytics/Network/HttpClientRequester.cs rename to src/CSharpAnalytics/Network/HttpClientRequester.cs diff --git a/Source/CSharpAnalytics/Network/HttpWebRequester.cs b/src/CSharpAnalytics/Network/HttpWebRequester.cs similarity index 100% rename from Source/CSharpAnalytics/Network/HttpWebRequester.cs rename to src/CSharpAnalytics/Network/HttpWebRequester.cs diff --git a/src/CSharpAnalytics/Properties/AssemblyInfo.cs b/src/CSharpAnalytics/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..915a527 --- /dev/null +++ b/src/CSharpAnalytics/Properties/AssemblyInfo.cs @@ -0,0 +1,9 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + + +[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/Protocols/KeyValuePair.cs b/src/CSharpAnalytics/Protocols/KeyValuePair.cs similarity index 100% rename from Source/CSharpAnalytics/Protocols/KeyValuePair.cs rename to src/CSharpAnalytics/Protocols/KeyValuePair.cs diff --git a/Source/CSharpAnalytics/Protocols/Measurement/MeasurementActivityParameterBuilder.cs b/src/CSharpAnalytics/Protocols/Measurement/MeasurementActivityParameterBuilder.cs similarity index 100% rename from Source/CSharpAnalytics/Protocols/Measurement/MeasurementActivityParameterBuilder.cs rename to src/CSharpAnalytics/Protocols/Measurement/MeasurementActivityParameterBuilder.cs diff --git a/Source/CSharpAnalytics/Protocols/Measurement/MeasurementAnalyticsClient.cs b/src/CSharpAnalytics/Protocols/Measurement/MeasurementAnalyticsClient.cs similarity index 100% rename from Source/CSharpAnalytics/Protocols/Measurement/MeasurementAnalyticsClient.cs rename to src/CSharpAnalytics/Protocols/Measurement/MeasurementAnalyticsClient.cs diff --git a/Source/CSharpAnalytics/Protocols/Measurement/MeasurementConfiguration.cs b/src/CSharpAnalytics/Protocols/Measurement/MeasurementConfiguration.cs similarity index 100% rename from Source/CSharpAnalytics/Protocols/Measurement/MeasurementConfiguration.cs rename to src/CSharpAnalytics/Protocols/Measurement/MeasurementConfiguration.cs diff --git a/Source/CSharpAnalytics/Protocols/Measurement/MeasurementTracker.cs b/src/CSharpAnalytics/Protocols/Measurement/MeasurementTracker.cs similarity index 100% rename from Source/CSharpAnalytics/Protocols/Measurement/MeasurementTracker.cs rename to src/CSharpAnalytics/Protocols/Measurement/MeasurementTracker.cs diff --git a/Source/CSharpAnalytics/Protocols/Measurement/MeasurementUriBuilder.cs b/src/CSharpAnalytics/Protocols/Measurement/MeasurementUriBuilder.cs similarity index 100% rename from Source/CSharpAnalytics/Protocols/Measurement/MeasurementUriBuilder.cs rename to src/CSharpAnalytics/Protocols/Measurement/MeasurementUriBuilder.cs diff --git a/Source/CSharpAnalytics/Serializers/AppDataContractSerializer.cs b/src/CSharpAnalytics/Serializers/AppDataContractSerializer.cs similarity index 100% rename from Source/CSharpAnalytics/Serializers/AppDataContractSerializer.cs rename to src/CSharpAnalytics/Serializers/AppDataContractSerializer.cs diff --git a/Source/CSharpAnalytics/Sessions/SessionManager.cs b/src/CSharpAnalytics/Sessions/SessionManager.cs similarity index 100% rename from Source/CSharpAnalytics/Sessions/SessionManager.cs rename to src/CSharpAnalytics/Sessions/SessionManager.cs diff --git a/Source/CSharpAnalytics/Sessions/SessionState.cs b/src/CSharpAnalytics/Sessions/SessionState.cs similarity index 100% rename from Source/CSharpAnalytics/Sessions/SessionState.cs rename to src/CSharpAnalytics/Sessions/SessionState.cs diff --git a/Source/CSharpAnalytics/Sessions/TimeoutSessionManager.cs b/src/CSharpAnalytics/Sessions/TimeoutSessionManager.cs similarity index 100% rename from Source/CSharpAnalytics/Sessions/TimeoutSessionManager.cs rename to src/CSharpAnalytics/Sessions/TimeoutSessionManager.cs diff --git a/Source/CSharpAnalytics/Sessions/Visitor.cs b/src/CSharpAnalytics/Sessions/Visitor.cs similarity index 100% rename from Source/CSharpAnalytics/Sessions/Visitor.cs rename to src/CSharpAnalytics/Sessions/Visitor.cs diff --git a/Source/CSharpAnalytics/SystemInfo/WindowsSystemInfo.cs b/src/CSharpAnalytics/SystemInfo/WindowsSystemInfo.cs similarity index 100% rename from Source/CSharpAnalytics/SystemInfo/WindowsSystemInfo.cs rename to src/CSharpAnalytics/SystemInfo/WindowsSystemInfo.cs diff --git a/Source/LICENCE.txt b/src/LICENCE.txt similarity index 100% rename from Source/LICENCE.txt rename to src/LICENCE.txt diff --git a/Source/Samples/CSharpAnalytics.Sample.WinForms/CSharpAnalytics.Sample.WinForms.csproj b/src/Samples/CSharpAnalytics.Sample.WinForms/CSharpAnalytics.Sample.WinForms.csproj similarity index 97% rename from Source/Samples/CSharpAnalytics.Sample.WinForms/CSharpAnalytics.Sample.WinForms.csproj rename to src/Samples/CSharpAnalytics.Sample.WinForms/CSharpAnalytics.Sample.WinForms.csproj index 59bdb3d..3553d7d 100644 --- a/Source/Samples/CSharpAnalytics.Sample.WinForms/CSharpAnalytics.Sample.WinForms.csproj +++ b/src/Samples/CSharpAnalytics.Sample.WinForms/CSharpAnalytics.Sample.WinForms.csproj @@ -52,9 +52,9 @@ - + {0334B071-1FB1-4372-B500-4BC58A11EE59} - CSharpAnalytics.Net45 + CSharpAnalytics diff --git a/Source/Samples/CSharpAnalytics.Sample.WinForms/MainForm.Designer.cs b/src/Samples/CSharpAnalytics.Sample.WinForms/MainForm.Designer.cs similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WinForms/MainForm.Designer.cs rename to src/Samples/CSharpAnalytics.Sample.WinForms/MainForm.Designer.cs diff --git a/Source/Samples/CSharpAnalytics.Sample.WinForms/MainForm.cs b/src/Samples/CSharpAnalytics.Sample.WinForms/MainForm.cs similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WinForms/MainForm.cs rename to src/Samples/CSharpAnalytics.Sample.WinForms/MainForm.cs diff --git a/Source/Samples/CSharpAnalytics.Sample.WinForms/MainForm.resx b/src/Samples/CSharpAnalytics.Sample.WinForms/MainForm.resx similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WinForms/MainForm.resx rename to src/Samples/CSharpAnalytics.Sample.WinForms/MainForm.resx diff --git a/Source/Samples/CSharpAnalytics.Sample.WinForms/Program.cs b/src/Samples/CSharpAnalytics.Sample.WinForms/Program.cs similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WinForms/Program.cs rename to src/Samples/CSharpAnalytics.Sample.WinForms/Program.cs diff --git a/Source/Samples/CSharpAnalytics.Sample.WinForms/Properties/AssemblyInfo.cs b/src/Samples/CSharpAnalytics.Sample.WinForms/Properties/AssemblyInfo.cs similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WinForms/Properties/AssemblyInfo.cs rename to src/Samples/CSharpAnalytics.Sample.WinForms/Properties/AssemblyInfo.cs diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/App.xaml b/src/Samples/CSharpAnalytics.Sample.Windows8/App.xaml similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Windows8/App.xaml rename to src/Samples/CSharpAnalytics.Sample.Windows8/App.xaml diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/App.xaml.cs b/src/Samples/CSharpAnalytics.Sample.Windows8/App.xaml.cs similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Windows8/App.xaml.cs rename to src/Samples/CSharpAnalytics.Sample.Windows8/App.xaml.cs diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/Assets/DarkGray.png b/src/Samples/CSharpAnalytics.Sample.Windows8/Assets/DarkGray.png similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Windows8/Assets/DarkGray.png rename to src/Samples/CSharpAnalytics.Sample.Windows8/Assets/DarkGray.png diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/Assets/LightGray.png b/src/Samples/CSharpAnalytics.Sample.Windows8/Assets/LightGray.png similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Windows8/Assets/LightGray.png rename to src/Samples/CSharpAnalytics.Sample.Windows8/Assets/LightGray.png diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/Assets/Logo.png b/src/Samples/CSharpAnalytics.Sample.Windows8/Assets/Logo.png similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Windows8/Assets/Logo.png rename to src/Samples/CSharpAnalytics.Sample.Windows8/Assets/Logo.png diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/Assets/MediumGray.png b/src/Samples/CSharpAnalytics.Sample.Windows8/Assets/MediumGray.png similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Windows8/Assets/MediumGray.png rename to src/Samples/CSharpAnalytics.Sample.Windows8/Assets/MediumGray.png diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/Assets/SmallLogo.png b/src/Samples/CSharpAnalytics.Sample.Windows8/Assets/SmallLogo.png similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Windows8/Assets/SmallLogo.png rename to src/Samples/CSharpAnalytics.Sample.Windows8/Assets/SmallLogo.png diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/Assets/SplashScreen.png b/src/Samples/CSharpAnalytics.Sample.Windows8/Assets/SplashScreen.png similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Windows8/Assets/SplashScreen.png rename to src/Samples/CSharpAnalytics.Sample.Windows8/Assets/SplashScreen.png diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/Assets/StoreLogo.png b/src/Samples/CSharpAnalytics.Sample.Windows8/Assets/StoreLogo.png similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Windows8/Assets/StoreLogo.png rename to src/Samples/CSharpAnalytics.Sample.Windows8/Assets/StoreLogo.png diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/CSharpAnalytics.Sample.Windows8.csproj b/src/Samples/CSharpAnalytics.Sample.Windows8/CSharpAnalytics.Sample.Windows8.csproj similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Windows8/CSharpAnalytics.Sample.Windows8.csproj rename to src/Samples/CSharpAnalytics.Sample.Windows8/CSharpAnalytics.Sample.Windows8.csproj diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/CSharpAnalytics.Sample.WindowsStore.sln b/src/Samples/CSharpAnalytics.Sample.Windows8/CSharpAnalytics.Sample.WindowsStore.sln similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Windows8/CSharpAnalytics.Sample.WindowsStore.sln rename to src/Samples/CSharpAnalytics.Sample.Windows8/CSharpAnalytics.Sample.WindowsStore.sln diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/Common/BindableBase.cs b/src/Samples/CSharpAnalytics.Sample.Windows8/Common/BindableBase.cs similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Windows8/Common/BindableBase.cs rename to src/Samples/CSharpAnalytics.Sample.Windows8/Common/BindableBase.cs diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/Common/BooleanToVisibilityConverter.cs b/src/Samples/CSharpAnalytics.Sample.Windows8/Common/BooleanToVisibilityConverter.cs similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Windows8/Common/BooleanToVisibilityConverter.cs rename to src/Samples/CSharpAnalytics.Sample.Windows8/Common/BooleanToVisibilityConverter.cs diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/Common/LayoutAwarePage.cs b/src/Samples/CSharpAnalytics.Sample.Windows8/Common/LayoutAwarePage.cs similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Windows8/Common/LayoutAwarePage.cs rename to src/Samples/CSharpAnalytics.Sample.Windows8/Common/LayoutAwarePage.cs diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/Common/RichTextColumns.cs b/src/Samples/CSharpAnalytics.Sample.Windows8/Common/RichTextColumns.cs similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Windows8/Common/RichTextColumns.cs rename to src/Samples/CSharpAnalytics.Sample.Windows8/Common/RichTextColumns.cs diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/Common/StandardStyles.xaml b/src/Samples/CSharpAnalytics.Sample.Windows8/Common/StandardStyles.xaml similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Windows8/Common/StandardStyles.xaml rename to src/Samples/CSharpAnalytics.Sample.Windows8/Common/StandardStyles.xaml diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/Common/SuspensionManager.cs b/src/Samples/CSharpAnalytics.Sample.Windows8/Common/SuspensionManager.cs similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Windows8/Common/SuspensionManager.cs rename to src/Samples/CSharpAnalytics.Sample.Windows8/Common/SuspensionManager.cs diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/DataModel/SampleDataSource.cs b/src/Samples/CSharpAnalytics.Sample.Windows8/DataModel/SampleDataSource.cs similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Windows8/DataModel/SampleDataSource.cs rename to src/Samples/CSharpAnalytics.Sample.Windows8/DataModel/SampleDataSource.cs diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/GroupDetailPage.xaml b/src/Samples/CSharpAnalytics.Sample.Windows8/GroupDetailPage.xaml similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Windows8/GroupDetailPage.xaml rename to src/Samples/CSharpAnalytics.Sample.Windows8/GroupDetailPage.xaml diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/GroupDetailPage.xaml.cs b/src/Samples/CSharpAnalytics.Sample.Windows8/GroupDetailPage.xaml.cs similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Windows8/GroupDetailPage.xaml.cs rename to src/Samples/CSharpAnalytics.Sample.Windows8/GroupDetailPage.xaml.cs diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/GroupedItemsPage.xaml b/src/Samples/CSharpAnalytics.Sample.Windows8/GroupedItemsPage.xaml similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Windows8/GroupedItemsPage.xaml rename to src/Samples/CSharpAnalytics.Sample.Windows8/GroupedItemsPage.xaml diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/GroupedItemsPage.xaml.cs b/src/Samples/CSharpAnalytics.Sample.Windows8/GroupedItemsPage.xaml.cs similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Windows8/GroupedItemsPage.xaml.cs rename to src/Samples/CSharpAnalytics.Sample.Windows8/GroupedItemsPage.xaml.cs diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/ItemDetailPage.xaml b/src/Samples/CSharpAnalytics.Sample.Windows8/ItemDetailPage.xaml similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Windows8/ItemDetailPage.xaml rename to src/Samples/CSharpAnalytics.Sample.Windows8/ItemDetailPage.xaml diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/ItemDetailPage.xaml.cs b/src/Samples/CSharpAnalytics.Sample.Windows8/ItemDetailPage.xaml.cs similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Windows8/ItemDetailPage.xaml.cs rename to src/Samples/CSharpAnalytics.Sample.Windows8/ItemDetailPage.xaml.cs diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/OptionsFlyout.xaml b/src/Samples/CSharpAnalytics.Sample.Windows8/OptionsFlyout.xaml similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Windows8/OptionsFlyout.xaml rename to src/Samples/CSharpAnalytics.Sample.Windows8/OptionsFlyout.xaml diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/OptionsFlyout.xaml.cs b/src/Samples/CSharpAnalytics.Sample.Windows8/OptionsFlyout.xaml.cs similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Windows8/OptionsFlyout.xaml.cs rename to src/Samples/CSharpAnalytics.Sample.Windows8/OptionsFlyout.xaml.cs diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/Package.appxmanifest b/src/Samples/CSharpAnalytics.Sample.Windows8/Package.appxmanifest similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Windows8/Package.appxmanifest rename to src/Samples/CSharpAnalytics.Sample.Windows8/Package.appxmanifest diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows8/Properties/AssemblyInfo.cs b/src/Samples/CSharpAnalytics.Sample.Windows8/Properties/AssemblyInfo.cs similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Windows8/Properties/AssemblyInfo.cs rename to src/Samples/CSharpAnalytics.Sample.Windows8/Properties/AssemblyInfo.cs diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows81/App.xaml b/src/Samples/CSharpAnalytics.Sample.Windows81/App.xaml similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Windows81/App.xaml rename to src/Samples/CSharpAnalytics.Sample.Windows81/App.xaml diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows81/App.xaml.cs b/src/Samples/CSharpAnalytics.Sample.Windows81/App.xaml.cs similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Windows81/App.xaml.cs rename to src/Samples/CSharpAnalytics.Sample.Windows81/App.xaml.cs diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows81/Assets/DarkGray.png b/src/Samples/CSharpAnalytics.Sample.Windows81/Assets/DarkGray.png similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Windows81/Assets/DarkGray.png rename to src/Samples/CSharpAnalytics.Sample.Windows81/Assets/DarkGray.png diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows81/Assets/LightGray.png b/src/Samples/CSharpAnalytics.Sample.Windows81/Assets/LightGray.png similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Windows81/Assets/LightGray.png rename to src/Samples/CSharpAnalytics.Sample.Windows81/Assets/LightGray.png diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows81/Assets/Logo.scale-100.png b/src/Samples/CSharpAnalytics.Sample.Windows81/Assets/Logo.scale-100.png similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Windows81/Assets/Logo.scale-100.png rename to src/Samples/CSharpAnalytics.Sample.Windows81/Assets/Logo.scale-100.png diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows81/Assets/MediumGray.png b/src/Samples/CSharpAnalytics.Sample.Windows81/Assets/MediumGray.png similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Windows81/Assets/MediumGray.png rename to src/Samples/CSharpAnalytics.Sample.Windows81/Assets/MediumGray.png diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows81/Assets/SmallLogo.scale-100.png b/src/Samples/CSharpAnalytics.Sample.Windows81/Assets/SmallLogo.scale-100.png similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Windows81/Assets/SmallLogo.scale-100.png rename to src/Samples/CSharpAnalytics.Sample.Windows81/Assets/SmallLogo.scale-100.png diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows81/Assets/SplashScreen.scale-100.png b/src/Samples/CSharpAnalytics.Sample.Windows81/Assets/SplashScreen.scale-100.png similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Windows81/Assets/SplashScreen.scale-100.png rename to src/Samples/CSharpAnalytics.Sample.Windows81/Assets/SplashScreen.scale-100.png diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows81/Assets/StoreLogo.scale-100.png b/src/Samples/CSharpAnalytics.Sample.Windows81/Assets/StoreLogo.scale-100.png similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Windows81/Assets/StoreLogo.scale-100.png rename to src/Samples/CSharpAnalytics.Sample.Windows81/Assets/StoreLogo.scale-100.png diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows81/CSharpAnalytics.Sample.Windows81.csproj b/src/Samples/CSharpAnalytics.Sample.Windows81/CSharpAnalytics.Sample.Windows81.csproj similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Windows81/CSharpAnalytics.Sample.Windows81.csproj rename to src/Samples/CSharpAnalytics.Sample.Windows81/CSharpAnalytics.Sample.Windows81.csproj diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows81/Common/NavigationHelper.cs b/src/Samples/CSharpAnalytics.Sample.Windows81/Common/NavigationHelper.cs similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Windows81/Common/NavigationHelper.cs rename to src/Samples/CSharpAnalytics.Sample.Windows81/Common/NavigationHelper.cs diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows81/Common/ObservableDictionary.cs b/src/Samples/CSharpAnalytics.Sample.Windows81/Common/ObservableDictionary.cs similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Windows81/Common/ObservableDictionary.cs rename to src/Samples/CSharpAnalytics.Sample.Windows81/Common/ObservableDictionary.cs diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows81/Common/ReadMe.txt b/src/Samples/CSharpAnalytics.Sample.Windows81/Common/ReadMe.txt similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Windows81/Common/ReadMe.txt rename to src/Samples/CSharpAnalytics.Sample.Windows81/Common/ReadMe.txt diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows81/Common/RelayCommand.cs b/src/Samples/CSharpAnalytics.Sample.Windows81/Common/RelayCommand.cs similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Windows81/Common/RelayCommand.cs rename to src/Samples/CSharpAnalytics.Sample.Windows81/Common/RelayCommand.cs diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows81/Common/SuspensionManager.cs b/src/Samples/CSharpAnalytics.Sample.Windows81/Common/SuspensionManager.cs similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Windows81/Common/SuspensionManager.cs rename to src/Samples/CSharpAnalytics.Sample.Windows81/Common/SuspensionManager.cs diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows81/DataModel/SampleData.json b/src/Samples/CSharpAnalytics.Sample.Windows81/DataModel/SampleData.json similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Windows81/DataModel/SampleData.json rename to src/Samples/CSharpAnalytics.Sample.Windows81/DataModel/SampleData.json diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows81/DataModel/SampleDataSource.cs b/src/Samples/CSharpAnalytics.Sample.Windows81/DataModel/SampleDataSource.cs similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Windows81/DataModel/SampleDataSource.cs rename to src/Samples/CSharpAnalytics.Sample.Windows81/DataModel/SampleDataSource.cs diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows81/GroupDetailPage.xaml b/src/Samples/CSharpAnalytics.Sample.Windows81/GroupDetailPage.xaml similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Windows81/GroupDetailPage.xaml rename to src/Samples/CSharpAnalytics.Sample.Windows81/GroupDetailPage.xaml diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows81/GroupDetailPage.xaml.cs b/src/Samples/CSharpAnalytics.Sample.Windows81/GroupDetailPage.xaml.cs similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Windows81/GroupDetailPage.xaml.cs rename to src/Samples/CSharpAnalytics.Sample.Windows81/GroupDetailPage.xaml.cs diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows81/GroupedItemsPage.xaml b/src/Samples/CSharpAnalytics.Sample.Windows81/GroupedItemsPage.xaml similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Windows81/GroupedItemsPage.xaml rename to src/Samples/CSharpAnalytics.Sample.Windows81/GroupedItemsPage.xaml diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows81/GroupedItemsPage.xaml.cs b/src/Samples/CSharpAnalytics.Sample.Windows81/GroupedItemsPage.xaml.cs similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Windows81/GroupedItemsPage.xaml.cs rename to src/Samples/CSharpAnalytics.Sample.Windows81/GroupedItemsPage.xaml.cs diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows81/ItemDetailPage.xaml b/src/Samples/CSharpAnalytics.Sample.Windows81/ItemDetailPage.xaml similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Windows81/ItemDetailPage.xaml rename to src/Samples/CSharpAnalytics.Sample.Windows81/ItemDetailPage.xaml diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows81/ItemDetailPage.xaml.cs b/src/Samples/CSharpAnalytics.Sample.Windows81/ItemDetailPage.xaml.cs similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Windows81/ItemDetailPage.xaml.cs rename to src/Samples/CSharpAnalytics.Sample.Windows81/ItemDetailPage.xaml.cs diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows81/OptionsSettingsFlyout.xaml b/src/Samples/CSharpAnalytics.Sample.Windows81/OptionsSettingsFlyout.xaml similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Windows81/OptionsSettingsFlyout.xaml rename to src/Samples/CSharpAnalytics.Sample.Windows81/OptionsSettingsFlyout.xaml diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows81/OptionsSettingsFlyout.xaml.cs b/src/Samples/CSharpAnalytics.Sample.Windows81/OptionsSettingsFlyout.xaml.cs similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Windows81/OptionsSettingsFlyout.xaml.cs rename to src/Samples/CSharpAnalytics.Sample.Windows81/OptionsSettingsFlyout.xaml.cs diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows81/Package.appxmanifest b/src/Samples/CSharpAnalytics.Sample.Windows81/Package.appxmanifest similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Windows81/Package.appxmanifest rename to src/Samples/CSharpAnalytics.Sample.Windows81/Package.appxmanifest diff --git a/Source/Samples/CSharpAnalytics.Sample.Windows81/Properties/AssemblyInfo.cs b/src/Samples/CSharpAnalytics.Sample.Windows81/Properties/AssemblyInfo.cs similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Windows81/Properties/AssemblyInfo.cs rename to src/Samples/CSharpAnalytics.Sample.Windows81/Properties/AssemblyInfo.cs diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone8/App.xaml b/src/Samples/CSharpAnalytics.Sample.WindowsPhone8/App.xaml similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone8/App.xaml rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone8/App.xaml diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone8/App.xaml.cs b/src/Samples/CSharpAnalytics.Sample.WindowsPhone8/App.xaml.cs similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone8/App.xaml.cs rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone8/App.xaml.cs diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone8/Assets/ApplicationIcon.png b/src/Samples/CSharpAnalytics.Sample.WindowsPhone8/Assets/ApplicationIcon.png similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone8/Assets/ApplicationIcon.png rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone8/Assets/ApplicationIcon.png diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone8/Assets/SettingsIcon.png b/src/Samples/CSharpAnalytics.Sample.WindowsPhone8/Assets/SettingsIcon.png similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone8/Assets/SettingsIcon.png rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone8/Assets/SettingsIcon.png diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone8/Assets/Tiles/FlipCycleTileLarge.png b/src/Samples/CSharpAnalytics.Sample.WindowsPhone8/Assets/Tiles/FlipCycleTileLarge.png similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone8/Assets/Tiles/FlipCycleTileLarge.png rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone8/Assets/Tiles/FlipCycleTileLarge.png diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone8/Assets/Tiles/FlipCycleTileMedium.png b/src/Samples/CSharpAnalytics.Sample.WindowsPhone8/Assets/Tiles/FlipCycleTileMedium.png similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone8/Assets/Tiles/FlipCycleTileMedium.png rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone8/Assets/Tiles/FlipCycleTileMedium.png diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone8/Assets/Tiles/FlipCycleTileSmall.png b/src/Samples/CSharpAnalytics.Sample.WindowsPhone8/Assets/Tiles/FlipCycleTileSmall.png similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone8/Assets/Tiles/FlipCycleTileSmall.png rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone8/Assets/Tiles/FlipCycleTileSmall.png diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone8/Assets/Tiles/IconicTileMediumLarge.png b/src/Samples/CSharpAnalytics.Sample.WindowsPhone8/Assets/Tiles/IconicTileMediumLarge.png similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone8/Assets/Tiles/IconicTileMediumLarge.png rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone8/Assets/Tiles/IconicTileMediumLarge.png diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone8/Assets/Tiles/IconicTileSmall.png b/src/Samples/CSharpAnalytics.Sample.WindowsPhone8/Assets/Tiles/IconicTileSmall.png similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone8/Assets/Tiles/IconicTileSmall.png rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone8/Assets/Tiles/IconicTileSmall.png diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone8/CSharpAnalytics.Sample.WindowsPhone8.csproj b/src/Samples/CSharpAnalytics.Sample.WindowsPhone8/CSharpAnalytics.Sample.WindowsPhone8.csproj similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone8/CSharpAnalytics.Sample.WindowsPhone8.csproj rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone8/CSharpAnalytics.Sample.WindowsPhone8.csproj diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone8/DetailsPage.xaml b/src/Samples/CSharpAnalytics.Sample.WindowsPhone8/DetailsPage.xaml similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone8/DetailsPage.xaml rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone8/DetailsPage.xaml diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone8/DetailsPage.xaml.cs b/src/Samples/CSharpAnalytics.Sample.WindowsPhone8/DetailsPage.xaml.cs similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone8/DetailsPage.xaml.cs rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone8/DetailsPage.xaml.cs diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone8/LocalizedStrings.cs b/src/Samples/CSharpAnalytics.Sample.WindowsPhone8/LocalizedStrings.cs similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone8/LocalizedStrings.cs rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone8/LocalizedStrings.cs diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone8/MainPage.xaml b/src/Samples/CSharpAnalytics.Sample.WindowsPhone8/MainPage.xaml similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone8/MainPage.xaml rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone8/MainPage.xaml diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone8/MainPage.xaml.cs b/src/Samples/CSharpAnalytics.Sample.WindowsPhone8/MainPage.xaml.cs similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone8/MainPage.xaml.cs rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone8/MainPage.xaml.cs diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone8/Properties/AppManifest.xml b/src/Samples/CSharpAnalytics.Sample.WindowsPhone8/Properties/AppManifest.xml similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone8/Properties/AppManifest.xml rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone8/Properties/AppManifest.xml diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone8/Properties/AssemblyInfo.cs b/src/Samples/CSharpAnalytics.Sample.WindowsPhone8/Properties/AssemblyInfo.cs similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone8/Properties/AssemblyInfo.cs rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone8/Properties/AssemblyInfo.cs diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone8/Properties/WMAppManifest.xml b/src/Samples/CSharpAnalytics.Sample.WindowsPhone8/Properties/WMAppManifest.xml similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone8/Properties/WMAppManifest.xml rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone8/Properties/WMAppManifest.xml diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone8/Resources/AppResources.Designer.cs b/src/Samples/CSharpAnalytics.Sample.WindowsPhone8/Resources/AppResources.Designer.cs similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone8/Resources/AppResources.Designer.cs rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone8/Resources/AppResources.Designer.cs diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone8/Resources/AppResources.resx b/src/Samples/CSharpAnalytics.Sample.WindowsPhone8/Resources/AppResources.resx similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone8/Resources/AppResources.resx rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone8/Resources/AppResources.resx diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone8/SampleData/MainViewModelSampleData.xaml b/src/Samples/CSharpAnalytics.Sample.WindowsPhone8/SampleData/MainViewModelSampleData.xaml similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone8/SampleData/MainViewModelSampleData.xaml rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone8/SampleData/MainViewModelSampleData.xaml diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone8/SettingsPage.xaml b/src/Samples/CSharpAnalytics.Sample.WindowsPhone8/SettingsPage.xaml similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone8/SettingsPage.xaml rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone8/SettingsPage.xaml diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone8/SettingsPage.xaml.cs b/src/Samples/CSharpAnalytics.Sample.WindowsPhone8/SettingsPage.xaml.cs similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone8/SettingsPage.xaml.cs rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone8/SettingsPage.xaml.cs diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone8/ViewModels/ItemViewModel.cs b/src/Samples/CSharpAnalytics.Sample.WindowsPhone8/ViewModels/ItemViewModel.cs similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone8/ViewModels/ItemViewModel.cs rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone8/ViewModels/ItemViewModel.cs diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone8/ViewModels/MainViewModel.cs b/src/Samples/CSharpAnalytics.Sample.WindowsPhone8/ViewModels/MainViewModel.cs similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone8/ViewModels/MainViewModel.cs rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone8/ViewModels/MainViewModel.cs diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone8/packages.config b/src/Samples/CSharpAnalytics.Sample.WindowsPhone8/packages.config similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone8/packages.config rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone8/packages.config diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/App.xaml b/src/Samples/CSharpAnalytics.Sample.WindowsPhone81/App.xaml similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/App.xaml rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone81/App.xaml diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/App.xaml.cs b/src/Samples/CSharpAnalytics.Sample.WindowsPhone81/App.xaml.cs similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/App.xaml.cs rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone81/App.xaml.cs diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/DarkGray.png b/src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/DarkGray.png similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/DarkGray.png rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/DarkGray.png diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/HubBackground.theme-dark.png b/src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/HubBackground.theme-dark.png similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/HubBackground.theme-dark.png rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/HubBackground.theme-dark.png diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/HubBackground.theme-light.png b/src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/HubBackground.theme-light.png similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/HubBackground.theme-light.png rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/HubBackground.theme-light.png diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/LightGray.png b/src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/LightGray.png similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/LightGray.png rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/LightGray.png diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/Logo.scale-240.png b/src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/Logo.scale-240.png similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/Logo.scale-240.png rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/Logo.scale-240.png diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/MediumGray.png b/src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/MediumGray.png similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/MediumGray.png rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/MediumGray.png diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/SmallLogo.scale-240.png b/src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/SmallLogo.scale-240.png similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/SmallLogo.scale-240.png rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/SmallLogo.scale-240.png diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/SplashScreen.scale-240.png b/src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/SplashScreen.scale-240.png similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/SplashScreen.scale-240.png rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/SplashScreen.scale-240.png diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/Square71x71Logo.scale-240.png b/src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/Square71x71Logo.scale-240.png similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/Square71x71Logo.scale-240.png rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/Square71x71Logo.scale-240.png diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/StoreLogo.scale-240.png b/src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/StoreLogo.scale-240.png similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/StoreLogo.scale-240.png rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/StoreLogo.scale-240.png diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/WideLogo.scale-240.png b/src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/WideLogo.scale-240.png similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/WideLogo.scale-240.png rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/WideLogo.scale-240.png diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/CSharpAnalytics.Sample.WindowsPhone81.csproj b/src/Samples/CSharpAnalytics.Sample.WindowsPhone81/CSharpAnalytics.Sample.WindowsPhone81.csproj similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/CSharpAnalytics.Sample.WindowsPhone81.csproj rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone81/CSharpAnalytics.Sample.WindowsPhone81.csproj diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/Common/NavigationHelper.cs b/src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Common/NavigationHelper.cs similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/Common/NavigationHelper.cs rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Common/NavigationHelper.cs diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/Common/ObservableDictionary.cs b/src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Common/ObservableDictionary.cs similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/Common/ObservableDictionary.cs rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Common/ObservableDictionary.cs diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/Common/ReadMe.txt b/src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Common/ReadMe.txt similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/Common/ReadMe.txt rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Common/ReadMe.txt diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/Common/RelayCommand.cs b/src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Common/RelayCommand.cs similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/Common/RelayCommand.cs rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Common/RelayCommand.cs diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/Common/SuspensionManager.cs b/src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Common/SuspensionManager.cs similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/Common/SuspensionManager.cs rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Common/SuspensionManager.cs diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/DataModel/SampleData.json b/src/Samples/CSharpAnalytics.Sample.WindowsPhone81/DataModel/SampleData.json similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/DataModel/SampleData.json rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone81/DataModel/SampleData.json diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/DataModel/SampleDataSource.cs b/src/Samples/CSharpAnalytics.Sample.WindowsPhone81/DataModel/SampleDataSource.cs similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/DataModel/SampleDataSource.cs rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone81/DataModel/SampleDataSource.cs diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/HubPage.xaml b/src/Samples/CSharpAnalytics.Sample.WindowsPhone81/HubPage.xaml similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/HubPage.xaml rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone81/HubPage.xaml diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/HubPage.xaml.cs b/src/Samples/CSharpAnalytics.Sample.WindowsPhone81/HubPage.xaml.cs similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/HubPage.xaml.cs rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone81/HubPage.xaml.cs diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/ItemPage.xaml b/src/Samples/CSharpAnalytics.Sample.WindowsPhone81/ItemPage.xaml similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/ItemPage.xaml rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone81/ItemPage.xaml diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/ItemPage.xaml.cs b/src/Samples/CSharpAnalytics.Sample.WindowsPhone81/ItemPage.xaml.cs similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/ItemPage.xaml.cs rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone81/ItemPage.xaml.cs diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/Package.appxmanifest b/src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Package.appxmanifest similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/Package.appxmanifest rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Package.appxmanifest diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/Properties/AssemblyInfo.cs b/src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Properties/AssemblyInfo.cs similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/Properties/AssemblyInfo.cs rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Properties/AssemblyInfo.cs diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/SectionPage.xaml b/src/Samples/CSharpAnalytics.Sample.WindowsPhone81/SectionPage.xaml similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/SectionPage.xaml rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone81/SectionPage.xaml diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/SectionPage.xaml.cs b/src/Samples/CSharpAnalytics.Sample.WindowsPhone81/SectionPage.xaml.cs similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/SectionPage.xaml.cs rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone81/SectionPage.xaml.cs diff --git a/Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/Strings/en-US/Resources.resw b/src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Strings/en-US/Resources.resw similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.WindowsPhone81/Strings/en-US/Resources.resw rename to src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Strings/en-US/Resources.resw diff --git a/Source/Samples/CSharpAnalytics.Sample.Wpf/App.config b/src/Samples/CSharpAnalytics.Sample.Wpf/App.config similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Wpf/App.config rename to src/Samples/CSharpAnalytics.Sample.Wpf/App.config diff --git a/Source/Samples/CSharpAnalytics.Sample.Wpf/App.xaml b/src/Samples/CSharpAnalytics.Sample.Wpf/App.xaml similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Wpf/App.xaml rename to src/Samples/CSharpAnalytics.Sample.Wpf/App.xaml diff --git a/Source/Samples/CSharpAnalytics.Sample.Wpf/App.xaml.cs b/src/Samples/CSharpAnalytics.Sample.Wpf/App.xaml.cs similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Wpf/App.xaml.cs rename to src/Samples/CSharpAnalytics.Sample.Wpf/App.xaml.cs diff --git a/Source/Samples/CSharpAnalytics.Sample.Wpf/CSharpAnalytics.Sample.Wpf.csproj b/src/Samples/CSharpAnalytics.Sample.Wpf/CSharpAnalytics.Sample.Wpf.csproj similarity index 98% rename from Source/Samples/CSharpAnalytics.Sample.Wpf/CSharpAnalytics.Sample.Wpf.csproj rename to src/Samples/CSharpAnalytics.Sample.Wpf/CSharpAnalytics.Sample.Wpf.csproj index 1b9ed99..5d87e21 100644 --- a/Source/Samples/CSharpAnalytics.Sample.Wpf/CSharpAnalytics.Sample.Wpf.csproj +++ b/src/Samples/CSharpAnalytics.Sample.Wpf/CSharpAnalytics.Sample.Wpf.csproj @@ -90,9 +90,9 @@ - + {0334B071-1FB1-4372-B500-4BC58A11EE59} - CSharpAnalytics.Net45 + CSharpAnalytics diff --git a/Source/Samples/CSharpAnalytics.Sample.Wpf/MainWindow.xaml b/src/Samples/CSharpAnalytics.Sample.Wpf/MainWindow.xaml similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Wpf/MainWindow.xaml rename to src/Samples/CSharpAnalytics.Sample.Wpf/MainWindow.xaml diff --git a/Source/Samples/CSharpAnalytics.Sample.Wpf/MainWindow.xaml.cs b/src/Samples/CSharpAnalytics.Sample.Wpf/MainWindow.xaml.cs similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Wpf/MainWindow.xaml.cs rename to src/Samples/CSharpAnalytics.Sample.Wpf/MainWindow.xaml.cs diff --git a/Source/Samples/CSharpAnalytics.Sample.Wpf/Properties/AssemblyInfo.cs b/src/Samples/CSharpAnalytics.Sample.Wpf/Properties/AssemblyInfo.cs similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Wpf/Properties/AssemblyInfo.cs rename to src/Samples/CSharpAnalytics.Sample.Wpf/Properties/AssemblyInfo.cs diff --git a/Source/Samples/CSharpAnalytics.Sample.Wpf/Properties/Resources.Designer.cs b/src/Samples/CSharpAnalytics.Sample.Wpf/Properties/Resources.Designer.cs similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Wpf/Properties/Resources.Designer.cs rename to src/Samples/CSharpAnalytics.Sample.Wpf/Properties/Resources.Designer.cs diff --git a/Source/Samples/CSharpAnalytics.Sample.Wpf/Properties/Resources.resx b/src/Samples/CSharpAnalytics.Sample.Wpf/Properties/Resources.resx similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Wpf/Properties/Resources.resx rename to src/Samples/CSharpAnalytics.Sample.Wpf/Properties/Resources.resx diff --git a/Source/Samples/CSharpAnalytics.Sample.Wpf/Properties/Settings.Designer.cs b/src/Samples/CSharpAnalytics.Sample.Wpf/Properties/Settings.Designer.cs similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Wpf/Properties/Settings.Designer.cs rename to src/Samples/CSharpAnalytics.Sample.Wpf/Properties/Settings.Designer.cs diff --git a/Source/Samples/CSharpAnalytics.Sample.Wpf/Properties/Settings.settings b/src/Samples/CSharpAnalytics.Sample.Wpf/Properties/Settings.settings similarity index 100% rename from Source/Samples/CSharpAnalytics.Sample.Wpf/Properties/Settings.settings rename to src/Samples/CSharpAnalytics.Sample.Wpf/Properties/Settings.settings From 89b1a5b62be6d171d1aa5fcf0208feeb239fd476 Mon Sep 17 00:00:00 2001 From: Alex Tamayo Date: Wed, 25 Mar 2020 15:32:00 +0100 Subject: [PATCH 09/14] Tests converted to sdk style format. (cherry picked from commit 5788ec7e1b7d3eb23a63a5abce36da2ae3dd3aa0) --- CSharpAnalytics.sln | 4 +- README.md | 45 +--- .../CSharpAnalytics.Test.Net45.csproj | 115 --------- .../CSharpAnalytics.Tests.csproj | 27 +++ .../Properties/AssemblyInfo.cs | 7 - .../Windows8/Images/UnitTestLogo.png | Bin 5789 -> 0 bytes .../Windows8/Images/UnitTestSmallLogo.png | Bin 745 -> 0 bytes .../Windows8/Images/UnitTestSplashScreen.png | Bin 9381 -> 0 bytes .../Windows8/Images/UnitTestStoreLogo.png | Bin 2005 -> 0 bytes .../Windows8/Package.appxmanifest | 32 --- .../Images/UnitTestLogo.scale-100.png | Bin 5789 -> 0 bytes .../Images/UnitTestSmallLogo.scale-100.png | Bin 745 -> 0 bytes .../Images/UnitTestSplashScreen.scale-100.png | Bin 9381 -> 0 bytes .../Images/UnitTestStoreLogo.scale-100.png | Bin 2005 -> 0 bytes .../Windows81/Package.appxmanifest | 32 --- .../WindowsPhone8/App.xaml | 20 -- .../WindowsPhone8/App.xaml.cs | 223 ----------------- .../WindowsPhone8/Assets/AlignmentGrid.png | Bin 9042 -> 0 bytes .../WindowsPhone8/Assets/ApplicationIcon.png | Bin 3392 -> 0 bytes .../Assets/Tiles/FlipCycleTileLarge.png | Bin 9930 -> 0 bytes .../Assets/Tiles/FlipCycleTileMedium.png | Bin 9070 -> 0 bytes .../Assets/Tiles/FlipCycleTileSmall.png | Bin 3674 -> 0 bytes .../CSharpAnalytics.Test.WindowsPhone8.csproj | 228 ------------------ .../WindowsPhone8/LocalizedStrings.cs | 14 -- .../WindowsPhone8/MainPage.xaml | 62 ----- .../WindowsPhone8/MainPage.xaml.cs | 31 --- .../WindowsPhone8/Properties/AppManifest.xml | 6 - .../Properties/WMAppManifest.xml | 47 ---- .../Resources/AppResources.Designer.cs | 127 ---------- .../WindowsPhone8/Resources/AppResources.resx | 137 ----------- .../Properties/AssemblyInfo.cs | 2 +- 31 files changed, 32 insertions(+), 1127 deletions(-) delete mode 100644 src/CSharpAnalytics.Tests/CSharpAnalytics.Test.Net45.csproj create mode 100644 src/CSharpAnalytics.Tests/CSharpAnalytics.Tests.csproj delete mode 100644 src/CSharpAnalytics.Tests/Windows8/Images/UnitTestLogo.png delete mode 100644 src/CSharpAnalytics.Tests/Windows8/Images/UnitTestSmallLogo.png delete mode 100644 src/CSharpAnalytics.Tests/Windows8/Images/UnitTestSplashScreen.png delete mode 100644 src/CSharpAnalytics.Tests/Windows8/Images/UnitTestStoreLogo.png delete mode 100644 src/CSharpAnalytics.Tests/Windows8/Package.appxmanifest delete mode 100644 src/CSharpAnalytics.Tests/Windows81/Images/UnitTestLogo.scale-100.png delete mode 100644 src/CSharpAnalytics.Tests/Windows81/Images/UnitTestSmallLogo.scale-100.png delete mode 100644 src/CSharpAnalytics.Tests/Windows81/Images/UnitTestSplashScreen.scale-100.png delete mode 100644 src/CSharpAnalytics.Tests/Windows81/Images/UnitTestStoreLogo.scale-100.png delete mode 100644 src/CSharpAnalytics.Tests/Windows81/Package.appxmanifest delete mode 100644 src/CSharpAnalytics.Tests/WindowsPhone8/App.xaml delete mode 100644 src/CSharpAnalytics.Tests/WindowsPhone8/App.xaml.cs delete mode 100644 src/CSharpAnalytics.Tests/WindowsPhone8/Assets/AlignmentGrid.png delete mode 100644 src/CSharpAnalytics.Tests/WindowsPhone8/Assets/ApplicationIcon.png delete mode 100644 src/CSharpAnalytics.Tests/WindowsPhone8/Assets/Tiles/FlipCycleTileLarge.png delete mode 100644 src/CSharpAnalytics.Tests/WindowsPhone8/Assets/Tiles/FlipCycleTileMedium.png delete mode 100644 src/CSharpAnalytics.Tests/WindowsPhone8/Assets/Tiles/FlipCycleTileSmall.png delete mode 100644 src/CSharpAnalytics.Tests/WindowsPhone8/CSharpAnalytics.Test.WindowsPhone8.csproj delete mode 100644 src/CSharpAnalytics.Tests/WindowsPhone8/LocalizedStrings.cs delete mode 100644 src/CSharpAnalytics.Tests/WindowsPhone8/MainPage.xaml delete mode 100644 src/CSharpAnalytics.Tests/WindowsPhone8/MainPage.xaml.cs delete mode 100644 src/CSharpAnalytics.Tests/WindowsPhone8/Properties/AppManifest.xml delete mode 100644 src/CSharpAnalytics.Tests/WindowsPhone8/Properties/WMAppManifest.xml delete mode 100644 src/CSharpAnalytics.Tests/WindowsPhone8/Resources/AppResources.Designer.cs delete mode 100644 src/CSharpAnalytics.Tests/WindowsPhone8/Resources/AppResources.resx diff --git a/CSharpAnalytics.sln b/CSharpAnalytics.sln index bdd02dd..c0fad64 100644 --- a/CSharpAnalytics.sln +++ b/CSharpAnalytics.sln @@ -7,13 +7,13 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CSharpAnalytics", "src\CSha EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".NET Framework", ".NET Framework", "{B6D30B2A-B2CC-4BAD-A5AB-8ABD7B665EE7}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpAnalytics.Test.Net45", "src\CSharpAnalytics.Tests\CSharpAnalytics.Test.Net45.csproj", "{0BCC678D-7C68-4A6F-AE96-E1EEE2C217DA}" +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 NuGet\CSharpAnalytics.nuspec = NuGet\CSharpAnalytics.nuspec src\LICENCE.txt = src\LICENCE.txt - README.md = .README.md + README.md = README.md 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}" diff --git a/README.md b/README.md index 978a499..e6e0892 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) diff --git a/src/CSharpAnalytics.Tests/CSharpAnalytics.Test.Net45.csproj b/src/CSharpAnalytics.Tests/CSharpAnalytics.Test.Net45.csproj deleted file mode 100644 index 802d404..0000000 --- a/src/CSharpAnalytics.Tests/CSharpAnalytics.Test.Net45.csproj +++ /dev/null @@ -1,115 +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 - TRACE;DEBUG;NET45 - prompt - 4 - MinimumRecommendedRules.ruleset - - - pdbonly - true - TRACE;NET45 - prompt - 4 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {0334b071-1fb1-4372-b500-4bc58a11ee59} - CSharpAnalytics - - - - - - - - False - - - False - - - False - - - False - - - - - - - - \ No newline at end of file diff --git a/src/CSharpAnalytics.Tests/CSharpAnalytics.Tests.csproj b/src/CSharpAnalytics.Tests/CSharpAnalytics.Tests.csproj new file mode 100644 index 0000000..631cc4f --- /dev/null +++ b/src/CSharpAnalytics.Tests/CSharpAnalytics.Tests.csproj @@ -0,0 +1,27 @@ + + + Library + net45;net461 + CSharpAnalytics.Tests + CSharpAnalytics.Tests + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/CSharpAnalytics.Tests/Properties/AssemblyInfo.cs b/src/CSharpAnalytics.Tests/Properties/AssemblyInfo.cs index 48c0593..6a1830e 100644 --- a/src/CSharpAnalytics.Tests/Properties/AssemblyInfo.cs +++ b/src/CSharpAnalytics.Tests/Properties/AssemblyInfo.cs @@ -1,11 +1,4 @@ using System.Reflection; using System.Resources; -[assembly: AssemblyTitle("CSharpAnalytics.Test")] -[assembly: AssemblyProduct("CSharpAnalytics")] -[assembly: AssemblyCopyright("Copyright © 2012-2014 Attack Pattern LLC.")] - -[assembly: AssemblyVersion("1.5.0.0")] -[assembly: AssemblyFileVersion("1.5.0.0")] -[assembly: AssemblyDescriptionAttribute("Unit tests for CSharpAnalytics")] [assembly: NeutralResourcesLanguageAttribute("")] \ No newline at end of file diff --git a/src/CSharpAnalytics.Tests/Windows8/Images/UnitTestLogo.png b/src/CSharpAnalytics.Tests/Windows8/Images/UnitTestLogo.png deleted file mode 100644 index ebd735aa9352cf97bfcbe11dc4281617d570dca4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5789 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 diff --git a/src/CSharpAnalytics.Tests/Windows8/Images/UnitTestSmallLogo.png b/src/CSharpAnalytics.Tests/Windows8/Images/UnitTestSmallLogo.png deleted file mode 100644 index 92dd1058fbfb70c4491d934fe5f60ff2bacd41e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 745 zcmVGVQpR4ciyoglSwB91#GhGhn{+`40 zKOYZLtJUy5M#Hz+??BTuEf5G^US9q^+F&rqWU^c?_f@o5EFKPriyn{1Bb7>Dq2Gpm zj6OIx0Dx2~HJwfYfY0ae?(T|2B8f!u{QL|62qB-(r&KC$Z*SK_*J?F}VN52|>FMcU zFfbSl3WWjytX69-my^roXJ=<#ua{)79{TC&>GAP#Z*OmVdpj13x!rDr5V@9aw;PYg zH#axi?RKlx`izXlVo|Hrs#L0EGRd+maoTJ)o6W}O^8uh-F3h|y@YSS;jQC=}8(jWHGo1n>Siolbo|pUdSMkH^GQuh+}v@;m@7 z&Jc>C4i68Hj*hr+T!t~ezP`S?y22R0k0z$q>n|=YHa0d^OdOHmY;9-&aER;zuc8|`*G;bM$g zmK6$x05F+MNKYb!91h14^s=n;`Mg%E?Q}Y^Sj_A71_A*9C=?2bL}EUktX3=67~#xX zqtR?_Z50ZIlarIdV8G+?{C+<<@8RKLe}A70Rh>@PY&O@+Iv5NhgzoO{=BuF5Xoy6j zot>Spu7XS^v$&ZilS!#ml1in7OJvMsGGeiKZ5iKgy!-omnN0R!*h(_~++zV_yx462 b>BH;~a9|}kOw?>(00000NkvXXu0mjfaI93Z diff --git a/src/CSharpAnalytics.Tests/Windows8/Images/UnitTestSplashScreen.png b/src/CSharpAnalytics.Tests/Windows8/Images/UnitTestSplashScreen.png deleted file mode 100644 index 193187f108f50dd242cb5c589b02a29691b7432a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9381 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 - - - - 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/src/CSharpAnalytics.Tests/Windows81/Images/UnitTestLogo.scale-100.png b/src/CSharpAnalytics.Tests/Windows81/Images/UnitTestLogo.scale-100.png deleted file mode 100644 index ebd735aa9352cf97bfcbe11dc4281617d570dca4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5789 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 diff --git a/src/CSharpAnalytics.Tests/Windows81/Images/UnitTestSmallLogo.scale-100.png b/src/CSharpAnalytics.Tests/Windows81/Images/UnitTestSmallLogo.scale-100.png deleted file mode 100644 index 92dd1058fbfb70c4491d934fe5f60ff2bacd41e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 745 zcmVGVQpR4ciyoglSwB91#GhGhn{+`40 zKOYZLtJUy5M#Hz+??BTuEf5G^US9q^+F&rqWU^c?_f@o5EFKPriyn{1Bb7>Dq2Gpm zj6OIx0Dx2~HJwfYfY0ae?(T|2B8f!u{QL|62qB-(r&KC$Z*SK_*J?F}VN52|>FMcU zFfbSl3WWjytX69-my^roXJ=<#ua{)79{TC&>GAP#Z*OmVdpj13x!rDr5V@9aw;PYg zH#axi?RKlx`izXlVo|Hrs#L0EGRd+maoTJ)o6W}O^8uh-F3h|y@YSS;jQC=}8(jWHGo1n>Siolbo|pUdSMkH^GQuh+}v@;m@7 z&Jc>C4i68Hj*hr+T!t~ezP`S?y22R0k0z$q>n|=YHa0d^OdOHmY;9-&aER;zuc8|`*G;bM$g zmK6$x05F+MNKYb!91h14^s=n;`Mg%E?Q}Y^Sj_A71_A*9C=?2bL}EUktX3=67~#xX zqtR?_Z50ZIlarIdV8G+?{C+<<@8RKLe}A70Rh>@PY&O@+Iv5NhgzoO{=BuF5Xoy6j zot>Spu7XS^v$&ZilS!#ml1in7OJvMsGGeiKZ5iKgy!-omnN0R!*h(_~++zV_yx462 b>BH;~a9|}kOw?>(00000NkvXXu0mjfaI93Z diff --git a/src/CSharpAnalytics.Tests/Windows81/Images/UnitTestSplashScreen.scale-100.png b/src/CSharpAnalytics.Tests/Windows81/Images/UnitTestSplashScreen.scale-100.png deleted file mode 100644 index 193187f108f50dd242cb5c589b02a29691b7432a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9381 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 - - - - 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/src/CSharpAnalytics.Tests/WindowsPhone8/App.xaml b/src/CSharpAnalytics.Tests/WindowsPhone8/App.xaml deleted file mode 100644 index 609141c..0000000 --- a/src/CSharpAnalytics.Tests/WindowsPhone8/App.xaml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/CSharpAnalytics.Tests/WindowsPhone8/App.xaml.cs b/src/CSharpAnalytics.Tests/WindowsPhone8/App.xaml.cs deleted file mode 100644 index 6767024..0000000 --- a/src/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/src/CSharpAnalytics.Tests/WindowsPhone8/Assets/AlignmentGrid.png b/src/CSharpAnalytics.Tests/WindowsPhone8/Assets/AlignmentGrid.png deleted file mode 100644 index f7d2e97804e451530960b57429a2b0a26c86f5d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9042 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 IP1{HR1(GMkF8}}l diff --git a/src/CSharpAnalytics.Tests/WindowsPhone8/Assets/Tiles/FlipCycleTileMedium.png b/src/CSharpAnalytics.Tests/WindowsPhone8/Assets/Tiles/FlipCycleTileMedium.png deleted file mode 100644 index e93b89d600641c9d5b05f94493a9fde6afa850e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9070 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 - - - 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/src/CSharpAnalytics.Tests/WindowsPhone8/LocalizedStrings.cs b/src/CSharpAnalytics.Tests/WindowsPhone8/LocalizedStrings.cs deleted file mode 100644 index 26b54a6..0000000 --- a/src/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/src/CSharpAnalytics.Tests/WindowsPhone8/MainPage.xaml b/src/CSharpAnalytics.Tests/WindowsPhone8/MainPage.xaml deleted file mode 100644 index 56b8589..0000000 --- a/src/CSharpAnalytics.Tests/WindowsPhone8/MainPage.xaml +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/CSharpAnalytics.Tests/WindowsPhone8/MainPage.xaml.cs b/src/CSharpAnalytics.Tests/WindowsPhone8/MainPage.xaml.cs deleted file mode 100644 index e367b51..0000000 --- a/src/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/src/CSharpAnalytics.Tests/WindowsPhone8/Properties/AppManifest.xml b/src/CSharpAnalytics.Tests/WindowsPhone8/Properties/AppManifest.xml deleted file mode 100644 index 6712a11..0000000 --- a/src/CSharpAnalytics.Tests/WindowsPhone8/Properties/AppManifest.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - diff --git a/src/CSharpAnalytics.Tests/WindowsPhone8/Properties/WMAppManifest.xml b/src/CSharpAnalytics.Tests/WindowsPhone8/Properties/WMAppManifest.xml deleted file mode 100644 index d3152ae..0000000 --- a/src/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/src/CSharpAnalytics.Tests/WindowsPhone8/Resources/AppResources.Designer.cs b/src/CSharpAnalytics.Tests/WindowsPhone8/Resources/AppResources.Designer.cs deleted file mode 100644 index c82f2df..0000000 --- a/src/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/src/CSharpAnalytics.Tests/WindowsPhone8/Resources/AppResources.resx b/src/CSharpAnalytics.Tests/WindowsPhone8/Resources/AppResources.resx deleted file mode 100644 index 529a194..0000000 --- a/src/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/src/CSharpAnalytics/Properties/AssemblyInfo.cs b/src/CSharpAnalytics/Properties/AssemblyInfo.cs index 915a527..b2dc13d 100644 --- a/src/CSharpAnalytics/Properties/AssemblyInfo.cs +++ b/src/CSharpAnalytics/Properties/AssemblyInfo.cs @@ -3,7 +3,7 @@ using System.Runtime.InteropServices; -[assembly: InternalsVisibleTo("CSharpAnalytics.Test.Net45")] +[assembly: InternalsVisibleTo("CSharpAnalytics.Tests")] [assembly: InternalsVisibleTo("CSharpAnalytics.Test.Windows8")] [assembly: InternalsVisibleTo("CSharpAnalytics.Test.Windows81")] [assembly: InternalsVisibleTo("CSharpAnalytics.Test.WindowsPhone8")] \ No newline at end of file From 21f0b81af8d82ddb13595b09861af32a2f57851b Mon Sep 17 00:00:00 2001 From: Alex Tamayo Date: Wed, 25 Mar 2020 16:34:58 +0100 Subject: [PATCH 10/14] Consolidated in one project target to net45, net461 adn netcoreapp3.1 (cherry picked from commit e8379f4a3e935d30d503f82ffd606a928e3f48f1) --- CSharpAnalytics.sln | 31 +- .../CSharpAnalytics.Tests.csproj | 2 +- .../CSharpAnalytics.WPFNetCore3.csproj | 11 - src/CSharpAnalytics/CSharpAnalytics.csproj | 10 +- .../CSharpAnalytics.Sample.WinForms.csproj | 86 +- .../Properties/AssemblyInfo.cs | 8 - .../CSharpAnalytics.Sample.Windows8/App.xaml | 14 - .../App.xaml.cs | 116 -- .../Assets/DarkGray.png | Bin 560 -> 0 bytes .../Assets/LightGray.png | Bin 560 -> 0 bytes .../Assets/Logo.png | Bin 801 -> 0 bytes .../Assets/MediumGray.png | Bin 561 -> 0 bytes .../Assets/SmallLogo.png | Bin 329 -> 0 bytes .../Assets/SplashScreen.png | Bin 2146 -> 0 bytes .../Assets/StoreLogo.png | Bin 429 -> 0 bytes .../CSharpAnalytics.Sample.Windows8.csproj | 186 -- .../CSharpAnalytics.Sample.WindowsStore.sln | 64 - .../Common/BindableBase.cs | 54 - .../Common/BooleanToVisibilityConverter.cs | 23 - .../Common/LayoutAwarePage.cs | 541 ----- .../Common/RichTextColumns.cs | 206 -- .../Common/StandardStyles.xaml | 1829 ----------------- .../Common/SuspensionManager.cs | 253 --- .../DataModel/SampleDataSource.cs | 527 ----- .../GroupDetailPage.xaml | 145 -- .../GroupDetailPage.xaml.cs | 71 - .../GroupedItemsPage.xaml | 174 -- .../GroupedItemsPage.xaml.cs | 65 - .../ItemDetailPage.xaml | 181 -- .../ItemDetailPage.xaml.cs | 79 - .../OptionsFlyout.xaml | 143 -- .../OptionsFlyout.xaml.cs | 99 - .../Package.appxmanifest | 27 - .../Properties/AssemblyInfo.cs | 12 - .../CSharpAnalytics.Sample.Windows81/App.xaml | 12 - .../App.xaml.cs | 142 -- .../Assets/DarkGray.png | Bin 560 -> 0 bytes .../Assets/LightGray.png | Bin 560 -> 0 bytes .../Assets/Logo.scale-100.png | Bin 801 -> 0 bytes .../Assets/MediumGray.png | Bin 561 -> 0 bytes .../Assets/SmallLogo.scale-100.png | Bin 329 -> 0 bytes .../Assets/SplashScreen.scale-100.png | Bin 2146 -> 0 bytes .../Assets/StoreLogo.scale-100.png | Bin 429 -> 0 bytes .../CSharpAnalytics.Sample.Windows81.csproj | 185 -- .../Common/NavigationHelper.cs | 412 ---- .../Common/ObservableDictionary.cs | 149 -- .../Common/ReadMe.txt | 7 - .../Common/RelayCommand.cs | 86 - .../Common/SuspensionManager.cs | 257 --- .../DataModel/SampleData.json | 327 --- .../DataModel/SampleDataSource.cs | 153 -- .../GroupDetailPage.xaml | 102 - .../GroupDetailPage.xaml.cs | 100 - .../GroupedItemsPage.xaml | 111 - .../GroupedItemsPage.xaml.cs | 114 - .../ItemDetailPage.xaml | 54 - .../ItemDetailPage.xaml.cs | 86 - .../OptionsSettingsFlyout.xaml | 31 - .../OptionsSettingsFlyout.xaml.cs | 14 - .../Package.appxmanifest | 26 - .../Properties/AssemblyInfo.cs | 12 - .../App.xaml | 18 - .../App.xaml.cs | 245 --- .../Assets/ApplicationIcon.png | Bin 3392 -> 0 bytes .../Assets/SettingsIcon.png | Bin 825 -> 0 bytes .../Assets/Tiles/FlipCycleTileLarge.png | Bin 9930 -> 0 bytes .../Assets/Tiles/FlipCycleTileMedium.png | Bin 9070 -> 0 bytes .../Assets/Tiles/FlipCycleTileSmall.png | Bin 3674 -> 0 bytes .../Assets/Tiles/IconicTileMediumLarge.png | Bin 4937 -> 0 bytes .../Assets/Tiles/IconicTileSmall.png | Bin 3724 -> 0 bytes ...SharpAnalytics.Sample.WindowsPhone8.csproj | 192 -- .../DetailsPage.xaml | 44 - .../DetailsPage.xaml.cs | 57 - .../LocalizedStrings.cs | 14 - .../MainPage.xaml | 50 - .../MainPage.xaml.cs | 47 - .../Properties/AppManifest.xml | 6 - .../Properties/AssemblyInfo.cs | 12 - .../Properties/WMAppManifest.xml | 38 - .../Resources/AppResources.Designer.cs | 138 -- .../Resources/AppResources.resx | 140 -- .../SampleData/MainViewModelSampleData.xaml | 16 - .../SettingsPage.xaml | 41 - .../SettingsPage.xaml.cs | 10 - .../ViewModels/ItemViewModel.cs | 109 - .../ViewModels/MainViewModel.cs | 94 - .../packages.config | 4 - .../App.xaml | 20 - .../App.xaml.cs | 137 -- .../Assets/DarkGray.png | Bin 560 -> 0 bytes .../Assets/HubBackground.theme-dark.png | Bin 47177 -> 0 bytes .../Assets/HubBackground.theme-light.png | Bin 44856 -> 0 bytes .../Assets/LightGray.png | Bin 560 -> 0 bytes .../Assets/Logo.scale-240.png | Bin 2516 -> 0 bytes .../Assets/MediumGray.png | Bin 561 -> 0 bytes .../Assets/SmallLogo.scale-240.png | Bin 753 -> 0 bytes .../Assets/SplashScreen.scale-240.png | Bin 14715 -> 0 bytes .../Assets/Square71x71Logo.scale-240.png | Bin 1122 -> 0 bytes .../Assets/StoreLogo.scale-240.png | Bin 2200 -> 0 bytes .../Assets/WideLogo.scale-240.png | Bin 4530 -> 0 bytes ...harpAnalytics.Sample.WindowsPhone81.csproj | 164 -- .../Common/NavigationHelper.cs | 436 ---- .../Common/ObservableDictionary.cs | 149 -- .../Common/ReadMe.txt | 7 - .../Common/RelayCommand.cs | 86 - .../Common/SuspensionManager.cs | 269 --- .../DataModel/SampleData.json | 327 --- .../DataModel/SampleDataSource.cs | 153 -- .../HubPage.xaml | 160 -- .../HubPage.xaml.cs | 150 -- .../ItemPage.xaml | 48 - .../ItemPage.xaml.cs | 116 -- .../Package.appxmanifest | 29 - .../Properties/AssemblyInfo.cs | 29 - .../SectionPage.xaml | 79 - .../SectionPage.xaml.cs | 127 -- .../Strings/en-US/Resources.resw | 144 -- .../CSharpAnalytics.Sample.Wpf.csproj | 127 +- .../MainWindow.xaml.cs | 2 +- .../Properties/AssemblyInfo.cs | 12 +- 120 files changed, 51 insertions(+), 11332 deletions(-) delete mode 100644 src/CSharpAnalytics/CSharpAnalytics.WPFNetCore3.csproj delete mode 100644 src/Samples/CSharpAnalytics.Sample.Windows8/App.xaml delete mode 100644 src/Samples/CSharpAnalytics.Sample.Windows8/App.xaml.cs delete mode 100644 src/Samples/CSharpAnalytics.Sample.Windows8/Assets/DarkGray.png delete mode 100644 src/Samples/CSharpAnalytics.Sample.Windows8/Assets/LightGray.png delete mode 100644 src/Samples/CSharpAnalytics.Sample.Windows8/Assets/Logo.png delete mode 100644 src/Samples/CSharpAnalytics.Sample.Windows8/Assets/MediumGray.png delete mode 100644 src/Samples/CSharpAnalytics.Sample.Windows8/Assets/SmallLogo.png delete mode 100644 src/Samples/CSharpAnalytics.Sample.Windows8/Assets/SplashScreen.png delete mode 100644 src/Samples/CSharpAnalytics.Sample.Windows8/Assets/StoreLogo.png delete mode 100644 src/Samples/CSharpAnalytics.Sample.Windows8/CSharpAnalytics.Sample.Windows8.csproj delete mode 100644 src/Samples/CSharpAnalytics.Sample.Windows8/CSharpAnalytics.Sample.WindowsStore.sln delete mode 100644 src/Samples/CSharpAnalytics.Sample.Windows8/Common/BindableBase.cs delete mode 100644 src/Samples/CSharpAnalytics.Sample.Windows8/Common/BooleanToVisibilityConverter.cs delete mode 100644 src/Samples/CSharpAnalytics.Sample.Windows8/Common/LayoutAwarePage.cs delete mode 100644 src/Samples/CSharpAnalytics.Sample.Windows8/Common/RichTextColumns.cs delete mode 100644 src/Samples/CSharpAnalytics.Sample.Windows8/Common/StandardStyles.xaml delete mode 100644 src/Samples/CSharpAnalytics.Sample.Windows8/Common/SuspensionManager.cs delete mode 100644 src/Samples/CSharpAnalytics.Sample.Windows8/DataModel/SampleDataSource.cs delete mode 100644 src/Samples/CSharpAnalytics.Sample.Windows8/GroupDetailPage.xaml delete mode 100644 src/Samples/CSharpAnalytics.Sample.Windows8/GroupDetailPage.xaml.cs delete mode 100644 src/Samples/CSharpAnalytics.Sample.Windows8/GroupedItemsPage.xaml delete mode 100644 src/Samples/CSharpAnalytics.Sample.Windows8/GroupedItemsPage.xaml.cs delete mode 100644 src/Samples/CSharpAnalytics.Sample.Windows8/ItemDetailPage.xaml delete mode 100644 src/Samples/CSharpAnalytics.Sample.Windows8/ItemDetailPage.xaml.cs delete mode 100644 src/Samples/CSharpAnalytics.Sample.Windows8/OptionsFlyout.xaml delete mode 100644 src/Samples/CSharpAnalytics.Sample.Windows8/OptionsFlyout.xaml.cs delete mode 100644 src/Samples/CSharpAnalytics.Sample.Windows8/Package.appxmanifest delete mode 100644 src/Samples/CSharpAnalytics.Sample.Windows8/Properties/AssemblyInfo.cs delete mode 100644 src/Samples/CSharpAnalytics.Sample.Windows81/App.xaml delete mode 100644 src/Samples/CSharpAnalytics.Sample.Windows81/App.xaml.cs delete mode 100644 src/Samples/CSharpAnalytics.Sample.Windows81/Assets/DarkGray.png delete mode 100644 src/Samples/CSharpAnalytics.Sample.Windows81/Assets/LightGray.png delete mode 100644 src/Samples/CSharpAnalytics.Sample.Windows81/Assets/Logo.scale-100.png delete mode 100644 src/Samples/CSharpAnalytics.Sample.Windows81/Assets/MediumGray.png delete mode 100644 src/Samples/CSharpAnalytics.Sample.Windows81/Assets/SmallLogo.scale-100.png delete mode 100644 src/Samples/CSharpAnalytics.Sample.Windows81/Assets/SplashScreen.scale-100.png delete mode 100644 src/Samples/CSharpAnalytics.Sample.Windows81/Assets/StoreLogo.scale-100.png delete mode 100644 src/Samples/CSharpAnalytics.Sample.Windows81/CSharpAnalytics.Sample.Windows81.csproj delete mode 100644 src/Samples/CSharpAnalytics.Sample.Windows81/Common/NavigationHelper.cs delete mode 100644 src/Samples/CSharpAnalytics.Sample.Windows81/Common/ObservableDictionary.cs delete mode 100644 src/Samples/CSharpAnalytics.Sample.Windows81/Common/ReadMe.txt delete mode 100644 src/Samples/CSharpAnalytics.Sample.Windows81/Common/RelayCommand.cs delete mode 100644 src/Samples/CSharpAnalytics.Sample.Windows81/Common/SuspensionManager.cs delete mode 100644 src/Samples/CSharpAnalytics.Sample.Windows81/DataModel/SampleData.json delete mode 100644 src/Samples/CSharpAnalytics.Sample.Windows81/DataModel/SampleDataSource.cs delete mode 100644 src/Samples/CSharpAnalytics.Sample.Windows81/GroupDetailPage.xaml delete mode 100644 src/Samples/CSharpAnalytics.Sample.Windows81/GroupDetailPage.xaml.cs delete mode 100644 src/Samples/CSharpAnalytics.Sample.Windows81/GroupedItemsPage.xaml delete mode 100644 src/Samples/CSharpAnalytics.Sample.Windows81/GroupedItemsPage.xaml.cs delete mode 100644 src/Samples/CSharpAnalytics.Sample.Windows81/ItemDetailPage.xaml delete mode 100644 src/Samples/CSharpAnalytics.Sample.Windows81/ItemDetailPage.xaml.cs delete mode 100644 src/Samples/CSharpAnalytics.Sample.Windows81/OptionsSettingsFlyout.xaml delete mode 100644 src/Samples/CSharpAnalytics.Sample.Windows81/OptionsSettingsFlyout.xaml.cs delete mode 100644 src/Samples/CSharpAnalytics.Sample.Windows81/Package.appxmanifest delete mode 100644 src/Samples/CSharpAnalytics.Sample.Windows81/Properties/AssemblyInfo.cs delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone8/App.xaml delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone8/App.xaml.cs delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone8/Assets/ApplicationIcon.png delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone8/Assets/SettingsIcon.png delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone8/Assets/Tiles/FlipCycleTileLarge.png delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone8/Assets/Tiles/FlipCycleTileMedium.png delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone8/Assets/Tiles/FlipCycleTileSmall.png delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone8/Assets/Tiles/IconicTileMediumLarge.png delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone8/Assets/Tiles/IconicTileSmall.png delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone8/CSharpAnalytics.Sample.WindowsPhone8.csproj delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone8/DetailsPage.xaml delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone8/DetailsPage.xaml.cs delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone8/LocalizedStrings.cs delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone8/MainPage.xaml delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone8/MainPage.xaml.cs delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone8/Properties/AppManifest.xml delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone8/Properties/AssemblyInfo.cs delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone8/Properties/WMAppManifest.xml delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone8/Resources/AppResources.Designer.cs delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone8/Resources/AppResources.resx delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone8/SampleData/MainViewModelSampleData.xaml delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone8/SettingsPage.xaml delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone8/SettingsPage.xaml.cs delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone8/ViewModels/ItemViewModel.cs delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone8/ViewModels/MainViewModel.cs delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone8/packages.config delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone81/App.xaml delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone81/App.xaml.cs delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/DarkGray.png delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/HubBackground.theme-dark.png delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/HubBackground.theme-light.png delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/LightGray.png delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/Logo.scale-240.png delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/MediumGray.png delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/SmallLogo.scale-240.png delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/SplashScreen.scale-240.png delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/Square71x71Logo.scale-240.png delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/StoreLogo.scale-240.png delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Assets/WideLogo.scale-240.png delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone81/CSharpAnalytics.Sample.WindowsPhone81.csproj delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Common/NavigationHelper.cs delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Common/ObservableDictionary.cs delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Common/ReadMe.txt delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Common/RelayCommand.cs delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Common/SuspensionManager.cs delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone81/DataModel/SampleData.json delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone81/DataModel/SampleDataSource.cs delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone81/HubPage.xaml delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone81/HubPage.xaml.cs delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone81/ItemPage.xaml delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone81/ItemPage.xaml.cs delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Package.appxmanifest delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Properties/AssemblyInfo.cs delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone81/SectionPage.xaml delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone81/SectionPage.xaml.cs delete mode 100644 src/Samples/CSharpAnalytics.Sample.WindowsPhone81/Strings/en-US/Resources.resw diff --git a/CSharpAnalytics.sln b/CSharpAnalytics.sln index c0fad64..36bafd0 100644 --- a/CSharpAnalytics.sln +++ b/CSharpAnalytics.sln @@ -5,8 +5,6 @@ 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("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".NET Framework", ".NET Framework", "{B6D30B2A-B2CC-4BAD-A5AB-8ABD7B665EE7}" -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}" @@ -14,6 +12,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution NuGet\CSharpAnalytics.nuspec = NuGet\CSharpAnalytics.nuspec 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}" @@ -22,10 +21,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Samples", "Samples", "{3F62 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 -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WPF NET Core 3", "WPF NET Core 3", "{7A5A6616-420B-473B-A828-D59E5FDE8934}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CSharpAnalytics.WPFNetCore3", "src\CSharpAnalytics\CSharpAnalytics.WPFNetCore3.csproj", "{0C137937-99D4-4867-851F-36479D72EE58}" -EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -96,37 +91,13 @@ Global {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 - {0C137937-99D4-4867-851F-36479D72EE58}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0C137937-99D4-4867-851F-36479D72EE58}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0C137937-99D4-4867-851F-36479D72EE58}.Debug|ARM.ActiveCfg = Debug|Any CPU - {0C137937-99D4-4867-851F-36479D72EE58}.Debug|ARM.Build.0 = Debug|Any CPU - {0C137937-99D4-4867-851F-36479D72EE58}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {0C137937-99D4-4867-851F-36479D72EE58}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {0C137937-99D4-4867-851F-36479D72EE58}.Debug|x64.ActiveCfg = Debug|Any CPU - {0C137937-99D4-4867-851F-36479D72EE58}.Debug|x64.Build.0 = Debug|Any CPU - {0C137937-99D4-4867-851F-36479D72EE58}.Debug|x86.ActiveCfg = Debug|Any CPU - {0C137937-99D4-4867-851F-36479D72EE58}.Debug|x86.Build.0 = Debug|Any CPU - {0C137937-99D4-4867-851F-36479D72EE58}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0C137937-99D4-4867-851F-36479D72EE58}.Release|Any CPU.Build.0 = Release|Any CPU - {0C137937-99D4-4867-851F-36479D72EE58}.Release|ARM.ActiveCfg = Release|Any CPU - {0C137937-99D4-4867-851F-36479D72EE58}.Release|ARM.Build.0 = Release|Any CPU - {0C137937-99D4-4867-851F-36479D72EE58}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {0C137937-99D4-4867-851F-36479D72EE58}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {0C137937-99D4-4867-851F-36479D72EE58}.Release|x64.ActiveCfg = Release|Any CPU - {0C137937-99D4-4867-851F-36479D72EE58}.Release|x64.Build.0 = Release|Any CPU - {0C137937-99D4-4867-851F-36479D72EE58}.Release|x86.ActiveCfg = Release|Any CPU - {0C137937-99D4-4867-851F-36479D72EE58}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution - {0334B071-1FB1-4372-B500-4BC58A11EE59} = {B6D30B2A-B2CC-4BAD-A5AB-8ABD7B665EE7} - {0BCC678D-7C68-4A6F-AE96-E1EEE2C217DA} = {B6D30B2A-B2CC-4BAD-A5AB-8ABD7B665EE7} {07DDA3AD-EE3B-4FE5-B532-059629C6A24E} = {3F625E98-D620-4CF3-BD83-5C97B7360496} - {3F625E98-D620-4CF3-BD83-5C97B7360496} = {B6D30B2A-B2CC-4BAD-A5AB-8ABD7B665EE7} {A599EEEA-FC89-47FB-B8A9-DFD16FC3201D} = {3F625E98-D620-4CF3-BD83-5C97B7360496} - {0C137937-99D4-4867-851F-36479D72EE58} = {7A5A6616-420B-473B-A828-D59E5FDE8934} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {8181473F-92C8-4C1D-A143-DE6AB7671CFB} diff --git a/src/CSharpAnalytics.Tests/CSharpAnalytics.Tests.csproj b/src/CSharpAnalytics.Tests/CSharpAnalytics.Tests.csproj index 631cc4f..656ede5 100644 --- a/src/CSharpAnalytics.Tests/CSharpAnalytics.Tests.csproj +++ b/src/CSharpAnalytics.Tests/CSharpAnalytics.Tests.csproj @@ -1,7 +1,7 @@  Library - net45;net461 + net45;net461;netcoreapp3.1 CSharpAnalytics.Tests CSharpAnalytics.Tests diff --git a/src/CSharpAnalytics/CSharpAnalytics.WPFNetCore3.csproj b/src/CSharpAnalytics/CSharpAnalytics.WPFNetCore3.csproj deleted file mode 100644 index 2112a9f..0000000 --- a/src/CSharpAnalytics/CSharpAnalytics.WPFNetCore3.csproj +++ /dev/null @@ -1,11 +0,0 @@ - - - Library - netcoreapp3.1 - true - true - false - CSharpAnalytics - CSharpAnalytics - - \ No newline at end of file diff --git a/src/CSharpAnalytics/CSharpAnalytics.csproj b/src/CSharpAnalytics/CSharpAnalytics.csproj index e7a6a7a..3935b08 100644 --- a/src/CSharpAnalytics/CSharpAnalytics.csproj +++ b/src/CSharpAnalytics/CSharpAnalytics.csproj @@ -1,11 +1,13 @@ - + Library - net45;net461 + net45;net461;netcoreapp3.1 CSharpAnalytics - CSharpAnalytics + CSharpAnalytics + true + true - + diff --git a/src/Samples/CSharpAnalytics.Sample.WinForms/CSharpAnalytics.Sample.WinForms.csproj b/src/Samples/CSharpAnalytics.Sample.WinForms/CSharpAnalytics.Sample.WinForms.csproj index 3553d7d..79d7626 100644 --- a/src/Samples/CSharpAnalytics.Sample.WinForms/CSharpAnalytics.Sample.WinForms.csproj +++ b/src/Samples/CSharpAnalytics.Sample.WinForms/CSharpAnalytics.Sample.WinForms.csproj @@ -1,68 +1,20 @@ - - - - - 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 - - - - + + + WinExe + net45 + true + CSharpAnalytics.Sample.WinForms + CSharpAnalytics.Sample.WinForms + false + + + + + + + + + + + \ No newline at end of file diff --git a/src/Samples/CSharpAnalytics.Sample.WinForms/Properties/AssemblyInfo.cs b/src/Samples/CSharpAnalytics.Sample.WinForms/Properties/AssemblyInfo.cs index 16de1b2..a445455 100644 --- a/src/Samples/CSharpAnalytics.Sample.WinForms/Properties/AssemblyInfo.cs +++ b/src/Samples/CSharpAnalytics.Sample.WinForms/Properties/AssemblyInfo.cs @@ -1,12 +1,4 @@ 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.5.0.0")] -[assembly: AssemblyFileVersion("1.5.0.0")] [assembly: ComVisible(false)] \ No newline at end of file diff --git a/src/Samples/CSharpAnalytics.Sample.Windows8/App.xaml b/src/Samples/CSharpAnalytics.Sample.Windows8/App.xaml deleted file mode 100644 index 38a11ed..0000000 --- a/src/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/src/Samples/CSharpAnalytics.Sample.Windows8/App.xaml.cs b/src/Samples/CSharpAnalytics.Sample.Windows8/App.xaml.cs deleted file mode 100644 index 69be4a7..0000000 --- a/src/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/src/Samples/CSharpAnalytics.Sample.Windows8/Assets/DarkGray.png b/src/Samples/CSharpAnalytics.Sample.Windows8/Assets/DarkGray.png deleted file mode 100644 index 6cb268aaa22f93efafa0e2daf00bdb7d328e472b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 560 zcmeAS@N?(olHy`uVBq!ia0y~yVAKJ!A964O$-i>)e}EKcfk$L90|Va?5N4dJ%_j|1 z^~lr3F{I+w+slre3=SL&2Zi-!+_Imd%3^OUC}yVho3VT!OM;Vu;y~gV0tSi$i+wm| k2n;M%WAWi24~y|E4`*?G{LAbKFbObty85}Sb4q9e0P#11>Hq)$ diff --git a/src/Samples/CSharpAnalytics.Sample.Windows8/Assets/LightGray.png b/src/Samples/CSharpAnalytics.Sample.Windows8/Assets/LightGray.png deleted file mode 100644 index 6ccc22b3aaf575790687ded1c3c8010af44004cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 560 zcmeAS@N?(olHy`uVBq!ia0y~yVAKJ!A964O$-i>)e}EKcfk$L90|Va?5N4dJ%_j|1 z^~lr3F{I+w+slre3=SL&2Zh(wn_qO8Ch+HsOT>*6uh{SW6l&l+*fNkf!RbKDz+wZ% k1gC+;GXxA2$-@x_dwE!YaZCFt1Cs!Qr>mdKI;Vst0B%CWtpET3 diff --git a/src/Samples/CSharpAnalytics.Sample.Windows8/Assets/Logo.png b/src/Samples/CSharpAnalytics.Sample.Windows8/Assets/Logo.png deleted file mode 100644 index e26771cb33a49bbef824aa333737181b0a5b09a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 801 zcmeAS@N?(olHy`uVBq!ia0vp^(?FPm4M^HB7Cr(}k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=1foIEGZ*dUJQLud<^=L*gE#63Ho!PGzwUb%GPK6&5iF zt!p@aGNX}6(PVh|N)M-?0RNcTbjaWgEU8noxUax-n>&3Ay)#!y&O11y2sKEF zt72@XC1)RvT6Xw=y_`Ce)`nGULLL^lI$kwi^E+dQT7YeXY4GvlRR%kj1x$VZi%Bdd zz}2Giy=-_$h+v#(S+};)DuE4EM?_^qB_eDeo@&q%StD1F>L|*0ZC2sb-}llSMTM?O z6{b3iid~yk@VE7q7Wb+P8?H5IYp?pSVcLE~18m#ygK20HL@6W5woI~Fjlw$fX1U{xQA5a+t0 zH$WNIb=fNpWHo}M9#;K6eszDZKty_|-?j4iocj5#zotrWc;@;w`H@=mjsvS2wXX0_ zY}l$4@^sE?UcC)ji*L=Z&}P!xaL&2((OQlj2dv~pV-ifAS;ZsH1{`D!GY%yys5WH)f>ZLo5m%6XjuXdbKMR7MEHSyb{m!_{Afji&MT$_sz7 z>1{~MlIFe28FRN(GC_~;#Jp4ADipP+9hh|P#-&`vO-Upt3jE0@YLh(^55uYWl9g)Z RA3>Rb!PC{xWt~$(69A&hN*MqE diff --git a/src/Samples/CSharpAnalytics.Sample.Windows8/Assets/MediumGray.png b/src/Samples/CSharpAnalytics.Sample.Windows8/Assets/MediumGray.png deleted file mode 100644 index cadb696697afb51115824c3c5da350c35a98b911..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 561 zcmeAS@N?(olHy`uVBq!ia0y~yVAKJ!A964O$-i>)e}EKcfk$L90|Va?5N4dJ%_j|1 z_1M$JF{I+w+shj{85}qc91ySj@5XYxl=I-TycP$g)$#?;y&2S4gqa2qH*qow4=g^| m(!e>eIKk;a3wb!Jv(~^gz~JfX=d#Wzp$PzP^psEl diff --git a/src/Samples/CSharpAnalytics.Sample.Windows8/Assets/SmallLogo.png b/src/Samples/CSharpAnalytics.Sample.Windows8/Assets/SmallLogo.png deleted file mode 100644 index 1eb0d9d528c42f132872e8af4dc563081b0b9aff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 329 zcmV-P0k-~$P)q$gGRCwC#*X;?zAP@%N+|i#I!$mrh zlQ>KU$Rdu>|JH&931_?y6Djl{gb>4nCV5pzDJ?S!mq|4ZejKj%i@j$H{#ML~2Y{DF z$=}bKPaz+UGt{v(4CTQQXym}&iW8{s!ew~XIE7NLjQpy#I2S$rous$~?f%DHT#B*+ zq=#!zc5=0FEqWFpB%UE(L807on!pidHPLgYO}XEgorrg;PB=8ipgQ5u5`&g_MQaRd zaU7Ao8XQMuuN21-s0PPTs1%38x_Yl3Fs-|Y4!C-;M-8g@n*v@1|s#GQ665=9@Rxy?u0YW0&WN+~=RXpPbVXXL4m7Aq=E6I0%{06TwRn=U9d8>exk> zD-Z%M3DNQ`bTLSEF=%NFyoHcAkD*CiXqljo*0E?o$GiDC4q}}|%*0WghLlK#npw?hecrM}Mw?`E(z5C8< z8&*b^!{>5?4aT89vdrgBgSc-x6JZD3F^l#*G(@OO*^1D%Eu7?HAy<3kTLqW9N{^#6vso zVQwY48q7)m{~xQ64RV7{E7Y=&T~?^05Ky`5oNQ8bLgFCPq9co^R09BVRS1OAmH;hU zC#q(N!gNqm!zU#%sv{r5mm-Uv8b-~a1F-;p^>)pnXfKge4s9?;;MFIr*fixPG}NBA z6_G5BEmeO6XXh(emkciB{7tA;iwC2^s^VzyU_h0@ae84ACMY`cIDEju=<`q|2QAEv zW_)W|i|9aknqdmS=#w73eW_csQ$8IhT^vY1^1;X3&J0{%*tcQq!gJpr3w?TJc~@5= zKV5sM{$3k>b#S$@CTkhIF*{v*u(F&$&Yq1naHxt8Mz2N%7aQ3(^VNRZahk1||7?Bl z*idzO_u)FhRj4cPzDO>YA>>lxAGaciEiX8Xzp1SVPv91};$OG3cC&8!v3{Jq^kH@8 UTIccK;hzT5*3#}uZuEx!0OwrBv;Y7A diff --git a/src/Samples/CSharpAnalytics.Sample.Windows8/Assets/StoreLogo.png b/src/Samples/CSharpAnalytics.Sample.Windows8/Assets/StoreLogo.png deleted file mode 100644 index dcb672712c6823a0c91548ded70a8acb85536b4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 429 zcmV;e0aE^nP)NtYJa1l)bQ5qwGXpZbs7%2oRMd4y35$s&66(fxhNg8W02!vSn zdlrL2h^Fx+3=$z;kK{0D#MyeJ8WRWZcLSf(PcQ_mLOhrmC}O-tX^0c>5`YvCUZVsc zG-6#78ubjJ5nA;OX&^K(q=i6ZNE3m?kTwE^AqxZoLskfB3|S&1F=UO9!cY$g2@Lgu z;9{sJ1P9|X2L`r1#Gs8R{E^$PRrMaC86q| - - - - 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/src/Samples/CSharpAnalytics.Sample.Windows8/CSharpAnalytics.Sample.WindowsStore.sln b/src/Samples/CSharpAnalytics.Sample.Windows8/CSharpAnalytics.Sample.WindowsStore.sln deleted file mode 100644 index 3b7c7e0..0000000 --- a/src/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/src/Samples/CSharpAnalytics.Sample.Windows8/Common/BindableBase.cs b/src/Samples/CSharpAnalytics.Sample.Windows8/Common/BindableBase.cs deleted file mode 100644 index 81410f8..0000000 --- a/src/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/src/Samples/CSharpAnalytics.Sample.Windows8/Common/BooleanToVisibilityConverter.cs b/src/Samples/CSharpAnalytics.Sample.Windows8/Common/BooleanToVisibilityConverter.cs deleted file mode 100644 index 1c506e5..0000000 --- a/src/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/src/Samples/CSharpAnalytics.Sample.Windows8/Common/LayoutAwarePage.cs b/src/Samples/CSharpAnalytics.Sample.Windows8/Common/LayoutAwarePage.cs deleted file mode 100644 index 362cda9..0000000 --- a/src/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/src/Samples/CSharpAnalytics.Sample.Windows8/Common/RichTextColumns.cs b/src/Samples/CSharpAnalytics.Sample.Windows8/Common/RichTextColumns.cs deleted file mode 100644 index 8c6978e..0000000 --- a/src/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/src/Samples/CSharpAnalytics.Sample.Windows8/Common/StandardStyles.xaml b/src/Samples/CSharpAnalytics.Sample.Windows8/Common/StandardStyles.xaml deleted file mode 100644 index 85f4ed6..0000000 --- a/src/Samples/CSharpAnalytics.Sample.Windows8/Common/StandardStyles.xaml +++ /dev/null @@ -1,1829 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Mouse - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/Samples/CSharpAnalytics.Sample.Windows8/Common/SuspensionManager.cs b/src/Samples/CSharpAnalytics.Sample.Windows8/Common/SuspensionManager.cs deleted file mode 100644 index 71b2584..0000000 --- a/src/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/src/Samples/CSharpAnalytics.Sample.Windows8/DataModel/SampleDataSource.cs b/src/Samples/CSharpAnalytics.Sample.Windows8/DataModel/SampleDataSource.cs deleted file mode 100644 index 9f45350..0000000 --- a/src/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/src/Samples/CSharpAnalytics.Sample.Windows8/GroupDetailPage.xaml b/src/Samples/CSharpAnalytics.Sample.Windows8/GroupDetailPage.xaml deleted file mode 100644 index c1b1734..0000000 --- a/src/Samples/CSharpAnalytics.Sample.Windows8/GroupDetailPage.xaml +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -