7db2e25782a2d5ca14a7ef2661023ea738723a53
[gpssportsniffer] / loadtracksWindow.cpp
1 #include "loadTracksWindow.h"
2 #include "ui_loadtracksWindow.h"
3
4 #include "windowMap.h"
5 #include "settings.h"
6
7 #include <QFileDialog>
8 #include <QColorDialog>
9 #include <QMessageBox>
10 #include <QCloseEvent>
11
12 LoadTracksWindow::LoadTracksWindow(WindowMap *parent, Settings* settings_p, Log *log) :
13     QDialog(parent), log(log),windowMap(parent),settings(settings_p),
14     ui(new Ui::LoadTracksWindow)
15 {
16     ui->setupUi(this);
17     currentDir.setPath(APPLICATION_PATH);
18
19     setWindowTitle(tr("Load track"));
20     QColor color = QColor(settings->getTrackToSniffColor());
21     ui->colorLabel->setText(color.name());
22     ui->colorLabel->setPalette(QPalette(color));
23     ui->colorLabel->setAutoFillBackground(true);
24
25     // Centering MapType items
26     QAbstractItemView *viewMaps = ui->mapsType->view();
27     QAbstractItemModel *modelMaps = viewMaps->model();
28
29     for(int i=0; i < ui->mapsType->count();i++){
30         modelMaps->setData(modelMaps->index(i, 0), QVariant(Qt::AlignCenter), Qt::TextAlignmentRole);
31     }
32
33     connect(ui->colorButton, SIGNAL(clicked()), this, SLOT(setColor()));
34     connect(ui->browseButton, SIGNAL(clicked()), SLOT(browse()));
35 }
36
37 LoadTracksWindow::~LoadTracksWindow()
38 {
39     delete ui;
40 }
41
42 void LoadTracksWindow::setColor(){
43
44
45     QColor color = QColorDialog::getColor(QColor(settings->getTrackToSniffColor()), this);
46         if (color.isValid())
47         {
48             ui->colorLabel->setText(color.name());
49             ui->colorLabel->setPalette(QPalette(color));
50             ui->colorLabel->setAutoFillBackground(true);
51             settings->setTrackToSniffColor(color.name());
52         }
53 }
54
55 void LoadTracksWindow::browse(){
56
57     QString directory = QFileDialog::getOpenFileName(this,tr("Open XML Files"), currentDir.path(), tr("XML Files (*.gpx *.tcx)"));
58
59     if (!directory.isNull())
60     {
61         currentDir.setPath(directory);
62
63         if (!directory.isEmpty()) {
64             if (ui->fileCombo->findText(directory) == -1)
65                 ui->fileCombo->addItem(directory);
66             ui->fileCombo->setCurrentIndex(ui->fileCombo->findText(directory));
67         }
68     }
69
70 }
71
72
73 void LoadTracksWindow::closeEvent(QCloseEvent *event){
74     //event->ignore();
75     log->debug("CLOSE EVENT OF LOADTRACKS!!!!!!!!!!!!!!!!!!!");
76     QMessageBox::warning(this, tr("GPSSniffer"),QString(tr("No file selected!")));
77     this->hide();
78 }
79
80 void LoadTracksWindow::showEvent(QShowEvent *){
81
82     if(windowMap->getMode()==Mode_NewActivityMode){
83         // loading track in new activity
84         ui->mapsType->setCurrentIndex(settings->getMapType());
85         ui->mapsType->setEnabled(false);
86     }
87 }
88
89 void LoadTracksWindow::accept(){
90
91
92     QString fileName = ui->fileCombo->currentText();
93     //QString fileName=QString("/home/user/MyDocs/FitxersGPXiTCX/VallDelRiuLac.tcx");
94
95     if(!fileName.endsWith(".gpx",Qt::CaseInsensitive) && !fileName.endsWith(".tcx",Qt::CaseInsensitive) ){
96         QMessageBox::warning(this, tr("GPSSniffer"),QString(tr("No file selected!")));
97     }else{
98         Track* toSniff = readFromXML(fileName);
99         log->debug("XML readed without problem");
100         windowMap->setTrackToSniff(toSniff);
101
102         if(windowMap->getMode()==Mode_LoadTracksWindow){
103             settings->setMapType((MapType)ui->mapsType->currentIndex());
104             windowMap->startNetworking();
105             windowMap->startMaps();
106         }else{
107
108             if(windowMap->simulatingGPS()){
109                 windowMap->desactivatePossitionPaint();
110             }
111         }
112         windowMap->updateSummary();
113         windowMap->drawFullTrackMaps(toSniff);
114         settings->setIsConfigured(true);
115         windowMap->fixZoomButtons();
116         this->hide();
117     }
118
119
120 }
121