Subversion Repositories svn1

Rev

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