mirror of
https://github.com/microsoft/PowerToys.git
synced 2025-06-07 01:08:18 +08:00
Adding Telemetry Events for svg and markdown enable/disable (#2814)
* Raising Telemetry events when svg and markdown preview pane is turned off * Properly serializing Bool property. This allows us to be backwards compatible with .17 settings but interact with the properties as boolean elements, and fire events on property changed notification
This commit is contained in:
parent
e654999fdf
commit
d329406eb8
@ -0,0 +1,23 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
using System.Text.Json;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
|
namespace Microsoft.PowerToys.Settings.UI.Lib
|
||||||
|
{
|
||||||
|
public class BoolPropertyJsonConverter : JsonConverter<bool>
|
||||||
|
{
|
||||||
|
public override bool Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
|
||||||
|
{
|
||||||
|
var boolProperty = JsonSerializer.Deserialize<BoolProperty>(ref reader, options);
|
||||||
|
return boolProperty.Value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Write(Utf8JsonWriter writer, bool value, JsonSerializerOptions options)
|
||||||
|
{
|
||||||
|
var boolProperty = new BoolProperty(value);
|
||||||
|
JsonSerializer.Serialize(writer, boolProperty, options);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -133,10 +133,10 @@ namespace Microsoft.PowerToys.Settings.UI.Lib
|
|||||||
|
|
||||||
private void LogTelemetryEvent(bool value, [CallerMemberName] string moduleName = null )
|
private void LogTelemetryEvent(bool value, [CallerMemberName] string moduleName = null )
|
||||||
{
|
{
|
||||||
var dataEvent = new SettingsEnabledModuleEvent()
|
var dataEvent = new SettingsEnabledEvent()
|
||||||
{
|
{
|
||||||
Value = value,
|
Value = value,
|
||||||
ModuleName = moduleName,
|
Name = moduleName,
|
||||||
};
|
};
|
||||||
PowerToysTelemetry.Log.WriteEvent(dataEvent);
|
PowerToysTelemetry.Log.WriteEvent(dataEvent);
|
||||||
}
|
}
|
||||||
|
@ -2,28 +2,68 @@
|
|||||||
// The Microsoft Corporation licenses this file to you under the MIT license.
|
// The Microsoft Corporation licenses this file to you under the MIT license.
|
||||||
// See the LICENSE file in the project root for more information.
|
// See the LICENSE file in the project root for more information.
|
||||||
|
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
using System.Text.Json.Serialization;
|
using System.Text.Json.Serialization;
|
||||||
|
using Microsoft.PowerToys.Settings.Telemetry;
|
||||||
|
using Microsoft.PowerToys.Telemetry;
|
||||||
|
|
||||||
namespace Microsoft.PowerToys.Settings.UI.Lib
|
namespace Microsoft.PowerToys.Settings.UI.Lib
|
||||||
{
|
{
|
||||||
public class PowerPreviewProperties
|
public class PowerPreviewProperties
|
||||||
{
|
{
|
||||||
[JsonPropertyName("svg-previewer-toggle-setting")]
|
private bool enableSvg = true;
|
||||||
public BoolProperty EnableSvg { get; set; }
|
|
||||||
|
[JsonPropertyName("svg-previewer-toggle-setting")]
|
||||||
|
[JsonConverter(typeof(BoolPropertyJsonConverter))]
|
||||||
|
public bool EnableSvg
|
||||||
|
{
|
||||||
|
get => this.enableSvg;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if (value != this.enableSvg)
|
||||||
|
{
|
||||||
|
LogTelemetryEvent(value);
|
||||||
|
this.enableSvg = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool enableMd = true;
|
||||||
|
|
||||||
[JsonPropertyName("md-previewer-toggle-setting")]
|
[JsonPropertyName("md-previewer-toggle-setting")]
|
||||||
public BoolProperty EnableMd { get; set; }
|
[JsonConverter(typeof(BoolPropertyJsonConverter))]
|
||||||
|
public bool EnableMd
|
||||||
|
{
|
||||||
|
get => this.enableMd;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if (value != this.enableMd)
|
||||||
|
{
|
||||||
|
LogTelemetryEvent(value);
|
||||||
|
this.enableMd = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public PowerPreviewProperties()
|
public PowerPreviewProperties()
|
||||||
{
|
{
|
||||||
EnableSvg = new BoolProperty();
|
|
||||||
EnableMd = new BoolProperty();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public override string ToString()
|
public override string ToString()
|
||||||
{
|
{
|
||||||
return JsonSerializer.Serialize(this);
|
return JsonSerializer.Serialize(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void LogTelemetryEvent(bool value, [CallerMemberName] string propertyName = null)
|
||||||
|
{
|
||||||
|
var dataEvent = new SettingsEnabledEvent()
|
||||||
|
{
|
||||||
|
Value = value,
|
||||||
|
Name = propertyName,
|
||||||
|
};
|
||||||
|
PowerToysTelemetry.Log.WriteEvent(dataEvent);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,9 +3,9 @@
|
|||||||
namespace Microsoft.PowerToys.Settings.Telemetry
|
namespace Microsoft.PowerToys.Settings.Telemetry
|
||||||
{
|
{
|
||||||
[EventData]
|
[EventData]
|
||||||
public class SettingsEnabledModuleEvent
|
public class SettingsEnabledEvent
|
||||||
{
|
{
|
||||||
public string ModuleName { get; set; }
|
public string Name { get; set; }
|
||||||
|
|
||||||
public bool Value { get; set; }
|
public bool Value { get; set; }
|
||||||
}
|
}
|
@ -27,8 +27,8 @@ namespace Microsoft.PowerToys.Settings.UI.ViewModels
|
|||||||
SettingsUtils.SaveSettings(Settings.ToJsonString(), ModuleName);
|
SettingsUtils.SaveSettings(Settings.ToJsonString(), ModuleName);
|
||||||
}
|
}
|
||||||
|
|
||||||
this._svgRenderIsEnabled = Settings.properties.EnableSvg.Value;
|
this._svgRenderIsEnabled = Settings.properties.EnableSvg;
|
||||||
this._mdRenderIsEnabled = Settings.properties.EnableMd.Value;
|
this._mdRenderIsEnabled = Settings.properties.EnableMd;
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool _svgRenderIsEnabled = false;
|
private bool _svgRenderIsEnabled = false;
|
||||||
@ -46,7 +46,7 @@ namespace Microsoft.PowerToys.Settings.UI.ViewModels
|
|||||||
if (value != _svgRenderIsEnabled)
|
if (value != _svgRenderIsEnabled)
|
||||||
{
|
{
|
||||||
_svgRenderIsEnabled = value;
|
_svgRenderIsEnabled = value;
|
||||||
Settings.properties.EnableSvg.Value = value;
|
Settings.properties.EnableSvg = value;
|
||||||
RaisePropertyChanged();
|
RaisePropertyChanged();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -64,7 +64,7 @@ namespace Microsoft.PowerToys.Settings.UI.ViewModels
|
|||||||
if (value != _mdRenderIsEnabled)
|
if (value != _mdRenderIsEnabled)
|
||||||
{
|
{
|
||||||
_mdRenderIsEnabled = value;
|
_mdRenderIsEnabled = value;
|
||||||
Settings.properties.EnableMd.Value = value;
|
Settings.properties.EnableMd = value;
|
||||||
RaisePropertyChanged();
|
RaisePropertyChanged();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -59,7 +59,7 @@ namespace ViewModelTests
|
|||||||
ShellPage.DefaultSndMSGCallback = msg =>
|
ShellPage.DefaultSndMSGCallback = msg =>
|
||||||
{
|
{
|
||||||
SndModuleSettings<SndPowerPreviewSettings> snd = JsonSerializer.Deserialize<SndModuleSettings<SndPowerPreviewSettings>>(msg);
|
SndModuleSettings<SndPowerPreviewSettings> snd = JsonSerializer.Deserialize<SndModuleSettings<SndPowerPreviewSettings>>(msg);
|
||||||
Assert.IsTrue(snd.powertoys.FileExplorerPreviewSettings.properties.EnableSvg.Value);
|
Assert.IsTrue(snd.powertoys.FileExplorerPreviewSettings.properties.EnableSvg);
|
||||||
};
|
};
|
||||||
|
|
||||||
// act
|
// act
|
||||||
@ -76,7 +76,7 @@ namespace ViewModelTests
|
|||||||
ShellPage.DefaultSndMSGCallback = msg =>
|
ShellPage.DefaultSndMSGCallback = msg =>
|
||||||
{
|
{
|
||||||
SndModuleSettings<SndPowerPreviewSettings> snd = JsonSerializer.Deserialize<SndModuleSettings<SndPowerPreviewSettings>>(msg);
|
SndModuleSettings<SndPowerPreviewSettings> snd = JsonSerializer.Deserialize<SndModuleSettings<SndPowerPreviewSettings>>(msg);
|
||||||
Assert.IsTrue(snd.powertoys.FileExplorerPreviewSettings.properties.EnableMd.Value);
|
Assert.IsTrue(snd.powertoys.FileExplorerPreviewSettings.properties.EnableMd);
|
||||||
};
|
};
|
||||||
|
|
||||||
// act
|
// act
|
||||||
|
Loading…
Reference in New Issue
Block a user