Subversion Repositories svn1

Rev

Rev 145 | Rev 151 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
126 david 1
#include "mainwindow.h"
2
#include "ui_mainwindow.h"
3
#include "qmconfigure.h"
4
#include "qmconfclass.h"
5
#include "qmconfwinners.h"
6
#include "qmteamdisplay.h"
7
#include "QMessageBox"
129 david 8
#include "QInputDialog"
130 - 9
#include "QTime"
10
#include "qmdialoglegstarttimes.h"
134 david 11
#include "qmdisqualified.h"
137 - 12
#include "qmdatacheck.h"
144 - 13
#include "qmdialogloadexternalteams.h"
145 - 14
#include "QFileDialog"
15
#include "QDir"
126 david 16
 
17
#include    "consts.h"
18
#include    "structs.h"
19
#include    "proto.h"
20
 
21
MainWindow *mw = NULL;
22
 
23
MainWindow::MainWindow(QWidget *parent) :
24
    QMainWindow(parent),
25
    ui(new Ui::MainWindow)
26
{
27
    ui->setupUi(this);
28
    mw = this;
29
 
144 - 30
    ui->tabWidget->addTab( new QmConfigure,    "Configure");
31
    ui->tabWidget->addTab( new QmConfClass,    "Class");
32
    ui->tabWidget->addTab( new QmConfWinners,  "Winners");
33
    ui->tabWidget->addTab( new qmTeamDisplay,  "Team Data");
134 david 34
    ui->tabWidget->addTab( new qmDisqualified, "Disqual");
144 - 35
    ui->tabWidget->addTab( new qmDataCheck,    "Data Check");
126 david 36
 
140 david 37
    QMenu *m0 = new QMenu ("Team");
38
    ui->menuBar->addMenu(m0);
39
    m0->addAction("Reset All Team Data", this, SLOT(resetTeamData()));
40
    m0->addAction("Generate dummy team names", this, SLOT(generateDummyTeamNames()));
41
 
127 - 42
    QMenu *m1 = new QMenu ("Leg Time Setup");
43
    ui->menuBar->addMenu(m1);
44
    m1->addAction("Clear ALL Leg Times", this, SLOT(clearLegTimes()));
129 david 45
    m1->addAction("Clear single leg start times", this, SLOT(ClearOneLegTimes()));
140 david 46
    m1->addSeparator();
47
    m1->addAction("Set Start Times", this, SLOT(setStartTimes()));
129 david 48
    m1->addAction("Set calculated leg start", this, SLOT(setCalcLegStart()));
131 david 49
    m1->addAction("Set ordered incremental leg start", this, SLOT(setOrderedIncLegStart()));
50
    m1->addAction("Set staggered start time", this, SLOT(setStaggeredLegStart()));
51
    m1->addAction("Set fixed start time", this, SLOT(setFixedLegStart()));
140 david 52
 
53
    QMenu *m2 = new QMenu ("Upload");
54
    ui->menuBar->addMenu(m2);
144 - 55
    m2->addAction("Load team information from external file", this, SLOT(loadExternalTeams()));
149 - 56
    m2->addAction("Store team information to external file", this, SLOT(storeExternalTeams()));
140 david 57
 
126 david 58
}
59
 
60
MainWindow::~MainWindow()
61
{
62
    delete ui;
63
}
64
 
133 david 65
void MainWindow::showMessage( const QString & msg, int timeout)
66
{
67
    if ( mw )
68
    {
69
        mw->ui->statusBar->showMessage(msg, timeout);
70
    }
71
}
72
 
126 david 73
void MainWindow::changeEvent(QEvent *e)
74
{
75
    QMainWindow::changeEvent(e);
76
    switch (e->type()) {
77
    case QEvent::LanguageChange:
78
        ui->retranslateUi(this);
79
        break;
80
    default:
81
        break;
82
    }
83
}
84
 
85
void MainWindow::setStartTimes(void)
86
{
127 - 87
    if ( QMessageBox::Ok == QMessageBox::warning(this, tr("Mara"),
131 david 88
                                    tr("This will reset the start times for all teams based on the Category configuration.\n"
126 david 89
                                       "Are you sure you want to do this?"),
90
                                    QMessageBox::Cancel,
91
                                    QMessageBox::Ok))
92
    {
127 - 93
        leg_start();
126 david 94
    }
127 - 95
 
126 david 96
}
97
 
127 - 98
void MainWindow::clearLegTimes(void)
99
{
100
    if ( QMessageBox::Ok == QMessageBox::warning(this, tr("Mara"),
101
                                    tr("This will clear ALL leg times for ALL teams.\n"
102
                                       "Are you sure you want to do this?"),
103
                                    QMessageBox::Cancel,
104
                                    QMessageBox::Ok))
105
    {
106
        leg_ini();
107
    }
108
}
109
 
110
void MainWindow::resetTeamData(void)
111
{
112
    if ( QMessageBox::Ok == QMessageBox::warning(this, tr("Mara"),
113
                                    tr("This will clear ALL team information.\n"
114
                                       "Are you sure you want to do this?"),
115
                                    QMessageBox::Cancel,
116
                                    QMessageBox::Ok))
117
    {
118
        tm_init();
119
    }
120
}
121
 
128 - 122
void MainWindow::generateDummyTeamNames(void)
123
{
124
    if ( QMessageBox::Ok == QMessageBox::warning(this, tr("Mara"),
125
                                    tr("This will generate DUMMY team names.\n"
126
                                       "Are you sure you want to do this?"),
127
                                    QMessageBox::Cancel,
128
                                    QMessageBox::Ok))
129
    {
130
        tm_gen();
131
    }
132
}
133
 
