Subversion Repositories svn1

Rev

Rev 174 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

#include "qmconfwinners.h"
#include "qmconfig.h"
#include "ui_qmconfwinners.h"

#include    "consts.h"
#include    "structs.h"
#include    "proto.h"

#include "QTableWidgetItem"

QmConfWinners::QmConfWinners(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::QmConfWinners)
{
    ui->setupUi(this);
    connect(ui->buttonBox, SIGNAL(accepted()), this, SLOT(save()) );
    connect(ui->buttonBox, SIGNAL(rejected()), this, SLOT(cancel()) );

    ui->tableWidget->setRowCount(MAX_FAME);
    populate();
}

QmConfWinners::~QmConfWinners()
{
    delete ui;
}

void QmConfWinners::populate(void)
{
    for ( int ii = 0; ii < MAX_FAME; ii++)
    {
        ui->tableWidget->setItem(ii, 0, new QTableWidgetItem(config.hall_fame[ii] ));
    }
}

void QmConfWinners::save(void)
{
    int error = 0;

    /*
    **    Copy original data
    */
     QmConfig newcfg(config);

    /*
    **  Extract the data from the Widgets
    */
    for ( int ii = 0; ii < MAX_FAME; ii++)
    {
        QTableWidgetItem *item = ui->tableWidget->item ( ii, 0 );
        if ( item )
        {
            strncpy(newcfg.hall_fame[ii], qPrintable(item->text()), sizeof(newcfg.hall_fame[ii])-1);
        }
    }

    newcfg.num_fame = 0;
    for( int i = 0; i < MAX_FAME; i++ )
        if( newcfg.hall_fame[i][0] )
            newcfg.num_fame++;

    for( int i = newcfg.num_fame; i < MAX_FAME; i++ )
        if( newcfg.hall_fame[i][0] )
        {
            printf( "Configuration error: Missing Fame name. Gaps not allowed\n" );
            error++;
            break;
        }
    
    if ( error == 0 )
    {
        config = newcfg;
        config.write_config();
    }
}

void QmConfWinners::cancel(void)
{
    populate();
}
void QmConfWinners::changeEvent(QEvent *e)
{
    QWidget::changeEvent(e);
    switch (e->type()) {
    case QEvent::LanguageChange:
        ui->retranslateUi(this);
        break;
    default:
        break;
    }
}