Subversion Repositories svn1

Rev

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