void Texercises::checkAnswer() { if (!m_checkNow || !m_exam->curQ()->answered()) return; if (m_exam->curQ()->isCorrect()) { m_currentGood++; m_prevMistake++; } else { if (m_currentGood > m_max / 2 && m_prevMistake > m_max / 2) // when there were enough good answers m_currentGood = m_max / 2; // forgive single mistake else m_currentGood = 0; m_prevMistake = 0; // but reset mistake counter, so after next wrong answer whole cycle will be required } if (m_currentGood >= m_max) { /** Show suggestion dialog when amount of proper answers is sufficient. */ TsuggestExam *suggExam = new TsuggestExam(); emit messageDisplayed(); TsuggestExam::Esuggest what = suggExam->suggest(); if (suggExam->result() == QDialog::Accepted) { switch(what) { case TsuggestExam::e_readyToExam: m_readyToExam = true; break; case TsuggestExam::e_forAmoment: m_currentGood = 0; break; case TsuggestExam::e_notThisTime: m_checkNow = false; break; case TsuggestExam::e_neverEver: m_checkInFuture = false; m_checkNow = false; break; } } else m_currentGood = 0; delete suggExam; emit messageClosed(m_readyToExam); } }
void StatusNotifierItem::notificationClosed(uint dbusid, uint reason) { Q_UNUSED(reason) _lastNotificationsDBusId = 0; emit messageClosed(_notificationsIdMap.take(dbusid)); }