Subversion Repositories svn1-original

Rev

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