Subversion Repositories svn1

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
95 david 1
#include "qmconfclass.h"
2
#include "ui_qmconfclass.h"
99 david 3
#include    "consts.h"
4
#include    "structs.h"
5
#include    "proto.h"
95 david 6
 
99 david 7
#include "QTableWidgetItem"
107 david 8
#include "spinboxdelegate.h"
9
#include "timedelegate.h"
99 david 10
 
104 - 11
QmConfClass::QmConfClass(QWidget *parent) :
95 david 12
    QWidget(parent),
104 - 13
    ui(new Ui::QmConfClass)
95 david 14
{
15
    ui->setupUi(this);
99 david 16
    connect(ui->buttonBox, SIGNAL(accepted()), this, SLOT(save()) );
17
    connect(ui->buttonBox, SIGNAL(rejected()), this, SLOT(cancel()) );
18
 
19
    ui->tableWidget->setRowCount(MAX_CLASS);
107 david 20
 
21
    /*
22
    **  Setup delegated for specialised editing
23
    */
24
    ui->tableWidget->setItemDelegateForColumn(2, new timeDelegate());
25
 
99 david 26
    populate();
95 david 27
}
28
 
104 - 29
void QmConfClass::populate(void)
99 david 30
{
31
    for ( int ii = 0; ii < MAX_CLASS; ii++)
32
    {
105 - 33
        QTableWidgetItem *item;
34
        item = new QTableWidgetItem(config.team_class[ii].abr);
35
        ui->tableWidget->setItem(ii, 0, item );
36
 
37
        item = new QTableWidgetItem(config.team_class[ii].full_name );
38
        ui->tableWidget->setItem(ii, 1, item);
107 david 39
 
40
        item = new QTableWidgetItem();
41
        item->setData(Qt::EditRole,QTime().addSecs(config.team_class[ii].start) );
42
        ui->tableWidget->setItem(ii, 2, item);
99 david 43
    }
44
}
45
 
104 - 46
void QmConfClass::save(void)
99 david 47
{
104 - 48
    int error = 0;
99 david 49
 
104 - 50
    /*
51
    **    Copy original data
52
    */
53
    MARA_CFG    newcfg = config;
54
 
55
    /*
56
    **  Extract the data from the Widgets
57
    */
58
    for ( int ii = 0; ii < MAX_CLASS; ii++)
59
    {
60
        QTableWidgetItem *item = ui->tableWidget->item ( ii, 0 );
61
        strncpy(newcfg.team_class[ii].abr, qPrintable(item->text()), sizeof(newcfg.team_class[ii].abr)-1);
62
 
63
        item = ui->tableWidget->item ( ii, 1 );
64
        strncpy(newcfg.team_class[ii].full_name, qPrintable(item->text()), sizeof(newcfg.team_class[ii].full_name)-1);
108 david 65
 
66
        item = ui->tableWidget->item( ii, 2 );
67
        newcfg.team_class[ii].start = QTime(0,0,0).secsTo(item->data(Qt::EditRole).toTime());
104 - 68
    }
69
 
70
 
71
    /*
72
     **  Now do the Class definitions
73
     */
74
    for( int i = 0; i < MAX_CLASS; i++ )
75
    {
76
        compact( newcfg.team_class[i].abr );
77
        compact( newcfg.team_class[i].full_name );
78
    }
79
 
80
    for( int i = 0; i < MAX_CLASS; i++ )
81
    {
82
        if( ( newcfg.team_class[i].abr[0] == '\0' ) != ( newcfg.team_class[i].full_name[0] == '\0' ) )
83
        {
84
            printf( "Configuration error. Class without description\n" );
85
            error++;
86
        }
87
        if( newcfg.team_class[i].abr[0] != '\0' && newcfg.team_class[i].start < 0L )
88
        {
89
            printf( "Configuration error. Bad start time on class\n" );
90
            error++;
91
        }
92
    }
93
 
94
    newcfg.num_class = 0;
95
    for( int i = 0; i < MAX_CLASS; i++ )
96
        if( newcfg.team_class[i].full_name[0] )
97
            newcfg.num_class++;
98
 
99
    for( int i = newcfg.num_class; i < MAX_CLASS; i++ )
100
        if( newcfg.team_class[i].full_name[0] )
101
        {
102
            printf( "Configuration error: Missing Class name. Gaps not allowed\n" );
103
            error++;
104
        }
105
 
106
    if( newcfg.num_class == 0 )
107
    {
108
        printf( "Error: No categories defined\n" );
109
        error++;
110
    }
111
 
112
    newcfg.nonequestrian_class = lookup_class( newcfg.nonequestrian_class_abr, &newcfg );
113
    if( newcfg.equestrian_leg && newcfg.nonequestrian_class == 0 )
114
        printf( "WARNING: Non-equestrian class not found\n" );
115
 
116
    if ( error == 0 )
117
    {
118
        config = newcfg;
119
        wt_config();
120
    }
121
 
99 david 122
}
123
 
104 - 124
void QmConfClass::cancel(void)
99 david 125
{
126
    populate();
127
}
128
 
104 - 129
QmConfClass::~QmConfClass()
95 david 130
{
131
    delete ui;
132
}
133
 
104 - 134
void QmConfClass::changeEvent(QEvent *e)
95 david 135
{
136
    QWidget::changeEvent(e);
137
    switch (e->type()) {
138
    case QEvent::LanguageChange:
139
        ui->retranslateUi(this);
140
        break;
141
    default:
142
        break;
143
    }
144
}