Subversion Repositories svn1

Rev

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