Subversion Repositories svn1-original

Rev

Rev 216 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
216 - 1
#include <QFileDialog>
215 - 2
#include "qmdownloadlegtimes.h"
3
#include "ui_qmdownloadlegtimes.h"
4
#include "mainwindow.h"
5
 
6
#include    "consts.h"
7
#include    "structs.h"
8
#include    "proto.h"
9
 
10
QmDownloadLegTimes::QmDownloadLegTimes(QWidget *parent) :
11
    QDialog(parent),
12
    ui(new Ui::QmDownloadLegTimes)
13
{
14
    ui->setupUi(this);
15
    connect(ui->cancel, SIGNAL(clicked()), this, SLOT(close()));
16
    connect(ui->save, SIGNAL(clicked()), this, SLOT(save()));
17
    connect(ui->legNumber, SIGNAL(valueChanged(int)), this, SLOT(legNumberChanged(int)));
216 - 18
    connect(ui->legStart, SIGNAL(clicked()), this, SLOT(updateFileName()));
19
    connect(ui->legEnd, SIGNAL(clicked()), this, SLOT(updateFileName()));
215 - 20
 
21
    ui->legNumber->setMaximum(config.num_legs);
22
    legNumberChanged(0);
23
}
24
 
25
QmDownloadLegTimes::~QmDownloadLegTimes()
26
{
27
    delete ui;
28
}
29
 
30
void QmDownloadLegTimes::legNumberChanged(int leg)
31
{
32
    ui->save->setEnabled(leg != 0);
216 - 33
    updateFileName();
215 - 34
}
35
 
36
void QmDownloadLegTimes::save(void)
37
{
38
    bool manstart = !ui->legEnd->isChecked();
39
    int leg = ui->legNumber->value();
40
 
41
        /*
42
         * Locate the required data file and prepare for processing
43
         */
216 - 44
    QString filename = ui->fileName->text();
215 - 45
    MainWindow::showMessage(QString("Using: ") + filename);
46
    filename.prepend(filepath);
47
    qDebug("Using:%s", qPrintable(filename));
48
 
216 - 49
    filename = QFileDialog::getSaveFileName(this, tr("Store Leg Data to File"),
50
                                                     filename,
51
                                                     tr("Data (*.txt);;All (*.*)"),
52
 
53
                                                     );
54
    if ( filename.isEmpty() )
55
    {
56
        return;
57
    }
58
 
59
 
215 - 60
    QFile file;
61
    file.setFileName(filename);
62
    if ( ! file.open(QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Text) )
63
    {
64
        MainWindow::showMessage("Cannot open external leg file");
65
        return;
66
    }
67
    QTextStream out(&file);
68
 
69
    /*
70
     * Write the data to the data file
71
     */
72
    team_type   team_buf;
73
    for(int i = config.min_team; i <= config.max_team; i++ )
74
    {
75
        if( valid_field( i ) && g_record( i, &team_buf ) )
76
        {
77
            time_t ptime;
78
            if (manstart)
79
                ptime = team_buf.leg[leg].start ;
80
            else
81
                ptime = team_buf.leg[leg].end;
82
            if (ptime >= 0 )
83
            {
84
                out << i;
85
                out << " ";
86
                out <<  time_a( ptime );
87
                out << endl;
88
            }
89
        }
216 - 90
    }
91
}
215 - 92
 
216 - 93
void QmDownloadLegTimes::updateFileName(void)
94
{
95
    bool manstart = !ui->legEnd->isChecked();
96
    int leg = ui->legNumber->value();
97
    if (leg)
98
    {
99
        ui->fileName->setText(QString("%1leg%2.txt").arg(manstart ? "S" : "").arg(QString::number(leg)) );
215 - 100
    }
216 - 101
    else
102
    {
103
        ui->fileName->clear();
104
    }
215 - 105
}
106