switch to signed values for items
This commit is contained in:
		
							parent
							
								
									1f36522492
								
							
						
					
					
						commit
						6a9ad7f855
					
				
					 12 changed files with 39 additions and 36 deletions
				
			
		| 
						 | 
					@ -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);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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_;}
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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_;}
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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());
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue