mirror of
https://github.com/ZuneDev/ZuneModdingHelper.git
synced 2026-07-27 13:12:21 -07:00
Added return value to CurrentUserSetBoolValue that indicates success
This commit is contained in:
@@ -57,20 +57,42 @@ namespace ZuneModCore.Mods
|
|||||||
public override Task Init()
|
public override Task Init()
|
||||||
{
|
{
|
||||||
foreach (AbstractUIElement uiElem in OptionsUI.Items)
|
foreach (AbstractUIElement uiElem in OptionsUI.Items)
|
||||||
|
{
|
||||||
if (uiElem is AbstractBooleanUIElement boolElem)
|
if (uiElem is AbstractBooleanUIElement boolElem)
|
||||||
boolElem.ChangeState(GetFeatureOverride(boolElem.Id));
|
{
|
||||||
|
bool? featureOverride = GetFeatureOverride(boolElem.Id);
|
||||||
|
boolElem.ChangeState(featureOverride ?? false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Task<string?> Apply()
|
public override async Task<string?> Apply()
|
||||||
{
|
{
|
||||||
// TODO: Use user choices from AbstractUI
|
// TODO: Use user choices from AbstractUI
|
||||||
foreach (AbstractUIElement uiElem in OptionsUI.Items)
|
foreach (AbstractUIElement uiElem in OptionsUI.Items)
|
||||||
|
{
|
||||||
if (uiElem is AbstractBooleanUIElement boolElem)// && boolElem.State)
|
if (uiElem is AbstractBooleanUIElement boolElem)// && boolElem.State)
|
||||||
SetFeatureOverride(boolElem.Id, true);
|
{
|
||||||
|
bool isSuccess = SetFeatureOverride(boolElem.Id, true);
|
||||||
|
if (!isSuccess)
|
||||||
|
{
|
||||||
|
string? resetStatus = await Reset();
|
||||||
|
if (resetStatus != null)
|
||||||
|
{
|
||||||
|
// The reset failed as well, return both errors
|
||||||
|
return "Failed to set registry keys. Unable to clean up partial overrides:\r\n" + resetStatus;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return "Failed to set registry keys. Automatically cleaned up partial changes.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return Task.FromResult<string?>(null);
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Task<string?> Reset()
|
public override Task<string?> Reset()
|
||||||
@@ -82,10 +104,10 @@ namespace ZuneModCore.Mods
|
|||||||
return Task.FromResult<string?>(null);
|
return Task.FromResult<string?>(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void SetFeatureOverride(string feature, bool value) =>
|
public static bool SetFeatureOverride(string feature, bool value) =>
|
||||||
RegEdit.CurrentUserSetBoolValue(ZUNE_FEATURESOVERRIDE_REGKEY, feature, value);
|
RegEdit.CurrentUserSetBoolValue(ZUNE_FEATURESOVERRIDE_REGKEY, feature, value);
|
||||||
|
|
||||||
public static bool GetFeatureOverride(string feature) =>
|
public static bool? GetFeatureOverride(string feature) =>
|
||||||
RegEdit.CurrentUserGetBoolValue(ZUNE_FEATURESOVERRIDE_REGKEY, feature);
|
RegEdit.CurrentUserGetBoolValue(ZUNE_FEATURESOVERRIDE_REGKEY, feature);
|
||||||
|
|
||||||
public static void ResetFeatureOverride(string feature) =>
|
public static void ResetFeatureOverride(string feature) =>
|
||||||
|
|||||||
@@ -66,15 +66,20 @@ namespace ZuneModCore.Mods
|
|||||||
|
|
||||||
|
|
||||||
// Enable all feature overrides affected by new servers
|
// Enable all feature overrides affected by new servers
|
||||||
SetFeatureOverride("Apps", true);
|
bool setOverrideSuccess = true;
|
||||||
SetFeatureOverride("Channels", true);
|
setOverrideSuccess &= SetFeatureOverride("Apps", true);
|
||||||
SetFeatureOverride("Games", true);
|
setOverrideSuccess &= SetFeatureOverride("Channels", true);
|
||||||
SetFeatureOverride("Marketplace", true);
|
setOverrideSuccess &= SetFeatureOverride("Games", true);
|
||||||
SetFeatureOverride("Music", true);
|
setOverrideSuccess &= SetFeatureOverride("Marketplace", true);
|
||||||
SetFeatureOverride("MusicVideos", true);
|
setOverrideSuccess &= SetFeatureOverride("Music", true);
|
||||||
SetFeatureOverride("Podcasts", true);
|
setOverrideSuccess &= SetFeatureOverride("MusicVideos", true);
|
||||||
SetFeatureOverride("Social", true);
|
setOverrideSuccess &= SetFeatureOverride("Podcasts", true);
|
||||||
SetFeatureOverride("Videos", true);
|
setOverrideSuccess &= SetFeatureOverride("Social", true);
|
||||||
|
setOverrideSuccess &= SetFeatureOverride("Videos", true);
|
||||||
|
if (setOverrideSuccess != true)
|
||||||
|
{
|
||||||
|
return Task.FromResult<string?>("Unable to set feature overrides. The mod was successful, but you may not be able to see it in the Zune Software.");
|
||||||
|
}
|
||||||
|
|
||||||
return Task.FromResult<string?>(null);
|
return Task.FromResult<string?>(null);
|
||||||
}
|
}
|
||||||
@@ -97,15 +102,20 @@ namespace ZuneModCore.Mods
|
|||||||
File.Copy(Path.Combine(StorageDirectory, "ZuneService.original.dll"), zsDllPath, true);
|
File.Copy(Path.Combine(StorageDirectory, "ZuneService.original.dll"), zsDllPath, true);
|
||||||
|
|
||||||
// Disable all feature overrides affected by new servers
|
// Disable all feature overrides affected by new servers
|
||||||
SetFeatureOverride("Apps", false);
|
bool setOverrideSuccess = true;
|
||||||
SetFeatureOverride("Channels", false);
|
setOverrideSuccess &= SetFeatureOverride("Apps", false);
|
||||||
SetFeatureOverride("Games", false);
|
setOverrideSuccess &= SetFeatureOverride("Channels", false);
|
||||||
SetFeatureOverride("Marketplace", false);
|
setOverrideSuccess &= SetFeatureOverride("Games", false);
|
||||||
SetFeatureOverride("Music", false);
|
setOverrideSuccess &= SetFeatureOverride("Marketplace", false);
|
||||||
SetFeatureOverride("MusicVideos", false);
|
setOverrideSuccess &= SetFeatureOverride("Music", false);
|
||||||
SetFeatureOverride("Podcasts", false);
|
setOverrideSuccess &= SetFeatureOverride("MusicVideos", false);
|
||||||
SetFeatureOverride("Social", false);
|
setOverrideSuccess &= SetFeatureOverride("Podcasts", false);
|
||||||
SetFeatureOverride("Videos", false);
|
setOverrideSuccess &= SetFeatureOverride("Social", false);
|
||||||
|
setOverrideSuccess &= SetFeatureOverride("Videos", false);
|
||||||
|
if (setOverrideSuccess != true)
|
||||||
|
{
|
||||||
|
return Task.FromResult<string?>("Unable to reset feature overrides. The mod was successfully removed, but you may still be able to see it in the Zune Software.");
|
||||||
|
}
|
||||||
|
|
||||||
return Task.FromResult<string?>(null);
|
return Task.FromResult<string?>(null);
|
||||||
}
|
}
|
||||||
|
|||||||
+11
-3
@@ -9,7 +9,7 @@ namespace ZuneModCore
|
|||||||
{
|
{
|
||||||
public const string ZUNE_REG_PATH = @"SOFTWARE\Microsoft\Zune\";
|
public const string ZUNE_REG_PATH = @"SOFTWARE\Microsoft\Zune\";
|
||||||
|
|
||||||
public static void CurrentUserSetBoolValue(string key, string name, bool value)
|
public static bool CurrentUserSetBoolValue(string key, string name, bool value)
|
||||||
{
|
{
|
||||||
RegistryKey? regKey = Registry.CurrentUser.OpenSubKey(key, true);
|
RegistryKey? regKey = Registry.CurrentUser.OpenSubKey(key, true);
|
||||||
if (regKey == null)
|
if (regKey == null)
|
||||||
@@ -18,16 +18,24 @@ namespace ZuneModCore
|
|||||||
regKey.SetValue(name, value, RegistryValueKind.DWord);
|
regKey.SetValue(name, value, RegistryValueKind.DWord);
|
||||||
regKey.Close();
|
regKey.Close();
|
||||||
regKey.Dispose();
|
regKey.Dispose();
|
||||||
|
|
||||||
|
// Read the key to make sure it was set properly
|
||||||
|
if (CurrentUserGetBoolValue(key, name) == null)
|
||||||
|
return false;
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool CurrentUserGetBoolValue(string key, string name)
|
public static bool? CurrentUserGetBoolValue(string key, string name)
|
||||||
{
|
{
|
||||||
using RegistryKey? regKey = Registry.CurrentUser.OpenSubKey(key, true);
|
using RegistryKey? regKey = Registry.CurrentUser.OpenSubKey(key, true);
|
||||||
if (regKey == null)
|
if (regKey == null)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
// Return null if a boolean value couldn't be read from the key
|
||||||
int? value = regKey.GetValue(name, false) as int?;
|
int? value = regKey.GetValue(name, false) as int?;
|
||||||
return value.HasValue && value != 0;
|
if (!value.HasValue)
|
||||||
|
return null;
|
||||||
|
return value != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void CurrentUserDeleteKey(string key)
|
public static void CurrentUserDeleteKey(string key)
|
||||||
|
|||||||
Reference in New Issue
Block a user