睡觉了QWQ代码表和代码集
This commit is contained in:
parent
7e891b0df8
commit
582f4f2652
|
@ -1,10 +1,15 @@
|
||||||
|
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.IO.Compression;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using Microsoft.Extensions.Hosting;
|
using Microsoft.Extensions.Hosting;
|
||||||
using Microsoft.UI.Xaml;
|
using Microsoft.UI.Xaml;
|
||||||
using Microsoft.Windows.AppLifecycle;
|
using Microsoft.Windows.AppLifecycle;
|
||||||
|
using Newtonsoft.Json;
|
||||||
using RustTools.Activation;
|
using RustTools.Activation;
|
||||||
using RustTools.Contracts.Services;
|
using RustTools.Contracts.Services;
|
||||||
|
using RustTools.DataList;
|
||||||
|
using RustTools.Helpers;
|
||||||
using RustTools.Models;
|
using RustTools.Models;
|
||||||
using RustTools.muqing;
|
using RustTools.muqing;
|
||||||
using RustTools.Services;
|
using RustTools.Services;
|
||||||
|
@ -12,6 +17,7 @@ using RustTools.ViewModels;
|
||||||
using RustTools.Views;
|
using RustTools.Views;
|
||||||
using RustTools.WindowUI;
|
using RustTools.WindowUI;
|
||||||
using Windows.ApplicationModel.Activation;
|
using Windows.ApplicationModel.Activation;
|
||||||
|
using Windows.Storage;
|
||||||
|
|
||||||
namespace RustTools;
|
namespace RustTools;
|
||||||
|
|
||||||
|
@ -77,16 +83,19 @@ public partial class App : Microsoft.UI.Xaml.Application
|
||||||
services.AddTransient<SettingsPage>();
|
services.AddTransient<SettingsPage>();
|
||||||
|
|
||||||
services.AddTransient<HomePageViewModel>();
|
services.AddTransient<HomePageViewModel>();
|
||||||
services.AddTransient<HomePage>();
|
//services.AddTransient<HomePage>();
|
||||||
services.AddTransient<ConcernViewModel>();
|
services.AddTransient<ConcernViewModel>();
|
||||||
services.AddTransient<ConcernPage>();
|
//services.AddTransient<ConcernPage>();
|
||||||
services.AddTransient<RankingViewModel>();
|
services.AddTransient<RankingViewModel>();
|
||||||
services.AddTransient<RankingPage>();
|
//services.AddTransient<RankingPage>();
|
||||||
services.AddTransient<UserViewModel>();
|
services.AddTransient<UserViewModel>();
|
||||||
services.AddTransient<UserPage>();
|
//services.AddTransient<UserPage>();
|
||||||
//模组碎片
|
//模组碎片
|
||||||
services.AddTransient<ModuleViewModel>();
|
services.AddTransient<ModuleViewModel>();
|
||||||
services.AddTransient<ModulePage>();
|
//services.AddTransient<ModulePage>();
|
||||||
|
|
||||||
|
services.AddTransient<CodeTableViewModel>();
|
||||||
|
//services.AddTransient<CodeTablePage>();
|
||||||
|
|
||||||
services.AddTransient<ShellPage>();
|
services.AddTransient<ShellPage>();
|
||||||
services.AddTransient<ShellViewModel>();
|
services.AddTransient<ShellViewModel>();
|
||||||
|
@ -97,6 +106,63 @@ public partial class App : Microsoft.UI.Xaml.Application
|
||||||
Build();
|
Build();
|
||||||
|
|
||||||
UnhandledException += App_UnhandledException;
|
UnhandledException += App_UnhandledException;
|
||||||
|
var path = ApplicationData.Current.LocalFolder.Path;
|
||||||
|
var v = Path.Combine(path, "CodeTable");
|
||||||
|
gj.sc(path);
|
||||||
|
if (Directory.Exists(v) == false)
|
||||||
|
{
|
||||||
|
Directory.CreateDirectory(v);
|
||||||
|
}
|
||||||
|
var RustCode = Path.Combine(v, "RustCode");
|
||||||
|
if (Directory.Exists(RustCode) == false)
|
||||||
|
{
|
||||||
|
new Thread(() =>
|
||||||
|
{
|
||||||
|
var zipFilePath = Path.Combine(AppContext.BaseDirectory, "Assets\\RustCode.zip");
|
||||||
|
gj.sc(zipFilePath);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
ZipFile.ExtractToDirectory(zipFilePath, RustCode);
|
||||||
|
var iniHelper = new IniHelper(IniHelper.FILE.Config);
|
||||||
|
iniHelper.SetValue("CodeTable", "Dir", RustCode);
|
||||||
|
iniHelper.Save();
|
||||||
|
var vr = Path.Combine(RustCode, "DataBaseManifest.json");
|
||||||
|
if (File.Exists(vr))
|
||||||
|
{
|
||||||
|
var json = JsonConvert.DeserializeObject<DataBaseManifest>(File.ReadAllText(vr));
|
||||||
|
json.Dir = RustCode;
|
||||||
|
CodeDataPage.codetable = json;
|
||||||
|
}
|
||||||
|
Debug.WriteLine("ZIP文件已成功解压缩并复制到目标目录。");
|
||||||
|
}
|
||||||
|
catch (FileNotFoundException)
|
||||||
|
{
|
||||||
|
Debug.WriteLine("源文件未找到。");
|
||||||
|
}
|
||||||
|
catch (IOException ex)
|
||||||
|
{
|
||||||
|
Debug.WriteLine("发生IO异常: " + ex.Message);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
|
||||||
|
Debug.WriteLine("发生未知错误: " + ex.Message);
|
||||||
|
}
|
||||||
|
}).Start();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var iniHelper = new IniHelper(IniHelper.FILE.Config);
|
||||||
|
var v1 = iniHelper.GetValue("CodeTable", "Dir");
|
||||||
|
if (string.IsNullOrEmpty(v1)) { v1 = RustCode; }
|
||||||
|
var vr = Path.Combine(v1, "DataBaseManifest.json");
|
||||||
|
if (File.Exists(vr))
|
||||||
|
{
|
||||||
|
var json = JsonConvert.DeserializeObject<DataBaseManifest>(File.ReadAllText(vr));
|
||||||
|
json.Dir = v1;
|
||||||
|
CodeDataPage.codetable = json;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void App_UnhandledException(object sender, Microsoft.UI.Xaml.UnhandledExceptionEventArgs e)
|
private void App_UnhandledException(object sender, Microsoft.UI.Xaml.UnhandledExceptionEventArgs e)
|
||||||
|
|
BIN
RustTools/Assets/RustCode.zip
Normal file
BIN
RustTools/Assets/RustCode.zip
Normal file
Binary file not shown.
81
RustTools/DataList/CodeTable.cs
Normal file
81
RustTools/DataList/CodeTable.cs
Normal file
|
@ -0,0 +1,81 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using RustTools.Helpers;
|
||||||
|
|
||||||
|
namespace RustTools.DataList;
|
||||||
|
#pragma warning disable CS8618 // 在退出构造函数时,不可为 null 的字段必须包含非 null 值。请考虑声明为可以为 null。
|
||||||
|
/// <summary>
|
||||||
|
/// 加载 节与表
|
||||||
|
/// </summary>
|
||||||
|
public class CodeTable
|
||||||
|
{
|
||||||
|
public string CnKey
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
public string Key
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
public List<CodeTable_Data> Vaule
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 加载代码表文件
|
||||||
|
/// </summary>
|
||||||
|
public class CodeTable_Code
|
||||||
|
{
|
||||||
|
public string name
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
public List<CodeTable_Data> data
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
} = new List<CodeTable_Data>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public class CodeTable_Data
|
||||||
|
{
|
||||||
|
//英文
|
||||||
|
public string code
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
//中文
|
||||||
|
public string translate
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
//简单的对代码进行解释
|
||||||
|
public string description
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
//声明这是个什么类型 例如 string 字符串 可自定义
|
||||||
|
public string type
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
//添加在哪一个版本 默认为最低版本 "1.12"
|
||||||
|
public string addVersion
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
//存在与哪一个节 用,隔开
|
||||||
|
public string section
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
//更详的解释 和 例子
|
||||||
|
public string demo
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
}
|
104
RustTools/DataList/DataBaseManifest.cs
Normal file
104
RustTools/DataList/DataBaseManifest.cs
Normal file
|
@ -0,0 +1,104 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace RustTools.DataList;
|
||||||
|
/// <summary>
|
||||||
|
/// 数据集
|
||||||
|
/// </summary>
|
||||||
|
#pragma warning disable IDE1006 // 命名样式
|
||||||
|
#pragma warning disable CS8618 // 在退出构造函数时,不可为 null 的字段必须包含非 null 值。请考虑声明为可以为 null。
|
||||||
|
public class DataBaseManifest
|
||||||
|
{
|
||||||
|
public string id
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}//数据集标识 不能重复
|
||||||
|
public string name
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}//代码表名称
|
||||||
|
public string author
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}//作者
|
||||||
|
public string describe
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
public string versionName
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}//版本 规范 int.int.int
|
||||||
|
public List<string> updateLog
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Data tables
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
public string Dir
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
} = string.Empty;
|
||||||
|
|
||||||
|
public class Data
|
||||||
|
{
|
||||||
|
// 代码表配置文件 "/tables/code.json", 可自定义
|
||||||
|
public string code
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
public string chain_inspection
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
public string section
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
//节 翻译 对应 配置文件 "/tables/value_type.json",可自定义
|
||||||
|
public string value_type
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
//版本号对应配置文件 "/tables/game_version.json" 可自定义
|
||||||
|
public string game_version
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public class GameVersion
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
public class Section
|
||||||
|
{
|
||||||
|
public string name
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
public List<SectionData> data
|
||||||
|
{
|
||||||
|
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
|
public class SectionData
|
||||||
|
{
|
||||||
|
public string code
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
public string translate
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
22
RustTools/Helpers/NotOfficialConverter.cs
Normal file
22
RustTools/Helpers/NotOfficialConverter.cs
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using RustTools.muqing;
|
||||||
|
|
||||||
|
namespace RustTools.Helpers;
|
||||||
|
public class NotOfficialConverter
|
||||||
|
{
|
||||||
|
public object Convert(object value, Type targetType, object parameter, string language)
|
||||||
|
{
|
||||||
|
var id = value as string;
|
||||||
|
gj.sc(id);
|
||||||
|
return id=="aa";
|
||||||
|
}
|
||||||
|
|
||||||
|
public object ConvertBack(object value, Type targetType, object parameter, string language)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
}
|
|
@ -30,13 +30,6 @@
|
||||||
<AppxBundle>Never</AppxBundle>
|
<AppxBundle>Never</AppxBundle>
|
||||||
<AppxPackageDir>D:\RustTools</AppxPackageDir>
|
<AppxPackageDir>D:\RustTools</AppxPackageDir>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
|
||||||
<None Remove="RustTools_TemporaryKey.pfx" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<Content Include="RustTools_TemporaryKey.pfx" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
|
|
||||||
<!--<Target Name="RemoveFoldersWithMuiFiles" AfterTargets="Build">
|
<!--<Target Name="RemoveFoldersWithMuiFiles" AfterTargets="Build">
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
@ -60,7 +53,7 @@
|
||||||
<PackageReference Include="WinUIEx" Version="2.3.2" />
|
<PackageReference Include="WinUIEx" Version="2.3.2" />
|
||||||
|
|
||||||
<PackageReference Include="Microsoft.Windows.CsWinRT" Version="2.0.7" />
|
<PackageReference Include="Microsoft.Windows.CsWinRT" Version="2.0.7" />
|
||||||
<PackageReference Include="Microsoft.WindowsAppSDK" Version="1.5.240227000" />
|
<!--<PackageReference Include="Microsoft.WindowsAppSDK" Version="1.5.240227000" />-->
|
||||||
<PackageReference Include="Microsoft.Windows.SDK.BuildTools" Version="10.0.22621.3233" />
|
<PackageReference Include="Microsoft.Windows.SDK.BuildTools" Version="10.0.22621.3233" />
|
||||||
|
|
||||||
<Manifest Include="$(ApplicationManifest)" />
|
<Manifest Include="$(ApplicationManifest)" />
|
||||||
|
@ -76,5 +69,4 @@
|
||||||
<ItemGroup Condition="'$(DisableMsixProjectCapabilityAddedByProject)'!='true' and '$(EnableMsixTooling)'=='true'">
|
<ItemGroup Condition="'$(DisableMsixProjectCapabilityAddedByProject)'!='true' and '$(EnableMsixTooling)'=='true'">
|
||||||
<ProjectCapability Include="Msix" />
|
<ProjectCapability Include="Msix" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
|
@ -21,6 +21,8 @@ public class PageService : IPageService
|
||||||
Configure<RankingViewModel, RankingPage>();
|
Configure<RankingViewModel, RankingPage>();
|
||||||
Configure<UserViewModel, UserPage>();
|
Configure<UserViewModel, UserPage>();
|
||||||
Configure<ModuleViewModel, ModulePage>();
|
Configure<ModuleViewModel, ModulePage>();
|
||||||
|
Configure<CodeTableViewModel, CodeTablePage>();
|
||||||
|
Configure<CodeDataViewModel, CodeDataPage>();
|
||||||
|
|
||||||
Configure<SettingsViewModel, SettingsPage>();
|
Configure<SettingsViewModel, SettingsPage>();
|
||||||
}
|
}
|
||||||
|
|
|
@ -145,7 +145,7 @@
|
||||||
<value>关于软件</value>
|
<value>关于软件</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Settings_AboutDescription.Text" xml:space="preserve">
|
<data name="Settings_AboutDescription.Text" xml:space="preserve">
|
||||||
<value>开发中,铁锈助手的Win端助手,采用WinUI3开发构建,主要开发语言C#,仅支持win10+,如果你在测试中遇到BUG请在群里反馈</value>
|
<value>开发中,Windows端助手,采用WinUI3开发构建,主要开发语言C#,本项目只是作为铁锈助手PC端中的一个测试项目</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPage_PrivacyTermsLink.Content" xml:space="preserve">
|
<data name="SettingsPage_PrivacyTermsLink.Content" xml:space="preserve">
|
||||||
<value>隐私声明</value>
|
<value>隐私声明</value>
|
||||||
|
@ -177,4 +177,10 @@
|
||||||
<data name="User.Content" xml:space="preserve">
|
<data name="User.Content" xml:space="preserve">
|
||||||
<value>用户</value>
|
<value>用户</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="CodeTable.Content" xml:space="preserve">
|
||||||
|
<value>代码表</value>
|
||||||
|
</data>
|
||||||
|
<data name="CodeData.Content" xml:space="preserve">
|
||||||
|
<value>代码集</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
13
RustTools/ViewModels/CodeDataViewModel.cs
Normal file
13
RustTools/ViewModels/CodeDataViewModel.cs
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Management;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using CommunityToolkit.Mvvm.ComponentModel;
|
||||||
|
|
||||||
|
namespace RustTools.ViewModels;
|
||||||
|
|
||||||
|
public class CodeDataViewModel :ObservableRecipient
|
||||||
|
{
|
||||||
|
}
|
|
@ -1,6 +1,4 @@
|
||||||
using CommunityToolkit.Mvvm.ComponentModel;
|
using CommunityToolkit.Mvvm.ComponentModel;
|
||||||
using RustTools.DataList;
|
|
||||||
|
|
||||||
namespace RustTools.ViewModels;
|
namespace RustTools.ViewModels;
|
||||||
|
|
||||||
public partial class UserViewModel : ObservableRecipient
|
public partial class UserViewModel : ObservableRecipient
|
||||||
|
|
96
RustTools/Views/CodeDataPage.xaml
Normal file
96
RustTools/Views/CodeDataPage.xaml
Normal file
|
@ -0,0 +1,96 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<Page
|
||||||
|
x:Class="RustTools.Views.CodeDataPage"
|
||||||
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
|
xmlns:local="using:RustTools.Views"
|
||||||
|
xmlns:local1="using:RustTools.Helpers"
|
||||||
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
|
mc:Ignorable="d">
|
||||||
|
<!-- Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" -->
|
||||||
|
<Grid>
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="Auto" />
|
||||||
|
<RowDefinition Height="*" />
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
<StackPanel HorizontalAlignment="Right" Orientation="Horizontal">
|
||||||
|
<CommandBar
|
||||||
|
Background="Transparent"
|
||||||
|
DefaultLabelPosition="Right"
|
||||||
|
IsOpen="False">
|
||||||
|
<AppBarButton
|
||||||
|
Click="AppBarButton_Click"
|
||||||
|
Icon="Add"
|
||||||
|
Label="添加集"
|
||||||
|
Tag="0"
|
||||||
|
ToolTipService.ToolTip="以官方数据集添加项目中" />
|
||||||
|
<AppBarButton
|
||||||
|
Click="AppBarButton_Click"
|
||||||
|
Icon="OpenLocal"
|
||||||
|
Label="打开"
|
||||||
|
Tag="1"
|
||||||
|
ToolTipService.ToolTip="打开数据集文件夹" />
|
||||||
|
<AppBarButton
|
||||||
|
Click="AppBarButton_Click"
|
||||||
|
Label="重置"
|
||||||
|
Tag="2"
|
||||||
|
ToolTipService.ToolTip="重置官方数据集数据">
|
||||||
|
<AppBarButton.Icon>
|
||||||
|
<FontIcon Glyph="" />
|
||||||
|
</AppBarButton.Icon>
|
||||||
|
</AppBarButton>
|
||||||
|
</CommandBar>
|
||||||
|
</StackPanel>
|
||||||
|
<ListView
|
||||||
|
x:Name="listview"
|
||||||
|
Grid.Row="1"
|
||||||
|
BorderThickness="0"
|
||||||
|
ItemsSource="{x:Bind DataConfig}"
|
||||||
|
SelectionChanged="listview_SelectionChanged">
|
||||||
|
<ListView.ItemTemplate>
|
||||||
|
<DataTemplate>
|
||||||
|
<Grid
|
||||||
|
Margin="0,9,0,9"
|
||||||
|
Padding="9"
|
||||||
|
Background="{StaticResource CardBackgroundFillColorDefault}"
|
||||||
|
CornerRadius="9">
|
||||||
|
<Grid.Resources>
|
||||||
|
<local1:NotOfficialConverter x:Key="IsOff" />
|
||||||
|
</Grid.Resources>
|
||||||
|
<StackPanel>
|
||||||
|
<TextBlock Style="{StaticResource BodyStrongTextBlockStyle}" Text="{Binding name}" />
|
||||||
|
<TextBlock
|
||||||
|
Margin="0,9,0,0"
|
||||||
|
Style="{StaticResource BodyTextBlockStyle}"
|
||||||
|
Text="{Binding describe}" />
|
||||||
|
<TextBlock Margin="0,3,0,0" Text="{Binding author}" />
|
||||||
|
<TextBlock Margin="0,1,0,0" Text="{Binding versionName}" />
|
||||||
|
</StackPanel>
|
||||||
|
<Grid.ContextFlyout>
|
||||||
|
<MenuFlyout>
|
||||||
|
<MenuFlyoutItem Click="MenuFlyoutItem_Click" Text="编辑" />
|
||||||
|
<MenuFlyoutItem Click="MenuFlyoutItem_Click" Text="删除" />
|
||||||
|
</MenuFlyout>
|
||||||
|
</Grid.ContextFlyout>
|
||||||
|
</Grid>
|
||||||
|
</DataTemplate>
|
||||||
|
</ListView.ItemTemplate>
|
||||||
|
<!--<ListView.ItemContainerStyle>
|
||||||
|
<Style x:Name="ListViewItemNoneStyle" TargetType="ListViewItem">
|
||||||
|
<Setter Property="Template">
|
||||||
|
<Setter.Value>
|
||||||
|
<ControlTemplate TargetType="ListViewItem">
|
||||||
|
<Grid Background="{TemplateBinding Background}">
|
||||||
|
<ContentPresenter Margin="{TemplateBinding Padding}" Content="{TemplateBinding Content}" />
|
||||||
|
</Grid>
|
||||||
|
</ControlTemplate>
|
||||||
|
</Setter.Value>
|
||||||
|
</Setter>
|
||||||
|
</Style>
|
||||||
|
</ListView.ItemContainerStyle>-->
|
||||||
|
|
||||||
|
</ListView>
|
||||||
|
|
||||||
|
</Grid>
|
||||||
|
</Page>
|
140
RustTools/Views/CodeDataPage.xaml.cs
Normal file
140
RustTools/Views/CodeDataPage.xaml.cs
Normal file
|
@ -0,0 +1,140 @@
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 数据集碎片
|
||||||
|
/// </summary>
|
||||||
|
public sealed partial class CodeDataPage : Page
|
||||||
|
{
|
||||||
|
public CodeDataViewModel ViewModel
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
public ObservableCollection<DataBaseManifest> 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<DataBaseManifest>(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")
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -3,11 +3,125 @@
|
||||||
x:Class="RustTools.Views.CodeTablePage"
|
x:Class="RustTools.Views.CodeTablePage"
|
||||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
xmlns:controls="using:CommunityToolkit.WinUI.Controls"
|
||||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
|
xmlns:datalist="using:RustTools.DataList"
|
||||||
xmlns:local="using:RustTools.Views"
|
xmlns:local="using:RustTools.Views"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"
|
xmlns:themes="using:RustTools.Themes"
|
||||||
mc:Ignorable="d">
|
mc:Ignorable="d">
|
||||||
|
|
||||||
<Grid />
|
<Grid>
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="Auto" />
|
||||||
|
<RowDefinition Height="*" />
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="*" />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<StackPanel Grid.Row="0" Margin="0,0,0,9">
|
||||||
|
<AutoSuggestBox
|
||||||
|
x:Name="search"
|
||||||
|
QueryIcon="Find"
|
||||||
|
SuggestionChosen="AutoSuggestBox_SuggestionChosen"
|
||||||
|
TextChanged="search_TextChanged" />
|
||||||
|
</StackPanel>
|
||||||
|
<Grid Grid.Row="1" Grid.Column="0">
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="Auto" />
|
||||||
|
<ColumnDefinition Width="Auto" />
|
||||||
|
<ColumnDefinition Width="*" />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<ListView
|
||||||
|
x:Name="keyListView"
|
||||||
|
Grid.Column="0"
|
||||||
|
MinWidth="100"
|
||||||
|
MaxWidth="260"
|
||||||
|
Padding="0,0,9,0"
|
||||||
|
ItemsSource="{x:Bind codeList}"
|
||||||
|
ScrollViewer.VerticalScrollBarVisibility="Auto"
|
||||||
|
SelectionChanged="keyListView_SelectionChanged">
|
||||||
|
|
||||||
|
<ListView.ItemTemplate>
|
||||||
|
<DataTemplate>
|
||||||
|
<StackPanel Padding="6">
|
||||||
|
<TextBlock
|
||||||
|
FontFamily="Body"
|
||||||
|
Style="{StaticResource BodyTextStyle}"
|
||||||
|
Text="{Binding CnKey}" />
|
||||||
|
<TextBlock Style="{StaticResource BodyTextBlockStyle}" Text="{Binding Key}" />
|
||||||
|
<TextBlock
|
||||||
|
Margin="0,3,0,0"
|
||||||
|
FontFamily="Times New Roman"
|
||||||
|
FontSize="12">
|
||||||
|
<Run FontFamily="Thin" Text="共" />
|
||||||
|
<Run FontFamily="Thin" Text="{Binding Vaule.Count}" />
|
||||||
|
<Run FontFamily="Thin" Text="个代码" />
|
||||||
|
</TextBlock>
|
||||||
|
</StackPanel>
|
||||||
|
</DataTemplate>
|
||||||
|
</ListView.ItemTemplate>
|
||||||
|
</ListView>
|
||||||
|
<controls:ContentSizer Grid.Column="1" TargetControl="{x:Bind keyListView}" />
|
||||||
|
<ListView
|
||||||
|
x:Name="valueListView"
|
||||||
|
Grid.Column="2"
|
||||||
|
SelectionMode="None">
|
||||||
|
<ListView.ItemTemplate>
|
||||||
|
<DataTemplate x:DataType="datalist:CodeTable_Data">
|
||||||
|
<Grid
|
||||||
|
Margin="0,0,0,9"
|
||||||
|
Padding="13"
|
||||||
|
Background="{StaticResource CardBackgroundFillColorDefault}"
|
||||||
|
CornerRadius="9">
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="*" />
|
||||||
|
<ColumnDefinition Width="Auto" />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<StackPanel Grid.Column="0">
|
||||||
|
|
||||||
|
<TextBlock
|
||||||
|
Foreground="{StaticResource AccentTextFillColorTertiaryBrush}"
|
||||||
|
Style="{StaticResource SubtitleTextBlockStyle}"
|
||||||
|
Text="{Binding translate}" />
|
||||||
|
<TextBlock
|
||||||
|
Margin="0,9,0,0"
|
||||||
|
Foreground="{StaticResource TextFillColorTertiaryBrush}"
|
||||||
|
IsTextSelectionEnabled="True"
|
||||||
|
Text="{Binding code}" />
|
||||||
|
<TextBlock
|
||||||
|
Margin="0,9,0,0"
|
||||||
|
IsTextSelectionEnabled="True"
|
||||||
|
Style="{StaticResource BodyTextBlockStyle}"
|
||||||
|
Text="{Binding description}" />
|
||||||
|
<TextBlock
|
||||||
|
Margin="0,9,0,0"
|
||||||
|
Foreground="{StaticResource TextFillColorTertiaryBrush}"
|
||||||
|
IsTextSelectionEnabled="True"
|
||||||
|
Style="{StaticResource BodyTextBlockStyle}"
|
||||||
|
Text="{Binding type}" />
|
||||||
|
</StackPanel>
|
||||||
|
<themes:ButtonIcon
|
||||||
|
Grid.Column="1"
|
||||||
|
VerticalAlignment="Top"
|
||||||
|
Click="List_ButtonIcon_Click"
|
||||||
|
Glyph="" />
|
||||||
|
</Grid>
|
||||||
|
</DataTemplate>
|
||||||
|
</ListView.ItemTemplate>
|
||||||
|
</ListView>
|
||||||
|
<TeachingTip
|
||||||
|
x:Name="ToggleThemeTeachingTip1"
|
||||||
|
Title="示例"
|
||||||
|
IsLightDismissEnabled="True">
|
||||||
|
<TeachingTip.Content>
|
||||||
|
<TextBlock
|
||||||
|
x:Name="ToastTextBlock"
|
||||||
|
Margin="0,16,0,0"
|
||||||
|
IsTextSelectionEnabled="True" />
|
||||||
|
</TeachingTip.Content>
|
||||||
|
|
||||||
|
</TeachingTip>
|
||||||
|
</Grid>
|
||||||
|
</Grid>
|
||||||
</Page>
|
</Page>
|
||||||
|
|
|
@ -1,8 +1,14 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Collections.ObjectModel;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Diagnostics.Metrics;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Runtime.InteropServices.WindowsRuntime;
|
using System.Runtime.InteropServices.WindowsRuntime;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
using System.Xml.Linq;
|
||||||
using Microsoft.UI.Xaml;
|
using Microsoft.UI.Xaml;
|
||||||
using Microsoft.UI.Xaml.Controls;
|
using Microsoft.UI.Xaml.Controls;
|
||||||
using Microsoft.UI.Xaml.Controls.Primitives;
|
using Microsoft.UI.Xaml.Controls.Primitives;
|
||||||
|
@ -10,8 +16,13 @@ using Microsoft.UI.Xaml.Data;
|
||||||
using Microsoft.UI.Xaml.Input;
|
using Microsoft.UI.Xaml.Input;
|
||||||
using Microsoft.UI.Xaml.Media;
|
using Microsoft.UI.Xaml.Media;
|
||||||
using Microsoft.UI.Xaml.Navigation;
|
using Microsoft.UI.Xaml.Navigation;
|
||||||
using Windows.Foundation;
|
using Newtonsoft.Json;
|
||||||
using Windows.Foundation.Collections;
|
using Newtonsoft.Json.Linq;
|
||||||
|
using RustTools.DataList;
|
||||||
|
using RustTools.muqing;
|
||||||
|
using RustTools.ViewModels;
|
||||||
|
using static System.Collections.Specialized.BitVector32;
|
||||||
|
using static RustTools.DataList.DataBaseManifest;
|
||||||
|
|
||||||
// To learn more about WinUI, the WinUI project structure,
|
// To learn more about WinUI, the WinUI project structure,
|
||||||
// and more about our project templates, see: http://aka.ms/winui-project-info.
|
// and more about our project templates, see: http://aka.ms/winui-project-info.
|
||||||
|
@ -22,8 +33,178 @@ namespace RustTools.Views;
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public sealed partial class CodeTablePage : Page
|
public sealed partial class CodeTablePage : Page
|
||||||
{
|
{
|
||||||
|
public ObservableCollection<CodeTable>? codeList = new();
|
||||||
|
public CodeTableViewModel ViewModel { get; set; }
|
||||||
|
public List<DataBaseManifest.Section.SectionData> section = new();
|
||||||
public CodeTablePage()
|
public CodeTablePage()
|
||||||
{
|
{
|
||||||
this.InitializeComponent();
|
ViewModel = App.GetService<CodeTableViewModel>();
|
||||||
|
InitializeComponent();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var path = Path.Combine(CodeDataPage.codetable.Dir, CodeDataPage.codetable.tables.code);
|
||||||
|
|
||||||
|
var codeTable_Code = JsonConvert.DeserializeObject<CodeTable_Code>(File.ReadAllText(path));
|
||||||
|
|
||||||
|
var v1 = File.ReadAllText(Path.Combine(CodeDataPage.codetable.Dir, CodeDataPage.codetable.tables.section));
|
||||||
|
section = JsonConvert.DeserializeObject<DataBaseManifest.Section>(v1).data;
|
||||||
|
//gj.sc(v1);
|
||||||
|
foreach (var item in codeTable_Code.data)
|
||||||
|
{
|
||||||
|
#pragma warning disable SYSLIB1045 // 转换为“GeneratedRegexAttribute”。
|
||||||
|
foreach (var parts in Regex.Split(item.section, ","))
|
||||||
|
{
|
||||||
|
var FirstOrDefault = codeList.FirstOrDefault(any => any.Key == parts);
|
||||||
|
if (FirstOrDefault != null)
|
||||||
|
{
|
||||||
|
FirstOrDefault.Vaule.Add(item);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var sectionData = section.FirstOrDefault(any => any.code == parts);
|
||||||
|
var translate = "Null";
|
||||||
|
if (sectionData != null)
|
||||||
|
{
|
||||||
|
translate = sectionData.translate;
|
||||||
|
}
|
||||||
|
sectionData = null;
|
||||||
|
var codeTable1 = new CodeTable
|
||||||
|
{
|
||||||
|
Key = parts,
|
||||||
|
CnKey = translate,
|
||||||
|
Vaule = new List<CodeTable_Data>()
|
||||||
|
};
|
||||||
|
codeTable1.Vaule.Add(item);
|
||||||
|
codeList.Add(codeTable1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (codeList.Count > 0)
|
||||||
|
{
|
||||||
|
//var firstEntry = codeList.FirstOrDefault();
|
||||||
|
keyListView.SelectedItem = codeList.FirstOrDefault(); // 默认选中第一项
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Task.Run(async () => { await Dialog.DialogWarn(ex.Message, XamlRoot); });
|
||||||
|
}
|
||||||
|
|
||||||
|
//var textBlock = new TextBlock();
|
||||||
|
//textBlock.IsTextSelectionEnabled
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void keyListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
||||||
|
{
|
||||||
|
|
||||||
|
// 获取新选中的项
|
||||||
|
var addedItems = e.AddedItems;
|
||||||
|
foreach (var item in addedItems)
|
||||||
|
{
|
||||||
|
Debug.WriteLine($"Selected item: {item}");
|
||||||
|
if (item is CodeTable a)
|
||||||
|
{
|
||||||
|
gj.sc(a);
|
||||||
|
valueList = a.Vaule;
|
||||||
|
valueListView.ItemsSource = a.Vaule;
|
||||||
|
}
|
||||||
|
// 你可以在这里进行其他操作,比如导航到另一个页面、弹出对话框等
|
||||||
|
}
|
||||||
|
|
||||||
|
//// 获取移除的项
|
||||||
|
//var removedItems = e.RemovedItems;
|
||||||
|
//foreach (var item in removedItems)
|
||||||
|
//{
|
||||||
|
// Debug.WriteLine($"Deselected item: {item}");
|
||||||
|
//}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 退出的时候清空 防止内存泄漏
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="e"></param>
|
||||||
|
protected override void OnNavigatedFrom(NavigationEventArgs e)
|
||||||
|
{
|
||||||
|
base.OnNavigatedFrom(e);
|
||||||
|
codeList?.Clear();
|
||||||
|
codeList = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void List_ButtonIcon_Click(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
var button = sender as Button;
|
||||||
|
if (button != null) {
|
||||||
|
if (button.DataContext is not CodeTable_Data codeTable_Data) { return; }
|
||||||
|
if (ToggleThemeTeachingTip1.IsOpen==false)
|
||||||
|
{
|
||||||
|
ToggleThemeTeachingTip1.Target = button;
|
||||||
|
ToggleThemeTeachingTip1.IsOpen = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ToggleThemeTeachingTip1.IsOpen = false;
|
||||||
|
}
|
||||||
|
ToastTextBlock.Text =codeTable_Data.demo;
|
||||||
|
gj.sc(codeTable_Data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AutoSuggestBox_SuggestionChosen(AutoSuggestBox sender, AutoSuggestBoxSuggestionChosenEventArgs args)
|
||||||
|
{
|
||||||
|
var str = args.SelectedItem.ToString();
|
||||||
|
search.Text = str;
|
||||||
|
if (str == null) { return; }
|
||||||
|
var a=str.Split(' ');
|
||||||
|
List<CodeTable_Data> itemsSource = new();
|
||||||
|
|
||||||
|
foreach (var item in valueList)
|
||||||
|
{
|
||||||
|
if (item.code.Contains(a[0]) || item.translate.Contains(a[1]))
|
||||||
|
{
|
||||||
|
itemsSource.Add(item);
|
||||||
|
gj.sc(item.code);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
gj.sc(itemsSource.Count);
|
||||||
|
valueListView.ItemsSource=itemsSource;
|
||||||
|
//valueListView.ItemsSource=search.ItemsSource;
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<CodeTable_Data> valueList = new ();
|
||||||
|
private void search_TextChanged(AutoSuggestBox sender, AutoSuggestBoxTextChangedEventArgs args)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(search.Text))
|
||||||
|
{
|
||||||
|
valueListView.ItemsSource = valueList; return; }
|
||||||
|
// Since selecting an item will also change the text,
|
||||||
|
// only listen to changes caused by user entering text.
|
||||||
|
if (args.Reason == AutoSuggestionBoxTextChangeReason.UserInput)
|
||||||
|
{
|
||||||
|
var suitableItems = new List<string>();
|
||||||
|
var splitText = sender.Text.ToLower().Split(" ");
|
||||||
|
if (valueListView.ItemsSource is not List<CodeTable_Data> itemsSource) { return; }
|
||||||
|
foreach (var cat in itemsSource)
|
||||||
|
{
|
||||||
|
var found = splitText.All((key) =>
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(key)) { return false; }
|
||||||
|
return cat.code.Contains(key)||cat.translate.Contains(key);
|
||||||
|
});
|
||||||
|
if (found)
|
||||||
|
{
|
||||||
|
suitableItems.Add(cat.code+" "+cat.translate);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (suitableItems.Count == 0)
|
||||||
|
{
|
||||||
|
suitableItems.Add("No results found");
|
||||||
|
}
|
||||||
|
sender.ItemsSource = suitableItems;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -67,6 +67,22 @@
|
||||||
<FontIcon Glyph="" />
|
<FontIcon Glyph="" />
|
||||||
</NavigationViewItem.Icon>
|
</NavigationViewItem.Icon>
|
||||||
</NavigationViewItem>
|
</NavigationViewItem>
|
||||||
|
<NavigationViewItem
|
||||||
|
x:Uid="CodeTable"
|
||||||
|
helpers:NavigationHelper.NavigateTo="RustTools.ViewModels.CodeTableViewModel"
|
||||||
|
Tag="CodeTable">
|
||||||
|
<NavigationViewItem.Icon>
|
||||||
|
<FontIcon Glyph="" />
|
||||||
|
</NavigationViewItem.Icon>
|
||||||
|
</NavigationViewItem>
|
||||||
|
<NavigationViewItem
|
||||||
|
x:Uid="CodeData"
|
||||||
|
helpers:NavigationHelper.NavigateTo="RustTools.ViewModels.CodeDataViewModel"
|
||||||
|
Tag="CodeTable">
|
||||||
|
<NavigationViewItem.Icon>
|
||||||
|
<FontIcon Glyph="" />
|
||||||
|
</NavigationViewItem.Icon>
|
||||||
|
</NavigationViewItem>
|
||||||
</NavigationView.MenuItems>
|
</NavigationView.MenuItems>
|
||||||
<NavigationView.HeaderTemplate>
|
<NavigationView.HeaderTemplate>
|
||||||
<DataTemplate>
|
<DataTemplate>
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
using System;
|
|
||||||
using Microsoft.UI.Xaml;
|
using Microsoft.UI.Xaml;
|
||||||
using Microsoft.UI.Xaml.Controls;
|
using Microsoft.UI.Xaml.Controls;
|
||||||
using Microsoft.UI.Xaml.Controls.Primitives;
|
|
||||||
using Microsoft.UI.Xaml.Input;
|
using Microsoft.UI.Xaml.Input;
|
||||||
|
|
||||||
using RustTools.Contracts.Services;
|
using RustTools.Contracts.Services;
|
||||||
|
@ -38,7 +37,7 @@ public sealed partial class ShellPage : Page
|
||||||
App.MainWindow.SetTitleBar(AppTitleBar);
|
App.MainWindow.SetTitleBar(AppTitleBar);
|
||||||
App.MainWindow.Activated += MainWindow_Activated;
|
App.MainWindow.Activated += MainWindow_Activated;
|
||||||
}
|
}
|
||||||
//AppTitleBarText.Text = "app_name".GetLocalized() + " " + "app_version".GetLocalized();
|
AppTitleBarText.Text = "app_name".GetLocalized() + " " + "app_version".GetLocalized();
|
||||||
//NavigationViewControl.SelectedItem = NavigationViewControl.MenuItems[0];
|
//NavigationViewControl.SelectedItem = NavigationViewControl.MenuItems[0];
|
||||||
//NavigationViewControl.SelectionChanged += NavigationViewControl_SelectionChanged;
|
//NavigationViewControl.SelectionChanged += NavigationViewControl_SelectionChanged;
|
||||||
//NavigateToPage("Home");
|
//NavigateToPage("Home");
|
||||||
|
|
49
RustTools/muqing/Dialog.cs
Normal file
49
RustTools/muqing/Dialog.cs
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Microsoft.UI.Xaml;
|
||||||
|
using Microsoft.UI.Xaml.Controls;
|
||||||
|
using Windows.UI.Popups;
|
||||||
|
|
||||||
|
namespace RustTools.muqing;
|
||||||
|
public class Dialog
|
||||||
|
{
|
||||||
|
//WinRT 信息: 此 API 必须由具有 CoreWindow 的线程或已进行显式设置的窗口来调用。
|
||||||
|
public static async Task windowDialog(string title)
|
||||||
|
{
|
||||||
|
|
||||||
|
var messageDialog = new MessageDialog("No internet connection has been found.","title");
|
||||||
|
//messageDialog.set
|
||||||
|
//// Add commands and set their callbacks; both buttons use the same callback function instead of inline event handlers
|
||||||
|
//messageDialog.Commands.Add(new UICommand(
|
||||||
|
// "确定"));
|
||||||
|
//messageDialog.Commands.Add(new UICommand(
|
||||||
|
// "取消"));
|
||||||
|
|
||||||
|
//// Set the command that will be invoked by default
|
||||||
|
//messageDialog.DefaultCommandIndex = 0;
|
||||||
|
|
||||||
|
//// Set the command to be invoked when escape is pressed
|
||||||
|
//messageDialog.CancelCommandIndex = 1;
|
||||||
|
|
||||||
|
// Show the message dialog
|
||||||
|
await messageDialog.ShowAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
public const string warning = "警告";
|
||||||
|
public const string Close = "取消";
|
||||||
|
public static async Task<ContentDialogResult> DialogWarn(string sub, XamlRoot xamlRoot)
|
||||||
|
{
|
||||||
|
var contentDialog = new ContentDialog()
|
||||||
|
{
|
||||||
|
XamlRoot = xamlRoot,
|
||||||
|
Title = warning,
|
||||||
|
Content = sub,
|
||||||
|
CloseButtonText = Close
|
||||||
|
};
|
||||||
|
return await contentDialog.ShowAsync();
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,5 +1,6 @@
|
||||||
using Windows.Storage;
|
using Windows.Storage;
|
||||||
|
|
||||||
|
#pragma warning disable CA1050 // 在命名空间中声明类型
|
||||||
public class IniHelper
|
public class IniHelper
|
||||||
{
|
{
|
||||||
private readonly Dictionary<string, Dictionary<string, string>> _sections = new();
|
private readonly Dictionary<string, Dictionary<string, string>> _sections = new();
|
||||||
|
@ -74,7 +75,6 @@ public class IniHelper
|
||||||
/// <exception cref="FileNotFoundException"></exception>
|
/// <exception cref="FileNotFoundException"></exception>
|
||||||
public void Load(string a)
|
public void Load(string a)
|
||||||
{
|
{
|
||||||
|
|
||||||
filePath = Path.Combine(ApplicationData.Current.LocalFolder.Path, a);
|
filePath = Path.Combine(ApplicationData.Current.LocalFolder.Path, a);
|
||||||
if (!File.Exists(filePath))
|
if (!File.Exists(filePath))
|
||||||
{// 使用 File.Create 创建文件并立即关闭
|
{// 使用 File.Create 创建文件并立即关闭
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.IO.Compression;
|
using System.IO.Compression;
|
||||||
|
using Windows.Storage;
|
||||||
namespace RustTools.muqing;
|
namespace RustTools.muqing;
|
||||||
|
|
||||||
#pragma warning disable CS8981 // 该类型名称仅包含小写 ascii 字符。此类名称可能会成为该语言的保留值。
|
#pragma warning disable CS8981 // 该类型名称仅包含小写 ascii 字符。此类名称可能会成为该语言的保留值。
|
||||||
|
@ -11,6 +12,9 @@ public class wj
|
||||||
//缓存路径
|
//缓存路径
|
||||||
public const string Cache = "";
|
public const string Cache = "";
|
||||||
|
|
||||||
|
public static string LocalFolder = ApplicationData.Current.LocalFolder.Path;
|
||||||
|
//ApplicationData.Current.LocalFolder.Path
|
||||||
|
|
||||||
//不知道为什么会保存到这里的路径 废弃了 , 找到了新的文件夹路径
|
//不知道为什么会保存到这里的路径 废弃了 , 找到了新的文件夹路径
|
||||||
//public const string CachePath= "C:/Users/19669/AppData/Local/VirtualStore/Windows/SysWOW64";
|
//public const string CachePath= "C:/Users/19669/AppData/Local/VirtualStore/Windows/SysWOW64";
|
||||||
|
|
||||||
|
@ -130,5 +134,22 @@ public class wj
|
||||||
return string.Empty;
|
return string.Empty;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public static void OpenFileExplorer(string path)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Process.Start("explorer.exe", path);
|
||||||
|
}
|
||||||
|
catch (System.ComponentModel.Win32Exception noBrowser)
|
||||||
|
{
|
||||||
|
if (noBrowser.ErrorCode == -2147467259)
|
||||||
|
throw new Exception("There is no default browser configured.");
|
||||||
|
else
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
catch (System.Exception other)
|
||||||
|
{
|
||||||
|
throw other;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user