CLI tool for running Playbooks
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

52 lines
1.8 KiB

using System;
using System.Linq;
using System.Runtime.InteropServices;
using System.Threading.Tasks;
using System.Windows.Forms;
using TrustedUninstaller.Shared.Tasks;
namespace TrustedUninstaller.Shared.Actions
{
class LanguageAction : TaskAction, ITaskAction
{
public void RunTaskOnMainThread() { throw new NotImplementedException(); }
public int ProgressWeight { get; set; } = 1;
public int GetProgressWeight() => ProgressWeight;
private bool InProgress { get; set; }
public void ResetProgress() => InProgress = false;
public string Tag { get; set; } = "";
public string Primary() => "for language " + Tag;
public bool Display { get; set; } = false;
public string ErrorString() => $"LanguageAction failed to install language {Tag}.";
[DllImport("intl.cpl", CharSet = CharSet.Unicode, SetLastError = true)]
public static extern int IntlUpdateSystemLocale(string LocaleName, int dwFlags);
public UninstallTaskStatus GetStatus() =>
InputLanguage.InstalledInputLanguages.Cast<InputLanguage>()
.Any(c => c.Culture.IetfLanguageTag == this.Tag)
? UninstallTaskStatus.Completed
: UninstallTaskStatus.ToDo;
public async Task<bool> RunTask()
{
if (GetStatus() != UninstallTaskStatus.ToDo)
{
return false;
}
if (this.Display)
{
// Reversed from the Set-WinSystemLocale cmdlet...
// TODO: Figure out the return value lol
IntlUpdateSystemLocale(this.Tag, 2);
}
// TODO: Installing languages is AIDS
return false;
}
}
}