Skip to content

Commit 5181ff1

Browse files
committed
Add Catalina dynamic wallpaper
1 parent 5b1219d commit 5181ff1

16 files changed

+145
-59
lines changed

src/DownloadDialog.Designer.cs

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Properties/Resources.Designer.cs

Lines changed: 20 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Properties/Resources.resx

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -142,12 +142,6 @@
142142
<data name="Solar_Gradients_json" type="System.Resources.ResXFileRef, System.Windows.Forms">
143143
<value>..\themes\Solar_Gradients.json;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
144144
</data>
145-
<data name="Mojave_Desert_thumbnail" type="System.Resources.ResXFileRef, System.Windows.Forms">
146-
<value>..\themes\Mojave_Desert_thumbnail.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
147-
</data>
148-
<data name="Solar_Gradients_thumbnail" type="System.Resources.ResXFileRef, System.Windows.Forms">
149-
<value>..\themes\Solar_Gradients_thumbnail.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
150-
</data>
151145
<data name="locale_cs_CZ" type="System.Resources.ResXFileRef, System.Windows.Forms">
152146
<value>..\locale\cs_CZ.mo;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
153147
</data>
@@ -157,4 +151,16 @@
157151
<data name="locale_pl_PL" type="System.Resources.ResXFileRef, System.Windows.Forms">
158152
<value>..\locale\pl_PL.mo;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
159153
</data>
154+
<data name="Catalina_json" type="System.Resources.ResXFileRef, System.Windows.Forms">
155+
<value>..\themes\Catalina.json;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
156+
</data>
157+
<data name="Catalina_thumbnail" type="System.Resources.ResXFileRef, System.Windows.Forms">
158+
<value>..\themes\Catalina_thumbnail.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
159+
</data>
160+
<data name="Mojave_Desert_thumbnail" type="System.Resources.ResXFileRef, System.Windows.Forms">
161+
<value>..\themes\Mojave_Desert_thumbnail.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
162+
</data>
163+
<data name="Solar_Gradients_thumbnail" type="System.Resources.ResXFileRef, System.Windows.Forms">
164+
<value>..\themes\Solar_Gradients_thumbnail.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
165+
</data>
160166
</root>

src/ThemeDialog.Designer.cs

Lines changed: 12 additions & 11 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/ThemeDialog.cs

Lines changed: 51 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ public void ImportThemes(List<string> themePaths)
5050
ImportDialog importDialog = new ImportDialog() { Owner = this };
5151
importDialog.FormClosing += OnImportDialogClosing;
5252
importDialog.Show();
53+
this.Enabled = false;
5354
importDialog.InitImport(themePaths);
5455
}
5556

@@ -85,7 +86,7 @@ private int GetMaxImageNumber()
8586
return max;
8687
}
8788

88-
private void LoadPreviewImage(int imageNumber)
89+
private void LoadPreviewImage(Image image)
8990
{
9091
int width = pictureBox1.Size.Width;
9192
int height = pictureBox1.Size.Height;
@@ -100,18 +101,22 @@ private void LoadPreviewImage(int imageNumber)
100101
width = height * 16 / 9;
101102
}
102103

104+
pictureBox1.Image = ThemeThumbLoader.ScaleImage(image, new Size(width, height));
105+
}
106+
107+
private void LoadPreviewImage(int imageNumber)
108+
{
103109
if (selectedIndex == 0)
104110
{
105-
pictureBox1.Image = ThemeThumbLoader.ScaleImage(windowsWallpaper,
106-
new Size(width, height));
111+
LoadPreviewImage(Image.FromFile(windowsWallpaper));
107112
}
108113
else
109114
{
110115
ThemeConfig theme = ThemeManager.themeSettings[selectedIndex - 1];
111116
int imageId = ThemeManager.GetThemeImageList(theme)[imageNumber - 1];
112117
string imageFilename = theme.imageFilename.Replace("*", imageId.ToString());
113-
pictureBox1.Image = ThemeThumbLoader.ScaleImage(Path.Combine("themes",
114-
theme.themeId, imageFilename), new Size(width, height));
118+
LoadPreviewImage(Image.FromFile(Path.Combine("themes", theme.themeId,
119+
imageFilename)));
115120
}
116121

117122
imageNumberLabel.Text = string.Format(_("Image {0} of {1}"), imageNumber,
@@ -184,13 +189,12 @@ private void LoadImportedThemes(List<ThemeConfig> themes, ImportDialog importDia
184189

185190
private void SetThemeDownloaded(bool themeDownloaded)
186191
{
187-
pictureBox1.Visible = themeDownloaded;
188192
firstButton.Visible = themeDownloaded;
189193
previousButton.Visible = themeDownloaded;
190194
imageNumberLabel.Visible = themeDownloaded;
191195
nextButton.Visible = themeDownloaded;
192196
lastButton.Visible = themeDownloaded;
193-
downloadButton.Visible = !themeDownloaded;
197+
downloadLabel.Visible = !themeDownloaded;
194198
}
195199

196200
private void UpdateSelectedItem()
@@ -215,6 +219,11 @@ private void UpdateSelectedItem()
215219
imageNumber = ThemeManager.GetThemeImageList(theme).IndexOf(
216220
AppContext.wpEngine.GetImageData(solarData, theme).Item1) + 1;
217221
}
222+
else
223+
{
224+
LoadPreviewImage((Image)Properties.Resources.ResourceManager.GetObject(
225+
themeId + "_thumbnail"));
226+
}
218227
}
219228

220229
SetThemeDownloaded(themeDownloaded);
@@ -226,7 +235,7 @@ private void UpdateSelectedItem()
226235
LoadPreviewImage(imageNumber);
227236
}
228237

