87 lines
2.8 KiB
C#
87 lines
2.8 KiB
C#
using ModernWpf.Controls;
|
||
using DownloadManager.Core.Services;
|
||
using DownloadManager.Core.Models;
|
||
using System.Windows;
|
||
using System.Linq;
|
||
using System.Collections.ObjectModel;
|
||
using System.Threading.Tasks;
|
||
|
||
namespace DownloadManager.WPF.Views.Dialogs;
|
||
|
||
public partial class CategoryManagerDialog : ContentDialog
|
||
{
|
||
private readonly ICategoryService _categoryService;
|
||
private ObservableCollection<DownloadCategory> _categories = new();
|
||
|
||
public CategoryManagerDialog(ICategoryService categoryService)
|
||
{
|
||
InitializeComponent();
|
||
_categoryService = categoryService;
|
||
CategoryList.ItemsSource = _categories;
|
||
_ = LoadCategoriesAsync();
|
||
}
|
||
|
||
private async Task LoadCategoriesAsync()
|
||
{
|
||
_categories.Clear();
|
||
var items = await _categoryService.GetCategoriesAsync();
|
||
foreach (var item in items)
|
||
{
|
||
_categories.Add(item);
|
||
}
|
||
}
|
||
|
||
private void CategoryList_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
|
||
{
|
||
if (CategoryList.SelectedItem is DownloadCategory selected)
|
||
{
|
||
NameBox.Text = selected.Name;
|
||
ExtensionsBox.Text = selected.Extensions;
|
||
UpdateBtn.IsEnabled = true;
|
||
DeleteBtn.IsEnabled = true;
|
||
}
|
||
else
|
||
{
|
||
NameBox.Text = "";
|
||
ExtensionsBox.Text = "";
|
||
UpdateBtn.IsEnabled = false;
|
||
DeleteBtn.IsEnabled = false;
|
||
}
|
||
}
|
||
|
||
private async void AddButton_Click(object sender, RoutedEventArgs e)
|
||
{
|
||
if (string.IsNullOrWhiteSpace(NameBox.Text)) return;
|
||
var cat = new DownloadCategory
|
||
{
|
||
Name = NameBox.Text,
|
||
Extensions = ExtensionsBox.Text,
|
||
SavePath = "" // Varsayılanı boş bırakıyoruz
|
||
};
|
||
await _categoryService.AddCategoryAsync(cat);
|
||
await LoadCategoriesAsync();
|
||
CategoryList.SelectedItem = _categories.FirstOrDefault(c => c.Name == cat.Name);
|
||
}
|
||
|
||
private async void UpdateButton_Click(object sender, RoutedEventArgs e)
|
||
{
|
||
if (CategoryList.SelectedItem is DownloadCategory selected && !string.IsNullOrWhiteSpace(NameBox.Text))
|
||
{
|
||
selected.Name = NameBox.Text;
|
||
selected.Extensions = ExtensionsBox.Text;
|
||
await _categoryService.UpdateCategoryAsync(selected);
|
||
await LoadCategoriesAsync();
|
||
CategoryList.SelectedItem = _categories.FirstOrDefault(c => c.Id == selected.Id);
|
||
}
|
||
}
|
||
|
||
private async void DeleteButton_Click(object sender, RoutedEventArgs e)
|
||
{
|
||
if (CategoryList.SelectedItem is DownloadCategory selected)
|
||
{
|
||
await _categoryService.DeleteCategoryAsync(selected.Id);
|
||
await LoadCategoriesAsync();
|
||
}
|
||
}
|
||
}
|