Rev 181 | Blame | Compare with Previous | Last modification | View Log | RSS feed
#include "qmconfwinners.h"#include "qmconfig.h"#include "ui_qmconfwinners.h"#include "mainwindow.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);ui->tableWidget->setRowCount(MAX_FAME);dirty = true;populating = false;connect(ui->pushButtonSave, SIGNAL(clicked()), this, SLOT(save()) );connect(ui->pushButtonRestore, SIGNAL(clicked()), this, SLOT(cancel()) );connect(ui->tableWidget, SIGNAL(cellChanged(int,int)), this, SLOT(changed()));populate();}QmConfWinners::~QmConfWinners(){delete ui;}void QmConfWinners::populate(void){populating = true;for ( int ii = 0; ii < MAX_FAME; ii++){ui->tableWidget->setItem(ii, 0, new QTableWidgetItem(config.hall_fame[ii] ));}populating = false;updateChanged(false);}void QmConfWinners::save(void){/*** 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++;// Sanity Checktry{MainWindow::showMessage( "Saving Config");for( int i = newcfg.num_fame; i < MAX_FAME; i++ )if( newcfg.hall_fame[i][0] ){throw ( "Configuration error: Missing Fame name. Gaps not allowed" );}config = newcfg;config.write_config();updateChanged(false);}catch ( const char * str){MainWindow::showMessage(str);}}void QmConfWinners::cancel(void){populate();}void QmConfWinners::changed(void){if ( populating )return;updateChanged(true);}void QmConfWinners::updateChanged(bool newDirty){if (newDirty != dirty){dirty = newDirty;if (dirty){ui->Changed->setVisible(true);ui->pushButtonSave->setEnabled(true);ui->pushButtonSave->setStyleSheet("background-color: rgb(255, 0, 0);");}else{ui->Changed->setVisible(false);ui->pushButtonSave->setEnabled(false);ui->pushButtonSave->setStyleSheet("");}}}void QmConfWinners::changeEvent(QEvent *e){QWidget::changeEvent(e);switch (e->type()) {case QEvent::LanguageChange:ui->retranslateUi(this);break;default:break;}}