229-
applyButton.Enabled = themeDownloaded;
238+
applyButton.Enabled = true;
230239
}
231240
else
232241
{
@@ -293,6 +302,29 @@ private void ThemeDialog_Load(object sender, EventArgs e)
293302
}));
294303
}
295304

305+
private void ApplySelectedTheme()
306+
{
307+
if (selectedIndex > 0)
308+
{
309+
ThemeManager.currentTheme = ThemeManager.themeSettings[selectedIndex - 1];
310+
}
311+
else
312+
{
313+
ThemeManager.currentTheme = null;
314+
}
315+
316+
JsonConfig.settings.themeName = ThemeManager.currentTheme?.themeId;
317+
318+
if (selectedIndex == 0)
319+
{
320+
WallpaperApi.SetWallpaper(windowsWallpaper);
321+
}
322+
else
323+
{
324+
AppContext.wpEngine.RunScheduler();
325+
}
326+
}
327+
296328
private void imageListView1_SelectionChanged(object sender, EventArgs e)
297329
{
298330
UpdateSelectedItem();
@@ -318,15 +350,6 @@ private void lastButton_Click(object sender, EventArgs e)
318350
LoadPreviewImage(maxImageNumber);
319351
}
320352

321-
private void downloadButton_Click(object sender, EventArgs e)
322-
{
323-
DownloadDialog downloadDialog = new DownloadDialog() { Owner = this };
324-
downloadDialog.FormClosed += OnDownloadDialogClosed;
325-
downloadDialog.Show();
326-
this.Enabled = false;
327-
downloadDialog.InitDownload(ThemeManager.themeSettings[selectedIndex - 1]);
328-
}
329-
330353
private void importButton_Click(object sender, EventArgs e)
331354
{
332355
DialogResult result = openFileDialog1.ShowDialog();
@@ -350,25 +373,25 @@ private void themeLinkLabel_LinkClicked(object sender, LinkLabelLinkClickedEvent
350373
private void applyButton_Click(object sender, EventArgs e)
351374
{
352375
applyButton.Enabled = false;
376+
bool themeDownloaded = true;
353377

354378
if (selectedIndex > 0)
355379
{
356-
ThemeManager.currentTheme = ThemeManager.themeSettings[selectedIndex - 1];
357-
}
358-
else
359-
{
360-
ThemeManager.currentTheme = null;
380+
themeDownloaded = ThemeManager.IsThemeDownloaded(
381+
ThemeManager.themeSettings[selectedIndex - 1]);
361382
}
362383

363-
JsonConfig.settings.themeName = ThemeManager.currentTheme?.themeId;
364-
365-
if (selectedIndex == 0)
384+
if (!themeDownloaded)
366385
{
367-
WallpaperApi.SetWallpaper(windowsWallpaper);
386+
DownloadDialog downloadDialog = new DownloadDialog() { Owner = this };
387+
downloadDialog.FormClosed += OnDownloadDialogClosed;
388+
downloadDialog.Show();
389+
this.Enabled = false;
390+
downloadDialog.InitDownload(ThemeManager.themeSettings[selectedIndex - 1]);
368391
}
369392
else
370393
{
371-
AppContext.wpEngine.RunScheduler();
394+
ApplySelectedTheme();
372395
}
373396

374397
applyButton.Enabled = true;
@@ -416,6 +439,7 @@ private void OnDownloadDialogClosed(object sender, FormClosedEventArgs e)
416439
{
417440
if (ThemeManager.IsThemeDownloaded(ThemeManager.themeSettings[selectedIndex - 1]))
418441
{
442+
ApplySelectedTheme();
419443
UpdateSelectedItem();
420444
}
421445

src/ThemeManager.cs

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ namespace WinDynamicDesktop
1414
class ThemeManager
1515
{
1616
private static readonly Func<string, string> _ = Localization.GetTranslation;
17-
public static string[] defaultThemes = new string[] { "Mojave_Desert", "Solar_Gradients" };
17+
public static string[] defaultThemes = new string[] { "Catalina", "Mojave_Desert",
18+
"Solar_Gradients" };
1819
public static List<ThemeConfig> themeSettings = new List<ThemeConfig>();
1920

2021
public static bool downloadMode = false;
@@ -80,9 +81,19 @@ public static bool IsThemeDownloaded(ThemeConfig theme)
8081
public static List<int> GetThemeImageList(ThemeConfig theme)
8182
{
8283
List<int> imageList = new List<int>();
83-
imageList.AddRange(theme.sunriseImageList);
84+
85+
if (!theme.sunriseImageList.SequenceEqual(theme.dayImageList))
86+
{
87+
imageList.AddRange(theme.sunriseImageList);
88+
}
89+
8490
imageList.AddRange(theme.dayImageList);
85-
imageList.AddRange(theme.sunsetImageList);
91+
92+
if (!theme.sunsetImageList.SequenceEqual(theme.dayImageList))
93+
{
94+
imageList.AddRange(theme.sunsetImageList);
95+
}
96+
8697
imageList.AddRange(theme.nightImageList);
8798
return imageList;
8899
}

src/ThemeThumbLoader.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public static Size GetThumbnailSize(System.Windows.Forms.Control control)
2626
return new Size(scaledWidth, scaledWidth * 9 / 16);
2727
}
2828

29-
private static Image ScaleImage(Image tempImage, Size size)
29+
public static Image ScaleImage(Image tempImage, Size size)
3030
{
3131
if (tempImage.Size == size)
3232
{

src/WinDynamicDesktop.csproj

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,11 @@
105105
<Compile Include="AppContext.cs" />
106106
<Compile Include="DebugLogger.cs" />
107107
<Compile Include="DesktopHelper.cs" />
108+
<Compile Include="Properties\Resources.Designer.cs">
109+
<AutoGen>True</AutoGen>
110+
<DesignTime>True</DesignTime>
111+
<DependentUpon>Resources.resx</DependentUpon>
112+
</Compile>
108113
<Compile Include="ThemeResult.cs" />
109114
<Compile Include="LocationDialog.cs">
110115
<SubType>Form</SubType>
@@ -175,14 +180,9 @@
175180
</EmbeddedResource>
176181
<EmbeddedResource Include="Properties\Resources.resx">
177182
<Generator>ResXFileCodeGenerator</Generator>
178-
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
179183
<SubType>Designer</SubType>
184+
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
180185
</EmbeddedResource>
181-
<Compile Include="Properties\Resources.Designer.cs">
182-
<AutoGen>True</AutoGen>
183-
<DependentUpon>Resources.resx</DependentUpon>
184-
<DesignTime>True</DesignTime>
185-
</Compile>
186186
<EmbeddedResource Include="ThemeDialog.resx">
187187
<DependentUpon>ThemeDialog.cs</DependentUpon>
188188
</EmbeddedResource>
@@ -210,15 +210,19 @@
210210
<None Include="App.config" />
211211
</ItemGroup>
212212
<ItemGroup>
213+
<None Include="themes\Catalina.json" />
213214
<None Include="themes\Mojave_Desert.json" />
214215
<None Include="themes\Solar_Gradients.json" />
215216
<None Include="WinDynamicDesktop.ico" />
216217
</ItemGroup>
217218
<ItemGroup>
218-
<None Include="themes\Mojave_Desert_thumbnail.png" />
219+
<None Include="themes\Catalina_thumbnail.jpg" />
220+
</ItemGroup>
221+
<ItemGroup>
222+
<None Include="themes\Mojave_Desert_thumbnail.jpg" />
219223
</ItemGroup>
220224
<ItemGroup>
221-
<None Include="themes\Solar_Gradients_thumbnail.png" />
225+
<None Include="themes\Solar_Gradients_thumbnail.jpg" />
222226
</ItemGroup>
223227
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
224228
<Import Project="packages\Fody.5.0.0\build\Fody.targets" Condition="Exists('packages\Fody.5.0.0\build\Fody.targets')" />

0 commit comments

Comments
 (0)