Skip to content

Commit f1a0b75

Browse files
Added notifications to OneClick installation (#432)
* Added notify to OneClick + Fixed notifications * Notification Fix * Notifications: Fix for playlists (probably) * Added localisation string for playlist notification Co-authored-by: HiImMilan <[email protected]> Co-authored-by: imMilan <[email protected]>
1 parent e2b4a63 commit f1a0b75

File tree

8 files changed

+30
-11
lines changed

8 files changed

+30
-11
lines changed

ModAssistant/Classes/External Interfaces/BeatSaver.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,13 @@ public class BeatSaver
2121

2222
public static async Task<BeatSaverMap> GetFromKey(string Key, bool showNotification = true)
2323
{
24-
if (showNotification && App.OCIWindow != "No") OneClickInstaller.Status.Show();
24+
if (showNotification && App.OCIWindow != "No" && App.OCIWindow != "Notify") OneClickInstaller.Status.Show();
2525
return await GetMap(Key, "key", showNotification);
2626
}
2727

2828
public static async Task<BeatSaverMap> GetFromHash(string Hash, bool showNotification = true)
2929
{
30-
if (showNotification && App.OCIWindow != "No") OneClickInstaller.Status.Show();
30+
if (showNotification && App.OCIWindow != "No" && App.OCIWindow != "Notify") OneClickInstaller.Status.Show();
3131
return await GetMap(Hash, "hash", showNotification);
3232
}
3333

ModAssistant/Classes/External Interfaces/Utils.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,11 @@ public class Utils
1313

1414
public static void SetMessage(string message)
1515
{
16-
if (App.OCIWindow != "No")
16+
if (App.OCIWindow != "No" || App.OCIWindow != "Notify")
1717
{
1818
if (App.window == null)
1919
{
20-
if (App.OCIWindow == "No") OneClickStatus.Instance = null;
20+
if (App.OCIWindow == "No" || App.OCIWindow == "Notify") OneClickStatus.Instance = null;
2121
if (OneClickStatus.Instance == null) return;
2222

2323
OneClickStatus.Instance.MainText = message;

ModAssistant/Classes/OneClickInstaller.cs

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,19 @@
22
using System.Linq;
33
using System.Threading.Tasks;
44
using System.Windows;
5+
using System.Drawing;
56
using Microsoft.Win32;
7+
using System.Windows.Forms;
8+
using Application = System.Windows.Application;
9+
using MessageBox = System.Windows.MessageBox;
610

711
namespace ModAssistant
812
{
913
class OneClickInstaller
1014
{
1115
private static readonly string[] Protocols = new[] { "modelsaber", "beatsaver", "bsplaylist" };
1216
public static OneClickStatus Status = new OneClickStatus();
13-
17+
1418
public static async Task InstallAsset(string link)
1519
{
1620
Uri uri = new Uri(link);
@@ -33,10 +37,17 @@ public static async Task InstallAsset(string link)
3337
Status.StopRotation();
3438
API.Utils.SetMessage((string)Application.Current.FindResource("OneClick:Done"));
3539
}
40+
if (App.OCIWindow == "Notify")
41+
{
42+
Utils.SendNotify((string)Application.Current.FindResource("OneClick:DoneNotify"));
43+
Application.Current.Shutdown();
44+
}
3645
if (App.OCIWindow == "Close")
3746
{
3847
Application.Current.Shutdown();
3948
}
49+
50+
4051
}
4152

4253
private static async Task BeatSaver(Uri uri)
@@ -47,14 +58,15 @@ private static async Task BeatSaver(Uri uri)
4758

4859
private static async Task ModelSaber(Uri uri)
4960
{
50-
if (App.OCIWindow != "No") Status.Show();
61+
if (App.OCIWindow != "No" && App.OCIWindow != "Notify") Status.Show();
5162
API.Utils.SetMessage($"{string.Format((string)Application.Current.FindResource("OneClick:Installing"), System.Web.HttpUtility.UrlDecode(uri.Segments.Last()))}");
5263
await API.ModelSaber.GetModel(uri);
5364
}
5465

5566
private static async Task Playlist(Uri uri)
5667
{
57-
if (App.OCIWindow != "No") Status.Show();
68+
if (App.OCIWindow != "No" && App.OCIWindow != "Notify") Status.Show();
69+
if (App.OCIWindow == "Notify") Utils.SendNotify((string)Application.Current.FindResource("OneClick:StartDownloadPlaylist"));
5870
await API.Playlists.DownloadAll(uri);
5971
}
6072

ModAssistant/Classes/Utils.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using System.Collections.Generic;
33
using System.Configuration;
44
using System.Diagnostics;
5+
using System.Drawing;
56
using System.IO;
67
using System.Linq;
78
using System.Management;
@@ -71,14 +72,15 @@ public static void SendNotify(string message, string title = null)
7172
var notification = new System.Windows.Forms.NotifyIcon()
7273
{
7374
Visible = true,
74-
Icon = System.Drawing.SystemIcons.Information,
75+
// resource icon from pack
76+
Icon = System.Drawing.Icon.ExtractAssociatedIcon(ExePath),
7577
BalloonTipTitle = title ?? defaultTitle,
7678
BalloonTipText = message
7779
};
7880

7981
notification.ShowBalloonTip(5000);
8082

81-
notification.Dispose();
83+
// notification.Dispose(); This seems to cause Microsoft.Explorer.Notification.{random guid}
8284
}
8385

8486
public static void StartAsAdmin(string Arguments, bool Close = false)

ModAssistant/Localisation/en.xaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,7 @@
158158
<sys:String x:Key="Options:ShowOCIWindow">Show OneClick Installer Window</sys:String>
159159
<sys:String x:Key="Options:OCIWindowYes">Yes</sys:String>
160160
<sys:String x:Key="Options:OCIWindowClose">Close</sys:String>
161+
<sys:String x:Key="Options:OCINotify">Notification</sys:String>
161162
<sys:String x:Key="Options:OCIWindowNo">No</sys:String>
162163
<sys:String x:Key="Options:Diagnostics">Diagnostics</sys:String>
163164
<sys:String x:Key="Options:OpenLogsButton">Open Logs</sys:String>
@@ -231,6 +232,8 @@
231232
<sys:String x:Key="OneClick:RatelimitSkip">Max tries reached: Skipping {0}</sys:String>
232233
<sys:String x:Key="OneClick:RatelimitHit">Ratelimit hit. Resuming in {0}</sys:String>
233234
<sys:String x:Key="OneClick:Failed">Download failed: {0}</sys:String>
235+
<sys:String x:Key="OneClick:DoneNotify">OneClick™ installation finished</sys:String>
236+
<sys:String x:Key="OneClick:StartDownloadPlaylist">Starting to download playlist</sys:String>
234237
<sys:String x:Key="OneClick:Done">Done'd</sys:String>
235238

236239
<!-- Themes Class -->

ModAssistant/OneClickStatus.xaml.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public string MainText
4141
public OneClickStatus()
4242
{
4343
InitializeComponent();
44-
Instance = App.OCIWindow != "No" ? this : null;
44+
Instance = (App.OCIWindow == "No" && App.OCIWindow == "Notify") ? null : this;
4545
}
4646

4747
public void StopRotation()

ModAssistant/Pages/Options.xaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,7 @@
244244
SelectionChanged="ShowOCIWindowComboBox_SelectionChanged">
245245
<ComboBoxItem Tag="Yes" Content="{DynamicResource Options:OCIWindowYes}" />
246246
<ComboBoxItem Tag="Close" Content="{DynamicResource Options:OCIWindowClose}" />
247+
<ComboBoxItem Tag="Notify" Content="{DynamicResource Options:OCINotify}" />
247248
<ComboBoxItem Tag="No" Content="{DynamicResource Options:OCIWindowNo}"/>
248249
</ComboBox>
249250
</StackPanel>

ModAssistant/Pages/Options.xaml.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -404,7 +404,8 @@ public void UpdateOCIWindow(string state)
404404
{
405405
if (state == "Yes") comboBox.SelectedIndex = 0;
406406
else if (state == "Close") comboBox.SelectedIndex = 1;
407-
else if (state == "No") comboBox.SelectedIndex = 2;
407+
else if (state == "Notify") comboBox.SelectedIndex = 2;
408+
else if (state == "No") comboBox.SelectedIndex = 3;
408409
else return;
409410
}
410411
if (!string.IsNullOrEmpty(state))

0 commit comments

Comments
 (0)