Subversion Repositories svn1

Rev

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