switch to signed values for items

This commit is contained in:
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> #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; name_ = name;
} }
uint8_t ItemData::getValue() const int8_t ItemData::getValue() const
{ {
return value_; return value_;
} }
@ -31,7 +31,7 @@ uint32_t ItemData::id() const
//item //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); functionChanged(function, on);
} }
void Item::setValue(uint8_t value) void Item::setValue(int8_t value)
{ {
value_ = value; value_ = value;
valueChanged(value_); valueChanged(value_);
} }
void Item::informValue(uint8_t value) void Item::informValue(int8_t value)
{ {
Item::setValue(value); Item::setValue(value);
} }

View File

@ -12,12 +12,12 @@ class ItemData
{ {
protected: protected:
QString name_; QString name_;
uint8_t value_; int8_t value_;
uint32_t itemId_; uint32_t itemId_;
public: 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_; }
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; uint32_t id() const;
void setName(QString name); void setName(QString name);
uint8_t getValue() const; int8_t getValue() const;
virtual QString getName() const; virtual QString getName() const;
}; };
@ -37,22 +37,22 @@ private:
signals: signals:
void valueChanged(uint8_t value); void valueChanged(int8_t value);
void functionChanged(uint8_t function, bool on); void functionChanged(uint8_t function, bool on);
public slots: public slots:
virtual void setValue(uint8_t value); virtual void setValue(int8_t value);
virtual void setFunction(uint8_t funciton, bool value); virtual void setFunction(uint8_t funciton, bool value);
public: 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); Item(const ItemData& itemData, QObject *parent = nullptr);
virtual ~Item(); 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); micro->trainSetFunction(train_id_, funciton, value);
} }
void Train::setValue(uint8_t value) void Train::setValue(int8_t value)
{ {
Item::setValue(value); Item::setValue(value);
if(micro) if(micro)

View File

@ -18,8 +18,8 @@ public:
public slots: public slots:
void reverse(); void reverse();
virtual void setFunction(uint8_t function, bool on); virtual void setFunction(uint8_t function, bool on);
virtual void setValue(uint8_t value); virtual void setValue(int8_t value);
uint8_t getTrainId(){return train_id_;} 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); name_ = QString("Turnout ")+QString::number(id);
} }
void Turnout::setValue(uint8_t value) void Turnout::setValue(int8_t value)
{ {
Item::setValue(value); Item::setValue(value);
if(micro) if(micro)

View File

@ -12,7 +12,7 @@ public:
static Microcontroller *micro; static Microcontroller *micro;
explicit Turnout(uint8_t id = 0, uint8_t address = 0, uint8_t subaddress = 0); 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_;} uint8_t getTurnoutId(){return turnoutId_;}
}; };

View File

@ -5,11 +5,11 @@
#include "items/train.h" #include "items/train.h"
#include "items/turnout.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__; qDebug()<<__func__;
std::stringstream ss; std::stringstream ss;
ss<<"train "<<(unsigned)id<<" speed "<<(unsigned)speed<<'\n'; ss<<"train "<<(unsigned)id<<" speed "<<(int)speed<<'\n';
write(ss.str().c_str()); write(ss.str().c_str());
} }

View File

@ -63,7 +63,7 @@ public:
public slots: public slots:
void requestState(); void requestState();
void trainSetSpeed(uint8_t id, uint8_t speed); void trainSetSpeed(uint8_t id, int8_t speed);
void trainReverse(uint8_t id); void trainReverse(uint8_t id);
void trainSetFunction(uint8_t id, uint8_t function, bool on); void trainSetFunction(uint8_t id, uint8_t function, bool on);
void tunoutSetDirection(uint8_t id, bool direction); 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()) if(std::shared_ptr<Item> workitem = item_.lock())
{ {
uint8_t newValue = (value+1)*7; int8_t newValue = value*14;
if(newValue != workitem->getValue()) if(newValue != workitem->getValue())
workitem->setValue(newValue); 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); moveToValue(value);
if(auto workingItem = item_.lock()) if(auto workingItem = item_.lock())
@ -80,13 +80,13 @@ void ItemWidget::setValue(uint8_t value)
disable(); disable();
} }
void ItemWidget::moveToValue(uint8_t value) void ItemWidget::moveToValue(int8_t value)
{ {
ui->slider->blockSignals(true); ui->slider->blockSignals(true);
ui->radioButton_left->blockSignals(true); ui->radioButton_left->blockSignals(true);
ui->radioButton_right->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->slider->setValue(value);
ui->radioButton_left->setChecked(!value); ui->radioButton_left->setChecked(!value);
ui->radioButton_right->setChecked(value); ui->radioButton_right->setChecked(value);
@ -133,8 +133,7 @@ void ItemWidget::reverse()
if(train && workingItem->getValue() == 0) if(train && workingItem->getValue() == 0)
train->reverse(); train->reverse();
else else
{ {
qDebug()<<"!((bool)workingItem->getValue()) "<<!((bool)workingItem->getValue());
setValue(!((bool)workingItem->getValue())); setValue(!((bool)workingItem->getValue()));
} }
} }
@ -171,11 +170,6 @@ void ItemWidget::stepUp()
void ItemWidget::stepDown() void ItemWidget::stepDown()
{ {
if(ui->slider->value() == 0)
{
setValue(0);
return;
}
setValue(ui->slider->value()-1); setValue(ui->slider->value()-1);
} }

View File

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

View File

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