Subversion Repositories svn1-original

Rev

Rev 138 | Rev 193 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

#include "qmdisqualified.h"
#include "ui_qmdisqualified.h"

#include    "consts.h"
#include    "structs.h"
#include    "proto.h"

qmDisqualified::qmDisqualified(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::qmDisqualified)
{
    inPopulate = FALSE;
    ui->setupUi(this);

    connect(ui->buttonBox, SIGNAL(accepted()), this, SLOT(save()) );
    connect(ui->buttonBox, SIGNAL(rejected()), this, SLOT(cancel()) );
    connect(ui->loadButton, SIGNAL(released()), this, SLOT(populate()) );
    connect(ui->tableWidget, SIGNAL(itemChanged(QTableWidgetItem*)), this, SLOT(tableItemChanged(QTableWidgetItem *)));
}

qmDisqualified::~qmDisqualified()
{
    delete ui;
}

void qmDisqualified::save(void)
{
    team_type team_buf;
    for ( int ii = 0; ii < ui->tableWidget->rowCount(); ii++)
    {
        QTableWidgetItem *item;
        item = ui->tableWidget->item(ii, 0);
        if ( item )
        {
            if ( item->data(Qt::UserRole + 1).toBool() )
            {
                int team = item->data(Qt::EditRole).toInt();
                if ( team )
                {
                    qDebug("Detected change:%d", team);
                    g_record( team, &team_buf );

                    item = ui->tableWidget->item(ii,2);
                    team_buf.flags.disqualified =  ( item->checkState () == Qt::Checked);

                    item = ui->tableWidget->item(ii,3);
                    team_buf.flags.non_equestrian =  ( item->checkState () == Qt::Checked);
//TODO: If nonEquestrian, then also disqualified ??  Original is.

                    item = ui->tableWidget->item(ii,4);
                    team_buf.flags.valid =  ( item->checkState () == Qt::Checked);

                    put_team_record( team, &team_buf );
                }
            }
        }
    }
    populate();

}

void qmDisqualified::cancel(void)
{
    populate();
}

void qmDisqualified::populate(void)
{
    team_type team_buf;
    inPopulate = TRUE;

    /*
    ** Delete existing entries in the table
    */
    ui->tableWidget->clearContents();
    ui->tableWidget->setRowCount(config.max_team);
    ui->tableWidget->setColumnCount(5);
    ui->tableWidget->setSortingEnabled(FALSE);

    /*
    ** Scan all the team data
    */
    for ( int team = config.min_team; team <= config.max_team; team++)
    {
        ui->tableWidget->hideRow ( team );
        if( valid_field( team ) )
        {
            g_record( team, &team_buf );
            if( team_buf.flags.valid || true )
            {
                QTableWidgetItem *item;

                ui->tableWidget->showRow( team );

                item = new QTableWidgetItem(QString::number(team));
                item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
                ui->tableWidget->setItem(team, 0, item );

                item = new QTableWidgetItem(team_buf.name);
                item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
                ui->tableWidget->setItem(team, 1, item );

                item = new QTableWidgetItem("Disq");
                item->setCheckState(team_buf.flags.disqualified ? Qt::Checked : Qt::Unchecked);
                ui->tableWidget->setItem(team, 2, item );

                item = new QTableWidgetItem("Non Equest");
                item->setCheckState(team_buf.flags.non_equestrian ? Qt::Checked : Qt::Unchecked);
                ui->tableWidget->setItem(team, 3, item );

                item = new QTableWidgetItem("Enable");
                item->setCheckState(team_buf.flags.valid ? Qt::Checked : Qt::Unchecked);
                ui->tableWidget->setItem(team, 4, item );
            }
        }
    }
    ui->tableWidget->setSortingEnabled(TRUE);
    ui->tableWidget->resizeColumnsToContents();
    inPopulate = FALSE;
}

void qmDisqualified::tableItemChanged(QTableWidgetItem *item)
{
    if ( !inPopulate )
    {
        if ( item->column() )
        {
            qDebug ("DataChanged");
            item->setData(Qt::BackgroundRole, QBrush(QColor(255,0,0,50)));

            // Mark first item in row to help detect changes
            int row = item->row();
            item->tableWidget()->item(row,0)->setData(Qt::UserRole + 1, true );
        }
    }
}