using System.Collections.ObjectModel;
using Microsoft.UI.Xaml.Controls;
using Newtonsoft.Json;
using RustTools.DataList;
using RustTools.Helpers;
using RustTools.muqing;
using RustTools.ViewModels;
using Windows.Storage;
using Windows.UI.Popups;
namespace RustTools.Views;
///
/// 数据集碎片
///
public sealed partial class CodeDataPage : Page
{
public CodeDataViewModel ViewModel
{
get; set;
}
public ObservableCollection DataConfig { get; set; } = new();
public static DataBaseManifest codetable = new();
public CodeDataPage()
{
ViewModel = new CodeDataViewModel();
InitializeComponent();
var filePath = Path.Combine(ApplicationData.Current.LocalFolder.Path, "CodeTable");
if (!Directory.Exists(filePath)) { return; }
var directoryInfo = new DirectoryInfo(filePath);
var directoryInfos = directoryInfo.GetDirectories();
foreach (var item in directoryInfos)
{
var v = Path.Combine(item.FullName, "DataBaseManifest.json");
if (File.Exists(v))
{
var json = JsonConvert.DeserializeObject(File.ReadAllText(v));
json.Dir = item.FullName;
//gj.sc(json.Dir);
DataConfig.Add(json);
}
}
var FirstOrDefault = DataConfig.FirstOrDefault(any => any.id == "official");
if (FirstOrDefault != null)
{
DataConfig.Remove(FirstOrDefault);
DataConfig.Insert(0, FirstOrDefault);
}
var aa = DataConfig.FirstOrDefault(any => any.Dir == codetable.Dir);
if (aa?.Dir == codetable.Dir)
{
listview.SelectedItem = aa;
}
}
private void listview_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (e.AddedItems[0] is DataBaseManifest item)
{
var iniHelper = new IniHelper(IniHelper.FILE.Config);
iniHelper.SetValue("CodeTable", "Dir", item.Dir ?? string.Empty);
iniHelper.Save();
gj.sc(item.Dir);
codetable = item;
}
}
private async void MenuFlyoutItem_Click(object sender, Microsoft.UI.Xaml.RoutedEventArgs e)
{
if (sender is MenuFlyoutItem item)
{
if (item.DataContext is DataBaseManifest data)
{
var str = item.Text;
if (str == "编辑")
{
//打开系统文件夹让用户自己选择Json编译器
wj.OpenFileExplorer(data.Dir);
}
else if (str == "删除")
{
var contentDialog = new ContentDialog()
{
XamlRoot = Content.XamlRoot,
Title = "提示",
Content = $"是否删除 {data.name}\n位置 {data.Dir}",
CloseButtonText = "取消"
};
if (data.id == "official")
{
contentDialog.Title = "警告";
contentDialog.Content = "无法删除官方数据集";
}
else
{
contentDialog.PrimaryButtonText = "确定";
}
var contentDialogResult = await contentDialog.ShowAsync();
if (contentDialogResult == ContentDialogResult.Primary)
{
gj.sc("删除文件夹" + data.Dir);
}
}
}
}
}
private async void AppBarButton_Click(object sender, Microsoft.UI.Xaml.RoutedEventArgs e)
{
if (sender is AppBarButton item)
{
var v = item.Tag.ToString();
if (v == "0")
{
//新建
}
else if (v == "1")
{
//打开
var v1 = Path.Combine(wj.LocalFolder, "CodeTable");
if (Directory.Exists(v1))
{
wj.OpenFileExplorer(v1);
}
else
{
await Dialog.DialogWarn("不存在文件夹", XamlRoot);
}
}
else if (v == "2")
{
}
}
}
}