Subversion Repositories svn1

Rev

Rev 152 | Rev 156 | 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
 
126 david 61
}
62
 
63
MainWindow::~MainWindow()
64
{
65
    delete ui;
66
}
67
 
133 david 68
void MainWindow::showMessage( const QString & msg, int timeout)
69
{
70
    if ( mw )
71
    {
72
        mw->ui->statusBar->showMessage(msg, timeout);
73
    }
74
}
75
 
126 david 76
void MainWindow::changeEvent(QEvent *e)
77
{
78
    QMainWindow::changeEvent(e);
79
    switch (e->type()) {
80
    case QEvent::LanguageChange:
81
        ui->retranslateUi(this);
82
        break;
83
    default:
84
        break;
85
    }
86
}
87
 
88
void MainWindow::setStartTimes(void)
89
{
127 - 90
    if ( QMessageBox::Ok == QMessageBox::warning(this, tr("Mara"),
131 david 91
                                    tr("This will reset the start times for all teams based on the Category configuration.\n"
126 david 92
                                       "Are you sure you want to do this?"),
93
                                    QMessageBox::Cancel,
94
                                    QMessageBox::Ok))
95
    {
127 - 96
        leg_start();
126 david 97
    }
127 - 98
 
126 david 99
}
100
 
127 - 101
void MainWindow::clearLegTimes(void)
102
{
103
    if ( QMessageBox::Ok == QMessageBox::warning(this, tr("Mara"),
104
                                    tr("This will clear ALL leg times for ALL teams.\n"
105
                                       "Are you sure you want to do this?"),
106
                                    QMessageBox::Cancel,
107
                                    QMessageBox::Ok))
108
    {
109
        leg_ini();
110
    }
111
}
112
 
113
void MainWindow::resetTeamData(void)
114
{
115
    if ( QMessageBox::Ok == QMessageBox::warning(this, tr("Mara"),
116
                                    tr("This will clear ALL team information.\n"
117
                                       "Are you sure you want to do this?"),
118
                                    QMessageBox::Cancel,
119
                                    QMessageBox::Ok))
120
    {
121
        tm_init();
122
    }
123
}
124
 
128 - 125
void MainWindow::generateDummyTeamNames(void)
126
{
127
    if ( QMessageBox::Ok == QMessageBox::warning(this, tr("Mara"),
128
                                    tr("This will generate DUMMY team names.\n"
129
                                       "Are you sure you want to do this?"),
130
                                    QMessageBox::Cancel,
131
                                    QMessageBox::Ok))
132
    {
133
        tm_gen();
134
    }
135
}
136
 
129 david 137
void MainWindow::ClearOneLegTimes(void)
138
{
139
    bool ok;
140
    int leg = QInputDialog::getInt(this, tr("Clear One Leg Start Time"),
141
                                              tr("Leg:"), 0, 0, config.num_legs, 1, &ok);
142
    if ( ok && leg)
143
    {
133 david 144
        tm_clearleg_specified(leg, FALSE);
129 david 145
    }
146
}
147
 
148
void MainWindow::setCalcLegStart(void)
149
{
130 - 150
    QmDialogLegStartTimes dialog("Calculate Leg Start Time",this);
131 david 151
    dialog.setDeltaTimeLabel("Delta Time");
152
qDebug ("Must disable stuff");
130 - 153
    if ( QDialog::Accepted == dialog.exec() )
129 david 154
    {
130 - 155
        if ( dialog.getLeg() )
156
        {
157
            tm_lgs(dialog.getLeg(),
131 david 158
                   dialog.getDeltaTime(),
159
                   dialog.getReport(),
160
                   dialog.getClear() );
161
        }
162
    }
163
}
164
 
165
void MainWindow::setOrderedIncLegStart(void)
166
{
167
    QmDialogLegStartTimes dialog("Ordered Incremental Leg Start Time",this);
168
    dialog.setTimeLabel("Start Time");
169
    dialog.setDeltaTimeLabel("Delta Time");
170
    if ( QDialog::Accepted == dialog.exec() )
171
    {
172
        if ( dialog.getLeg() )
173
        {
174
            tm_lgs1(dialog.getLeg(),
130 - 175
                   dialog.getTime(),
131 david 176
                   dialog.getDeltaTime(),
130 - 177
                   dialog.getReport(),
178
                   dialog.getClear() );
179
        }
129 david 180
    }
131 david 181
}
130 - 182
 
