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();
}
Exemple #2
0
void MainWindow::enableTools()
{
    togglePrintEnabled();
    int i = mainStackedWidget->currentIndex();
    setEQToolsEnabled(i == EQ);
    menuQuestion->setEnabled(i == EQ);
    menuClass->setEnabled(i == CL);
    enableSMTools();
    enableSVTools();
}
Exemple #3
0
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();
}