File indexing completed on 2024-03-24 03:53:53

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 }
0144 
0145 #include "moc_comparisonmodewidget.cpp"