diff --git a/ShareX.UploadersLib/OtherServices/OCRSpace.cs b/ShareX.UploadersLib/OtherServices/OCRSpace.cs index df7b93978..5126627a7 100644 --- a/ShareX.UploadersLib/OtherServices/OCRSpace.cs +++ b/ShareX.UploadersLib/OtherServices/OCRSpace.cs @@ -108,7 +108,7 @@ public OCRSpaceResponse DoOCR(Stream stream, string fileName) arguments.Add("language", Language.ToString()); arguments.Add("isOverlayRequired", Overlay.ToString()); - UploadResult ur = SendRequestFile(APIURLUSA, stream, fileName, "file", arguments); + UploadResult ur = SendRequestFile(APIURLUSA, stream, fileName, args: arguments); if (ur.IsSuccess) { diff --git a/ShareX/Enums.cs b/ShareX/Enums.cs index b914d8401..529b155d4 100644 --- a/ShareX/Enums.cs +++ b/ShareX/Enums.cs @@ -265,10 +265,12 @@ public enum RegionCaptureType Default, Light, Transparent } +#if !WindowsStore public enum StartupTaskState { Disabled = 0, DisabledByUser = 1, Enabled = 2 } +#endif } \ No newline at end of file diff --git a/ShareX/Forms/ApplicationSettingsForm.cs b/ShareX/Forms/ApplicationSettingsForm.cs index ff81a5e2c..f4361829a 100644 --- a/ShareX/Forms/ApplicationSettingsForm.cs +++ b/ShareX/Forms/ApplicationSettingsForm.cs @@ -31,6 +31,10 @@ You should have received a copy of the GNU General Public License using System.Linq; using System.Windows.Forms; +#if WindowsStore +using Windows.ApplicationModel; +#endif + namespace ShareX { public partial class ApplicationSettingsForm : Form @@ -251,7 +255,7 @@ private void UpdateStartWithWindows() try { - StartupTaskState state = StartupManagerFactory.StartupManager.State; + var state = StartupManagerSingletonProvider.CurrentStartupManager.State; cbStartWithWindows.Checked = state == StartupTaskState.Enabled; if (state == StartupTaskState.DisabledByUser) @@ -405,7 +409,7 @@ private void cbStartWithWindows_CheckedChanged(object sender, EventArgs e) { try { - StartupManagerFactory.StartupManager.State = cbStartWithWindows.Checked ? StartupTaskState.Enabled : StartupTaskState.Disabled; + StartupManagerSingletonProvider.CurrentStartupManager.State = cbStartWithWindows.Checked ? StartupTaskState.Enabled : StartupTaskState.Disabled; UpdateStartWithWindows(); } catch (Exception ex) diff --git a/ShareX/Forms/FirstTimeConfigForm.cs b/ShareX/Forms/FirstTimeConfigForm.cs index 538d96174..8f82eb04e 100644 --- a/ShareX/Forms/FirstTimeConfigForm.cs +++ b/ShareX/Forms/FirstTimeConfigForm.cs @@ -27,6 +27,10 @@ You should have received a copy of the GNU General Public License using System; using System.Windows.Forms; +#if WindowsStore +using Windows.ApplicationModel; +#endif + namespace ShareX { public partial class FirstTimeConfigForm : BlackStyleForm @@ -37,7 +41,7 @@ public FirstTimeConfigForm() { InitializeComponent(); pbLogo.Image = ImageHelpers.ResizeImage(ShareXResources.Logo, 128, 128); - StartupTaskState state = StartupManagerFactory.StartupManager.State; + var state = StartupManagerSingletonProvider.CurrentStartupManager.State; cbRunStartup.Checked = state == StartupTaskState.Enabled; cbRunStartup.Enabled = state != StartupTaskState.DisabledByUser; @@ -63,7 +67,7 @@ private void cbRunStartup_CheckedChanged(object sender, EventArgs e) { if (loaded) { - StartupManagerFactory.StartupManager.State = cbRunStartup.Checked ? StartupTaskState.Enabled : StartupTaskState.Disabled; + StartupManagerSingletonProvider.CurrentStartupManager.State = cbRunStartup.Checked ? StartupTaskState.Enabled : StartupTaskState.Disabled; } } diff --git a/ShareX/IntegrationHelpers.cs b/ShareX/IntegrationHelpers.cs index 9dc3e5b90..2bca1dd53 100644 --- a/ShareX/IntegrationHelpers.cs +++ b/ShareX/IntegrationHelpers.cs @@ -31,6 +31,10 @@ You should have received a copy of the GNU General Public License using System.Text; using System.Windows.Forms; +#if WindowsStore +using Windows.ApplicationModel; +#endif + namespace ShareX { public static class IntegrationHelpers @@ -347,7 +351,7 @@ public static void SteamShowInApp(bool showInApp) public static void Uninstall() { - StartupManagerFactory.StartupManager.State = StartupTaskState.Disabled; + StartupManagerSingletonProvider.CurrentStartupManager.State = StartupTaskState.Disabled; CreateShellContextMenuButton(false); CreateCustomUploaderExtension(false); CreateSendToMenuButton(false); diff --git a/ShareX/ShareX.csproj b/ShareX/ShareX.csproj index bdfadca5b..2f8ffdb56 100644 --- a/ShareX/ShareX.csproj +++ b/ShareX/ShareX.csproj @@ -328,7 +328,7 @@ - + diff --git a/ShareX/StartupManagers/CentennialStartupManager.cs b/ShareX/StartupManagers/CentennialStartupManager.cs index 1afa4724d..0178f4759 100644 --- a/ShareX/StartupManagers/CentennialStartupManager.cs +++ b/ShareX/StartupManagers/CentennialStartupManager.cs @@ -26,29 +26,33 @@ You should have received a copy of the GNU General Public License #if WindowsStore using System; +using System.Threading.Tasks; using Windows.ApplicationModel; namespace ShareX { public class CentennialStartupManager : IStartupManager { - public int StartupTargetIndex { get; set; } + private const int StartupTargetIndex = 0; + private static StartupTask packageTask; public StartupTaskState State { get { - return (StartupTaskState)StartupTask.GetForCurrentPackageAsync().AsTask().GetAwaiter().GetResult()[StartupTargetIndex].State; + AcquirePackageTask().GetAwaiter().GetResult(); + return packageTask.State; } set { + AcquirePackageTask().GetAwaiter().GetResult(); if (value == StartupTaskState.Enabled) { - StartupTask.GetForCurrentPackageAsync().AsTask().GetAwaiter().GetResult()[StartupTargetIndex].RequestEnableAsync().AsTask().GetAwaiter().GetResult(); + packageTask.RequestEnableAsync().GetAwaiter().GetResult(); } else if (value == StartupTaskState.Disabled) { - StartupTask.GetForCurrentPackageAsync().AsTask().GetAwaiter().GetResult()[StartupTargetIndex].Disable(); + packageTask.Disable(); } else { @@ -56,6 +60,14 @@ public StartupTaskState State } } } + + private async Task AcquirePackageTask() + { + if (packageTask == null) + { + packageTask = (await StartupTask.GetForCurrentPackageAsync())[StartupTargetIndex]; + } + } } } diff --git a/ShareX/StartupManagers/DesktopStartupManager.cs b/ShareX/StartupManagers/DesktopStartupManager.cs index 7428a1176..4d881def3 100644 --- a/ShareX/StartupManagers/DesktopStartupManager.cs +++ b/ShareX/StartupManagers/DesktopStartupManager.cs @@ -23,6 +23,8 @@ You should have received a copy of the GNU General Public License #endregion License Information (GPL v3) +#if !WindowsStore + using System.Windows.Forms; namespace ShareX @@ -31,4 +33,6 @@ public class DesktopStartupManager : GenericStartupManager { public override string StartupTargetPath => Application.ExecutablePath; } -} \ No newline at end of file +} + +#endif \ No newline at end of file diff --git a/ShareX/StartupManagers/GenericStartupManager.cs b/ShareX/StartupManagers/GenericStartupManager.cs index 95dc5f12b..69ad29bf4 100644 --- a/ShareX/StartupManagers/GenericStartupManager.cs +++ b/ShareX/StartupManagers/GenericStartupManager.cs @@ -23,6 +23,8 @@ You should have received a copy of the GNU General Public License #endregion License Information (GPL v3) +#if !WindowsStore + using Microsoft.Win32; using ShareX.HelpersLib; using System; @@ -60,4 +62,6 @@ public StartupTaskState State } } } -} \ No newline at end of file +} + +#endif \ No newline at end of file diff --git a/ShareX/StartupManagers/IStartupManager.cs b/ShareX/StartupManagers/IStartupManager.cs index c4f485fa7..5c54fbc2d 100644 --- a/ShareX/StartupManagers/IStartupManager.cs +++ b/ShareX/StartupManagers/IStartupManager.cs @@ -23,6 +23,10 @@ You should have received a copy of the GNU General Public License #endregion License Information (GPL v3) +#if WindowsStore +using Windows.ApplicationModel; +#endif + namespace ShareX { public interface IStartupManager diff --git a/ShareX/StartupManagers/StartupManagerFactory.cs b/ShareX/StartupManagers/StartupManagerSingletonProvider.cs similarity index 64% rename from ShareX/StartupManagers/StartupManagerFactory.cs rename to ShareX/StartupManagers/StartupManagerSingletonProvider.cs index 140f672e8..1fefaa0ec 100644 --- a/ShareX/StartupManagers/StartupManagerFactory.cs +++ b/ShareX/StartupManagers/StartupManagerSingletonProvider.cs @@ -25,31 +25,18 @@ You should have received a copy of the GNU General Public License namespace ShareX { - public static class StartupManagerFactory + public static class StartupManagerSingletonProvider { - private static IStartupManager startupManager; + public static IStartupManager CurrentStartupManager { get; private set; } - public static IStartupManager StartupManager - { - get - { - if (startupManager == null) - { - startupManager = CreateStartupManager(); - } - - return startupManager; - } - } - - public static IStartupManager CreateStartupManager() + static StartupManagerSingletonProvider() { #if WindowsStore - return new CentennialStartupManager(); + CurrentStartupManager = new CentennialStartupManager(); #elif STEAM - return new SteamStartupManager(); + CurrentStartupManager = new SteamStartupManager(); #else - return new DesktopStartupManager(); + CurrentStartupManager = new DesktopStartupManager(); #endif } } diff --git a/ShareX/StartupManagers/SteamStartupManager.cs b/ShareX/StartupManagers/SteamStartupManager.cs index 766afc6ad..8070be091 100644 --- a/ShareX/StartupManagers/SteamStartupManager.cs +++ b/ShareX/StartupManagers/SteamStartupManager.cs @@ -23,6 +23,8 @@ You should have received a copy of the GNU General Public License #endregion License Information (GPL v3) +#if STEAM + using ShareX.HelpersLib; namespace ShareX @@ -31,4 +33,6 @@ public class SteamStartupManager : GenericStartupManager { public override string StartupTargetPath => Helpers.GetAbsolutePath("../ShareX_Launcher.exe"); } -} \ No newline at end of file +} + +#endif \ No newline at end of file