Subversion Repositories svn1

Rev

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