From 35c617dee840a844cddbee5b1bfd7f72995f207a Mon Sep 17 00:00:00 2001 From: Ze Groumf Date: Tue, 17 Mar 2020 23:18:07 +0100 Subject: [PATCH] add singleton property --- Microsoft.Toolkit.Uwp.SampleApp/App.xaml.cs | 4 +- .../SystemInformationCode.bind | 45 +++++++++--------- .../SystemInformationPage.xaml.cs | 47 +++++++++---------- .../Helpers/SystemInformation.cs | 8 +++- 4 files changed, 50 insertions(+), 54 deletions(-) diff --git a/Microsoft.Toolkit.Uwp.SampleApp/App.xaml.cs b/Microsoft.Toolkit.Uwp.SampleApp/App.xaml.cs index 3ba8ca5215b..ff8bb4709d2 100644 --- a/Microsoft.Toolkit.Uwp.SampleApp/App.xaml.cs +++ b/Microsoft.Toolkit.Uwp.SampleApp/App.xaml.cs @@ -22,8 +22,6 @@ namespace Microsoft.Toolkit.Uwp.SampleApp /// public sealed partial class App : Application { - public static SystemInformation SystemInformation { get; } = new SystemInformation(); - /// /// Initializes a new instance of the class. /// Initializes the singleton application object. This is the first line of authored code @@ -78,7 +76,7 @@ protected override async void OnLaunched(LaunchActivatedEventArgs e) await RunAppInitialization(e?.Arguments); } - SystemInformation.TrackAppUse(e); + SystemInformation.Instance.TrackAppUse(e); } /// diff --git a/Microsoft.Toolkit.Uwp.SampleApp/SamplePages/SystemInformation/SystemInformationCode.bind b/Microsoft.Toolkit.Uwp.SampleApp/SamplePages/SystemInformation/SystemInformationCode.bind index 6b9c670b2ca..7fc9a563dcb 100644 --- a/Microsoft.Toolkit.Uwp.SampleApp/SamplePages/SystemInformation/SystemInformationCode.bind +++ b/Microsoft.Toolkit.Uwp.SampleApp/SamplePages/SystemInformation/SystemInformationCode.bind @@ -1,62 +1,59 @@ - // To get the system information instance - public static SystemInformation SystemInformation { get; } = new SystemInformation(); - // To get application's name: - public string ApplicationName => SystemInformation.ApplicationName; + public string ApplicationName => SystemInformation.Instance.ApplicationName; // To get application's version: - public string ApplicationVersion => $"{SystemInformation.ApplicationVersion.Major}.{SystemInformation.ApplicationVersion.Minor}.{SystemInformation.ApplicationVersion.Build}.{SystemInformation.ApplicationVersion.Revision}"; + public string ApplicationVersion => $"{SystemInformation.Instance.ApplicationVersion.Major}.{SystemInformation.Instance.ApplicationVersion.Minor}.{SystemInformation.Instance.ApplicationVersion.Build}.{SystemInformation.Instance.ApplicationVersion.Revision}"; // To get the most preferred language by the user: - public CultureInfo Culture => SystemInformation.Culture; + public CultureInfo Culture => SystemInformation.Instance.Culture; - // To get operating syste, - public string OperatingSystem => SystemInformation.OperatingSystem; + // To get operating system + public string OperatingSystem => SystemInformation.Instance.OperatingSystem; // To get used processor architecture - public ProcessorArchitecture OperatingSystemArchitecture => SystemInformation.OperatingSystemArchitecture; + public ProcessorArchitecture OperatingSystemArchitecture => SystemInformation.Instance.OperatingSystemArchitecture; // To get operating system version - public OSVersion OperatingSystemVersion => SystemInformation.OperatingSystemVersion; + public OSVersion OperatingSystemVersion => SystemInformation.Instance.OperatingSystemVersion; // To get device family - public string DeviceFamily => SystemInformation.DeviceFamily; + public string DeviceFamily => SystemInformation.Instance.DeviceFamily; // To get device model - public string DeviceModel => SystemInformation.DeviceModel; + public string DeviceModel => SystemInformation.Instance.DeviceModel; // To get device manufacturer - public string DeviceManufacturer => SystemInformation.DeviceManufacturer; + public string DeviceManufacturer => SystemInformation.Instance.DeviceManufacturer; // To get available memory in MB - public float AvailableMemory => SystemInformation.AvailableMemory; + public float AvailableMemory => SystemInformation.Instance.AvailableMemory; // To get if the app is being used for the first time since it was installed. - public bool IsFirstUse => SystemInformation.IsFirstRun; + public bool IsFirstUse => SystemInformation.Instance.IsFirstRun; // To get if the app is being used for the first time since being upgraded from an older version. - public bool IsAppUpdated => SystemInformation.IsAppUpdated; + public bool IsAppUpdated => SystemInformation.Instance.IsAppUpdated; // To get the first version installed - public PackageVersion FirstVersionInstalled => SystemInformation.FirstVersionInstalled; + public PackageVersion FirstVersionInstalled => SystemInformation.Instance.FirstVersionInstalled; // To get the first time the app was launched - public DateTime FirstUseTime => SystemInformation.FirstUseTime; + public DateTime FirstUseTime => SystemInformation.Instance.FirstUseTime; // To get the time the app was launched. - public DateTime LaunchTime => SystemInformation.LaunchTime; + public DateTime LaunchTime => SystemInformation.Instance.LaunchTime; // To get the time the app was previously launched, not including this instance. - public DateTime LastLaunchTime => SystemInformation.LastLaunchTime; + public DateTime LastLaunchTime => SystemInformation.Instance.LastLaunchTime; // To get the time the launch count was reset, not including this instance - public string LastResetTime => SystemInformation.LastResetTime.ToString(Culture.DateTimeFormat); + public string LastResetTime => SystemInformation.Instance.LastResetTime.ToString(Culture.DateTimeFormat); // To get the number of times the app has been launched sicne the last reset. - public long LaunchCount => SystemInformation.LaunchCount; + public long LaunchCount => SystemInformation.Instance.LaunchCount; // To get the number of times the app has been launched. - public long TotalLaunchCount => SystemInformation.TotalLaunchCount; + public long TotalLaunchCount => SystemInformation.Instance.TotalLaunchCount; // To get how long the app has been running - public TimeSpan AppUptime => SystemInformation.AppUptime; + public TimeSpan AppUptime => SystemInformation.Instance.AppUptime; diff --git a/Microsoft.Toolkit.Uwp.SampleApp/SamplePages/SystemInformation/SystemInformationPage.xaml.cs b/Microsoft.Toolkit.Uwp.SampleApp/SamplePages/SystemInformation/SystemInformationPage.xaml.cs index 5c0c37ffcfc..f6c68407e71 100644 --- a/Microsoft.Toolkit.Uwp.SampleApp/SamplePages/SystemInformation/SystemInformationPage.xaml.cs +++ b/Microsoft.Toolkit.Uwp.SampleApp/SamplePages/SystemInformation/SystemInformationPage.xaml.cs @@ -2,14 +2,11 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -using System.ComponentModel; using System.Globalization; -using System.Runtime.CompilerServices; using Microsoft.Toolkit.Uwp.Helpers; using Windows.System; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; -using Windows.UI.Xaml.Navigation; namespace Microsoft.Toolkit.Uwp.SampleApp.SamplePages { @@ -19,52 +16,52 @@ namespace Microsoft.Toolkit.Uwp.SampleApp.SamplePages public sealed partial class SystemInformationPage : Page { // To get application's name: - public string ApplicationName => App.SystemInformation.ApplicationName; + public string ApplicationName => SystemInformation.Instance.ApplicationName; // To get application's version: - public string ApplicationVersion => App.SystemInformation.ApplicationVersion.ToFormattedString(); + public string ApplicationVersion => SystemInformation.Instance.ApplicationVersion.ToFormattedString(); // To get the most preferred language by the user: - public CultureInfo Culture => App.SystemInformation.Culture; + public CultureInfo Culture => SystemInformation.Instance.Culture; - // To get operating syste, - public string OperatingSystem => App.SystemInformation.OperatingSystem; + // To get operating system + public string OperatingSystem => SystemInformation.Instance.OperatingSystem; // To get used processor architecture - public ProcessorArchitecture OperatingSystemArchitecture => App.SystemInformation.OperatingSystemArchitecture; + public ProcessorArchitecture OperatingSystemArchitecture => SystemInformation.Instance.OperatingSystemArchitecture; // To get operating system version - public OSVersion OperatingSystemVersion => App.SystemInformation.OperatingSystemVersion; + public OSVersion OperatingSystemVersion => SystemInformation.Instance.OperatingSystemVersion; // To get device family - public string DeviceFamily => App.SystemInformation.DeviceFamily; + public string DeviceFamily => SystemInformation.Instance.DeviceFamily; // To get device model - public string DeviceModel => App.SystemInformation.DeviceModel; + public string DeviceModel => SystemInformation.Instance.DeviceModel; // To get device manufacturer - public string DeviceManufacturer => App.SystemInformation.DeviceManufacturer; + public string DeviceManufacturer => SystemInformation.Instance.DeviceManufacturer; // To get available memory in MB - public float AvailableMemory => App.SystemInformation.AvailableMemory; + public float AvailableMemory => SystemInformation.Instance.AvailableMemory; // To get if the app is being used for the first time since it was installed. - public string IsFirstUse => App.SystemInformation.IsFirstRun.ToString(); + public string IsFirstUse => SystemInformation.Instance.IsFirstRun.ToString(); // To get if the app is being used for the first time since being upgraded from an older version. - public string IsAppUpdated => App.SystemInformation.IsAppUpdated.ToString(); + public string IsAppUpdated => SystemInformation.Instance.IsAppUpdated.ToString(); // To get the first version installed - public string FirstVersionInstalled => App.SystemInformation.FirstVersionInstalled.ToFormattedString(); + public string FirstVersionInstalled => SystemInformation.Instance.FirstVersionInstalled.ToFormattedString(); // To get the first time the app was launched - public string FirstUseTime => App.SystemInformation.FirstUseTime.ToString(Culture.DateTimeFormat); + public string FirstUseTime => SystemInformation.Instance.FirstUseTime.ToString(Culture.DateTimeFormat); // To get the time the app was launched - public string LaunchTime => App.SystemInformation.LaunchTime.ToString(Culture.DateTimeFormat); + public string LaunchTime => SystemInformation.Instance.LaunchTime.ToString(Culture.DateTimeFormat); // To get the time the app was previously launched, not including this instance - public string LastLaunchTime => App.SystemInformation.LastLaunchTime.ToString(Culture.DateTimeFormat); + public string LastLaunchTime => SystemInformation.Instance.LastLaunchTime.ToString(Culture.DateTimeFormat); // To get the time the launch count was reset, not including this instance public string LastResetTime @@ -87,10 +84,10 @@ public long LaunchCount DependencyProperty.Register(nameof(LaunchCount), typeof(long), typeof(SystemInformationPage), new PropertyMetadata(0)); // To get the number of times the app has been launched. - public long TotalLaunchCount => App.SystemInformation.TotalLaunchCount; + public long TotalLaunchCount => SystemInformation.Instance.TotalLaunchCount; // To get how long the app has been running - public string AppUptime => App.SystemInformation.AppUptime.ToString(); + public string AppUptime => SystemInformation.Instance.AppUptime.ToString(); public SystemInformationPage() { @@ -100,15 +97,15 @@ public SystemInformationPage() SampleController.Current.RegisterNewCommand("Reset launch count", (sender, args) => { - App.SystemInformation.ResetLaunchCount(); + SystemInformation.Instance.ResetLaunchCount(); RefreshProperties(); }); } private void RefreshProperties() { - LaunchCount = App.SystemInformation.LaunchCount; - LastResetTime = App.SystemInformation.LastResetTime.ToString(Culture.DateTimeFormat); + LaunchCount = SystemInformation.Instance.LaunchCount; + LastResetTime = SystemInformation.Instance.LastResetTime.ToString(Culture.DateTimeFormat); } } } \ No newline at end of file diff --git a/Microsoft.Toolkit.Uwp/Helpers/SystemInformation.cs b/Microsoft.Toolkit.Uwp/Helpers/SystemInformation.cs index a7bc3c823c9..cf3d926f057 100644 --- a/Microsoft.Toolkit.Uwp/Helpers/SystemInformation.cs +++ b/Microsoft.Toolkit.Uwp/Helpers/SystemInformation.cs @@ -33,6 +33,11 @@ public static async Task LaunchStoreForReviewAsync() await Launcher.LaunchUriAsync(new Uri(string.Format("ms-windows-store://review/?PFN={0}", Package.Current.Id.FamilyName))); } + /// + /// Gets the unique instance of . + /// + public static SystemInformation Instance { get; } = new SystemInformation(); + /// /// Gets the application's name. /// @@ -253,9 +258,8 @@ public void ResetLaunchCount() /// /// Initializes a new instance of the class. - /// Initializes static members of the class. /// - public SystemInformation() + private SystemInformation() { ApplicationName = Package.Current.DisplayName; ApplicationVersion = Package.Current.Id.Version;