Subversion Repositories svn1

Rev

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