Files
FloatingStatusWindow/Template/SettingsWindow/ItemsSettingsPanel.xaml.cs
2026-02-27 12:17:48 -05:00

112 lines
2.9 KiB
C#

using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Input;
namespace Template.SettingsWindow;
public partial class ItemsSettingsPanel
{
private CollectionViewSource _collectionViewSource;
public ItemsSettingsPanel()
{
InitializeComponent();
}
public override string CategoryName => Properties.Resources.optionCategoryItems;
public override void LoadPanel(Window parentWindow)
{
base.LoadPanel(parentWindow);
if (_collectionViewSource == null)
{
_collectionViewSource = new CollectionViewSource { Source = Data.ItemEntries };
ItemDataGrid.ItemsSource = _collectionViewSource.View;
}
_collectionViewSource.View.Refresh();
if (ItemDataGrid.Items.Count > 0)
ItemDataGrid.SelectedIndex = 0;
SetItemButtonStates();
}
private void HandleItemDataGridSelectionChanged(object sender, SelectionChangedEventArgs e)
{
SetItemButtonStates();
}
private void SetItemButtonStates()
{
AddItemButton.IsEnabled = true;
EditItemButton.IsEnabled = ItemDataGrid.SelectedItems.Count == 1;
DeleteItemButton.IsEnabled = ItemDataGrid.SelectedItems.Count > 0;
}
private void HandleAddItemButtonClick(object sender, RoutedEventArgs e)
{
AddItem();
}
private void HandleEditItemButtonClick(object sender, RoutedEventArgs e)
{
EditSelectedItem();
}
private void HandleDeleteItemButtonClick(object sender, RoutedEventArgs e)
{
DeleteSelectedItems();
}
private void HandleItemDataGridRowMouseDoubleClick(object sender, MouseButtonEventArgs e)
{
EditSelectedItem();
}
private void AddItem()
{
var itemEntry = new ItemEntry { };
var itemWindow = new ItemWindow();
var result = itemWindow.Display(itemEntry, Window.GetWindow(this));
if (!result.HasValue || !result.Value)
return;
ItemDataGrid.SelectedItem = itemEntry;
SetItemButtonStates();
}
private void EditSelectedItem()
{
if (ItemDataGrid.SelectedItem == null)
return;
var itemEntry = (ItemEntry)ItemDataGrid.SelectedItem;
var itemWindow = new ItemWindow();
itemWindow.Display(itemEntry, Window.GetWindow(this));
}
private void DeleteSelectedItems()
{
if (MessageBox.Show(ParentWindow!, Properties.Resources.ConfirmDeleteItemss, Properties.Resources.ConfirmDeleteTitle, MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No) == MessageBoxResult.No)
return;
var selectedItems = new ItemEntry[ItemDataGrid.SelectedItems.Count];
ItemDataGrid.SelectedItems.CopyTo(selectedItems, 0);
foreach (var itemEntry in selectedItems)
Data.ItemEntries.Remove(itemEntry);
SetItemButtonStates();
}
}