Subversion Repositories svn1

Rev

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