async void Handle_ItemTapped(object sender, ItemTappedEventArgs e) { if (e.Item == null || !(e.Item is SavedGroup)) { return; } SavedGroup selectedGroup = (SavedGroup)e.Item; //Deselect Item ((ListView)sender).SelectedItem = null; List <string> actionList = new List <string> { "Обновить расписание", "Настроить отображение предметов", "Удалить" }; if (GroupsDataStore.GetSelected()?.ID != selectedGroup.ID) { actionList.Insert(0, "Выбрать"); } string action = await DisplayActionSheet("Выберете действие:", "Отмена", null, actionList.ToArray()); switch (action) { case "Выбрать": GroupsDataStore.UpdateSelected(selectedGroup); await DisplayAlert("Выбор группы", "Группа успешно выбрана", "Ok"); break; case "Обновить расписание": await UpdateTimetable(selectedGroup); break; case "Настроить отображение предметов": await Navigation.PushAsync(new ManageLessonsPage(selectedGroup)); break; case "Удалить": groups.Remove(selectedGroup); GroupsDataStore.UpdateSaved(groups.ToList()); if (selectedGroup.ID == GroupsDataStore.GetSelected()?.ID) { GroupsDataStore.UpdateSelected(null); } break; } }
private async Task UpdateTimetable(params SavedGroup[] savedGroups) { if (savedGroups == null || savedGroups.Length == 0 || CheckUpdateTimetableRights() == false) { return; } GroupsLayout.IsEnabled = false; ProgressLayout.IsVisible = true; await Task.Factory.StartNew(() => { string result; if (EventsDataStore.GetEventsFromCist(Config.TimetableFromDate, Config.TimetableToDate, savedGroups) != null) { foreach (SavedGroup group in savedGroups) { group.LastUpdated = DateTime.Now; } GroupsDataStore.UpdateSaved(groups.ToList()); if (savedGroups.Length == 1) { result = $"Расписание группы {savedGroups[0].Name} успешно обновлено."; } else { result = $"Расписание успешно обновлено для групп:{Environment.NewLine}{string.Join(", ", savedGroups.Select(g => g.Name))}"; } } else { result = "Произошла ошибка, пожалуйста, попробуйте позже."; } Device.BeginInvokeOnMainThread(() => { DisplayAlert("Обновление расписания", result, "Ok"); ProgressLayout.IsVisible = false; GroupsLayout.IsEnabled = true; }); }); }
async void Handle_ItemTapped(object sender, ItemTappedEventArgs e) { if (e.Item == null || !(e.Item is Group)) { return; } Group selectedGroup = (Group)e.Item; //Deselect Item ((ListView)sender).SelectedItem = null; if (savedGroups.Exists(g => g.ID == selectedGroup.ID)) { await DisplayAlert("Добавление группы", "Группа уже находится в сохранённых", "OK"); return; } savedGroups.Add(new SavedGroup(selectedGroup)); GroupsDataStore.UpdateSaved(savedGroups); await DisplayAlert("Добавление группы", "Группа добавлена в сохранённые", "OK"); }