74 lines
3.5 KiB
C#
74 lines
3.5 KiB
C#
namespace NotesDataAnalyst
|
||
{
|
||
public partial class AppShell : Shell
|
||
{
|
||
public AppShell()
|
||
{
|
||
InitializeComponent();
|
||
CategoryManager.LoadCategories(); // Загружаем категории при запуске
|
||
// Регистрация маршрута для MainPage
|
||
Routing.RegisterRoute("MainPage", typeof(MainPage));
|
||
}
|
||
|
||
private async void OnCategoriesMenuClicked(object sender, EventArgs e)
|
||
{
|
||
// Открываем всплывающее окно с возможностью управления категориями
|
||
string action = await DisplayActionSheet("Управление категориями", "Отмена", null,
|
||
"Выбрать категорию", "Добавить категорию", "Удалить категорию");
|
||
|
||
switch (action)
|
||
{
|
||
case "Выбрать категорию":
|
||
await SelectCategory();
|
||
break;
|
||
case "Добавить категорию":
|
||
await AddCategory();
|
||
break;
|
||
case "Удалить категорию":
|
||
await DeleteCategory();
|
||
break;
|
||
}
|
||
}
|
||
|
||
private async Task SelectCategory()
|
||
{
|
||
// Всплывающее окно для выбора категории
|
||
string selectedCategory = await DisplayActionSheet("Выберите категорию", "Отмена", null, CategoryManager.Categories.ToArray());
|
||
if (!string.IsNullOrEmpty(selectedCategory) && selectedCategory != "Отмена")
|
||
{
|
||
// Устанавливаем выбранную категорию
|
||
CategoryManager.ActiveCategory = selectedCategory;
|
||
// Переход к MainPage относительно текущего стека, без абсолютного маршрута
|
||
await Shell.Current.GoToAsync("MainPage");
|
||
}
|
||
}
|
||
|
||
private async Task AddCategory()
|
||
{
|
||
// Всплывающее окно для ввода названия новой категории
|
||
string newCategory = await DisplayPromptAsync("Новая категория", "Введите название категории:");
|
||
if (!string.IsNullOrWhiteSpace(newCategory) && !CategoryManager.Categories.Contains(newCategory))
|
||
{
|
||
CategoryManager.AddCategory(newCategory);
|
||
}
|
||
}
|
||
|
||
private async Task DeleteCategory()
|
||
{
|
||
// Всплывающее окно для выбора категории для удаления
|
||
string categoryToDelete = await DisplayActionSheet("Удалить категорию", "Отмена", null, CategoryManager.Categories.ToArray());
|
||
if (!string.IsNullOrEmpty(categoryToDelete) && categoryToDelete != "Отмена")
|
||
{
|
||
// Удаляем категорию
|
||
CategoryManager.Categories.Remove(categoryToDelete);
|
||
|
||
// Сброс активной категории, если она была удалена
|
||
if (CategoryManager.ActiveCategory == categoryToDelete)
|
||
{
|
||
CategoryManager.ActiveCategory = "Все категории";
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
}
|