private void AddNewQuestionsListButton_Click(object sender, RoutedEventArgs e) { string listName = AddNewQuestionsListNameTextBox.Text; if (Regex.IsMatch(listName, @"^[a-zA-Z0-9_]+$")) { questionItems.Clear(); questionsListName = AddNewQuestionsListNameTextBox.Text; UpdateQuestionsListNameTextBox(); loadedQuestionsList = true; UpdateEnabledElements(); AddNewQuestionsListNameTextBox.Text = string.Empty; QuestionManager.ClearQuestions(); QuestionManager.WrongAnsweredQuestions.Clear(); actualAnswersID = 0; editMode = false; loadedQuestionsList = true; questionItems.Clear(); questionsID = questionItems.Count; UpdateEnabledElements(); InitQuestionItems(); ((QuestionsContent)TabManager.GetTab("Questions").Content).Refresh(); var saveFileDialog = new SaveFileDialog { InitialDirectory = @"C:\", Title = $"Save {questionsListName}", CheckPathExists = true, DefaultExt = "json", Filter = "Json files (*.json)|*.json", RestoreDirectory = true }; if (saveFileDialog.ShowDialog() == true) { filePath = saveFileDialog.FileName; SaveQuestions(); QuestionManager.ClearQuestions(); } } else { errorSnackbar.MessageQueue.Enqueue("Name can only contains letters, numbers and underscore.", null, null, null, false, true, TimeSpan.FromSeconds(4)); } }
public void DeleteQuestion(int id) { questionItems.RemoveAt(questionItems.FindIndex(x => x.ID == id)); QuestionManager.RemoveQuestion(id); ((QuestionsContent)TabManager.GetTab("Questions").Content).Refresh(); questionsID--; InitQuestionItems(); SaveQuestions(); }
public static void ReadFile(string fileName, ref Snackbar errorSnackbar) { Mouse.OverrideCursor = Cursors.Wait; QuestionManager.ClearQuestions(); using (var reader = new StreamReader(fileName)) { try { dynamic json = JsonConvert.DeserializeObject(reader.ReadToEnd()); for (int i = 0; i < json.Count; i++) { string question = json[i].Name; var answers = new List <Answer>(); for (int j = 0; j < json[i].Answers.Count; j++) { string answer = json[i].Answers[j].Name; bool right = json[i].Answers[j].Right; answers.Add(new Answer(j, answer, right)); } QuestionManager.AddQuestion(new Question(i, question, answers)); ((QuestionsContent)TabManager.GetTab("Questions").Content).AddNewQuestion(); ((SettingsContent)TabManager.GetTab("Settings").Content).UpdateQuestionItems(fileName); } } catch (Exception) { errorSnackbar.MessageQueue.Enqueue("Can't read file.", null, null, null, false, true, TimeSpan.FromSeconds(4)); } } Mouse.OverrideCursor = Cursors.Arrow; }
public void Refresh() { actualWrongQuestionNumber = 0; actualQuestions.Clear(); if (inOrder) { if (Regex.IsMatch(QuestionNumberInputTextBox.Text, @"^[0-9]+$")) { actualQuestionNumber = int.Parse(QuestionNumberInputTextBox.Text) - 1; } else { errorSnackbar.MessageQueue.Enqueue("Order number can only contains numbers.", null, null, null, false, true, TimeSpan.FromSeconds(4)); return; } } AddNewQuestion(); ((CheckAnswersContent)TabManager.GetTab("Wrong answers").Content).ClearQuestionsStackPanelChildren(); QuestionManager.WrongAnsweredQuestions.Clear(); }
private void CheckCheckBox_Checked(object sender, RoutedEventArgs e) { ((SettingsContent)TabManager.GetTab("Settings").Content).ChangeActualAnswerIsChecked(id, (bool)CheckCheckBox.IsChecked); }
private void AnswerTextBlock_TextChanged(object sender, TextChangedEventArgs e) { ((SettingsContent)TabManager.GetTab("Settings").Content).ChangeActualAnswerName(id, AnswerTextBlock.Text); }
public MainWindow() { InitializeComponent(); TabManager.InitMenuTabs(MainMenuTabControl, ref ErrorSnackbar); }
private void CheckAnswersButton_Click(object sender, RoutedEventArgs e) { var question = new Question(actualQuestionNumber, QuestionTextBlock.Text); int pickedGoodAnswers = 0; int goodAnswers = 0; int picks = 0; foreach (AnswerContent answerContent in AnswersStackPanel.Children) { question.Answers.Add(new Answer(answerContent.AnswerID) { Name = answerContent.AnswerName, Right = answerContent.IsChecked }); var getGoodAnswer = actualAnswers.Find(x => x.Name.Equals(answerContent.AnswerName)); if (getGoodAnswer.Right == true) { answerContent.ChangeAnswerWeightToColor("#56c649", change: true); goodAnswers++; } else { if (answerContent.IsChecked) { answerContent.ChangeAnswerWeightToColor("#dd2727", change: true); } } if (answerContent.IsChecked == true) { picks++; if (answerContent.IsChecked == getGoodAnswer.Right) { pickedGoodAnswers++; } } answerContent.Disable(); } if (!(goodAnswers == pickedGoodAnswers && picks == pickedGoodAnswers)) { if (QuestionManager.WrongAnsweredQuestions.Find(x => x.ID == question.ID) == null) { QuestionManager.WrongAnsweredQuestions.Add(question); } } else { if (QuestionManager.GetWrongQuestion(question.ID) != null) { QuestionManager.RemoveWrongQuestion(question.ID); } } CheckAnswersButton.IsEnabled = false; NextQuestionButton.IsEnabled = true; PrevQuestionButton.IsEnabled = true; GoodAnswerCountsLabel.Foreground = goodAnswers == pickedGoodAnswers && picks == pickedGoodAnswers ? Brushes.Green : Brushes.Red; GoodAnswerCountsLabel.Content = $"{picks}/{pickedGoodAnswers}/{actualAnswers.Count}"; ((CheckAnswersContent)TabManager.GetTab("Wrong answers").Content).UpdateQuestions(); }
private void DeleteQuestionItemButton_Click(object sender, RoutedEventArgs e) { ((SettingsContent)TabManager.GetTab("Settings").Content).DeleteQuestion(ID); }
private void Grid_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e) { ((SettingsContent)TabManager.GetTab("Settings").Content).ChangeActiveQuestion(Question); }