Skip to content

Commit 4fd333e

Browse files
committed
Refactor IconProvider.cs
only a smol refactor
1 parent b7da4a9 commit 4fd333e

File tree

1 file changed

+32
-35
lines changed

1 file changed

+32
-35
lines changed

Flow.Launcher.Plugin.OneNote/Icons/IconProvider.cs

Lines changed: 32 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -12,22 +12,21 @@ namespace Flow.Launcher.Plugin.OneNote.Icons
1212
{
1313
public class IconProvider : BaseModel
1414
{
15-
public const string Logo = IC.ImagesDirectory + IC.Logo;
16-
public string Sync => GetIconLocal(IC.Sync);
17-
public string Search => GetIconLocal(IC.Search);
18-
public string Recent => GetIconLocal(IC.Recent);
19-
public string NotebookExplorer => GetIconLocal(IC.NotebookExplorer);
15+
public const string Logo = IC.ImagesDirectory + IC.Logo + ".png";
16+
public string Sync => GetIconPath(IC.Sync);
17+
public string Search => GetIconPath(IC.Search);
18+
public string Recent => GetIconPath(IC.Recent);
19+
public string NotebookExplorer => GetIconPath(IC.NotebookExplorer);
2020
public string QuickNote => NewPage;
21-
public string NewPage => GetIconLocal(IC.NewPage);
22-
public string NewSection => GetIconLocal(IC.NewSection);
23-
public string NewSectionGroup => GetIconLocal(IC.NewSectionGroup);
24-
public string NewNotebook => GetIconLocal(IC.NewNotebook);
21+
public string NewPage => GetIconPath(IC.NewPage);
22+
public string NewSection => GetIconPath(IC.NewSection);
23+
public string NewSectionGroup => GetIconPath(IC.NewSectionGroup);
24+
public string NewNotebook => GetIconPath(IC.NewNotebook);
2525
public string Warning => settings.IconTheme == IconTheme.Color
26-
? $"{IC.ImagesDirectory}{IC.Warning}.{GetIconThemeString(IconTheme.Light)}.png"
27-
: GetIconLocal(IC.Warning);
26+
? $"{IC.ImagesDirectory}{IC.Warning}.{GetIconThemeString(IconTheme.Dark)}.png"
27+
: GetIconPath(IC.Warning);
2828

2929
private readonly Settings settings;
30-
// May need this? https://stackoverflow.com/questions/21867842/concurrentdictionarys-getoradd-is-not-atomic-any-alternatives-besides-locking
3130
private readonly ConcurrentDictionary<string,ImageSource> iconCache = new();
3231
private readonly string imagesDirectory;
3332

@@ -53,9 +52,9 @@ public IconProvider(PluginInitContext context, Settings settings)
5352
}
5453
}
5554

56-
private string GetIconLocal(string icon) => $"{IC.ImagesDirectory}{icon}.{GetIconThemeString(settings.IconTheme)}.png";
55+
private string GetIconPath(string icon) => $"{IC.ImagesDirectory}{icon}.{GetIconThemeString(settings.IconTheme)}.png";
5756

58-
private string GetIconThemeString(IconTheme iconTheme)
57+
private static string GetIconThemeString(IconTheme iconTheme)
5958
{
6059
if (iconTheme == IconTheme.System)
6160
{
@@ -77,31 +76,31 @@ private static IconTheme FlowLauncherThemeToIconTheme()
7776
}
7877

7978
private static BitmapImage BitmapImageFromPath(string path) => new BitmapImage(new Uri(path));
80-
79+
8180
public Result.IconDelegate GetIcon(IconGeneratorInfo info)
82-
{
83-
return () =>
84-
{
85-
bool generate = (string.CompareOrdinal(info.Prefix, IC.Notebook) == 0
86-
|| string.CompareOrdinal(info.Prefix, IC.Section) == 0)
87-
&& settings.CreateColoredIcons
88-
&& info.Color.HasValue;
89-
90-
if (generate)
91-
{
92-
var imageSource = iconCache.GetOrAdd($"{info.Prefix}.{info.Color.Value.ToArgb()}.png", ImageSourceFactory,
93-
info.Color.Value);
94-
OnPropertyChanged(nameof(CachedIconCount));
95-
return imageSource;
96-
}
81+
{
82+
bool generate = (string.CompareOrdinal(info.Prefix, IC.Notebook) == 0
83+
|| string.CompareOrdinal(info.Prefix, IC.Section) == 0)
84+
&& settings.CreateColoredIcons
85+
&& info.Color.HasValue;
9786

87+
return generate ? GetIconGenerated : GetIconStatic;
88+
89+
ImageSource GetIconGenerated()
90+
{
91+
var imageSource = iconCache.GetOrAdd($"{info.Prefix}.{info.Color!.Value.ToArgb()}.png", ImageSourceFactory, info.Color.Value);
92+
OnPropertyChanged(nameof(CachedIconCount));
93+
return imageSource;
94+
}
95+
96+
ImageSource GetIconStatic()
97+
{
9898
return iconCache.GetOrAdd($"{info.Prefix}.{GetIconThemeString(settings.IconTheme)}.png", key =>
9999
{
100100
var path = Path.Combine(imagesDirectory, key);
101101
return BitmapImageFromPath(path);
102102
});
103-
104-
};
103+
}
105104
}
106105

107106
private ImageSource ImageSourceFactory(string key, Color color)
@@ -112,13 +111,11 @@ private ImageSource ImageSourceFactory(string key, Color color)
112111
var newBitmap = ChangeIconColor(bitmap, color);
113112

114113
path = $"{GeneratedImagesDirectoryInfo.FullName}{key}";
115-
// https://stackoverflow.com/questions/65860129/pngbitmapencoder-failling
116114

117115
using var fileStream = new FileStream(path, FileMode.Create);
118-
var encoder = new PngBitmapEncoder(); //TODO Lazy load this and only one
116+
var encoder = new PngBitmapEncoder();
119117
encoder.Frames.Add(BitmapFrame.Create(newBitmap));
120118
encoder.Save(fileStream);
121-
// encoder.Frames.Clear();
122119
return newBitmap;
123120
}
124121

0 commit comments

Comments
 (0)