Subversion Repositories svn1-original

Rev

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

Rev Author Line No. Line
138 david 1
#include "qmdisqualified.h"
2
#include "ui_qmdisqualified.h"
3
 
4
#include    "consts.h"
5
#include    "structs.h"
6
#include    "proto.h"
7
 
8
qmDisqualified::qmDisqualified(QWidget *parent) :
9
    QWidget(parent),
10
    ui(new Ui::qmDisqualified)
11
{
12
    inPopulate = FALSE;
13
    ui->setupUi(this);
14
 
15
    connect(ui->buttonBox, SIGNAL(accepted()), this, SLOT(save()) );
16
    connect(ui->buttonBox, SIGNAL(rejected()), this, SLOT(cancel()) );
17
    connect(ui->loadButton, SIGNAL(released()), this, SLOT(populate()) );
18
    connect(ui->tableWidget, SIGNAL(itemChanged(QTableWidgetItem*)), this, SLOT(tableItemChanged(QTableWidgetItem *)));
19
}
20
 
21
qmDisqualified::~qmDisqualified()
22
{
23
    delete ui;
24
}
25
 
26
void qmDisqualified::save(void)
27
{
140 - 28
    team_type team_buf;
29
    for ( int ii = 0; ii < ui->tableWidget->rowCount(); ii++)
30
    {
31
        QTableWidgetItem *item;
32
        item = ui->tableWidget->item(ii, 0);
33
        if ( item )
34
        {
35
            if ( item->data(Qt::UserRole + 1).toBool() )
36
            {
37
                int team = item->data(Qt::EditRole).toInt();
38
                if ( team )
39
                {
40
                    qDebug("Detected change:%d", team);
41
                    g_record( team, &team_buf );
42
 
43
                    item = ui->tableWidget->item(ii,2);
44
                    team_buf.flags.disqualified =  ( item->checkState () == Qt::Checked);
45
 
46
                    item = ui->tableWidget->item(ii,3);
47
                    team_buf.flags.non_equestrian =  ( item->checkState () == Qt::Checked);
48
//TODO: If nonEquestrian, then also disqualified ??  Original is.
49
 
50
                    item = ui->tableWidget->item(ii,4);
51
                    team_buf.flags.valid =  ( item->checkState () == Qt::Checked);
52
 
53
                    put_team_record( team, &team_buf );
54
                }
55
            }
56
        }
57
    }
58
    populate();
59
 
138 david 60
}
61
 
62
void qmDisqualified::cancel(void)
63
{
64
    populate();
65
}
66
 
67
void qmDisqualified::populate(void)
68
{
69
    team_type team_buf;
70
    inPopulate = TRUE;
71
 
72
    /*
73
    ** Delete existing entries in the table
74
    */
75
    ui->tableWidget->clearContents();
76
    ui->tableWidget->setRowCount(config.max_team);
140 - 77
    ui->tableWidget->setColumnCount(5);
138 david 78
    ui->tableWidget->setSortingEnabled(FALSE);
79
 
80
    /*
81
    ** Scan all the team data
82
    */
83
    for ( int team = config.min_team; team <= config.max_team; team++)
84
    {
85
        ui->tableWidget->hideRow ( team );
86
        if( valid_field( team ) )
87
        {
88
            g_record( team, &team_buf );
140 - 89
            if( team_buf.flags.valid || true )
138 david 90
            {
91
                QTableWidgetItem *item;
92
 
93
                ui->tableWidget->showRow( team );
94
 
95
                item = new QTableWidgetItem(QString::number(team));
140 - 96
                item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
138 david 97
                ui->tableWidget->setItem(team, 0, item );
98
 
99
                item = new QTableWidgetItem(team_buf.name);
140 - 100
                item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
138 david 101
                ui->tableWidget->setItem(team, 1, item );
102
 
103
                item = new QTableWidgetItem("Disq");
104
                item->setCheckState(team_buf.flags.disqualified ? Qt::Checked : Qt::Unchecked);
105
                ui->tableWidget->setItem(team, 2, item );
106
 
107
                item = new QTableWidgetItem("Non Equest");
108
                item->setCheckState(team_buf.flags.non_equestrian ? Qt::Checked : Qt::Unchecked);
109
                ui->tableWidget->setItem(team, 3, item );
140 - 110
 
111
                item = new QTableWidgetItem("Enable");
112
                item->setCheckState(team_buf.flags.valid ? Qt::Checked : Qt::Unchecked);
113
                ui->tableWidget->setItem(team, 4, item );
138 david 114
            }
115
        }
116
    }
140 - 117
    ui->tableWidget->setSortingEnabled(TRUE);
118
    ui->tableWidget->resizeColumnsToContents();
138 david 119
    inPopulate = FALSE;
120
}
121
 
122
void qmDisqualified::tableItemChanged(QTableWidgetItem *item)
123
{
124
    if ( !inPopulate )
125
    {
140 - 126
        if ( item->column() )
127
        {
128
            qDebug ("DataChanged");
129
            item->setData(Qt::BackgroundRole, QBrush(QColor(255,0,0,50)));
130
 
131
            // Mark first item in row to help detect changes
132
            int row = item->row();
133
            item->tableWidget()->item(row,0)->setData(Qt::UserRole + 1, true );
134
        }
138 david 135
    }
136
}