Skip to content

Commit 5cd6ad4

Browse files
committed
AddTrainDialog: add trains to segment
Allow hover also when powered on.
1 parent a0b9ea0 commit 5cd6ad4

File tree

7 files changed

+696
-527
lines changed

7 files changed

+696
-527
lines changed

simulator/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ add_executable(traintastic-simulator
2323
src/mainwindow.cpp
2424
src/simulatorview.cpp
2525
src/trainsmodel.cpp
26+
src/addtraindialog.h src/addtraindialog.cpp
2627
../shared/src/traintastic/simulator/simulator.cpp
2728
../shared/src/traintastic/simulator/simulatorconnection.cpp
2829
../shared/src/traintastic/utils/standardpaths.cpp

simulator/src/addtraindialog.cpp

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
#include "addtraindialog.h"
2+
3+
#include <QSpinBox>
4+
#include <QLineEdit>
5+
#include <QLabel>
6+
7+
#include <QFormLayout>
8+
9+
#include <QDialogButtonBox>
10+
11+
#include <QMessageBox>
12+
13+
#include "trainsmodel.h"
14+
15+
AddTrainDialog::AddTrainDialog(size_t segmentIndex, const QString& segName, TrainsModel *trainsModel, QWidget *parent)
16+
: QDialog{parent}
17+
, mTrainsModel(trainsModel)
18+
, mSegmentIndex(segmentIndex)
19+
{
20+
QFormLayout *lay = new QFormLayout(this);
21+
22+
mLabel = new QLabel;
23+
lay->addRow(mLabel);
24+
25+
mTrainEdit = new QLineEdit;
26+
lay->addRow(tr("Train name:"), mTrainEdit);
27+
28+
mNumWagonsSpin = new QSpinBox;
29+
mNumWagonsSpin->setRange(1, 100);
30+
mNumWagonsSpin->setValue(5);
31+
lay->addRow(tr("Num wagons:"), mNumWagonsSpin);
32+
33+
QDialogButtonBox *butBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel,
34+
Qt::Horizontal);
35+
connect(butBox, &QDialogButtonBox::accepted,
36+
this, &QDialog::accept);
37+
connect(butBox, &QDialogButtonBox::rejected,
38+
this, &QDialog::reject);
39+
lay->addRow(butBox);
40+
41+
QString segName_ = segName;
42+
if(segName_.isEmpty())
43+
segName_ = tr("<i>(index %1)</i>").arg(segmentIndex);
44+
45+
mLabel->setText(tr("Add Train on segment %1")
46+
.arg(segName_));
47+
48+
setWindowTitle(tr("Add Train"));
49+
}
50+
51+
void AddTrainDialog::done(int result)
52+
{
53+
if(result == QDialog::Accepted)
54+
{
55+
QString errStr;
56+
if(!mTrainsModel->addTrain(mTrainEdit->text(),
57+
Color::Blue, mNumWagonsSpin->value(),
58+
mSegmentIndex, &errStr))
59+
{
60+
QMessageBox::warning(this, tr("Cannot add Train"),
61+
errStr);
62+
return;
63+
}
64+
}
65+
66+
QDialog::done(result);
67+
}

simulator/src/addtraindialog.h

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
#ifndef ADDTRAINDIALOG_H
2+
#define ADDTRAINDIALOG_H
3+
4+
#include <QDialog>
5+
6+
class QLabel;
7+
class QLineEdit;
8+
class QSpinBox;
9+
10+
class TrainsModel;
11+
12+
class AddTrainDialog : public QDialog
13+
{
14+
Q_OBJECT
15+
public:
16+
AddTrainDialog(size_t segmentIndex, const QString &segName,
17+
TrainsModel *trainsModel,
18+
QWidget *parent = nullptr);
19+
20+
protected:
21+
void done(int result);
22+
23+
private:
24+
QLabel *mLabel;
25+
QLineEdit *mTrainEdit;
26+
QSpinBox *mNumWagonsSpin;
27+
28+
TrainsModel *mTrainsModel = nullptr;
29+
size_t mSegmentIndex = 0;
30+
};
31+
32+
#endif // ADDTRAINDIALOG_H

0 commit comments

Comments
 (0)