Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions MicroWin/AppState.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using MicroWin.Classes;
using MicroWin.Classes.Regional;
Comment thread
CodingWonders marked this conversation as resolved.
using System.Collections.Generic;
using System.IO;

Expand All @@ -24,6 +25,8 @@ public static class AppState
public static bool UseUEFICA23Bins { get; set; } = true;
public static string? SaveISO { get; set; }
public static string? WinUtilConfigPath { get; set; }
public static UserLocale? userLocale { get; set; }
public static TimeOffset? timeOffset { get; set; }

public static string Version => "v2.1";
}
Expand Down
45 changes: 45 additions & 0 deletions MicroWin/Classes/Regional/GeoId.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
using MicroWin.functions.Helpers.ProgramResources;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Text;
using System.Xml;
using System.Xml.Serialization;

namespace MicroWin.Classes.Regional
{
public class GeoId
{
[XmlAttribute("Id")]
public required string Id;

[XmlAttribute("DisplayName")]
public required string DisplayName;

public override string ToString() {
return $"GeoID {Id} -- {DisplayName}";
}

public static List<GeoId> LoadItems() {
List<GeoId> geoList = [];

try {
XmlReaderSettings xs = new() { IgnoreWhitespace = true };
#pragma warning disable CS8604
using XmlReader reader = XmlReader.Create(ResourceHelper.GetProgramResourceStream("MicroWin.Resources.Regional.GeoId.xml"), xs);
#pragma warning restore CS8604
while (reader.Read()) {
if (reader.NodeType == XmlNodeType.Element && reader.Name == "GeoId") {
geoList.Add(new() { Id = reader.GetAttribute("Id") ?? "", DisplayName = reader.GetAttribute("DisplayName") ?? "" });
}
}
} catch (Exception ex) {
if (Debugger.IsAttached)
Debugger.Break();
Debug.WriteLine(ex.Message);
}

return geoList;
}
}
}
50 changes: 50 additions & 0 deletions MicroWin/Classes/Regional/ImageLanguage.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
using MicroWin.functions.Helpers.ProgramResources;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Text;
using System.Xml;
using System.Xml.Serialization;

namespace MicroWin.Classes.Regional
{
public class ImageLanguage
{
[XmlAttribute("Id")]
public required string Id;

[XmlAttribute("DisplayName")]
public required string DisplayName;

public override string ToString() {
return $"Language {Id} -- {DisplayName}";
}

public static List<ImageLanguage> LoadItems() {
List<ImageLanguage> langList = [];

try
{
XmlReaderSettings xs = new() { IgnoreWhitespace = true };
#pragma warning disable CS8604
using XmlReader reader = XmlReader.Create(ResourceHelper.GetProgramResourceStream("MicroWin.Resources.Regional.ImageLanguage.xml"), xs);
#pragma warning restore CS8604
while (reader.Read())
{
if (reader.NodeType == XmlNodeType.Element && reader.Name == "ImageLanguage")
{
langList.Add(new() { Id = reader.GetAttribute("Id") ?? "", DisplayName = reader.GetAttribute("DisplayName") ?? "" });
}
}
}
catch (Exception ex)
{
if (Debugger.IsAttached)
Debugger.Break();
Debug.WriteLine(ex.Message);
}

return langList;
}
}
}
65 changes: 65 additions & 0 deletions MicroWin/Classes/Regional/KeyboardIdentifier.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
using MicroWin.functions.Helpers.ProgramResources;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Text;
using System.Xml;

