修复BUG

This commit is contained in:
muqing 2024-08-20 21:34:07 +08:00
parent 582f4f2652
commit bf54ae4dd0
5 changed files with 115 additions and 49 deletions

View File

@ -7,6 +7,8 @@
<Platform>x64</Platform>
<Platforms>x86;x64;arm64</Platforms>
<EnablePreviewMsixTooling>true</EnablePreviewMsixTooling>
<!--<WindowsPackageType>None</WindowsPackageType>-->
<WindowsAppSDKSelfContained>true</WindowsAppSDKSelfContained>
<RuntimeIdentifiers>win10-x86;win10-x64;win10-arm64</RuntimeIdentifiers>
<ImplicitUsings>enable</ImplicitUsings>

View File

@ -22,9 +22,26 @@
<StackPanel Grid.Row="0" Margin="0,0,0,9">
<AutoSuggestBox
x:Name="search"
KeyDown="searchBox_KeyDown"
PlaceholderText="(Ctrl+J 显示建议列表)"
QueryIcon="Find"
QuerySubmitted="search_QuerySubmitted"
SuggestionChosen="AutoSuggestBox_SuggestionChosen"
TextChanged="search_TextChanged" />
TextChanged="search_TextChanged"
TextMemberPath="key">
<AutoSuggestBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock VerticalAlignment="Center" Text="{Binding key}" />
<TextBlock
Margin="9,0,0,0"
VerticalAlignment="Center"
Text="{Binding value}" />
</StackPanel>
</DataTemplate>
</AutoSuggestBox.ItemTemplate>
</AutoSuggestBox>
</StackPanel>
<Grid Grid.Row="1" Grid.Column="0">
<Grid.ColumnDefinitions>

View File

@ -9,6 +9,7 @@ using System.Runtime.InteropServices.WindowsRuntime;
using System.Text.Json.Serialization;
using System.Text.RegularExpressions;
using System.Xml.Linq;
using Microsoft.UI.Input;
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Controls;
using Microsoft.UI.Xaml.Controls.Primitives;
@ -21,7 +22,11 @@ using Newtonsoft.Json.Linq;
using RustTools.DataList;
using RustTools.muqing;
using RustTools.ViewModels;
using Windows.ApplicationModel.Core;
using Windows.System;
using Windows.UI.Core;
using static System.Collections.Specialized.BitVector32;
using static IniHelper;
using static RustTools.DataList.DataBaseManifest;
// To learn more about WinUI, the WinUI project structure,
@ -33,7 +38,7 @@ namespace RustTools.Views;
/// </summary>
public sealed partial class CodeTablePage : Page
{
public ObservableCollection<CodeTable>? codeList = new();
public ObservableCollection<CodeTable> codeList = new();
public CodeTableViewModel ViewModel { get; set; }
public List<DataBaseManifest.Section.SectionData> section = new();
public CodeTablePage()
@ -93,9 +98,9 @@ public sealed partial class CodeTablePage : Page
//var textBlock = new TextBlock();
//textBlock.IsTextSelectionEnabled
// 注册 KeyDown 事件处理程序
}
private void keyListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
@ -128,8 +133,9 @@ public sealed partial class CodeTablePage : Page
protected override void OnNavigatedFrom(NavigationEventArgs e)
{
base.OnNavigatedFrom(e);
codeList?.Clear();
codeList = null;
codeList.Clear();
//section.Clear();
//valueList.Clear();
}
@ -154,24 +160,31 @@ public sealed partial class CodeTablePage : Page
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;
//gj.sc("AutoSuggestBox_SuggestionChosen "+sender);
//if (args.SelectedItem is not Search_List str) { return; }
//search.Text = str.key;
//List<CodeTable_Data> itemsSource = new();
//foreach (var item in valueList)
//{
// if (item.code.Contains(str.key) || item.translate.Contains(str.value))
// {
// itemsSource.Add(item);
// }
//}
//valueListView.ItemsSource=itemsSource;
//valueListView.ItemsSource=search.ItemsSource;
}
class Search_List
{
public string key
{
get; set;
}
public string value
{
get; set;
}
}
private List<CodeTable_Data> valueList = new ();
private void search_TextChanged(AutoSuggestBox sender, AutoSuggestBoxTextChangedEventArgs args)
@ -184,27 +197,57 @@ public sealed partial class CodeTablePage : Page
// 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(" ");
var suitableItems = new List<Search_List>();
var splitText = sender.Text.ToString();
if (valueListView.ItemsSource is not List<CodeTable_Data> itemsSource) { return; }
var i = 0;
foreach (var cat in itemsSource)
{
var found = splitText.All((key) =>
if (cat.code.Contains(splitText) || cat.translate.Contains(splitText))
{
if (string.IsNullOrEmpty(key)) { return false; }
return cat.code.Contains(key)||cat.translate.Contains(key);
});
if (found)
{
suitableItems.Add(cat.code+" "+cat.translate);
suitableItems.Add(new Search_List
{
key=cat.code,value=cat.translate
});
}
//限制搜索的最大显示
if (++i > 30)
{
break;
}
}
if (suitableItems.Count == 0)
{
suitableItems.Add("No results found");
}
sender.ItemsSource = suitableItems;
}
}
private void search_QuerySubmitted(AutoSuggestBox sender, AutoSuggestBoxQuerySubmittedEventArgs args)
{
List<CodeTable_Data> itemsSource = new();
foreach (var item in valueList)
{
if (item.code.Contains(sender.Text) || item.translate.Contains(sender.Text))
{
itemsSource.Add(item);
}
}
valueListView.ItemsSource = itemsSource;
}
private void searchBox_KeyDown(object sender, KeyRoutedEventArgs e)
{
// 检查是否按下了 Ctrl 键
var isCtrlPressed = InputKeyboardSource.GetKeyStateForCurrentThread(VirtualKey.Control) == CoreVirtualKeyStates.Down;
// 检查是否按下了 J 键
if (e.Key == VirtualKey.J && isCtrlPressed)
{
// 在这里执行当 Ctrl+J 被按下时的操作
var a = search.ItemsSource as List<Search_List>;
search.ItemsSource = null;
search.ItemsSource = a;
//Debug.WriteLine("Ctrl+J pressed "+ a?.Count);
}
}
}

