169 lines
6.5 KiB
C#
169 lines
6.5 KiB
C#
using System.Diagnostics;
|
||
|
||
namespace CORP_MAUI.Pages;
|
||
|
||
public partial class MenuPage : ContentPage
|
||
{
|
||
// Сохраняем индекс вкладки, с которой открыли меню
|
||
private static int _previousTabIndex = 2; // По умолчанию - Лента
|
||
|
||
public static void SetPreviousTabIndex(int index)
|
||
{
|
||
if (index != 0) // 0 - это меню, не сохраняем
|
||
{
|
||
_previousTabIndex = index;
|
||
}
|
||
}
|
||
|
||
public MenuPage()
|
||
{
|
||
InitializeComponent();
|
||
}
|
||
|
||
private async void OnCloseClicked(object? sender, EventArgs e)
|
||
{
|
||
// Сначала переключаемся на предыдущую вкладку
|
||
if (Shell.Current?.CurrentItem is TabBar tabBar && tabBar.Items.Count > _previousTabIndex)
|
||
{
|
||
Shell.Current.CurrentItem = tabBar.Items[_previousTabIndex];
|
||
}
|
||
|
||
await Navigation.PopModalAsync(animated: false);
|
||
}
|
||
|
||
private async Task NavigateToTabAsync(int tabIndex)
|
||
{
|
||
// Переключаем на нужную вкладку
|
||
if (Shell.Current?.CurrentItem is TabBar tabBar && tabBar.Items.Count > tabIndex)
|
||
{
|
||
Shell.Current.CurrentItem = tabBar.Items[tabIndex];
|
||
}
|
||
|
||
await Navigation.PopModalAsync(animated: false);
|
||
}
|
||
|
||
private async void OnNewsClicked(object? sender, EventArgs e)
|
||
{
|
||
await NavigateToTabAsync(2); // Лента - третья вкладка (индекс 2)
|
||
}
|
||
|
||
private async void OnDepartmentsClicked(object? sender, EventArgs e)
|
||
{
|
||
await Navigation.PopModalAsync(animated: false);
|
||
// Отделы нет в нижней панели - переходим через Shell navigation
|
||
try
|
||
{
|
||
await Shell.Current.GoToAsync(nameof(DepartmentsPage));
|
||
}
|
||
catch
|
||
{
|
||
// Fallback - показываем сообщение
|
||
if (Application.Current?.Windows.FirstOrDefault()?.Page is Page page)
|
||
{
|
||
await page.DisplayAlert("Отделы", "Перейдите в раздел 'Отделы' через меню", "OK");
|
||
}
|
||
}
|
||
}
|
||
|
||
private async void OnEmployeesClicked(object? sender, EventArgs e)
|
||
{
|
||
await NavigateToTabAsync(4); // Сотрудники - пятая вкладка (индекс 4)
|
||
}
|
||
|
||
private async void OnRequestsClicked(object? sender, EventArgs e)
|
||
{
|
||
await NavigateToTabAsync(3); // Заявления - четвёртая вкладка (индекс 3)
|
||
}
|
||
|
||
private async void OnChatsClicked(object? sender, EventArgs e)
|
||
{
|
||
await NavigateToTabAsync(1); // Сообщения - вторая вкладка (индекс 1)
|
||
}
|
||
|
||
private async void OnDocumentsClicked(object? sender, EventArgs e)
|
||
{
|
||
await Navigation.PopModalAsync(animated: false);
|
||
// Переходим на страницу документов
|
||
try
|
||
{
|
||
await Shell.Current.GoToAsync(nameof(DocumentsPage));
|
||
}
|
||
catch
|
||
{
|
||
// Fallback - показываем сообщение
|
||
if (Application.Current?.Windows.FirstOrDefault()?.Page is Page page)
|
||
{
|
||
await page.DisplayAlert("Документы", "Не удалось открыть раздел документов", "OK");
|
||
}
|
||
}
|
||
}
|
||
|
||
private async void OnFinancesClicked(object? sender, EventArgs e)
|
||
{
|
||
await Navigation.PopModalAsync(animated: false);
|
||
// Финансы пока не реализованы
|
||
if (Application.Current?.Windows.FirstOrDefault()?.Page is Page page)
|
||
{
|
||
await page.DisplayAlert("Финансы", "Раздел финансов находится в разработке", "OK");
|
||
}
|
||
}
|
||
|
||
private async void OnProfileClicked(object? sender, EventArgs e)
|
||
{
|
||
await Navigation.PopModalAsync(animated: false);
|
||
// Профиль нет в нижней панели - переходим через Shell navigation
|
||
try
|
||
{
|
||
await Shell.Current.GoToAsync(nameof(ProfilePage));
|
||
}
|
||
catch
|
||
{
|
||
// Fallback - показываем сообщение
|
||
if (Application.Current?.Windows.FirstOrDefault()?.Page is Page page)
|
||
{
|
||
await page.DisplayAlert("Профиль", "Перейдите в раздел 'Профиль' через меню", "OK");
|
||
}
|
||
}
|
||
}
|
||
|
||
private async void OnSettingsClicked(object? sender, EventArgs e)
|
||
{
|
||
await Navigation.PopModalAsync(animated: false);
|
||
// Настройки пока не реализованы
|
||
if (Application.Current?.Windows.FirstOrDefault()?.Page is Page page)
|
||
{
|
||
await page.DisplayAlert("Настройки", "Раздел настроек находится в разработке", "OK");
|
||
}
|
||
}
|
||
|
||
private void OnLightThemeClicked(object? sender, EventArgs e)
|
||
{
|
||
// Активируем светлую тему - белый ползунок слева
|
||
LightThemeButton.BackgroundColor = Colors.White;
|
||
DarkThemeButton.BackgroundColor = Colors.Transparent;
|
||
|
||
// Иконка на белом фоне - акцентный цвет
|
||
LightThemeIconTint.TintColor = Color.FromArgb("#0D6EFD");
|
||
// Иконка на прозрачном (синем) фоне - белая
|
||
DarkThemeIconTint.TintColor = Colors.White;
|
||
|
||
// TODO: Применить светлую тему к приложению
|
||
Trace.WriteLine("[MenuPage] Светлая тема выбрана");
|
||
}
|
||
|
||
private void OnDarkThemeClicked(object? sender, EventArgs e)
|
||
{
|
||
// Активируем тёмную тему - белый ползунок справа
|
||
DarkThemeButton.BackgroundColor = Colors.White;
|
||
LightThemeButton.BackgroundColor = Colors.Transparent;
|
||
|
||
// Иконка на белом фоне - акцентный цвет
|
||
DarkThemeIconTint.TintColor = Color.FromArgb("#0D6EFD");
|
||
// Иконка на прозрачном (синем) фоне - белая
|
||
LightThemeIconTint.TintColor = Colors.White;
|
||
|
||
// TODO: Применить тёмную тему к приложению
|
||
Trace.WriteLine("[MenuPage] Тёмная тема выбрана");
|
||
}
|
||
}
|