void MainWindow::setupSessionViewer() { SVSelectedSessionWidget->setEnabled(false); enableSVTools(); passMarkDetailsTab->setEnabled(false); scoringSystemTab->setEnabled(false); QObject::connect(SVLSListWidget, SIGNAL(itemDoubleClicked(QListWidgetItem *)), this, SLOT(setCurrentSession(QListWidgetItem *))); QObject::connect(SVLASListWidget, SIGNAL(itemDoubleClicked(QListWidgetItem *)), this, SLOT(setCurrentSession(QListWidgetItem *))); QObject::connect(SVLCListWidget, SIGNAL(currentTextChanged(QString)), this, SLOT(setCurrentStudent())); QObject::connect(SVLCListWidget, SIGNAL(itemClicked(QListWidgetItem *)), this, SLOT(showSelectedStudentTab())); QObject::connect(actionDelete_log, SIGNAL(triggered()), this, SLOT(deleteLog())); QObject::connect(actionArchive_session, SIGNAL(triggered()), this, SLOT(archiveSession())); QObject::connect(actionRestore_session, SIGNAL(triggered()), this, SLOT(restoreSession())); QObject::connect(actionCopy_to_archive, SIGNAL(triggered()), this, SLOT(copyToArchive())); QObject::connect(actionCopy_from_archive, SIGNAL(triggered()), this, SLOT(copyFromArchive())); QObject::connect(actionPrint_all, SIGNAL(triggered()), this, SLOT(printAll())); QObject::connect(actionPrint_session_summary, SIGNAL(triggered()), this, SLOT(printSessionSummary())); QObject::connect(SVLSSearchLineEdit, SIGNAL(textChanged(const QString &)), this, SLOT(searchSVLS(const QString &))); QObject::connect(SVSearchDetailsLineEdit, SIGNAL(textChanged(QLineEdit *, const QString &)), SVPassMarkTableWidget, SLOT(filterItems(QLineEdit *, const QString &))); SVLSListWidget->setSortingEnabled(true); SVLASListWidget->setSortingEnabled(true); SVPassMarkTableWidget->horizontalHeader()->setResizeMode(0, QHeaderView::Stretch); SVPassMarkTableWidget->horizontalHeader()->setResizeMode(1, QHeaderView::ResizeToContents); SVPassMarkTableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers); SVScoringSystemTableWidget->horizontalHeader()->setResizeMode(QHeaderView::ResizeToContents); SVScoringSystemTableWidget->verticalHeader()->setResizeMode(QHeaderView::ResizeToContents); SVScoringSystemTableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers); for (int i = 0; i < SVScoringSystemTableWidget->rowCount(); ++i) { SVScoringSystemTableWidget->setItem(i, 1, new QTableWidgetItem); } hideArchive(); }
void MainWindow::enableTools() { togglePrintEnabled(); int i = mainStackedWidget->currentIndex(); setEQToolsEnabled(i == EQ); menuQuestion->setEnabled(i == EQ); menuClass->setEnabled(i == CL); enableSMTools(); enableSVTools(); }
void MainWindow::deleteLog() { if (!SVSelectedSessionWidget->isEnabled()) return; if (current_db_session == NULL) return; switch (QMessageBox::information(this, tr("Delete log"), tr("Are you sure you want to delete the log for session \"%1 - %2\"?").arg(current_db_session->dateTimeToString()).arg(current_db_session->name()), tr("&Delete"), tr("Cancel"), 0, 1)) { case 0: // Delete break; case 1: // Cancel return; break; } SVLogListWidget->clear(); current_db_session->deleteLog(); SVLogGroupBox->setVisible(false); enableSVTools(); setDatabaseModified(); }
void MainWindow::deleteLog() { if (!SVSelectedSessionWidget->isEnabled()) { return; } if (current_db_session == NULL) { return; } switch (QMessageBox::information(this, tr("Delete log"), tr("Are you sure you want to delete the log for session \"%1 - %2\"?").arg(current_db_session->dateTimeToString()).arg(current_db_session->name()), tr("&Delete"), tr("Cancel"), 0, 1)) { case 0: // Delete break; case 1: // Cancel return; break; } SVLogListWidget->clear(); current_db_session->deleteLog(); if (current_db_session->isArchived()) { ArchivedSession * archived_session = current_db_archivedsessions.value(current_db_session->dateTime()); archived_session->setStatus(ArchivedSession::Archive); current_db_queued_sessions.removeAll(archived_session); current_db_queued_sessions.enqueue(archived_session); } SVLogGroupBox->setVisible(false); enableSVTools(); setDatabaseModified(); }
void MainWindow::setCurrentSession(QListWidgetItem * item) { if (item == NULL) { return; } selectSessionItem(item); Session * session; if (item->listWidget() == SVLSListWidget) { session = current_db_sessions.value(item->data(Qt::UserRole).toDateTime()); } else if (item->listWidget() == SVLASListWidget) { session = current_db_archivedsessions.value(item->data(Qt::UserRole).toDateTime()); } else { return; } current_db_session = session; SVSelectedSessionWidget->setEnabled(true); SVNameLabel->setText(session->name()); SVDateTimeLabel->setText(session->dateTimeToString()); SVPassMarkLabel->setText(QString::number(session->passMark().passMark())); SVOverallResultsProgressBar->setMaximum((int)session->maximumScore()); SVOverallResultsProgressBar->setValue(session->score() > 0 ? (int)session->score() : 0); SVOverallResultsLabel->setText(QString("%1%").arg(session->average())); current_db_students.clear(); SVLCListWidget->clear(); SVLogListWidget->clear(); for (int i = 0; i < session->numLogEntries(); ++i) { QListWidgetItem * log_entry = new QListWidgetItem (session->logEntry(i).entryText(), SVLogListWidget); log_entry->setBackground(QBrush(session->logEntry(i).entryBackgroundColour())); log_entry->setForeground(QBrush(session->logEntry(i).entryForegroundColour())); } SVLogGroupBox->setVisible(session->numLogEntries() > 0); for (int i = 0; i < session->numStudents(); ++i) { QListWidgetItem * item = new QListWidgetItem(session->student(i)->name(), SVLCListWidget); current_db_students.insert(item, session->student(i)); if (session->student(i)->passed()) { item->setBackground(QBrush(QColor(197, 255, 120))); } else { item->setBackground(QBrush(QColor(204, 163, 0))); } item->setForeground(QBrush(QColor(0, 0, 0))); } SVPassMarkTableWidget->clearContents(); SVPassMarkTableWidget->verticalHeader()->hide(); if (session->passMark().count() > 0) { passMarkDetailsTab->setEnabled(true); QTableWidgetItem * item; SVPassMarkTableWidget->setRowCount(session->passMark().count()); for (int i = 0; i < session->passMark().count(); ++i) { if (session->passMark().condition(i) < 0 || session->passMark().condition(i) >= current_db_f.size()) { continue; } item = new QTableWidgetItem(QString("%1 - %2").arg(session->passMark().condition(i) + 1).arg(current_db_f[session->passMark().condition(i)])); item->setBackground(QBrush(backgroundColourForFlag(session->passMark().condition(i)))); item->setForeground(QBrush(foregroundColourForFlag(session->passMark().condition(i)))); SVPassMarkTableWidget->setItem(i, 0, item); item = new QTableWidgetItem(QString::number(session->passMark().value(i))); SVPassMarkTableWidget->setItem(i, 1, item); SVPassMarkTableWidget->setRowHeight(i, 16); } SVPassMarkTableWidget->filterItems(SVSearchDetailsLineEdit, SVSearchDetailsLineEdit->text()); SVStudentTabWidget->setCurrentIndex(1); } else { passMarkDetailsTab->setEnabled(false); SVStudentTabWidget->setCurrentIndex(0); } selectedStudentTab->setEnabled(false); scoringSystemTab->setEnabled(true); SVScoringSystemTableWidget->item(0, 1)->setText(session->scoringSystem().allowIncompleteAnswers ? tr("allowed") : tr("disallowed")); for (int i = 0, n = 0; i < 3; ++i, n += 3) { SVScoringSystemTableWidget->item(n + 1, 1)->setText(QString::number(session->scoringSystem().correctAnswer[i])); SVScoringSystemTableWidget->item(n + 2, 1)->setText(QString::number(session->scoringSystem().incorrectAnswer[i])); SVScoringSystemTableWidget->item(n + 3, 1)->setText(QString::number(session->scoringSystem().missingAnswer[i])); } SVLCGroupBox->setEnabled(true); SVLogGroupBox->setEnabled(true); togglePrintEnabled(); enableSVTools(); }