add support for turnouts

This commit is contained in:
2022-01-21 19:41:52 +01:00
parent fede535b95
commit 4ff73760e5
12 changed files with 184 additions and 44 deletions

View File

@ -1,5 +1,8 @@
#include "itemscrollbox.h"
#include "ui_relayscrollbox.h"
#include "ui_relayscrollbox.h"
#include "../items/train.h"
#include "../items/turnout.h"
ItemScrollBox::ItemScrollBox(QWidget *parent) :
QWidget(parent),
@ -17,24 +20,40 @@ ItemScrollBox::~ItemScrollBox()
void ItemScrollBox::addItem(std::weak_ptr<Item> item)
{
static int lifetimeNum = 0;
if(auto workItem = item.lock())
{
widgets_.push_back(new ItemWidget(item, this));
if(lifetimeNum == 0)
widgets_.back()->setShortcuts(QKeySequence(Qt::Key_Q), QKeySequence(Qt::Key_A), QKeySequence(Qt::Key_Z));
else if(lifetimeNum == 1)
widgets_.back()->setShortcuts(QKeySequence(Qt::Key_W), QKeySequence(Qt::Key_S), QKeySequence(Qt::Key_X));
else if(lifetimeNum == 2)
widgets_.back()->setShortcuts(QKeySequence(Qt::Key_E), QKeySequence(Qt::Key_D), QKeySequence(Qt::Key_C));
else if(lifetimeNum == 3)
widgets_.back()->setShortcuts(QKeySequence(Qt::Key_R), QKeySequence(Qt::Key_F), QKeySequence(Qt::Key_V));
else if(lifetimeNum == 4)
widgets_.back()->setShortcuts(QKeySequence(Qt::Key_T), QKeySequence(Qt::Key_G), QKeySequence(Qt::Key_B));
Train* train = dynamic_cast<Train*>(workItem.get());
Turnout* turnout = dynamic_cast<Turnout*>(workItem.get());
if(train)
{
if(train->getTrainId() == 0)
widgets_.back()->setShortcuts(QKeySequence(Qt::Key_Q), QKeySequence(Qt::Key_A), QKeySequence(Qt::Key_Z));
else if(train->getTrainId() == 1)
widgets_.back()->setShortcuts(QKeySequence(Qt::Key_W), QKeySequence(Qt::Key_S), QKeySequence(Qt::Key_X));
else if(train->getTrainId() == 2)
widgets_.back()->setShortcuts(QKeySequence(Qt::Key_E), QKeySequence(Qt::Key_D), QKeySequence(Qt::Key_C));
else if(train->getTrainId() == 3)
widgets_.back()->setShortcuts(QKeySequence(Qt::Key_R), QKeySequence(Qt::Key_F), QKeySequence(Qt::Key_V));
else if(train->getTrainId() == 4)
widgets_.back()->setShortcuts(QKeySequence(Qt::Key_T), QKeySequence(Qt::Key_G), QKeySequence(Qt::Key_B));
}
else if(turnout)
{
if(turnout->getTurnoutId() == 0)
widgets_.back()->setShortcuts(QKeySequence(), QKeySequence(), QKeySequence(Qt::Key_1));
else if(turnout->getTurnoutId() == 1)
widgets_.back()->setShortcuts(QKeySequence(), QKeySequence(), QKeySequence(Qt::Key_2));
else if(turnout->getTurnoutId() == 2)
widgets_.back()->setShortcuts(QKeySequence(), QKeySequence(), QKeySequence(Qt::Key_3));
else if(turnout->getTurnoutId() == 3)
widgets_.back()->setShortcuts(QKeySequence(), QKeySequence(), QKeySequence(Qt::Key_4));
else if(turnout->getTurnoutId() == 4)
widgets_.back()->setShortcuts(QKeySequence(), QKeySequence(), QKeySequence(Qt::Key_5));
}
ui->relayWidgetVbox->addWidget(widgets_.back());
connect(widgets_.back(), &ItemWidget::deleteRequest, this, &ItemScrollBox::deleteRequest);
connect(widgets_.back(), &ItemWidget::deleteRequest, this, &ItemScrollBox::removeItem);
lifetimeNum++;
}
}