using System;
using System.Collections.Generic;
using System.Linq;
using LocalizationTool.Services;
namespace LocalizationTool.ViewModels
{
/// 新增语言窗口:从语言目录选择,排除已存在的语言。
public class AddLanguageViewModel : ViewModelBase
{
private LanguageEntry _selected;
public List Languages { get; }
public LanguageEntry Selected
{
get => _selected;
set => Set(ref _selected, value);
}
public bool CanConfirm => Selected != null;
/// 请求关闭窗口(true = 确认)。
public event Action RequestClose;
public RelayCommand ConfirmCommand { get; }
public RelayCommand CancelCommand { get; }
public AddLanguageViewModel(IEnumerable existingCodes)
{
var existing = new HashSet(
(existingCodes ?? Enumerable.Empty()).Select(c => c.Trim()),
System.StringComparer.OrdinalIgnoreCase);
Languages = LanguageCatalog.All
.Where(e => !existing.Contains(e.Code))
.ToList();
Selected = Languages.FirstOrDefault();
ConfirmCommand = new RelayCommand(() =>
{
if (CanConfirm) RequestClose?.Invoke(true);
});
CancelCommand = new RelayCommand(() => RequestClose?.Invoke(false));
}
}
}