コード例 #1
0
        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));
            }
        }
コード例 #2
0
        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();
        }
コード例 #3
0
        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;
        }
コード例 #4
0
        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();
        }
コード例 #5
0
 private void CheckCheckBox_Checked(object sender, RoutedEventArgs e)
 {
     ((SettingsContent)TabManager.GetTab("Settings").Content).ChangeActualAnswerIsChecked(id, (bool)CheckCheckBox.IsChecked);
 }
コード例 #6
0
 private void AnswerTextBlock_TextChanged(object sender, TextChangedEventArgs e)
 {
     ((SettingsContent)TabManager.GetTab("Settings").Content).ChangeActualAnswerName(id, AnswerTextBlock.Text);
 }
コード例 #7
0
        public MainWindow()
        {
            InitializeComponent();

            TabManager.InitMenuTabs(MainMenuTabControl, ref ErrorSnackbar);
        }
コード例 #8
0
        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();
        }
コード例 #9
0
 private void DeleteQuestionItemButton_Click(object sender, RoutedEventArgs e)
 {
     ((SettingsContent)TabManager.GetTab("Settings").Content).DeleteQuestion(ID);
 }
コード例 #10
0
 private void Grid_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
 {
     ((SettingsContent)TabManager.GetTab("Settings").Content).ChangeActiveQuestion(Question);
 }