Subversion Repositories svn1

Rev

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