Rev 324 | Blame | Compare with Previous | Last modification | View Log | RSS feed
#include "mainwindow.h"#include "ui_mainwindow.h"#include "qmconfteams.h"#include "qmconfclass.h"#include "qmconfwinners.h"#include "qmteamdisplay.h"#include "QMessageBox"#include "QInputDialog"#include "QTime"#include "qmdialoglegstarttimes.h"#include "qmdisqualified.h"#include "qmdatacheck.h"#include "qmdialogloadexternalteams.h"#include "QFileDialog"#include "qmdialoguploadlegtimes.h"#include "qmreportwindow.h"#include "QTabWidget"#include "QLayout"#include "qmeventstatus.h"#include "qmdownloadlegtimes.h"#include "qmdialogabout.h"#include "qmhttppath.h"#include "qmdialogchangeteamnumber.h"#include "qmfulldata.h"#include "consts.h"#include "structs.h"#include "proto.h"MainWindow *mw = NULL;MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow){ui->setupUi(this);mw = this;setWindowTitle("Mara");QTabWidget *tabWidget = new QTabWidget();setCentralWidget(tabWidget);tabWidget->addTab( new QmConfTeams, "Configure");tabWidget->addTab( new QmConfClass, "Class");tabWidget->addTab( new QmConfWinners, "Winners");tabWidget->addTab( new QmEventStatus, "Status");tabWidget->addTab( new qmTeamDisplay, "Team Data");tabWidget->addTab( new qmDisqualified, "Disqual");tabWidget->addTab( new qmDataCheck, "Data Check");tabWidget->addTab( new qmFullData, "Full Data");tabWidget->addTab( reportWindow = new QmReportWindow, "Reports");QMenu *m0 = new QMenu ("Team");ui->menuBar->addMenu(m0);m0->addAction("Reset All Team Data", this, SLOT(resetTeamData()));m0->addAction("Generate dummy team names", this, SLOT(generateDummyTeamNames()));m0->addAction("Copy/Move/Swap Team Data", this, SLOT(changeTeamNumber()));QMenu *m1 = new QMenu ("Leg Time Setup");ui->menuBar->addMenu(m1);m1->addAction("Clear ALL Leg Times", this, SLOT(clearLegTimes()));m1->addAction("Clear single leg start times", this, SLOT(ClearOneLegTimes()));m1->addSeparator();m1->addAction("Set Start Times", this, SLOT(setStartTimes()));m1->addSeparator();m1->addAction("Set calculated leg start", this, SLOT(setCalcLegStart()));m1->addAction("Set ordered incremental leg start", this, SLOT(setOrderedIncLegStart()));m1->addAction("Set staggered start time", this, SLOT(setStaggeredLegStart()));m1->addAction("Set fixed start time", this, SLOT(setFixedLegStart()));m1->addSeparator();m1->addAction("Recalculate elapsed times", this, SLOT(recalcLegTimes()));QMenu *m2 = new QMenu ("Upload");ui->menuBar->addMenu(m2);m2->addAction("Load team information from external file", this, SLOT(loadExternalTeams()));m2->addAction("Load team information from Web Page", this, SLOT(loadExternalHtmlTeams()));m2->addAction("Upload time information", this, SLOT(uploadLegData()));QMenu *m3 = new QMenu ("Export");ui->menuBar->addMenu(m3);m3->addAction("Store team information to external file", this, SLOT(storeExternalTeams()));//m3->addAction("Store basic team info to external file", this, SLOT(storeTeamInfo()));m3->addAction("Create external leg data file", this, SLOT(storeLegData()));QMenu *m4 = new QMenu ("Reports");ui->menuBar->addMenu(m4);m4->addAction("Generate All Reports", this, SLOT(generateReports()));ui->menuBar->addAction("About", this, SLOT(showAbout()));}MainWindow::~MainWindow(){delete ui;}void MainWindow::showMessage( const QString & msg, int timeout){if ( mw ){mw->ui->statusBar->showMessage(msg, timeout);}}void MainWindow::registerReport(const QString &report, const QString &name){if (mw && mw->reportWindow){mw->reportWindow->addReport(report, name);}}void MainWindow::changeEvent(QEvent *e){QMainWindow::changeEvent(e);switch (e->type()) {case QEvent::LanguageChange:ui->retranslateUi(this);break;default:break;}}void MainWindow::setStartTimes(void){if ( QMessageBox::Ok == QMessageBox::warning(this, tr("Mara"),tr("This will reset the start times for all teams based on the Category configuration.\n""Are you sure you want to do this?"),QMessageBox::Cancel,QMessageBox::Ok)){leg_start();}}void MainWindow::clearLegTimes(void){if ( QMessageBox::Ok == QMessageBox::warning(this, tr("Mara"),tr("This will clear ALL leg times for ALL teams.\n""Are you sure you want to do this?"),QMessageBox::Cancel,QMessageBox::Ok)){leg_ini();}}void MainWindow::resetTeamData(void){if ( QMessageBox::Ok == QMessageBox::warning(this, tr("Mara"),tr("This will clear ALL team information.\n""Are you sure you want to do this?"),QMessageBox::Cancel,QMessageBox::Ok)){tm_init();}}void MainWindow::generateDummyTeamNames(void){if ( QMessageBox::Ok == QMessageBox::warning(this, tr("Mara"),tr("This will generate DUMMY team names.\n""Are you sure you want to do this?"),QMessageBox::Cancel,QMessageBox::Ok)){tm_gen();}}void MainWindow::changeTeamNumber(void){QmDialogChangeTeamNumber dialog("Copy/Move/Swap Team Data",this);dialog.exec();}void MainWindow::ClearOneLegTimes(void){bool ok;int leg = QInputDialog::getInt(this, tr("Clear One Leg Start Time"),tr("Leg:"), 0, 0, config.num_legs, 1, &ok);if ( ok && leg){tm_clearleg_specified(leg, FALSE);}}void MainWindow::setCalcLegStart(void){QmDialogLegStartTimes dialog("Calculate Leg Start Time",this);dialog.setDeltaTimeLabel("Delta Time");dialog.setDescription("The start time is based on the end time of the previous leg with a constant Delta time added");qDebug ("Must disable stuff");if ( QDialog::Accepted == dialog.exec() ){if ( dialog.getLeg() ){tm_lgs(dialog.getLeg(),dialog.getDeltaTime(),dialog.getReport(),dialog.getClear() );}}}void MainWindow::setOrderedIncLegStart(void){QmDialogLegStartTimes dialog("Ordered Incremental Leg Start Time",this);dialog.setTimeLabel("Start Time");dialog.setDeltaTimeLabel("Delta Time");dialog.setDescription("The specified start time is given to the fastest team. Teams are then set at specified Delta from that time.");if ( QDialog::Accepted == dialog.exec() ){if ( dialog.getLeg() ){tm_lgs1(dialog.getLeg(),dialog.getTime(),dialog.getDeltaTime(),dialog.getReport(),dialog.getClear() );}}}void MainWindow::setStaggeredLegStart(void){QmDialogLegStartTimes dialog("Staggered Leg Start Time",this);dialog.setTimeLabel("Start Time");dialog.setDeltaTimeLabel("Stagger Time");dialog.setDescription("The lowest numbered team is given the start time. The teams are then starggered by team number from that time.");if ( QDialog::Accepted == dialog.exec() ){if ( dialog.getLeg() ){tm_staggered(dialog.getLeg(),dialog.getTime(),dialog.getDeltaTime(),dialog.getReport(),dialog.getClear() );}}}void MainWindow::setFixedLegStart(void){QmDialogLegStartTimes dialog("Fixed Leg Start Time",this);dialog.setTimeLabel("Start Time");dialog.setDescription("The specified start time is given to all teams.");if ( QDialog::Accepted == dialog.exec() ){if ( dialog.getLeg() ){tm_fixedstart(dialog.getLeg(),dialog.getTime(),//dialog.getDeltaTime(),dialog.getReport(),dialog.getClear() );}}}void MainWindow::recalcLegTimes(void){QmDialogLegStartTimes dialog("Recalc Elesped Times",this);dialog.setDescription("The elasped times for all teams is recaclulated. This should not be neeed.");if ( QDialog::Accepted == dialog.exec() ){if ( dialog.getLeg() ){tm_recalcElapsed(dialog.getLeg());}}}void MainWindow::loadExternalTeams(void){QString fileName = QFileDialog::getOpenFileName(this, tr("Load File"),appSettings->value("Recent/ExternalTeams",filepath).toString(),tr("Data (*.csv);;All (*.*)"),0,QFileDialog::ReadOnly);if ( fileName.isEmpty() ){return;}appSettings->setValue("Recent/ExternalTeams", fileName);QmDialogLoadExternalTeams dialog(fileName,this);dialog.exec();}void MainWindow::loadExternalHtmlTeams(void){Qmhttppath msgBox;int rv = msgBox.exec();if (rv == QDialog::Accepted){QmDialogLoadExternalTeams dialog( msgBox.urlLineEdit->text(), &msgBox.allData ,this);dialog.exec();}else{MainWindow::showMessage("No Web Address selected. No teams uploaded");}}void MainWindow::storeExternalTeams(void){QString fileName = QFileDialog::getSaveFileName(this, tr("Store File"),appSettings->value("Recent/storeExternalTeams",filepath).toString(),tr("Data (*.csv);;All (*.*)"),0);if ( fileName.isEmpty() ){return;}appSettings->setValue("Recent/storeExternalTeams", fileName);MainWindow::showMessage("Writing external data");QmDialogLoadExternalTeams::storeData(fileName);MainWindow::showMessage("Writing external data completed");}void MainWindow::storeTeamInfo(void){QString fileName = QFileDialog::getSaveFileName(this, tr("Store Team Info File"),appSettings->value("Recent/storeTeamInfo",filepath).toString(),tr("Data (*.txt);;All (*.*)"),0);if ( fileName.isEmpty() ){return;}appSettings->setValue("Recent/storeTeamInfo", fileName);MainWindow::showMessage("Writing team info");QmDialogLoadExternalTeams::storeTeamInfo(fileName);MainWindow::showMessage("Writing team info completed");}void MainWindow::storeLegData(void){QmDownloadLegTimes dialog(this);dialog.exec();}void MainWindow::uploadLegData(void){QmDialogUploadLegTimes dialog(this);dialog.exec();}void MainWindow::generateReports(void){if( load_report_data() ){pri_all_reports();}}void MainWindow::showAbout(void){QmDialogAbout dialog(this);dialog.setText(QString("Build Date: ") + __DATE__ + " " + __TIME__ + "\nVersion: " + VERSION);dialog.setPath(filepath);dialog.exec();}