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