Skip to content

Commit

Permalink
add singleton property
Browse files Browse the repository at this point in the history
  • Loading branch information
vgromfeld committed Mar 19, 2020
1 parent b5308d6 commit 35c617d
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 54 deletions.
4 changes: 1 addition & 3 deletions Microsoft.Toolkit.Uwp.SampleApp/App.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,6 @@ namespace Microsoft.Toolkit.Uwp.SampleApp
/// </summary>
public sealed partial class App : Application
{
public static SystemInformation SystemInformation { get; } = new SystemInformation();

/// <summary>
/// Initializes a new instance of the <see cref="App"/> class.
/// Initializes the singleton application object. This is the first line of authored code
Expand Down Expand Up @@ -78,7 +76,7 @@ protected override async void OnLaunched(LaunchActivatedEventArgs e)
await RunAppInitialization(e?.Arguments);
}

SystemInformation.TrackAppUse(e);
SystemInformation.Instance.TrackAppUse(e);
}

/// <summary>
Expand Down
Original file line number Diff line number Diff line change
@@ -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;
Original file line number Diff line number Diff line change
Expand Up @@ -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
{
Expand All @@ -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
Expand All @@ -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()
{
Expand All @@ -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);
}
}
}
8 changes: 6 additions & 2 deletions Microsoft.Toolkit.Uwp/Helpers/SystemInformation.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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)));
}

/// <summary>
/// Gets the unique instance of <see cref="SystemInformation"/>.
/// </summary>
public static SystemInformation Instance { get; } = new SystemInformation();

/// <summary>
/// Gets the application's name.
/// </summary>
Expand Down Expand Up @@ -253,9 +258,8 @@ public void ResetLaunchCount()

/// <summary>
/// Initializes a new instance of the <see cref="SystemInformation"/> class.
/// Initializes static members of the <see cref="SystemInformation"/> class.
/// </summary>
public SystemInformation()
private SystemInformation()
{
ApplicationName = Package.Current.DisplayName;
ApplicationVersion = Package.Current.Id.Version;
Expand Down

0 comments on commit 35c617d

Please sign in to comment.