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") { } } } }