public static void UpdateSelected(SavedGroup selectedGroup) { Serialisation.ToJsonFile((Group)selectedGroup, FilePath.SelectedGroup); Device.BeginInvokeOnMainThread(() => { MessagingCenter.Send(Application.Current, MessageTypes.SelectedGroupChanged, (Group)selectedGroup); }); }
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; } }
public ManageLessonsPage(SavedGroup group) { InitializeComponent(); Title += $": {group.Name}"; this.group = group; EventList eventList = EventsDataStore.GetEventsLocal(group.ID); if (eventList == null) { return; } List <LessonSettings> lessonSettings = LessonSettingsDataStore.GetLessonSettings(group.ID); lessons = new ObservableCollection <LessonSettings> ( eventList.Lessons() .Select(lesson => { LessonSettings res = lessonSettings.FirstOrDefault(ls => ls.LessonName == lesson) ?? new LessonSettings { LessonName = lesson }; res.EventTypes = eventList.EventTypes(lesson).ToList(); return(res); }) .OrderBy(lesson => lesson.LessonName) ); LessonsList.ItemsSource = lessons; if (lessons.Count == 0) { NoSourceLayout.IsVisible = true; } MessagingCenter.Subscribe <LessonSettingsPage, LessonSettings>(this, "OneLessonSettingsChanged", (sender, newLessonSettings) => { for (int i = 0; i < lessons.Count; i++) { if (lessons[i].LessonName == newLessonSettings.LessonName) { lessons[i] = newLessonSettings; lessons[i].NotifyChanged(); break; } } }); }