Merge pull request #3641 from sylveon/startup-update

Update startup code
This commit is contained in:
Jaex 2018-10-01 22:26:41 +03:00 committed by GitHub
commit 04ebf946a1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 69 additions and 40 deletions

View file

@ -26,6 +26,9 @@
using Newtonsoft.Json;
using System;
using System.ComponentModel;
#if WindowsStore
using Windows.ApplicationModel;
#endif
namespace ShareX
{
@ -275,11 +278,22 @@ public enum RegionCaptureType
}
#if !WindowsStore
public enum StartupTaskState
public enum StartupState
{
Disabled = 0,
DisabledByUser = 1,
Enabled = 2
Disabled,
DisabledByUser,
Enabled,
DisabledByPolicy,
EnabledByPolicy
}
#else
public enum StartupState
{
Disabled = StartupTaskState.Disabled,
DisabledByUser = StartupTaskState.DisabledByUser,
Enabled = StartupTaskState.Enabled,
DisabledByPolicy = StartupTaskState.DisabledByPolicy,
EnabledByPolicy = StartupTaskState.EnabledByPolicy
}
#endif
}

View file

@ -32,10 +32,6 @@
using System.Threading.Tasks;
using System.Windows.Forms;
#if WindowsStore
using Windows.ApplicationModel;
#endif
namespace ShareX
{
public partial class ApplicationSettingsForm : Form
@ -264,12 +260,20 @@ private void UpdateStartWithWindows()
try
{
var state = StartupManagerSingletonProvider.CurrentStartupManager.State;
cbStartWithWindows.Checked = state == StartupTaskState.Enabled;
cbStartWithWindows.Checked = state == StartupState.Enabled || state == StartupState.EnabledByPolicy;
if (state == StartupTaskState.DisabledByUser)
if (state == StartupState.DisabledByUser)
{
cbStartWithWindows.Text = Resources.ApplicationSettingsForm_cbStartWithWindows_DisabledByUser_Text;
}
else if (state == StartupState.DisabledByPolicy)
{
cbStartWithWindows.Text = Resources.ApplicationSettingsForm_cbStartWithWindows_DisabledByPolicy_Text;
}
else if (state == StartupState.EnabledByPolicy)
{
cbStartWithWindows.Text = Resources.ApplicationSettingsForm_cbStartWithWindows_EnabledByPolicy_Text;
}
else
{
cbStartWithWindows.Enabled = true;
@ -425,7 +429,7 @@ private void cbStartWithWindows_CheckedChanged(object sender, EventArgs e)
{
try
{
StartupManagerSingletonProvider.CurrentStartupManager.State = cbStartWithWindows.Checked ? StartupTaskState.Enabled : StartupTaskState.Disabled;
StartupManagerSingletonProvider.CurrentStartupManager.State = cbStartWithWindows.Checked ? StartupState.Enabled : StartupState.Disabled;
UpdateStartWithWindows();
}
catch (Exception ex)

View file

@ -27,10 +27,6 @@
using System;
using System.Windows.Forms;
#if WindowsStore
using Windows.ApplicationModel;
#endif
namespace ShareX
{
public partial class FirstTimeConfigForm : BlackStyleForm
@ -43,8 +39,8 @@ public FirstTimeConfigForm()
pbLogo.Image = ImageHelpers.ResizeImage(ShareXResources.Logo, 128, 128);
var state = StartupManagerSingletonProvider.CurrentStartupManager.State;
cbRunStartup.Checked = state == StartupTaskState.Enabled;
cbRunStartup.Enabled = state != StartupTaskState.DisabledByUser;
cbRunStartup.Checked = state == StartupState.Enabled || state == StartupState.EnabledByPolicy;
cbRunStartup.Enabled = state != StartupState.DisabledByUser && state != StartupState.DisabledByPolicy && state != StartupState.EnabledByPolicy;
cbShellContextMenuButton.Checked = IntegrationHelpers.CheckShellContextMenuButton();
cbSendToMenu.Checked = IntegrationHelpers.CheckSendToMenuButton();
@ -67,7 +63,7 @@ private void cbRunStartup_CheckedChanged(object sender, EventArgs e)
{
if (loaded)
{
StartupManagerSingletonProvider.CurrentStartupManager.State = cbRunStartup.Checked ? StartupTaskState.Enabled : StartupTaskState.Disabled;
StartupManagerSingletonProvider.CurrentStartupManager.State = cbRunStartup.Checked ? StartupState.Enabled : StartupState.Disabled;
}
}

View file

@ -31,10 +31,6 @@
using System.Text;
using System.Windows.Forms;
#if WindowsStore
using Windows.ApplicationModel;
#endif
namespace ShareX
{
public static class IntegrationHelpers
@ -401,7 +397,7 @@ public static void SteamShowInApp(bool showInApp)
public static void Uninstall()
{
StartupManagerSingletonProvider.CurrentStartupManager.State = StartupTaskState.Disabled;
StartupManagerSingletonProvider.CurrentStartupManager.State = StartupState.Disabled;
CreateShellContextMenuButton(false);
CreateEditShellContextMenuButton(false);
CreateCustomUploaderExtension(false);

View file

@ -482,6 +482,15 @@ public class Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Startup has been disabled by your organization.
/// </summary>
public static string ApplicationSettingsForm_cbStartWithWindows_DisabledByPolicy_Text {
get {
return ResourceManager.GetString("ApplicationSettingsForm_cbStartWithWindows_DisabledByPolicy_Text", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Startup has been disabled in Task Manager.
/// </summary>
@ -491,6 +500,15 @@ public class Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Startup has been enabled by your organization.
/// </summary>
public static string ApplicationSettingsForm_cbStartWithWindows_EnabledByPolicy_Text {
get {
return ResourceManager.GetString("ApplicationSettingsForm_cbStartWithWindows_EnabledByPolicy_Text", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Run ShareX when Windows starts.
/// </summary>

View file

@ -982,6 +982,12 @@ Middle click to close</value>
<data name="mx" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\mx.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="ApplicationSettingsForm_cbStartWithWindows_DisabledByPolicy_Text" xml:space="preserve">
<value>Startup has been disabled by your organization</value>
</data>
<data name="ApplicationSettingsForm_cbStartWithWindows_EnabledByPolicy_Text" xml:space="preserve">
<value>Startup has been enabled by your organization</value>
</data>
<data name="MustReopenForPersonalFolderChangesToTakeEffect" xml:space="preserve">
<value>You must reopen ShareX for personal folder changes to take effect.</value>
</data>

View file

@ -26,7 +26,6 @@
#if WindowsStore
using System;
using System.Threading.Tasks;
using Windows.ApplicationModel;
namespace ShareX
@ -36,16 +35,16 @@ public class CentennialStartupManager : IStartupManager
private const int StartupTargetIndex = 0;
private readonly StartupTask packageTask = StartupTask.GetForCurrentPackageAsync().GetAwaiter().GetResult()[StartupTargetIndex];
public StartupTaskState State
public StartupState State
{
get => packageTask.State;
get => (StartupState)packageTask.State;
set
{
if (value == StartupTaskState.Enabled)
if (value == StartupState.Enabled)
{
packageTask.RequestEnableAsync().GetAwaiter().GetResult();
}
else if (value == StartupTaskState.Disabled)
else if (value == StartupState.Disabled)
{
packageTask.Disable();
}

View file

@ -35,34 +35,34 @@ public abstract class GenericStartupManager : IStartupManager
{
public abstract string StartupTargetPath { get; }
public StartupTaskState State
public StartupState State
{
get
{
if (ShortcutHelpers.CheckShortcut(Environment.SpecialFolder.Startup, StartupTargetPath))
{
byte[] status = Registry.GetValue(@"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\StartupApproved\StartupFolder",
"ShareX.lnk", null) as byte[];
"ShareX.lnk", null) as byte[];
if (status != null && status.Length > 0 && status[0] == 3)
{
return StartupTaskState.DisabledByUser;
return StartupState.DisabledByUser;
}
else
{
return StartupTaskState.Enabled;
return StartupState.Enabled;
}
}
else
{
return StartupTaskState.Disabled;
return StartupState.Disabled;
}
}
set
{
if (value == StartupTaskState.Enabled || value == StartupTaskState.Disabled)
if (value == StartupState.Enabled || value == StartupState.Disabled)
{
ShortcutHelpers.SetShortcut(value == StartupTaskState.Enabled, Environment.SpecialFolder.Startup, StartupTargetPath, "-silent");
ShortcutHelpers.SetShortcut(value == StartupState.Enabled, Environment.SpecialFolder.Startup, StartupTargetPath, "-silent");
}
else
{

View file

@ -23,14 +23,10 @@
#endregion License Information (GPL v3)
#if WindowsStore
using Windows.ApplicationModel;
#endif
namespace ShareX
{
public interface IStartupManager
{
StartupTaskState State { get; set; }
StartupState State { get; set; }
}
}