switch to signed values for items

This commit is contained in:
uvos 2022-02-01 22:36:24 +01:00
parent 1f36522492
commit 6a9ad7f855
12 changed files with 39 additions and 36 deletions

View File

@ -3,7 +3,7 @@
#include <QJsonArray>
ItemData::ItemData(uint32_t itemIdIn, QString name, uint8_t value): name_(name), value_(value), itemId_(itemIdIn)
ItemData::ItemData(uint32_t itemIdIn, QString name, int8_t value): name_(name), value_(value), itemId_(itemIdIn)
{
}
@ -18,7 +18,7 @@ void ItemData::setName(QString name)
name_ = name;
}
uint8_t ItemData::getValue() const
int8_t ItemData::getValue() const
{
return value_;
}
@ -31,7 +31,7 @@ uint32_t ItemData::id() const
//item
Item::Item(uint32_t itemIdIn, QString name, uint8_t value, QObject *parent): QObject(parent), ItemData (itemIdIn, name, value)
Item::Item(uint32_t itemIdIn, QString name, int8_t value, QObject *parent): QObject(parent), ItemData (itemIdIn, name, value)
{
}
@ -50,13 +50,13 @@ void Item::setFunction(uint8_t function, bool on)
functionChanged(function, on);
}
void Item::setValue(uint8_t value)
void Item::setValue(int8_t value)
{
value_ = value;
valueChanged(value_);
}
void Item::informValue(uint8_t value)
void Item::informValue(int8_t value)
{
Item::setValue(value);
}

View File

@ -12,12 +12,12 @@ class ItemData
{
protected:
QString name_;
uint8_t value_;
int8_t value_;
uint32_t itemId_;
public:
ItemData(uint32_t itemIdIn = QRandomGenerator::global()->generate(), QString name = "Item", uint8_t value = 0);
ItemData(uint32_t itemIdIn = QRandomGenerator::global()->generate(), QString name = "Item", int8_t value = 0);
inline bool operator==(const ItemData& in) const{ return itemId_==in.itemId_; }
inline bool operator!=(const ItemData& in) const{ return itemId_!=in.itemId_; }
@ -25,7 +25,7 @@ public:
uint32_t id() const;
void setName(QString name);
uint8_t getValue() const;
int8_t getValue() const;
virtual QString getName() const;
};
@ -37,22 +37,22 @@ private:
signals:
void valueChanged(uint8_t value);
void functionChanged(uint8_t function, bool on);
void valueChanged(int8_t value);
void functionChanged(uint8_t function, bool on);
public slots:
virtual void setValue(uint8_t value);
virtual void setValue(int8_t value);
virtual void setFunction(uint8_t funciton, bool value);
public:
Item(uint32_t itemIdIn = QRandomGenerator::global()->generate(), QString name = "Item", uint8_t value = 0, QObject *parent = nullptr);
Item(uint32_t itemIdIn = QRandomGenerator::global()->generate(), QString name = "Item", int8_t value = 0, QObject *parent = nullptr);
Item(const ItemData& itemData, QObject *parent = nullptr);
virtual ~Item();
void informValue(uint8_t value);
void informValue(int8_t value);
};

View File

@ -17,7 +17,7 @@ void Train::setFunction(uint8_t funciton, bool value)
micro->trainSetFunction(train_id_, funciton, value);
}
void Train::setValue(uint8_t value)
void Train::setValue(int8_t value)
{
Item::setValue(value);
if(micro)

View File

@ -18,8 +18,8 @@ public:
public slots:
void reverse();
virtual void setFunction(uint8_t function, bool on);
virtual void setValue(uint8_t value);
virtual void setFunction(uint8_t function, bool on);
virtual void setValue(int8_t value);
uint8_t getTrainId(){return train_id_;}
};

View File

