Subversion Repositories svn1

Rev

Rev 386 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
302 david 1
#include "qmdialogchangeteamnumber.h"
2
#include "ui_qmdialogchangeteamnumber.h"
303 david 3
#include "mainwindow.h"
304 david 4
#include <QPushButton>
302 david 5
 
6
 
7
QmDialogChangeTeamNumber::QmDialogChangeTeamNumber(const QString &title, QWidget *parent) :
8
    QDialog(parent),
9
    ui(new Ui::QmDialogChangeTeamNumber)
10
{
11
    ui->setupUi(this);
12
    this->setWindowTitle(title);
13
 
14
    ui->sourceTeam->setMinimum(config.min_team);
15
    ui->sourceTeam->setMaximum(config.max_team);
16
    ui->sourceTeam->setValue(0);
303 david 17
    sourceTeam = 0;
302 david 18
 
19
    ui->targetTeam->setMinimum(config.min_team);
20
    ui->targetTeam->setMaximum(config.max_team);
21
    ui->targetTeam->setValue(0);
303 david 22
    targetTeam = 0;
302 david 23
 
304 david 24
    checkValidOpr(0);
303 david 25
 
26
    // Connect up the signals
27
    connect(ui->sourceTeam, SIGNAL(valueChanged(int)), this, SLOT(updateSourceName(int)) );
28
    connect(ui->targetTeam, SIGNAL(valueChanged(int)), this, SLOT(updateTargetName(int)) );
304 david 29
    connect(ui->onlyNames, SIGNAL(stateChanged(int)), this, SLOT(checkValidOpr(int)) );
30
    connect(ui->onlyTimes, SIGNAL(stateChanged(int)), this, SLOT(checkValidOpr(int)) );
302 david 31
}
32
 
33
QmDialogChangeTeamNumber::~QmDialogChangeTeamNumber()
34
{
35
    delete ui;
36
}
37
 
304 david 38
/*----------------------------------------------------------------------------
39
** FUNCTION           : checkValidOpr
40
**
41
** DESCRIPTION        : Check that the operation looks valid. Make
42
**                      sure that the user has entered some data
43
**
44
----------------------------------------------------------------------------*/
45
 
46
bool QmDialogChangeTeamNumber::checkValidOpr(int ignore)
302 david 47
{
303 david 48
    bool valid = true;
390 david 49
    Q_UNUSED(ignore);
50
 
305 david 51
    //qDebug("QmDialogChangeTeamNumber::checkValidOpr");
302 david 52
 
303 david 53
    //  Ensure that the user has entered something
54
    //
55
    if ( sourceTeam == 0 || targetTeam == 0 )
56
    {
57
        valid = false;
58
    }
302 david 59
 
60
    //  Can't move or copy to myself
61
    //
62
    if ( ui->sourceTeam->value() == ui->targetTeam->value() )
63
    {
303 david 64
        valid = false;
65
    }
66
 
304 david 67
    // Can't have both OnlyNames and onlyTimes set
68
    if (ui->onlyNames->isChecked() && ui->onlyTimes->isChecked())
69
    {
70
        valid = false;
71
    }
72
 
303 david 73
    ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(valid);
74
    return (valid);
75
}
76
 
304 david 77
/*----------------------------------------------------------------------------
78
** FUNCTION           : updateSourceName 
79
**
80
** DESCRIPTION        : This method is wired to the team number control
81
**                      It will read in the team data and display it
82
**
83
----------------------------------------------------------------------------*/
84
 
303 david 85
void QmDialogChangeTeamNumber::updateSourceName(int team)
86
{
87
    sourceTeam = team;
88
    g_record( team, &team_buf_source );
89
    ui->sourceName->setText( team_buf_source.name );
304 david 90
    checkValidOpr(0);
303 david 91
}
92
 
93
void QmDialogChangeTeamNumber::updateTargetName(int team)
94
{
95
    targetTeam = team;
96
    g_record( team, &team_buf_target );
97
    ui->targetName->setText( team_buf_target.name );
304 david 98
    checkValidOpr(0);
303 david 99
}
100
 
304 david 101
/*----------------------------------------------------------------------------
102
** FUNCTION           : accept 
103
**
104
** DESCRIPTION        : Overide the QDialogs own function and do the
105
**                      actual processing.
106
** 
107
**                      Assumes that team records have been read in
108
**
109
**
110
----------------------------------------------------------------------------*/
111
 
