Rev 309 | Blame | Compare with Previous | Last modification | View Log | RSS feed
#include "qmdialogchangeteamnumber.h"#include "ui_qmdialogchangeteamnumber.h"#include "mainwindow.h"#include <QPushButton>QmDialogChangeTeamNumber::QmDialogChangeTeamNumber(const QString &title, QWidget *parent) :QDialog(parent),ui(new Ui::QmDialogChangeTeamNumber){ui->setupUi(this);this->setWindowTitle(title);ui->sourceTeam->setMinimum(config.min_team);ui->sourceTeam->setMaximum(config.max_team);ui->sourceTeam->setValue(0);sourceTeam = 0;ui->targetTeam->setMinimum(config.min_team);ui->targetTeam->setMaximum(config.max_team);ui->targetTeam->setValue(0);targetTeam = 0;checkValidOpr(0);// Connect up the signalsconnect(ui->sourceTeam, SIGNAL(valueChanged(int)), this, SLOT(updateSourceName(int)) );connect(ui->targetTeam, SIGNAL(valueChanged(int)), this, SLOT(updateTargetName(int)) );connect(ui->onlyNames, SIGNAL(stateChanged(int)), this, SLOT(checkValidOpr(int)) );connect(ui->onlyTimes, SIGNAL(stateChanged(int)), this, SLOT(checkValidOpr(int)) );}QmDialogChangeTeamNumber::~QmDialogChangeTeamNumber(){delete ui;}/*----------------------------------------------------------------------------** FUNCTION : checkValidOpr**** DESCRIPTION : Check that the operation looks valid. Make** sure that the user has entered some data**----------------------------------------------------------------------------*/bool QmDialogChangeTeamNumber::checkValidOpr(int ignore){bool valid = true;//qDebug("QmDialogChangeTeamNumber::checkValidOpr");// Ensure that the user has entered something//if ( sourceTeam == 0 || targetTeam == 0 ){valid = false;}// Can't move or copy to myself//if ( ui->sourceTeam->value() == ui->targetTeam->value() ){valid = false;}// Can't have both OnlyNames and onlyTimes setif (ui->onlyNames->isChecked() && ui->onlyTimes->isChecked()){valid = false;}ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(valid);return (valid);}/*----------------------------------------------------------------------------** FUNCTION : updateSourceName**** DESCRIPTION : This method is wired to the team number control** It will read in the team data and display it**----------------------------------------------------------------------------*/void QmDialogChangeTeamNumber::updateSourceName(int team){sourceTeam = team;g_record( team, &team_buf_source );ui->sourceName->setText( team_buf_source.name );checkValidOpr(0);}void QmDialogChangeTeamNumber::updateTargetName(int team){targetTeam = team;g_record( team, &team_buf_target );ui->targetName->setText( team_buf_target.name );checkValidOpr(0);}/*----------------------------------------------------------------------------** FUNCTION : accept**** DESCRIPTION : Overide the QDialogs own function and do the** actual processing.**** Assumes that team records have been read in****----------------------------------------------------------------------------*/void QmDialogChangeTeamNumber::accept (){// Working storeteam_type team_buf_work;//qDebug("QmDialogChangeTeamNumber::accept");//// Should not get here, but just in case//if (!checkValidOpr(0)){return;}//// Determine the mode of operation// Write out the target team data// We always write a target//if (ui->onlyNames->isChecked() ){memcpy(&team_buf_work, &team_buf_source, sizeof(team_buf_work));memcpy(&team_buf_work.leg, &team_buf_target.leg, sizeof(team_buf_work.leg));//qDebug("QmDialogChangeTeamNumber:: Copy data: source, target.leg");}else if( ui->onlyTimes->isChecked() ){memcpy(&team_buf_work, &team_buf_target, sizeof(team_buf_work));memcpy(&team_buf_work.leg, &team_buf_source.leg, sizeof(team_buf_work.leg));//qDebug("QmDialogChangeTeamNumber:: Copy data: target, source.leg");}else{memcpy(&team_buf_work, &team_buf_source, sizeof(team_buf_work));//qDebug("QmDialogChangeTeamNumber:: Copy data: source, source.leg");}put_team_record(ui->targetTeam->value(), &team_buf_work );//// Write out the source team - if swapping//if (ui->swapMode->isChecked()){MainWindow::showMessage(QString("Swap teams %1 <-> %2").arg(ui->sourceTeam->value()).arg(ui->targetTeam->value()));if (ui->onlyNames->isChecked() ){memcpy(&team_buf_work, &team_buf_target, sizeof(team_buf_work));memcpy(&team_buf_work.leg, &team_buf_source.leg, sizeof(team_buf_work.leg));//qDebug("QmDialogChangeTeamNumber:: Swap data: target, source.leg");}else if( ui->onlyTimes->isChecked() ){memcpy(&team_buf_work, &team_buf_source, sizeof(team_buf_work));memcpy(&team_buf_work.leg, &team_buf_target.leg, sizeof(team_buf_work.leg));//qDebug("QmDialogChangeTeamNumber:: Swap data: source, target.leg");}else{memcpy(&team_buf_work, &team_buf_target, sizeof(team_buf_work));//qDebug("QmDialogChangeTeamNumber:: Swap data: target");}put_team_record(ui->sourceTeam->value(), &team_buf_work );}// Move Mode// Have already written the target// Need to delete parts of the source//if (ui->moveMode->isChecked()){MainWindow::showMessage(QString("Move team %1 -> %2").arg(ui->sourceTeam->value()).arg(ui->targetTeam->value()));if (ui->onlyNames->isChecked() ){clr_team( ui->sourceTeam->value(), &team_buf_work );memcpy(&team_buf_work.leg, &team_buf_source.leg, sizeof(team_buf_work.leg));memcpy(&team_buf_source, &team_buf_work, sizeof(team_buf_work));//qDebug("QmDialogChangeTeamNumber:: Erase data: source, copy target.leg");}else if( ui->onlyTimes->isChecked() ){memset(&team_buf_source.leg,0,sizeof(team_buf_source.leg));//qDebug("QmDialogChangeTeamNumber:: Erase data: source.leg");}else{clr_team( ui->sourceTeam->value(), &team_buf_source );//qDebug("QmDialogChangeTeamNumber:: Erase data: source");}put_team_record(ui->sourceTeam->value(), &team_buf_source );MainWindow::showMessage(QString("Move team %1 -> %2").arg(ui->sourceTeam->value()).arg(ui->targetTeam->value()));}if (ui->copyMode->isChecked()){MainWindow::showMessage(QString("Copy team %1 -> %2").arg(ui->sourceTeam->value()).arg(ui->targetTeam->value()));}// All the work has been done// Back to the user - calling the parents function will close the dialog//QDialog::accept();}