2024-02-08 17:55:04 +08:00
|
|
|
|
using System.ComponentModel;
|
2024-04-24 17:40:10 +08:00
|
|
|
|
using System.Globalization;
|
|
|
|
|
using System.Resources;
|
2024-02-08 15:59:56 +08:00
|
|
|
|
using System.Runtime.CompilerServices;
|
|
|
|
|
|
2024-02-08 17:55:04 +08:00
|
|
|
|
namespace WpfMaiTouchEmulator;
|
|
|
|
|
|
2024-04-24 17:40:10 +08:00
|
|
|
|
public class MainWindowViewModel : INotifyPropertyChanged
|
2024-02-08 15:59:56 +08:00
|
|
|
|
{
|
2024-04-24 17:40:10 +08:00
|
|
|
|
// Language
|
|
|
|
|
public string LbAutoPortConnecting
|
|
|
|
|
{
|
|
|
|
|
get; set;
|
|
|
|
|
}
|
|
|
|
|
public string LbAutoSensorPositioning
|
|
|
|
|
{
|
|
|
|
|
get; set;
|
|
|
|
|
}
|
|
|
|
|
public string LbButtonState
|
|
|
|
|
{
|
|
|
|
|
get; set;
|
|
|
|
|
}
|
|
|
|
|
public string LbConnectionState
|
|
|
|
|
{
|
|
|
|
|
get; set;
|
|
|
|
|
}
|
|
|
|
|
public string LbConnectionStateNotConnected
|
|
|
|
|
{
|
|
|
|
|
get; set;
|
|
|
|
|
}
|
|
|
|
|
public string LbConnectToPort
|
|
|
|
|
{
|
|
|
|
|
get; set;
|
|
|
|
|
}
|
|
|
|
|
public string LbDebugMode
|
|
|
|
|
{
|
|
|
|
|
get; set;
|
|
|
|
|
}
|
|
|
|
|
public string LbExitWithSinmai
|
|
|
|
|
{
|
|
|
|
|
get; set;
|
|
|
|
|
}
|
|
|
|
|
public string LbInstallComPort
|
|
|
|
|
{
|
|
|
|
|
get; set;
|
|
|
|
|
}
|
|
|
|
|
public string LbLanguageDropdown
|
|
|
|
|
{
|
|
|
|
|
get; set;
|
|
|
|
|
}
|
|
|
|
|
public string LbListComPorts
|
|
|
|
|
{
|
|
|
|
|
get; set;
|
|
|
|
|
}
|
|
|
|
|
public string LbReceivedData
|
|
|
|
|
{
|
|
|
|
|
get; set;
|
|
|
|
|
}
|
|
|
|
|
public string LbRecievedData
|
|
|
|
|
{
|
|
|
|
|
get;
|
|
|
|
|
private set;
|
|
|
|
|
}
|
|
|
|
|
public string LbSentData
|
|
|
|
|
{
|
|
|
|
|
get; set;
|
|
|
|
|
}
|
|
|
|
|
public string LbUninstallComPort
|
|
|
|
|
{
|
|
|
|
|
get; set;
|
|
|
|
|
}
|
2024-04-24 18:49:02 +08:00
|
|
|
|
public string? LbMenuCategoryHelp
|
|
|
|
|
{
|
|
|
|
|
get;
|
|
|
|
|
private set;
|
|
|
|
|
}
|
|
|
|
|
public string? LbMenuItemSetup
|
|
|
|
|
{
|
|
|
|
|
get;
|
|
|
|
|
private set;
|
|
|
|
|
}
|
|
|
|
|
public string? TxtSetupInstructions
|
|
|
|
|
{
|
|
|
|
|
get;
|
|
|
|
|
private set;
|
|
|
|
|
}
|
|
|
|
|
public string? TxtSetupInstructionsHeader
|
|
|
|
|
{
|
|
|
|
|
get;
|
|
|
|
|
private set;
|
|
|
|
|
}
|
|
|
|
|
public string? TxtFailedToSetupSinmaiExitHeader
|
|
|
|
|
{
|
|
|
|
|
get;
|
|
|
|
|
private set;
|
|
|
|
|
}
|
|
|
|
|
public string? TxtFailedToSetupSinmaiExit
|
|
|
|
|
{
|
|
|
|
|
get;
|
|
|
|
|
private set;
|
|
|
|
|
}
|
|
|
|
|
public string? TxtCurrentlyInstalledPorts
|
|
|
|
|
{
|
|
|
|
|
get;
|
|
|
|
|
private set;
|
|
|
|
|
}
|
|
|
|
|
public string? TxtErrorConnectingToPortHeader
|
|
|
|
|
{
|
|
|
|
|
get;
|
|
|
|
|
private set;
|
|
|
|
|
}
|
|
|
|
|
public string? TxtComPortConnected
|
|
|
|
|
{
|
|
|
|
|
get;
|
|
|
|
|
private set;
|
|
|
|
|
}
|
|
|
|
|
public string? TxtComPortConnecting
|
|
|
|
|
{
|
|
|
|
|
get;
|
|
|
|
|
private set;
|
|
|
|
|
}
|
|
|
|
|
public string? TxtCom3AlreadyInstalled
|
|
|
|
|
{
|
|
|
|
|
get;
|
|
|
|
|
private set;
|
|
|
|
|
}
|
|
|
|
|
public string? TxtCom3InstalledSuccessfully
|
|
|
|
|
{
|
|
|
|
|
get;
|
|
|
|
|
private set;
|
|
|
|
|
}
|
|
|
|
|
public string? TxtCom3InstallFailed
|
|
|
|
|
{
|
|
|
|
|
get;
|
|
|
|
|
private set;
|
|
|
|
|
}
|
|
|
|
|
public string? TxtCom3UninstallNotRequired
|
|
|
|
|
{
|
|
|
|
|
get;
|
|
|
|
|
private set;
|
|
|
|
|
}
|
|
|
|
|
public string? TxtCom3UninstalledSuccessfully
|
|
|
|
|
{
|
|
|
|
|
get;
|
|
|
|
|
private set;
|
|
|
|
|
}
|
|
|
|
|
public string? TxtCom3UninstallFailed
|
|
|
|
|
{
|
|
|
|
|
get;
|
|
|
|
|
private set;
|
|
|
|
|
}
|
|
|
|
|
public string? LbTouchPanelResize
|
|
|
|
|
{
|
|
|
|
|
get;
|
|
|
|
|
private set;
|
|
|
|
|
}
|
|
|
|
|
public string? LbTouchPanelDrag
|
|
|
|
|
{
|
|
|
|
|
get;
|
|
|
|
|
private set;
|
|
|
|
|
}
|
|
|
|
|
public string? LbAutoPortConnectingTT
|
|
|
|
|
{
|
|
|
|
|
get;
|
|
|
|
|
private set;
|
|
|
|
|
}
|
|
|
|
|
public string? LbAutoSensorPositioningTT
|
|
|
|
|
{
|
|
|
|
|
get;
|
|
|
|
|
private set;
|
|
|
|
|
}
|
|
|
|
|
public string? LbExitWithSinmaiTT
|
|
|
|
|
{
|
|
|
|
|
get;
|
|
|
|
|
private set;
|
|
|
|
|
}
|
2024-04-24 17:40:10 +08:00
|
|
|
|
|
2024-02-08 17:55:04 +08:00
|
|
|
|
private bool _isAutomaticPortConnectingEnabled;
|
|
|
|
|
private bool _isDebugEnabled;
|
|
|
|
|
private bool _isAutomaticPositioningEnabled;
|
|
|
|
|
private bool _isExitWithSinmaiEnabled;
|
2024-04-24 17:40:10 +08:00
|
|
|
|
private CultureInfo _selectedLanguage;
|
|
|
|
|
private readonly ResourceManager resourceManager;
|
|
|
|
|
private readonly CultureInfo cultureInfo;
|
|
|
|
|
|
|
|
|
|
public List<CultureInfo> SupportedLanguages
|
|
|
|
|
{
|
|
|
|
|
get;
|
|
|
|
|
} =
|
|
|
|
|
[
|
|
|
|
|
new CultureInfo("en-US"), // English
|
2024-04-24 18:53:05 +08:00
|
|
|
|
new CultureInfo("zh-CN"), // Chinese (Simplified)
|
|
|
|
|
new CultureInfo("ja-JP") // Japanese
|
2024-04-24 17:40:10 +08:00
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public MainWindowViewModel()
|
|
|
|
|
{
|
|
|
|
|
resourceManager = new ResourceManager("WpfMaiTouchEmulator.Properties.Resources", typeof(MainWindowViewModel).Assembly);
|
|
|
|
|
LoadLanguageSettings();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void LoadLanguageSettings()
|
|
|
|
|
{
|
|
|
|
|
var savedLang = Properties.Settings.Default.UserLanguage;
|
|
|
|
|
var culture = string.IsNullOrEmpty(savedLang) ? CultureInfo.CurrentCulture : new CultureInfo(savedLang);
|
|
|
|
|
|
|
|
|
|
SelectedLanguage = SupportedLanguages.Contains(culture) ? culture : SupportedLanguages[0];
|
|
|
|
|
}
|
2024-02-08 15:59:56 +08:00
|
|
|
|
|
2024-02-08 17:55:04 +08:00
|
|
|
|
public bool IsDebugEnabled
|
|
|
|
|
{
|
|
|
|
|
get => _isDebugEnabled;
|
|
|
|
|
set
|
2024-02-08 15:59:56 +08:00
|
|
|
|
{
|
2024-02-08 17:55:04 +08:00
|
|
|
|
_isDebugEnabled = value;
|
|
|
|
|
OnPropertyChanged();
|
2024-02-08 15:59:56 +08:00
|
|
|
|
}
|
2024-02-08 17:55:04 +08:00
|
|
|
|
}
|
2024-02-08 15:59:56 +08:00
|
|
|
|
|
2024-02-08 17:55:04 +08:00
|
|
|
|
public bool IsAutomaticPositioningEnabled
|
|
|
|
|
{
|
|
|
|
|
get => _isAutomaticPositioningEnabled;
|
|
|
|
|
set
|
2024-02-08 15:59:56 +08:00
|
|
|
|
{
|
2024-02-08 17:55:04 +08:00
|
|
|
|
_isAutomaticPositioningEnabled = value;
|
|
|
|
|
OnPropertyChanged();
|
2024-02-08 15:59:56 +08:00
|
|
|
|
}
|
2024-02-08 17:55:04 +08:00
|
|
|
|
}
|
2024-02-08 15:59:56 +08:00
|
|
|
|
|
2024-02-08 17:55:04 +08:00
|
|
|
|
public bool IsAutomaticPortConnectingEnabled
|
|
|
|
|
{
|
|
|
|
|
get => _isAutomaticPortConnectingEnabled;
|
|
|
|
|
set
|
2024-02-08 15:59:56 +08:00
|
|
|
|
{
|
2024-02-08 17:55:04 +08:00
|
|
|
|
_isAutomaticPortConnectingEnabled = value;
|
|
|
|
|
OnPropertyChanged();
|
2024-02-08 15:59:56 +08:00
|
|
|
|
}
|
2024-02-08 17:55:04 +08:00
|
|
|
|
}
|
2024-02-08 15:59:56 +08:00
|
|
|
|
|
2024-02-08 17:55:04 +08:00
|
|
|
|
public bool IsExitWithSinmaiEnabled
|
|
|
|
|
{
|
|
|
|
|
get => _isExitWithSinmaiEnabled;
|
|
|
|
|
set
|
2024-02-08 15:59:56 +08:00
|
|
|
|
{
|
2024-02-08 17:55:04 +08:00
|
|
|
|
_isExitWithSinmaiEnabled = value;
|
|
|
|
|
OnPropertyChanged();
|
2024-02-08 15:59:56 +08:00
|
|
|
|
}
|
2024-02-08 17:55:04 +08:00
|
|
|
|
}
|
2024-02-08 15:59:56 +08:00
|
|
|
|
|
2024-04-24 17:40:10 +08:00
|
|
|
|
public CultureInfo SelectedLanguage
|
|
|
|
|
{
|
|
|
|
|
get => _selectedLanguage;
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
if (_selectedLanguage != value)
|
|
|
|
|
{
|
|
|
|
|
_selectedLanguage = value;
|
|
|
|
|
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(SelectedLanguage)));
|
|
|
|
|
ChangeLanguage(value);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void ChangeLanguage(CultureInfo culture)
|
|
|
|
|
{
|
|
|
|
|
Properties.Settings.Default.UserLanguage = culture.Name;
|
|
|
|
|
Properties.Settings.Default.Save();
|
|
|
|
|
|
|
|
|
|
Thread.CurrentThread.CurrentUICulture = culture;
|
|
|
|
|
ResourceManager rm = new ResourceManager(typeof(Resources.Strings));
|
|
|
|
|
UpdateLocalizedResources(rm);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void UpdateLocalizedResources(ResourceManager resourceManager)
|
|
|
|
|
{
|
|
|
|
|
LbAutoPortConnecting = resourceManager.GetString("lbAutoPortConnecting");
|
|
|
|
|
LbAutoSensorPositioning = resourceManager.GetString("lbAutoSensorPositioning");
|
|
|
|
|
LbButtonState = resourceManager.GetString("lbButtonState");
|
|
|
|
|
LbConnectionState = resourceManager.GetString("lbConnectionState");
|
|
|
|
|
LbConnectionStateNotConnected = resourceManager.GetString("lbConnectionStateNotConnected");
|
|
|
|
|
LbConnectToPort = resourceManager.GetString("lbConnectToPort");
|
|
|
|
|
LbDebugMode = resourceManager.GetString("lbDebugMode");
|
|
|
|
|
LbExitWithSinmai = resourceManager.GetString("lbExitWithSinmai");
|
|
|
|
|
LbInstallComPort = resourceManager.GetString("lbInstallComPort");
|
|
|
|
|
LbLanguageDropdown = resourceManager.GetString("lbLanguageDropdown");
|
|
|
|
|
LbListComPorts = resourceManager.GetString("lbListComPorts");
|
|
|
|
|
LbReceivedData = resourceManager.GetString("lbReceivedData");
|
|
|
|
|
LbRecievedData = resourceManager.GetString("lbRecievedData");
|
|
|
|
|
LbSentData = resourceManager.GetString("lbSentData");
|
|
|
|
|
LbUninstallComPort = resourceManager.GetString("lbUninstallComPort");
|
2024-04-24 18:49:02 +08:00
|
|
|
|
LbMenuCategoryHelp = resourceManager.GetString("lbMenuCategoryHelp");
|
|
|
|
|
LbMenuItemSetup = resourceManager.GetString("lbMenuItemSetup");
|
|
|
|
|
LbAutoPortConnectingTT = resourceManager.GetString("lbAutoPortConnectingTT");
|
|
|
|
|
LbAutoSensorPositioningTT = resourceManager.GetString("lbAutoSensorPositioningTT");
|
|
|
|
|
LbExitWithSinmaiTT = resourceManager.GetString("lbExitWithSinmaiTT");
|
|
|
|
|
LbMenuCategoryHelp = resourceManager.GetString("lbMenuCategoryHelp");
|
|
|
|
|
LbMenuItemSetup = resourceManager.GetString("lbMenuItemSetup");
|
|
|
|
|
|
|
|
|
|
TxtSetupInstructions = resourceManager.GetString("TxtSetupInstructions");
|
|
|
|
|
TxtSetupInstructionsHeader = resourceManager.GetString("TxtSetupInstructionsHeader");
|
|
|
|
|
TxtFailedToSetupSinmaiExitHeader = resourceManager.GetString("TxtFailedToSetupSinmaiExitHeader");
|
|
|
|
|
TxtFailedToSetupSinmaiExit = resourceManager.GetString("TxtFailedToSetupSinmaiExit");
|
|
|
|
|
TxtCurrentlyInstalledPorts = resourceManager.GetString("TxtCurrentlyInstalledPorts");
|
|
|
|
|
TxtErrorConnectingToPortHeader = resourceManager.GetString("TxtErrorConnectingToPortHeader");
|
|
|
|
|
TxtComPortConnected = resourceManager.GetString("TxtComPortConnected");
|
|
|
|
|
TxtComPortConnecting = resourceManager.GetString("TxtComPortConnecting");
|
|
|
|
|
|
|
|
|
|
TxtCom3AlreadyInstalled = resourceManager.GetString("TxtCom3AlreadyInstalled");
|
|
|
|
|
TxtCom3InstalledSuccessfully = resourceManager.GetString("TxtCom3InstalledSuccessfully");
|
|
|
|
|
TxtCom3InstallFailed = resourceManager.GetString("TxtCom3InstallFailed");
|
|
|
|
|
TxtCom3UninstallNotRequired = resourceManager.GetString("TxtCom3UninstallNotRequired");
|
|
|
|
|
TxtCom3UninstalledSuccessfully = resourceManager.GetString("TxtCom3UninstalledSuccessfully");
|
|
|
|
|
TxtCom3UninstallFailed = resourceManager.GetString("TxtCom3UninstallFailed");
|
|
|
|
|
|
|
|
|
|
LbTouchPanelResize = resourceManager.GetString("LbTouchPanelResize");
|
|
|
|
|
LbTouchPanelDrag = resourceManager.GetString("LbTouchPanelDrag");
|
2024-04-24 17:40:10 +08:00
|
|
|
|
|
|
|
|
|
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(null));
|
|
|
|
|
}
|
|
|
|
|
|
2024-02-08 17:55:04 +08:00
|
|
|
|
public event PropertyChangedEventHandler? PropertyChanged;
|
2024-02-08 15:59:56 +08:00
|
|
|
|
|
2024-02-08 17:55:04 +08:00
|
|
|
|
protected virtual void OnPropertyChanged([CallerMemberName] string? propertyName = null)
|
|
|
|
|
{
|
|
|
|
|
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
|
2024-02-08 15:59:56 +08:00
|
|
|
|
}
|
|
|
|
|
}
|