using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using VPet_Simulator.Windows.Interface;
namespace VPet.Plugin.ModMaker.ModEdit.FoodEdit;
///
/// Page_Food.xaml 的交互逻辑
///
public partial class Page_Food : Page
{
public ObservableCollection Foods { get; set; } = new();
public Dictionary FoodDict { get; set; } = new();
public Page_Food()
{
InitializeComponent();
DataGrid_Food.ItemsSource = Foods;
// TODO: 多语言
}
private void Button_AddFood_Click(object sender, RoutedEventArgs e)
{
var window = new Window_AddFood();
window.Closed += (s, e) =>
{
if (s is not Window_AddFood addFoodWindow || addFoodWindow.IsCancel)
return;
var food = CreateFoodFromWindow(addFoodWindow);
if (FoodDict.TryGetValue(food.Name, out var oldFood))
{
FoodDict[food.Name] = Foods[Foods.IndexOf(oldFood)] = food;
}
else
{
Foods.Add(food);
FoodDict.Add(food.Name, food);
}
};
ShowDialogX(window);
}
private void DataGrid_Food_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
if (sender is not DataGrid dataGrid || dataGrid.SelectedItem is not Food oldFood)
return;
ChangeFoodInfo(oldFood);
}
private void TextBox_SearchFood_TextChanged(object sender, TextChangedEventArgs e)
{
if (sender is not TextBox textBox)
return;
if (textBox.Text.Length > 0)
{
var newList = new ObservableCollection(
Foods.Where(i => i.Name.Contains(textBox.Text))
);
if (newList.Count != Foods.Count)
DataGrid_Food.ItemsSource = newList;
}
else
DataGrid_Food.ItemsSource = Foods;
}
private void MenuItem_RemoveFood_Click(object sender, RoutedEventArgs e)
{
if (sender is not MenuItem menuItem || menuItem.Tag is not Food food)
return;
if (DataGrid_Food.ItemsSource is IList list && list.Count != Foods.Count)
list.Remove(food);
else
Foods.Remove(food);
FoodDict.Remove(food.Name);
}
private void MenuItem_ChangeFood_Click(object sender, RoutedEventArgs e)
{
if (sender is not MenuItem menuItem || menuItem.Tag is not Food food)
return;
ChangeFoodInfo(food);
}
}