Subversion Repositories svn1

Rev

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