Initial Commit
[uktrainplanner] / src / stationchooser.cpp
1 #include "src/stationchooser.h"
2 #include "ui_stationchooser.h"
3
4 QStringList StationChooser::names;
5 QStringList StationChooser::codes;
6
7 StationChooser::StationChooser(QWidget *parent) :
8     QDialog(parent), ui(new Ui::StationChooser)
9 {
10     ui->setupUi(this);
11     if(StationChooser::names.size() == 0)
12     {
13         StationChooser::loadStations();
14     }
15 }
16
17 StationChooser::~StationChooser()
18 {
19     delete ui;
20 }
21
22 int StationChooser::exec()
23 {
24     reset();
25     return QDialog::exec();
26 }
27
28 void StationChooser::reset()
29 {
30     ui->lineEdit->setText("");
31     typing("");
32 }
33
34 void StationChooser::loadStations()
35 {
36     QFile file(":/stations/stations.txt");
37     file.open(QIODevice::ReadOnly | QIODevice::Text);
38
39     QTextStream stream(&file);
40
41     while(!stream.atEnd())
42     {
43         QString in = file.readLine();
44         QStringList l = in.trimmed().split(",");
45
46         StationChooser::names << QString("%1 (%2)").arg(l.at(0)).arg(l.at(1));
47         StationChooser::codes << l.at(1);
48     }
49
50     file.close();
51 }
52
53 void StationChooser::accept()
54 {
55     choice = ui->listWidget->currentItem()->text();
56     choiceCRS = ui->listWidget->currentItem()->data(Qt::UserRole).toString();
57
58     QDialog::accept();
59 }
60
61 void StationChooser::typing(QString text)
62 {
63     ui->listWidget->clear();
64
65     if(text == QString())
66     {
67         for(int i = 0; i < StationChooser::names.size(); i++)
68         {
69             QListWidgetItem * li = new QListWidgetItem(StationChooser::names.at(i));
70             li->setData(Qt::UserRole, StationChooser::codes.at(i));
71
72             ui->listWidget->addItem(li);
73         }
74     }
75     else
76     {
77         for(int i = 0; i < StationChooser::names.size(); i++)
78         {
79             if(StationChooser::names.at(i).contains(text, Qt::CaseInsensitive))
80             {
81                 QListWidgetItem * li = new QListWidgetItem(StationChooser::names.at(i));
82                 li->setData(Qt::UserRole, StationChooser::codes.at(i));
83                 ui->listWidget->addItem(li);
84             }
85         }
86     }
87
88     ui->listWidget->setCurrentRow(0);
89 }
90
91 void StationChooser::changeEvent(QEvent *e)
92 {
93     QDialog::changeEvent(e);
94     switch (e->type()) {
95     case QEvent::LanguageChange:
96         ui->retranslateUi(this);
97         break;
98     default:
99         break;
100     }
101 }