129 david 134
void MainWindow::ClearOneLegTimes(void)
135
{
136
    bool ok;
137
    int leg = QInputDialog::getInt(this, tr("Clear One Leg Start Time"),
138
                                              tr("Leg:"), 0, 0, config.num_legs, 1, &ok);
139
    if ( ok && leg)
140
    {
133 david 141
        tm_clearleg_specified(leg, FALSE);
129 david 142
    }
143
}
144
 
145
void MainWindow::setCalcLegStart(void)
146
{
130 - 147
    QmDialogLegStartTimes dialog("Calculate Leg Start Time",this);
131 david 148
    dialog.setDeltaTimeLabel("Delta Time");
149
qDebug ("Must disable stuff");
130 - 150
    if ( QDialog::Accepted == dialog.exec() )
129 david 151
    {
130 - 152
        if ( dialog.getLeg() )
153
        {
154
            tm_lgs(dialog.getLeg(),
131 david 155
                   dialog.getDeltaTime(),
156
                   dialog.getReport(),
157
                   dialog.getClear() );
158
        }
159
    }
160
}
161
 
162
void MainWindow::setOrderedIncLegStart(void)
163
{
164
    QmDialogLegStartTimes dialog("Ordered Incremental Leg Start Time",this);
165
    dialog.setTimeLabel("Start Time");
166
    dialog.setDeltaTimeLabel("Delta Time");
167
    if ( QDialog::Accepted == dialog.exec() )
168
    {
169
        if ( dialog.getLeg() )
170
        {
171
            tm_lgs1(dialog.getLeg(),
130 - 172
                   dialog.getTime(),
131 david 173
                   dialog.getDeltaTime(),
130 - 174
                   dialog.getReport(),
175
                   dialog.getClear() );
176
        }
129 david 177
    }
131 david 178
}
130 - 179
 
131 david 180
void MainWindow::setStaggeredLegStart(void)
181
{
182
    QmDialogLegStartTimes dialog("Staggered Leg Start Time",this);
183
    dialog.setTimeLabel("Start Time");
184
    dialog.setDeltaTimeLabel("Stagger Time");
185
    if ( QDialog::Accepted == dialog.exec() )
186
    {
187
        if ( dialog.getLeg() )
188
        {
189
            tm_staggered(dialog.getLeg(),
190
                   dialog.getTime(),
191
                   dialog.getDeltaTime(),
192
                   dialog.getReport(),
193
                   dialog.getClear() );
194
        }
195
    }
129 david 196
}
131 david 197
 
198
void MainWindow::setFixedLegStart(void)
199
{
200
    QmDialogLegStartTimes dialog("Fixed Leg Start Time",this);
201
    dialog.setTimeLabel("Start Time");
202
    //dialog.setDeltaTimeLabel("Stagger Time");
203
qDebug ("Must Hide stagger time");
204
    if ( QDialog::Accepted == dialog.exec() )
205
    {
206
        if ( dialog.getLeg() )
207
        {
208
            tm_fixedstart(dialog.getLeg(),
209
                   dialog.getTime(),
210
                   //dialog.getDeltaTime(),
211
                   dialog.getReport(),
212
                   dialog.getClear() );
213
        }
214
    }
215
}
144 - 216
 
217
void MainWindow::loadExternalTeams(void)
218
{
145 - 219
    QString fileName = QFileDialog::getOpenFileName(this, tr("Load File"),
220
                                                     QDir::currentPath(),
221
                                                     tr("Data (*.csv);;All (*.*)"),
222
                                                     0,
223
                                                     QFileDialog::ReadOnly);
224
    if ( fileName.isEmpty() )
225
    {
226
        return;
227
    }
228
 
229
    QmDialogLoadExternalTeams dialog(fileName,this);
144 - 230
    dialog.exec();
231
}
232
 
149 - 233
void MainWindow::storeExternalTeams(void)
234
{
235
    QString fileName = QFileDialog::getSaveFileName(this, tr("Store File"),
236
                                                     QDir::currentPath(),
237
                                                     tr("Data (*.csv);;All (*.*)"),
238
 
239
                                                     );
240
    if ( fileName.isEmpty() )
241
    {
242
        return;
243
    }
244
    MainWindow::showMessage("Writing external data");
245
    QmDialogLoadExternalTeams::storeData(fileName);
246
 
247
}
248
 
126 david 249
/*========================================================================
250
 *
251
 *  Position the cursor on the screen
252
 *
253
 *  Purpose:
254
 *      This function is called to Position the cursor on the screen
255
 *
256
 *  Parameters:
257
 *      x               col number
258
 *      y               line number
259
 *
260
 *  Returns:
261
 *      Nothing
262
 *
263
 *========================================================================*/
264
 
265
void cur( int x, int y )
266
{
267
}
268
 
269
/*========================================================================
270
 *
271
 *  Clears the vdu screen
272
 *
273
 *  Purpose:
274
 *      This function is called to Clears the vdu screen
275
 *      From the Microsoft Web Site
276
 *
277
 *  Parameters:
278
 *      None
279
 *
280
 *  Returns:
281
 *      Nothing
282
 *
283
 *========================================================================*/
284
 
285
void clearscreen( void )
286
{
287
}
288
#include    <stdio.h>
289
int printf( const char *format, ... )
290
{
291
    va_list     ap;
292
    char        pp[200];
293
    int         len;
294
 
295
 
296
 
297
    va_start( ap, format );
298
    len = vsprintf( pp, format, ap );
299
    va_end( ap );
300
    qDebug("%s",pp);
301
    return ( len );
302
}
303