303 david 112
void QmDialogChangeTeamNumber::accept ()
113
{
304 david 114
    //  Working store
115
    team_type team_buf_work;
116
 
303 david 117
    //qDebug("QmDialogChangeTeamNumber::accept");
118
 
119
    //
120
    //  Should  not get here, but just in case
121
    //
304 david 122
    if (!checkValidOpr(0))
303 david 123
    {
302 david 124
        return;
125
    }
126
 
127
    //
304 david 128
    //  Determine the mode of operation
129
    //      Write out the target team data
130
    //      We always write a target
302 david 131
    //
304 david 132
    if (ui->onlyNames->isChecked() )
133
    {
134
        memcpy(&team_buf_work, &team_buf_source, sizeof(team_buf_work));
135
        memcpy(&team_buf_work.leg, &team_buf_target.leg, sizeof(team_buf_work.leg));
136
        //qDebug("QmDialogChangeTeamNumber:: Copy data: source, target.leg");
137
    }
138
    else if( ui->onlyTimes->isChecked() )
139
    {
140
        memcpy(&team_buf_work, &team_buf_target, sizeof(team_buf_work));
141
        memcpy(&team_buf_work.leg, &team_buf_source.leg, sizeof(team_buf_work.leg));
142
        //qDebug("QmDialogChangeTeamNumber:: Copy data: target, source.leg");
143
    }
144
    else
145
    {
146
        memcpy(&team_buf_work, &team_buf_source, sizeof(team_buf_work));
147
        //qDebug("QmDialogChangeTeamNumber:: Copy data: source, source.leg");
148
    }
149
    put_team_record(ui->targetTeam->value(), &team_buf_work );
302 david 150
 
304 david 151
    //
152
    //  Write out the source team - if swapping
153
    //
302 david 154
    if (ui->swapMode->isChecked())
155
    {
303 david 156
        MainWindow::showMessage(QString("Swap teams %1 <-> %2").arg(ui->sourceTeam->value()).arg(ui->targetTeam->value()));
304 david 157
        if (ui->onlyNames->isChecked() )
158
        {
159
            memcpy(&team_buf_work, &team_buf_target, sizeof(team_buf_work));
160
            memcpy(&team_buf_work.leg, &team_buf_source.leg, sizeof(team_buf_work.leg));
161
            //qDebug("QmDialogChangeTeamNumber:: Swap data: target, source.leg");
162
        }
163
        else if( ui->onlyTimes->isChecked() )
164
        {
165
            memcpy(&team_buf_work, &team_buf_source, sizeof(team_buf_work));
166
            memcpy(&team_buf_work.leg, &team_buf_target.leg, sizeof(team_buf_work.leg));
167
            //qDebug("QmDialogChangeTeamNumber:: Swap data: source, target.leg");
168
        }
169
        else
170
        {
171
            memcpy(&team_buf_work, &team_buf_target, sizeof(team_buf_work));
172
            //qDebug("QmDialogChangeTeamNumber:: Swap data: target");
173
        }
174
        put_team_record(ui->sourceTeam->value(), &team_buf_work );
175
    }
303 david 176
 
304 david 177
    //  Move Mode
178
    //      Have already written the target
179
    //      Need to delete parts of the source
180
    //
181
    if (ui->moveMode->isChecked())
302 david 182
    {
304 david 183
        MainWindow::showMessage(QString("Move team %1 -> %2").arg(ui->sourceTeam->value()).arg(ui->targetTeam->value()));
184
        if (ui->onlyNames->isChecked() )
302 david 185
        {
304 david 186
            clr_team( ui->sourceTeam->value(), &team_buf_work );
187
            memcpy(&team_buf_work.leg, &team_buf_source.leg, sizeof(team_buf_work.leg));
188
            memcpy(&team_buf_source, &team_buf_work, sizeof(team_buf_work));
189
            //qDebug("QmDialogChangeTeamNumber:: Erase data: source, copy target.leg");
302 david 190
        }
304 david 191
        else if( ui->onlyTimes->isChecked() )
192
        {
193
            memset(&team_buf_source.leg,0,sizeof(team_buf_source.leg));
194
            //qDebug("QmDialogChangeTeamNumber:: Erase data: source.leg");
195
        }
303 david 196
        else
197
        {
304 david 198
            clr_team( ui->sourceTeam->value(), &team_buf_source );
199
            //qDebug("QmDialogChangeTeamNumber:: Erase data: source");
303 david 200
        }
304 david 201
 
202
        put_team_record(ui->sourceTeam->value(), &team_buf_source );
203
        MainWindow::showMessage(QString("Move team %1 -> %2").arg(ui->sourceTeam->value()).arg(ui->targetTeam->value()));
302 david 204
    }
205
 
304 david 206
    if (ui->copyMode->isChecked())
207
    {
208
        MainWindow::showMessage(QString("Copy team %1 -> %2").arg(ui->sourceTeam->value()).arg(ui->targetTeam->value()));
209
    }
302 david 210
 
304 david 211
 
302 david 212
    //  All the work has been done
303 david 213
    //  Back to the user - calling the parents function will close the dialog
214
    //
302 david 215
    QDialog::accept();
216
}