131 david 183
void MainWindow::setStaggeredLegStart(void)
184
{
185
    QmDialogLegStartTimes dialog("Staggered Leg Start Time",this);
186
    dialog.setTimeLabel("Start Time");
187
    dialog.setDeltaTimeLabel("Stagger Time");
188
    if ( QDialog::Accepted == dialog.exec() )
189
    {
190
        if ( dialog.getLeg() )
191
        {
192
            tm_staggered(dialog.getLeg(),
193
                   dialog.getTime(),
194
                   dialog.getDeltaTime(),
195
                   dialog.getReport(),
196
                   dialog.getClear() );
197
        }
198
    }
129 david 199
}
131 david 200
 
201
void MainWindow::setFixedLegStart(void)
202
{
203
    QmDialogLegStartTimes dialog("Fixed Leg Start Time",this);
204
    dialog.setTimeLabel("Start Time");
205
    //dialog.setDeltaTimeLabel("Stagger Time");
206
qDebug ("Must Hide stagger time");
207
    if ( QDialog::Accepted == dialog.exec() )
208
    {
209
        if ( dialog.getLeg() )
210
        {
211
            tm_fixedstart(dialog.getLeg(),
212
                   dialog.getTime(),
213
                   //dialog.getDeltaTime(),
214
                   dialog.getReport(),
215
                   dialog.getClear() );
216
        }
217
    }
218
}
144 - 219
 
220
void MainWindow::loadExternalTeams(void)
221
{
145 - 222
    QString fileName = QFileDialog::getOpenFileName(this, tr("Load File"),
223
                                                     QDir::currentPath(),
224
                                                     tr("Data (*.csv);;All (*.*)"),
225
                                                     0,
226
                                                     QFileDialog::ReadOnly);
227
    if ( fileName.isEmpty() )
228
    {
229
        return;
230
    }
231
 
232
    QmDialogLoadExternalTeams dialog(fileName,this);
144 - 233
    dialog.exec();
234
}
235
 
149 - 236
void MainWindow::storeExternalTeams(void)
237
{
238
    QString fileName = QFileDialog::getSaveFileName(this, tr("Store File"),
239
                                                     QDir::currentPath(),
240
                                                     tr("Data (*.csv);;All (*.*)"),
241
 
242
                                                     );
243
    if ( fileName.isEmpty() )
244
    {
245
        return;
246
    }
247
    MainWindow::showMessage("Writing external data");
248
    QmDialogLoadExternalTeams::storeData(fileName);
151 david 249
    MainWindow::showMessage("Writing external data completed");
149 - 250
}
251
 
152 david 252
void MainWindow::storeTeamInfo(void)
253
{
254
    QString fileName = QFileDialog::getSaveFileName(this, tr("Store Team Info File"),
255
                                                     QDir::currentPath(),
256
                                                     tr("Data (*.txt);;All (*.*)"),
257
 
258
                                                     );
259
    if ( fileName.isEmpty() )
260
    {
261
        return;
262
    }
263
    MainWindow::showMessage("Writing team info");
264
    QmDialogLoadExternalTeams::storeTeamInfo(fileName);
265
    MainWindow::showMessage("Writing team info completed");
266
}
267
 
153 david 268
void MainWindow::storeLegData(void)
269
{
270
    MainWindow::showMessage("Store Leg Data: Not yet implemented");
271
}
272
 
273
void MainWindow::uploadLegData(void)
274
{
275
    QmDialogUploadLegTimes  dialog(this);
276
    dialog.exec();
277
}
278
 
126 david 279
/*========================================================================
280
 *
281
 *  Position the cursor on the screen
282
 *
283
 *  Purpose:
284
 *      This function is called to Position the cursor on the screen
285
 *
286
 *  Parameters:
287
 *      x               col number
288
 *      y               line number
289
 *
290
 *  Returns:
291
 *      Nothing
292
 *
293
 *========================================================================*/
294
 
295
void cur( int x, int y )
296
{
297
}
298
 
299
/*========================================================================
300
 *
301
 *  Clears the vdu screen
302
 *
303
 *  Purpose:
304
 *      This function is called to Clears the vdu screen
305
 *      From the Microsoft Web Site
306
 *
307
 *  Parameters:
308
 *      None
309
 *
310
 *  Returns:
311
 *      Nothing
312
 *
313
 *========================================================================*/
314
 
315
void clearscreen( void )
316
{
317
}
318
#include    <stdio.h>
319
int printf( const char *format, ... )
320
{
321
    va_list     ap;
322
    char        pp[200];
323
    int         len;
324
 
325
 
326
 
327
    va_start( ap, format );
328
    len = vsprintf( pp, format, ap );
329
    va_end( ap );
330
    qDebug("%s",pp);
331
    return ( len );
332
}
333