private void UpdateGUI(List <List <Slot> > result) { _raw = result; _cyclicIndex = new CyclicIndex(); if (result == null || result.Count == 0) { if (_inputSlots.NoSlotIsChosen()) { _outputTimetables.SetState(TimetableList.NoSlotsIsChosen); } else { _outputTimetables.SetState(TimetableList.NoPossibleCombination); AutoClosePopup.Show("No possible timetable found."); } ToolBoxPanel.Visibility = Visibility.Hidden; _cyclicIndex.Reset(); } else { _outputTimetables.SetState(new TimetableList(result)); ToolBoxPanel.Visibility = Visibility.Visible; _cyclicIndex.MaxValue = result.Count - 1; _cyclicIndex.CurrentValue = 0; //AutoClosePopup.Show(result.Count + " possible timetables found."); } TimetableViewer.Initialize(_cyclicIndex); CyclicIndexView.DataContext = new CyclicIndexVM(_cyclicIndex); }
private void UpdateGUI(List <List <Slot> > result) { _raw = result; _cyclicIndex = new CyclicIndex(); if (result == null || result.Count == 0) { if (_inputSlots.NoSlotIsChosen()) { _outputTimetables.SetState(TimetableList.NoSlotsIsChosen); AutoCloseNotificationBar.Show("No subject selected."); } else { _outputTimetables.SetState(TimetableList.NoPossibleCombination); NotificationBar.Show("No possible timetable found.", "Tell me why", () => { DialogBox.Show("Why no possible combination?", new ClashFinder(_subjectModels, _permutator).Message); }, false); } ToolBoxPanel.Visibility = Visibility.Hidden; _cyclicIndex.Reset(); } else { _outputTimetables.SetState(new TimetableList(result)); ToolBoxPanel.Visibility = Visibility.Visible; _cyclicIndex.MaxValue = result.Count - 1; _cyclicIndex.CurrentValue = 0; AutoCloseNotificationBar.Show(result.Count + " possible timetables found."); } TimetableViewer.Initialize(_cyclicIndex); CyclicIndexView.DataContext = new CyclicIndexVM(_cyclicIndex); }
private void SaveAsNotepadFile_OnClick(object sender, RoutedEventArgs e) { DrawerHost.IsBottomDrawerOpen = false; var slots = TimetableViewer.GetCurrentTimetable().ToList(); var subjects = SubjectSummaryModel.GroupIntoSubjects(slots); var p = new SaveFileDialog() { Filter = "Notepad file (*.txt)|*.txt", FileName = "MyTimetableSummary" }; if (p.ShowDialog() == false) { return; } string result = ""; foreach (var s in subjects) { result += s.ToString() + "\r\n\r\n"; } try { File.WriteAllText(p.FileName, result); Global.Snackbar.MessageQueue.Enqueue("File saved at " + p.FileName, "OPEN", () => { Process.Start(p.FileName); }); } catch (Exception ex) { Global.Snackbar.MessageQueue.Enqueue("Failed to save file.", "SHOW DETAILS", () => { MessageBox.Show(ex.Message); }); } }
private void TimetableViewer_OnViewChanged(object sender, EventArgs e) { _currentViewedTimetable.SetState(TimetableViewer.GetCurrentTimetable()); if (!TimetableViewer.JustBuilded()) { ; } //SelectSubjectPanel.Collapse(); }
private void SaveAsPicture_OnClick(object sender, RoutedEventArgs e) { DrawerHost.IsBottomDrawerOpen = false; var p = new Window { SizeToContent = SizeToContent.WidthAndHeight, Content = new Page_SaveTimetableAsImage(TimetableViewer.GetCurrentTimetable()) }; p.Show(); p.Close(); }
private void ShowFavoriteTimetable_Checked(object sender, RoutedEventArgs e) { var likedTimetable = _outputTimetables.GetLikedTimetableOnly(); _outputTimetables?.SetState(likedTimetable); var ci = new CyclicIndex(likedTimetable.Count - 1); TimetableViewer?.Initialize(ci); CyclicIndexView.DataContext = new CyclicIndexVM(ci); //Global.Snackbar.MessageQueue.Enqueue("Showing FAVORITE timetables"); }
private Page_CreateTimetable(SlotList inputSlots, Func <Slot[], List <List <Slot> > > permutator) { _inputSlots = inputSlots; _permutator = permutator; InitializeComponent(); TimetableViewer.SetObservedThings(_outputTimetables); TimetableViewer.Initialize(new CyclicIndex()); _cyclicIndex = new CyclicIndex(); CyclicIndexView.DataContext = new CyclicIndexVM(_cyclicIndex); InitializeExtraComponents(); ToolBoxPanel.Visibility = Visibility.Hidden; }
private void ShowAllTimetable_Checked(object sender, RoutedEventArgs e) { var allTimetables = _outputTimetables.GetPreviousState(); _outputTimetables?.SetState(allTimetables); var ci = new CyclicIndex(allTimetables.Count - 1); TimetableViewer?.Initialize(ci); if (CyclicIndexView != null) { CyclicIndexView.DataContext = new CyclicIndexVM(ci); } //Global.Snackbar.MessageQueue.Enqueue("Showing ALL timetables"); }
private void ViewSelector_OnSelectionChanged(object sender, SelectionChangedEventArgs e) { if (ViewSelector.SelectedIndex == 0) { var allTimetables = _outputTimetables.GetPreviousState(); _outputTimetables?.SetState(allTimetables); var ci = new CyclicIndex(allTimetables.Count - 1); TimetableViewer?.Initialize(ci); if (CyclicIndexView != null) { CyclicIndexView.DataContext = new CyclicIndexVM(ci); } // Global.Snackbar.MessageQueue.Enqueue("Showing ALL timetables"); } else { var likedTimetable = _outputTimetables.GetLikedTimetableOnly(); _outputTimetables?.SetState(likedTimetable); var ci = new CyclicIndex(likedTimetable.Count - 1); TimetableViewer?.Initialize(ci); CyclicIndexView.DataContext = new CyclicIndexVM(ci); // Global.Snackbar.MessageQueue.Enqueue("Showing FAVORITE timetables"); } }
private void SaveToGoogleCalendarButton_OnClick(object sender, RoutedEventArgs e) { DrawerHost.IsBottomDrawerOpen = false; NavigationService.Navigate(new Page_AddToGoogleCalendar(TimetableViewer.GetCurrentTimetable(), Global.TimetableStartDate)); }
private void PrintAsPng_OnClick(object sender, RoutedEventArgs e) { this.NavigationService.Navigate( new Page_SaveTimetableAsImage(TimetableViewer.GetCurrentTimetable()) ); }
private void AddToGoogleCalendarButton_OnClick(object sender, RoutedEventArgs e) { NavigationService.Navigate(new Page_AddToGoogleCalendar(TimetableViewer.GetCurrentTimetable(), Global.TimetableStartDate)); }
private void FavoriteButton_OnUnchecked(object sender, RoutedEventArgs e) { TimetableViewer.GetCurrentTimetable().IsLiked = false; }