diff --git a/ModAssistant/Classes/External Interfaces/BeatSaver.cs b/ModAssistant/Classes/External Interfaces/BeatSaver.cs index 6f3ae320..79ff7137 100644 --- a/ModAssistant/Classes/External Interfaces/BeatSaver.cs +++ b/ModAssistant/Classes/External Interfaces/BeatSaver.cs @@ -21,13 +21,13 @@ public class BeatSaver public static async Task GetFromKey(string Key, bool showNotification = true) { - if (showNotification && App.OCIWindow != "No") OneClickInstaller.Status.Show(); + if (showNotification && App.OCIWindow != "No" && App.OCIWindow != "Notify") OneClickInstaller.Status.Show(); return await GetMap(Key, "key", showNotification); } public static async Task GetFromHash(string Hash, bool showNotification = true) { - if (showNotification && App.OCIWindow != "No") OneClickInstaller.Status.Show(); + if (showNotification && App.OCIWindow != "No" && App.OCIWindow != "Notify") OneClickInstaller.Status.Show(); return await GetMap(Hash, "hash", showNotification); } diff --git a/ModAssistant/Classes/External Interfaces/Utils.cs b/ModAssistant/Classes/External Interfaces/Utils.cs index c7a1b59d..10ee767d 100644 --- a/ModAssistant/Classes/External Interfaces/Utils.cs +++ b/ModAssistant/Classes/External Interfaces/Utils.cs @@ -13,11 +13,11 @@ public class Utils public static void SetMessage(string message) { - if (App.OCIWindow != "No") + if (App.OCIWindow != "No" || App.OCIWindow != "Notify") { if (App.window == null) { - if (App.OCIWindow == "No") OneClickStatus.Instance = null; + if (App.OCIWindow == "No" || App.OCIWindow == "Notify") OneClickStatus.Instance = null; if (OneClickStatus.Instance == null) return; OneClickStatus.Instance.MainText = message; diff --git a/ModAssistant/Classes/OneClickInstaller.cs b/ModAssistant/Classes/OneClickInstaller.cs index 6ab19d2b..fedf195c 100644 --- a/ModAssistant/Classes/OneClickInstaller.cs +++ b/ModAssistant/Classes/OneClickInstaller.cs @@ -2,7 +2,11 @@ using System.Linq; using System.Threading.Tasks; using System.Windows; +using System.Drawing; using Microsoft.Win32; +using System.Windows.Forms; +using Application = System.Windows.Application; +using MessageBox = System.Windows.MessageBox; namespace ModAssistant { @@ -10,7 +14,7 @@ class OneClickInstaller { private static readonly string[] Protocols = new[] { "modelsaber", "beatsaver", "bsplaylist" }; public static OneClickStatus Status = new OneClickStatus(); - + public static async Task InstallAsset(string link) { Uri uri = new Uri(link); @@ -33,10 +37,17 @@ public static async Task InstallAsset(string link) Status.StopRotation(); API.Utils.SetMessage((string)Application.Current.FindResource("OneClick:Done")); } + if (App.OCIWindow == "Notify") + { + Utils.SendNotify((string)Application.Current.FindResource("OneClick:DoneNotify")); + Application.Current.Shutdown(); + } if (App.OCIWindow == "Close") { Application.Current.Shutdown(); } + + } private static async Task BeatSaver(Uri uri) @@ -47,14 +58,15 @@ private static async Task BeatSaver(Uri uri) private static async Task ModelSaber(Uri uri) { - if (App.OCIWindow != "No") Status.Show(); + if (App.OCIWindow != "No" && App.OCIWindow != "Notify") Status.Show(); API.Utils.SetMessage($"{string.Format((string)Application.Current.FindResource("OneClick:Installing"), System.Web.HttpUtility.UrlDecode(uri.Segments.Last()))}"); await API.ModelSaber.GetModel(uri); } private static async Task Playlist(Uri uri) { - if (App.OCIWindow != "No") Status.Show(); + if (App.OCIWindow != "No" && App.OCIWindow != "Notify") Status.Show(); + if (App.OCIWindow == "Notify") Utils.SendNotify((string)Application.Current.FindResource("OneClick:StartDownloadPlaylist")); await API.Playlists.DownloadAll(uri); } diff --git a/ModAssistant/Classes/Utils.cs b/ModAssistant/Classes/Utils.cs index 19b38d38..d3290156 100644 --- a/ModAssistant/Classes/Utils.cs +++ b/ModAssistant/Classes/Utils.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Configuration; using System.Diagnostics; +using System.Drawing; using System.IO; using System.Linq; using System.Management; @@ -71,14 +72,15 @@ public static void SendNotify(string message, string title = null) var notification = new System.Windows.Forms.NotifyIcon() { Visible = true, - Icon = System.Drawing.SystemIcons.Information, + // resource icon from pack + Icon = System.Drawing.Icon.ExtractAssociatedIcon(ExePath), BalloonTipTitle = title ?? defaultTitle, BalloonTipText = message }; notification.ShowBalloonTip(5000); - notification.Dispose(); + // notification.Dispose(); This seems to cause Microsoft.Explorer.Notification.{random guid} } public static void StartAsAdmin(string Arguments, bool Close = false) diff --git a/ModAssistant/Localisation/en.xaml b/ModAssistant/Localisation/en.xaml index db0d1e68..60898af1 100644 --- a/ModAssistant/Localisation/en.xaml +++ b/ModAssistant/Localisation/en.xaml @@ -158,6 +158,7 @@ Show OneClick Installer Window Yes Close + Notification No Diagnostics Open Logs @@ -231,6 +232,8 @@ Max tries reached: Skipping {0} Ratelimit hit. Resuming in {0} Download failed: {0} + OneClick™ installation finished + Starting to download playlist Done'd diff --git a/ModAssistant/OneClickStatus.xaml.cs b/ModAssistant/OneClickStatus.xaml.cs index a562a0a6..9f39ea52 100644 --- a/ModAssistant/OneClickStatus.xaml.cs +++ b/ModAssistant/OneClickStatus.xaml.cs @@ -41,7 +41,7 @@ public string MainText public OneClickStatus() { InitializeComponent(); - Instance = App.OCIWindow != "No" ? this : null; + Instance = (App.OCIWindow == "No" && App.OCIWindow == "Notify") ? null : this; } public void StopRotation() diff --git a/ModAssistant/Pages/Options.xaml b/ModAssistant/Pages/Options.xaml index 88fa6732..431b14cf 100644 --- a/ModAssistant/Pages/Options.xaml +++ b/ModAssistant/Pages/Options.xaml @@ -244,6 +244,7 @@ SelectionChanged="ShowOCIWindowComboBox_SelectionChanged"> + diff --git a/ModAssistant/Pages/Options.xaml.cs b/ModAssistant/Pages/Options.xaml.cs index cd1cd511..1686d50c 100644 --- a/ModAssistant/Pages/Options.xaml.cs +++ b/ModAssistant/Pages/Options.xaml.cs @@ -404,7 +404,8 @@ public void UpdateOCIWindow(string state) { if (state == "Yes") comboBox.SelectedIndex = 0; else if (state == "Close") comboBox.SelectedIndex = 1; - else if (state == "No") comboBox.SelectedIndex = 2; + else if (state == "Notify") comboBox.SelectedIndex = 2; + else if (state == "No") comboBox.SelectedIndex = 3; else return; } if (!string.IsNullOrEmpty(state))