File indexing completed on 2023-05-30 10:49:35
0001 /* 0002 SPDX-FileCopyrightText: 2010 Frederik Gladhorn <gladhorn@kde.org> 0003 SPDX-License-Identifier: GPL-2.0-or-later 0004 */ 0005 0006 #include "comparisonmodewidget.h" 0007 0008 #include "ui_practice_widget_comparison.h" 0009 0010 #include <KColorScheme> 0011 #include <KLocalizedString> 0012 #include <QDebug> 0013 #include <QRadioButton> 0014 #include <QTimer> 0015 0016 using namespace Practice; 0017 0018 ComparisonModeWidget::ComparisonModeWidget(GuiFrontend *frontend, QWidget *parent) 0019 : AbstractModeWidget(frontend, parent) 0020 { 0021 m_ui = new Ui::ComparisonPracticeWidget(); 0022 m_ui->setupUi(this); 0023 0024 connect(m_ui->absoluteEdit, &QLineEdit::returnPressed, this, &ComparisonModeWidget::nextComparisonForm); 0025 connect(m_ui->comparativeEdit, &QLineEdit::returnPressed, this, &ComparisonModeWidget::nextComparisonForm); 0026 connect(m_ui->superlativeEdit, &QLineEdit::returnPressed, this, &ComparisonModeWidget::nextComparisonForm); 0027 0028 m_ui->absoluteSolutionLabel->setPalette(m_correctPalette); 0029 m_ui->comparativeSolutionLabel->setPalette(m_correctPalette); 0030 m_ui->superlativeSolutionLabel->setPalette(m_correctPalette); 0031 } 0032 0033 void ComparisonModeWidget::setQuestionFont(const QFont &font) 0034 { 0035 m_ui->questionLabel->setFont(font); 0036 } 0037 0038 void ComparisonModeWidget::setSolutionFont(const QFont &font) 0039 { 0040 m_ui->absoluteSolutionLabel->setFont(font); 0041 m_ui->comparativeSolutionLabel->setFont(font); 0042 m_ui->superlativeSolutionLabel->setFont(font); 0043 m_ui->absoluteEdit->setFont(font); 0044 m_ui->comparativeEdit->setFont(font); 0045 m_ui->superlativeEdit->setFont(font); 0046 } 0047 0048 void ComparisonModeWidget::setQuestion(const QVariant &question) 0049 { 0050 m_ui->questionLabel->setText(question.toString()); 0051 m_ui->absoluteEdit->clear(); 0052 m_ui->comparativeEdit->clear(); 0053 m_ui->superlativeEdit->clear(); 0054 m_ui->absoluteEdit->setPalette(QPalette()); 0055 m_ui->comparativeEdit->setPalette(QPalette()); 0056 m_ui->superlativeEdit->setPalette(QPalette()); 0057 m_ui->absoluteSolutionLabel->clear(); 0058 m_ui->comparativeSolutionLabel->clear(); 0059 m_ui->superlativeSolutionLabel->clear(); 0060 } 0061 0062 void ComparisonModeWidget::showQuestion() 0063 { 0064 QTimer::singleShot(0, m_ui->absoluteEdit, SLOT(setFocus())); 0065 m_ui->feedbackLabel->setText(i18n("Enter the comparison forms.")); 0066 } 0067 0068 void ComparisonModeWidget::setSolution(const QVariant &solution) 0069 { 0070 m_solution = solution.toStringList(); 0071 Q_ASSERT(m_solution.size() == 3); 0072 m_ui->absoluteEdit->setDisabled(m_solution.at(0).isEmpty()); 0073 m_ui->comparativeEdit->setDisabled(m_solution.at(1).isEmpty()); 0074 m_ui->superlativeEdit->setDisabled(m_solution.at(2).isEmpty()); 0075 } 0076 0077 void ComparisonModeWidget::setFeedback(const QVariant &feedback) 0078 { 0079 m_ui->feedbackLabel->setText(feedback.toString()); 0080 } 0081 0082 void ComparisonModeWidget::showSolution() 0083 { 0084 if (m_ui->absoluteEdit->text() == m_solution.at(0)) { 0085 m_ui->absoluteEdit->setPalette(m_correctPalette); 0086 } else { 0087 m_ui->absoluteEdit->setPalette(m_wrongPalette); 0088 m_ui->absoluteSolutionLabel->setText(m_solution.at(0)); 0089 } 0090 if (m_ui->comparativeEdit->text() == m_solution.at(1)) { 0091 m_ui->comparativeEdit->setPalette(m_correctPalette); 0092 } else { 0093 m_ui->comparativeEdit->setPalette(m_wrongPalette); 0094 m_ui->comparativeSolutionLabel->setText(m_solution.at(1)); 0095 } 0096 0097 if (m_ui->superlativeEdit->text() == m_solution.at(2)) { 0098 m_ui->superlativeEdit->setPalette(m_correctPalette); 0099 } else { 0100 m_ui->superlativeEdit->setPalette(m_wrongPalette); 0101 m_ui->superlativeSolutionLabel->setText(m_solution.at(2)); 0102 } 0103 } 0104 0105 QVariant ComparisonModeWidget::userInput() 0106 { 0107 QStringList answers; 0108 answers.append(m_ui->absoluteEdit->text()); 0109 answers.append(m_ui->comparativeEdit->text()); 0110 answers.append(m_ui->superlativeEdit->text()); 0111 return answers; 0112 } 0113 0114 void ComparisonModeWidget::setHint(const QVariant & /*hint*/) 0115 { 0116 } 0117 0118 void ComparisonModeWidget::nextComparisonForm() 0119 { 0120 if (m_ui->absoluteEdit->hasFocus()) { 0121 m_ui->comparativeEdit->setFocus(); 0122 } else if (m_ui->comparativeEdit->hasFocus()) { 0123 m_ui->superlativeEdit->setFocus(); 0124 } else { 0125 Q_EMIT continueAction(); 0126 } 0127 } 0128 0129 void ComparisonModeWidget::setQuestionPronunciation(const QString & /*pronunciationText*/) 0130 { 0131 } 0132 0133 void ComparisonModeWidget::setSolutionPronunciation(const QString & /*pronunciationText*/) 0134 { 0135 } 0136 0137 void ComparisonModeWidget::setQuestionSound(const QUrl & /*soundUrl*/) 0138 { 0139 } 0140 0141 void ComparisonModeWidget::setSolutionSound(const QUrl & /*soundUrl*/) 0142 { 0143 }