Rev 105 | Rev 108 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
#include "qmconfclass.h"#include "ui_qmconfclass.h"#include "consts.h"#include "structs.h"#include "proto.h"#include "QTableWidgetItem"#include "spinboxdelegate.h"#include "timedelegate.h"QmConfClass::QmConfClass(QWidget *parent) :QWidget(parent),ui(new Ui::QmConfClass){ui->setupUi(this);connect(ui->buttonBox, SIGNAL(accepted()), this, SLOT(save()) );connect(ui->buttonBox, SIGNAL(rejected()), this, SLOT(cancel()) );ui->tableWidget->setRowCount(MAX_CLASS);/*** Setup delegated for specialised editing*/ui->tableWidget->setItemDelegateForColumn(2, new timeDelegate());populate();}void QmConfClass::populate(void){for ( int ii = 0; ii < MAX_CLASS; ii++){QTableWidgetItem *item;item = new QTableWidgetItem(config.team_class[ii].abr);ui->tableWidget->setItem(ii, 0, item );item = new QTableWidgetItem(config.team_class[ii].full_name );ui->tableWidget->setItem(ii, 1, item);item = new QTableWidgetItem();item->setData(Qt::EditRole,QTime().addSecs(config.team_class[ii].start) );ui->tableWidget->setItem(ii, 2, item);}}void QmConfClass::save(void){int error = 0;/*** Copy original data*/MARA_CFG newcfg = config;/*** Extract the data from the Widgets*/for ( int ii = 0; ii < MAX_CLASS; ii++){QTableWidgetItem *item = ui->tableWidget->item ( ii, 0 );strncpy(newcfg.team_class[ii].abr, qPrintable(item->text()), sizeof(newcfg.team_class[ii].abr)-1);item = ui->tableWidget->item ( ii, 1 );strncpy(newcfg.team_class[ii].full_name, qPrintable(item->text()), sizeof(newcfg.team_class[ii].full_name)-1);}/*** Now do the Class definitions*/for( int i = 0; i < MAX_CLASS; i++ ){compact( newcfg.team_class[i].abr );compact( newcfg.team_class[i].full_name );}for( int i = 0; i < MAX_CLASS; i++ ){if( ( newcfg.team_class[i].abr[0] == '\0' ) != ( newcfg.team_class[i].full_name[0] == '\0' ) ){printf( "Configuration error. Class without description\n" );error++;}if( newcfg.team_class[i].abr[0] != '\0' && newcfg.team_class[i].start < 0L ){printf( "Configuration error. Bad start time on class\n" );error++;}}newcfg.num_class = 0;for( int i = 0; i < MAX_CLASS; i++ )if( newcfg.team_class[i].full_name[0] )newcfg.num_class++;for( int i = newcfg.num_class; i < MAX_CLASS; i++ )if( newcfg.team_class[i].full_name[0] ){printf( "Configuration error: Missing Class name. Gaps not allowed\n" );error++;}if( newcfg.num_class == 0 ){printf( "Error: No categories defined\n" );error++;}newcfg.nonequestrian_class = lookup_class( newcfg.nonequestrian_class_abr, &newcfg );if( newcfg.equestrian_leg && newcfg.nonequestrian_class == 0 )printf( "WARNING: Non-equestrian class not found\n" );if ( error == 0 ){config = newcfg;wt_config();}}void QmConfClass::cancel(void){populate();}QmConfClass::~QmConfClass(){delete ui;}void QmConfClass::changeEvent(QEvent *e){QWidget::changeEvent(e);switch (e->type()) {case QEvent::LanguageChange:ui->retranslateUi(this);break;default:break;}}