Subversion Repositories svn1

Rev

Rev 105 | Rev 108 | 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"
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);
65
    }
66
 
67
 
68
    /*
69
     **  Now do the Class definitions
70
     */
71
    for( int i = 0; i < MAX_CLASS; i++ )
72
    {
73
        compact( newcfg.team_class[i].abr );
74
        compact( newcfg.team_class[i].full_name );
75
    }
76
 
77
    for( int i = 0; i < MAX_CLASS; i++ )
78
    {
79
        if( ( newcfg.team_class[i].abr[0] == '\0' ) != ( newcfg.team_class[i].full_name[0] == '\0' ) )
80
        {
81
            printf( "Configuration error. Class without description\n" );
82
            error++;
83
        }
84
        if( newcfg.team_class[i].abr[0] != '\0' && newcfg.team_class[i].start < 0L )
85
        {
86
            printf( "Configuration error. Bad start time on class\n" );
87
            error++;
88
        }
89
    }
90
 
91
    newcfg.num_class = 0;
92
    for( int i = 0; i < MAX_CLASS; i++ )
93
        if( newcfg.team_class[i].full_name[0] )
94
            newcfg.num_class++;
95
 
96
    for( int i = newcfg.num_class; i < MAX_CLASS; i++ )
97
        if( newcfg.team_class[i].full_name[0] )
98
        {
99
            printf( "Configuration error: Missing Class name. Gaps not allowed\n" );
100
            error++;
101
        }
102
 
103
    if( newcfg.num_class == 0 )
104
    {
105
        printf( "Error: No categories defined\n" );
106
        error++;
107
    }
108
 
109
    newcfg.nonequestrian_class = lookup_class( newcfg.nonequestrian_class_abr, &newcfg );
110
    if( newcfg.equestrian_leg && newcfg.nonequestrian_class == 0 )
111
        printf( "WARNING: Non-equestrian class not found\n" );
112
 
113
    if ( error == 0 )
114
    {
115
        config = newcfg;
116
        wt_config();
117
    }
118
 
99 david 119
}
120
 
104 - 121
void QmConfClass::cancel(void)
99 david 122
{
123
    populate();
124
}
125
 
104 - 126
QmConfClass::~QmConfClass()
95 david 127
{
128
    delete ui;
129
}
130
 
104 - 131
void QmConfClass::changeEvent(QEvent *e)
95 david 132
{
133
    QWidget::changeEvent(e);
134
    switch (e->type()) {
135
    case QEvent::LanguageChange:
136
        ui->retranslateUi(this);
137
        break;
138
    default:
139
        break;
140
    }
141
}