Subversion Repositories svn1-original

Rev

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

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