Theme aware plugin (#4499)

* Migrate theme manager to infrastructure and added it as input to public API instance

* Working event-delegate for PublicAPIInstance

* Theme aware UWP applications

* Theme aware program plugin

* Update query icon on theme change

* Theme aware calculator plugin

* Fix issue with query running before theme change

* Theme based changes in ImageLoader

* Removed ErrorIcon direct references and added references from ImageLoader

* Nit fixes

* Removed unnecessary TODO in UWP.cs

* Added preference to theme based icons

* Added IDisposable interfaces to unsubscribe events
This commit is contained in:
Divyansh Srivastava
2020-06-26 17:42:06 -07:00
committed by GitHub
parent d9597d5ad5
commit d3b10d0d4d
15 changed files with 255 additions and 41 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 597 B

View File

@@ -1,4 +1,6 @@
using System.Collections.Generic;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Runtime.InteropServices;
using System.Text.RegularExpressions;
using System.Threading;
@@ -8,7 +10,7 @@ using Wox.Plugin;
namespace Microsoft.Plugin.Calculator
{
public class Main : IPlugin, IPluginI18n
public class Main : IPlugin, IPluginI18n, IDisposable
{
private static readonly Regex RegValidExpressChar = new Regex(
@"^(" +
@@ -22,6 +24,8 @@ namespace Microsoft.Plugin.Calculator
private static readonly Regex RegBrackets = new Regex(@"[\(\)\[\]]", RegexOptions.Compiled);
private static readonly Engine MagesEngine;
private PluginInitContext Context { get; set; }
private string IconPath { get; set; }
private bool _disposed = false;
static Main()
{
@@ -58,7 +62,7 @@ namespace Microsoft.Plugin.Calculator
new Result
{
Title = result.ToString(),
IcoPath = "Images/calculator.png",
IcoPath = IconPath,
Score = 300,
SubTitle = Context.API.GetTranslation("wox_plugin_calculator_copy_number_to_clipboard"),
Action = c =>
@@ -115,6 +119,26 @@ namespace Microsoft.Plugin.Calculator
public void Init(PluginInitContext context)
{
Context = context;
Context.API.ThemeChanged += OnThemeChanged;
UpdateIconPath(Context.API.GetCurrentTheme());
}
// Todo : Update with theme based IconPath
private void UpdateIconPath(Theme theme)
{
if (theme == Theme.Light || theme == Theme.HighContrastWhite)
{
IconPath = "Images/calculator_light.png";
}
else
{
IconPath = "Images/calculator_dark.png";
}
}
private void OnThemeChanged(Theme _, Theme newTheme)
{
UpdateIconPath(newTheme);
}
public string GetTranslatedPluginTitle()
@@ -126,5 +150,23 @@ namespace Microsoft.Plugin.Calculator
{
return Context.API.GetTranslation("wox_plugin_calculator_plugin_description");
}
public void Dispose()
{
Dispose(disposing: true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if (!_disposed)
{
if (disposing)
{
Context.API.ThemeChanged -= OnThemeChanged;
_disposed = true;
}
}
}
}
}

View File

@@ -49,7 +49,7 @@
</ItemGroup>
<ItemGroup>
<None Include="Images\calculator.png">
<None Include="Images\calculator_light.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
@@ -107,5 +107,11 @@
<PackageReference Include="Mages" Version="1.6.0" />
<PackageReference Include="System.Runtime" Version="4.3.1" />
</ItemGroup>
<ItemGroup>
<None Update="Images\calculator_dark.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>