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