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] Тёмная тема выбрана"); } }