namespace MicroWin.Classes.Regional
{
public class KeyboardIdentifier
{

public required string Id;

public required string DisplayName;

public required string TypeString;

public KeyboardType GetKeyboardType()
{
return TypeString switch
{
"Keyboard" => KeyboardType.Keyboard,
"IME" => KeyboardType.IME,
_ => KeyboardType.Unknown
};
}

public override string ToString() {
return $"Keyboard {Id} -- {DisplayName} -- {GetKeyboardType()}";
}

public static List<KeyboardIdentifier> LoadItems() {
List<KeyboardIdentifier> keyboardList = [];

try
{
XmlReaderSettings xs = new() { IgnoreWhitespace = true };
#pragma warning disable CS8604
using XmlReader reader = XmlReader.Create(ResourceHelper.GetProgramResourceStream("MicroWin.Resources.Regional.KeyboardIdentifier.xml"), xs);
#pragma warning restore CS8604
while (reader.Read())
{
if (reader.NodeType == XmlNodeType.Element && reader.Name == "KeyboardIdentifier")
{
keyboardList.Add(new() { Id = reader.GetAttribute("Id") ?? "", DisplayName = reader.GetAttribute("DisplayName") ?? "", TypeString = reader.GetAttribute("Type") ?? "" });
}
}
}
catch (Exception ex)
{
if (Debugger.IsAttached)
Debugger.Break();
Debug.WriteLine(ex.Message);
}
return keyboardList;
}
}

public enum KeyboardType : int {
Unknown = -1,
Keyboard = 0,
IME = 1
}
}
55 changes: 55 additions & 0 deletions MicroWin/Classes/Regional/TimeOffset.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
using MicroWin.functions.Helpers.ProgramResources;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Text;
using System.Xml;
using System.Xml.Serialization;

namespace MicroWin.Classes.Regional
{
public class TimeOffset
{
[XmlAttribute("Id")]
public required string Id;

[XmlAttribute("DisplayName")]
public required string DisplayName;

public override string ToString() {
return $"Time Offset {Id} -- {DisplayName}";
}

public static List<TimeOffset> LoadItems() {
List<TimeOffset> offsetList = [];

try
{
XmlReaderSettings xs = new() { IgnoreWhitespace = true };
#pragma warning disable CS8604
using XmlReader reader = XmlReader.Create(ResourceHelper.GetProgramResourceStream("MicroWin.Resources.Regional.TimeOffset.xml"), xs);
#pragma warning restore CS8604
while (reader.Read())
{
if (reader.NodeType == XmlNodeType.Element && reader.Name == "TimeOffset")
{
offsetList.Add(new() { Id = reader.GetAttribute("Id") ?? "", DisplayName = reader.GetAttribute("DisplayName") ?? "" });
}
}
}
catch (Exception ex)
{
if (Debugger.IsAttached)
Debugger.Break();
Debug.WriteLine(ex.Message);
}

return offsetList;
}

public TimeOffset Clone()
{
return (TimeOffset)MemberwiseClone();
}
}
}
63 changes: 63 additions & 0 deletions MicroWin/Classes/Regional/UserLocale.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
using MicroWin.functions.Helpers.ProgramResources;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Text;
using System.Xml;
using System.Xml.Serialization;

namespace MicroWin.Classes.Regional
{
public class UserLocale
{
[XmlAttribute("Id")]
public required string Id;
[XmlAttribute("DisplayName")]
public required string DisplayName;
[XmlAttribute("LCID")]
public required string LCID;
[XmlAttribute("KeyboardLayout")]
public string? KeyboardLayout;
[XmlAttribute("GeoLocation")]
public string? GeoLocation;

public override string ToString()
{
return $"User Locale {Id} -- {DisplayName} -- {LCID} -- {KeyboardLayout} -- {GeoLocation}";
}

public UserLocale Clone() {
return (UserLocale)MemberwiseClone();
}

public static List<UserLocale> LoadItems() {
List<UserLocale> localeList = [];

try
{
XmlReaderSettings xs = new() { IgnoreWhitespace = true };
#pragma warning disable CS8604
using XmlReader reader = XmlReader.Create(ResourceHelper.GetProgramResourceStream("MicroWin.Resources.Regional.UserLocale.xml"), xs);
#pragma warning restore CS8604
while (reader.Read())
{
if (reader.NodeType == XmlNodeType.Element && reader.Name == "UserLocale")
{
localeList.Add(new() { Id = reader.GetAttribute("Id") ?? "", DisplayName = reader.GetAttribute("DisplayName") ?? "",
LCID = reader.GetAttribute("LCID") ?? "", KeyboardLayout = reader.GetAttribute("KeyboardLayout") ?? "",
GeoLocation = reader.GetAttribute("GeoLocation") ?? "" });
}
}
}
catch (Exception ex)
{
if (Debugger.IsAttached)
Debugger.Break();
Debug.WriteLine(ex.Message);
}

return localeList;
}

}
}
Loading