@ -9,7 +9,7 @@ Turnout::Turnout(uint8_t id, uint8_t address, uint8_t subaddress)
name_ = QString("Turnout ")+QString::number(id);
}
void Turnout::setValue(uint8_t value)
void Turnout::setValue(int8_t value)
{
Item::setValue(value);
if(micro)

View File

@ -12,7 +12,7 @@ public:
static Microcontroller *micro;
explicit Turnout(uint8_t id = 0, uint8_t address = 0, uint8_t subaddress = 0);
virtual void setValue(uint8_t value);
virtual void setValue(int8_t value);
uint8_t getTurnoutId(){return turnoutId_;}
};

View File

@ -5,11 +5,11 @@
#include "items/train.h"
#include "items/turnout.h"
void Microcontroller::trainSetSpeed(uint8_t id, uint8_t speed)
void Microcontroller::trainSetSpeed(uint8_t id, int8_t speed)
{
qDebug()<<__func__;
std::stringstream ss;
ss<<"train "<<(unsigned)id<<" speed "<<(unsigned)speed<<'\n';
ss<<"train "<<(unsigned)id<<" speed "<<(int)speed<<'\n';
write(ss.str().c_str());
}

View File

@ -63,7 +63,7 @@ public:
public slots:
void requestState();
void trainSetSpeed(uint8_t id, uint8_t speed);
void trainSetSpeed(uint8_t id, int8_t speed);
void trainReverse(uint8_t id);
void trainSetFunction(uint8_t id, uint8_t function, bool on);
void tunoutSetDirection(uint8_t id, bool direction);

View File

@ -66,7 +66,7 @@ void TrainJs::axisChanged(const int id, const int axis, const qreal value)
{
if(std::shared_ptr<Item> workitem = item_.lock())
{
uint8_t newValue = (value+1)*7;
int8_t newValue = value*14;
if(newValue != workitem->getValue())
workitem->setValue(newValue);
}

View File

@ -71,7 +71,7 @@ void ItemWidget::deleteItem()
}
}
void ItemWidget::setValue(uint8_t value)
void ItemWidget::setValue(int8_t value)
{
moveToValue(value);
if(auto workingItem = item_.lock())
@ -80,13 +80,13 @@ void ItemWidget::setValue(uint8_t value)
disable();
}
void ItemWidget::moveToValue(uint8_t value)
void ItemWidget::moveToValue(int8_t value)
{
ui->slider->blockSignals(true);
ui->radioButton_left->blockSignals(true);
ui->radioButton_right->blockSignals(true);
ui->pushButton_reverse->setDisabled(value != 0);
ui->pushButton_reverse->setText(value == 0 ? "Reverse" : "Stop");
ui->slider->setValue(value);
ui->radioButton_left->setChecked(!value);
ui->radioButton_right->setChecked(value);
@ -133,8 +133,7 @@ void ItemWidget::reverse()
if(train && workingItem->getValue() == 0)
train->reverse();
else
{
qDebug()<<"!((bool)workingItem->getValue()) "<<!((bool)workingItem->getValue());
{
setValue(!((bool)workingItem->getValue()));
}
}
@ -171,11 +170,6 @@ void ItemWidget::stepUp()
void ItemWidget::stepDown()
{
if(ui->slider->value() == 0)
{
setValue(0);
return;
}
setValue(ui->slider->value()-1);
}

View File

@ -26,8 +26,8 @@ signals:
void deleteRequest(const ItemData& item);
private slots:
void setValue(uint8_t value);
void moveToValue(uint8_t value);
void setValue(int8_t value);
void moveToValue(int8_t value);
void deleteItem();
void stepUp();

View File

@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>280</width>
<height>83</height>
<width>312</width>
<height>78</height>
</rect>
</property>
<property name="sizePolicy">
@ -53,6 +53,9 @@
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QSlider" name="slider">
<property name="minimum">
<number>-14</number>
</property>
<property name="maximum">
<number>14</number>
</property>
@ -65,6 +68,12 @@
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="invertedAppearance">
<bool>false</bool>
</property>
<property name="invertedControls">
<bool>false</bool>
</property>
</widget>
</item>
<item>