View File

@ -31,7 +31,7 @@ public sealed partial class HomePage : Page
ListA.ItemClick += ListAClick;
ListB.ItemClick += ListAClick;
//为了节省流量测试的时候不加载这些
if (false)
if (true)
{
ViewModel.random();
ViewModel.Latest();

View File

@ -142,12 +142,14 @@ public sealed partial class ModulePage : Page
/// <param name="e"></param>
private async void Button_Click_RwmodItem(object sender, RoutedEventArgs e)
{
ContentDialog dialog = new ContentDialog();
dialog.XamlRoot = XamlRoot;
dialog.Title = "提示";
dialog.PrimaryButtonText = "确定";
dialog.SecondaryButtonText = "取消";
dialog.Content = CreateCheckboxContent();
ContentDialog dialog = new ContentDialog
{
XamlRoot = XamlRoot,
Title = "提示",
PrimaryButtonText = "确定",
SecondaryButtonText = "取消",
Content = CreateCheckboxContent()
};
var contentDialogResult = await dialog.ShowAsync();
if (contentDialogResult == ContentDialogResult.Primary)
{
@ -159,21 +161,23 @@ public sealed partial class ModulePage : Page
if (container != null && container.DataContext is DataObject dataItem)
{
var checkbox = (dialog.Content as StackPanel)?.Children[1] as CheckBox;
if (checkbox.IsChecked == true)
{
File.Delete(dataItem.Dri);
ViewModel.ListMod.Remove(dataItem);
}
var fileNameWithoutExtension = Path.GetFileNameWithoutExtension(dataItem.Dri);
var GetDirectoryName = Path.GetDirectoryName(dataItem.Dri);
if (Directory.Exists(GetDirectoryName) && fileNameWithoutExtension != null)
{
var targetDirectory = Path.Combine(GetDirectoryName, fileNameWithoutExtension);
var v = wj.UnzipFile(dataItem.Dri, targetDirectory);
gj.sc(v);
gj.sc("解压成功:"+v);
if (checkbox?.IsChecked == true)
{
File.Delete(dataItem.Dri);
ViewModel.ListMod.Remove(dataItem);
}
if (v)
{
ViewModel.ListMod.Add(new DataObject(new DirectoryInfo(targetDirectory)));
ViewModel.ListMod.Remove(new DataObject(new DirectoryInfo(targetDirectory)));
ViewModel.ListMod.Insert(0,new DataObject(new DirectoryInfo(targetDirectory)));
}
}
}