Exemplo n.º 1
0
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);
	}
}
Exemplo n.º 2
0
void StatusNotifierItem::notificationClosed(uint dbusid, uint reason)
{
    Q_UNUSED(reason)
    _lastNotificationsDBusId = 0;
    emit messageClosed(_notificationsIdMap.take(dbusid));
}