mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-04-04 02:06:36 +02:00
Improves the following: - Consolidates different code paths for easier maintenance. - Removes the dependency on Windows Forms and creates the system tray icon and handling through native Win32 APIs (massive thank you to @BrianPeek for helping write the window creation logic and diagnosing threading issues). - Changing modes in Awake now triggers icon changes in the tray (#11996). Massive thank you to @niels9001 for creating the icons. Fixes the following: - When in the UI and you select `0` as hours and `0` as minutes in `TIMED` awake mode, the UI becomes non-responsive whenever you try to get back to timed after it rolls back to `PASSIVE`. (#33630) - Adds the option to keep track of Awake state through tray tooltip. (#12714) --------- Co-authored-by: Clint Rutkas <clint@rutkas.com> Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
58 lines
1.9 KiB
C#
58 lines
1.9 KiB
C#
// Copyright (c) Microsoft Corporation
|
|
// The Microsoft Corporation licenses this file to you under the MIT license.
|
|
// See the LICENSE file in the project root for more information.
|
|
|
|
using System;
|
|
using System.Linq;
|
|
using System.Reflection;
|
|
using System.Text.Json.Serialization;
|
|
using Microsoft.PowerToys.Settings.UI.Library.Interfaces;
|
|
|
|
namespace Microsoft.PowerToys.Settings.UI.Library
|
|
{
|
|
public class AwakeSettings : BasePTModuleSettings, ISettingsConfig, ICloneable
|
|
{
|
|
public const string ModuleName = "Awake";
|
|
|
|
public AwakeSettings()
|
|
{
|
|
Name = ModuleName;
|
|
Version = Assembly.GetExecutingAssembly().GetName().Version.ToString();
|
|
Properties = new AwakeProperties();
|
|
}
|
|
|
|
[JsonPropertyName("properties")]
|
|
public AwakeProperties Properties { get; set; }
|
|
|
|
public object Clone()
|
|
{
|
|
return new AwakeSettings()
|
|
{
|
|
Name = Name,
|
|
Version = Version,
|
|
Properties = new AwakeProperties()
|
|
{
|
|
CustomTrayTimes = Properties.CustomTrayTimes.ToDictionary(entry => entry.Key, entry => entry.Value),
|
|
Mode = Properties.Mode,
|
|
KeepDisplayOn = Properties.KeepDisplayOn,
|
|
IntervalMinutes = Properties.IntervalMinutes,
|
|
IntervalHours = Properties.IntervalHours,
|
|
|
|
// Fix old buggy default value that might be saved in Settings. Some components don't deal well with negative time zones and minimum time offsets.
|
|
ExpirationDateTime = Properties.ExpirationDateTime.Year < 2 ? DateTimeOffset.Now : Properties.ExpirationDateTime,
|
|
},
|
|
};
|
|
}
|
|
|
|
public string GetModuleName()
|
|
{
|
|
return Name;
|
|
}
|
|
|
|
public bool UpgradeSettingsConfiguration()
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
}
|