-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbytebutton.cpp
125 lines (113 loc) · 3.16 KB
/
bytebutton.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
#include "bytebutton.h"
#include "QDebug"
#include <QTimer>
byteButton::byteButton()
{
connect(this, &byteButton::clicked, this, &byteButton::onByteButtonClicked);
connect (timer, &QTimer::timeout, this, &byteButton::defaultButtonColor);
}
void byteButton::setByteNum(int _devNum, int _byteNum)
{
devNum = _devNum;
byteNum = _byteNum;
QFont numLabelFont("Arial", 5);
numLabel->setParent(this);
numLabel->setFont(numLabelFont);
numLabel->setText(' ' + QString::number(byteNum));
}
byteButton::~byteButton()
{
}
void byteButton::updateBtnData(int _devNum, QVector<int> fullData)
{
QString txttmp;
if (devNum == _devNum && this->isEnabled())
{
if (wordType == 0)
{
txttmp = (Int2Hex(fullData.at(byteNum)));
}
else if (wordType == 1)
{
txttmp = ((Int2Hex(fullData.at(byteNum+1))+':'+(Int2Hex(fullData.at(byteNum)))));
}
else if (wordType == 2)
{
txttmp = ((Int2Hex(fullData.at(byteNum+3))+':'+(Int2Hex(fullData.at(byteNum+2)))+':'
+(Int2Hex(fullData.at(byteNum+1))+':'+(Int2Hex(fullData.at(byteNum))))));
}
if (txttmp != this->text())
{
byteButton::setText(txttmp);
changeButtonColor();
}
}
if (!this->isEnabled()) this->setText("--->");
emit wordDataFullHex(devNum, byteNum, this->text());
}
void byteButton::onByteButtonClicked()
{
emit openByteSettingsForm(devNum, byteNum);
}
void byteButton::transformToWord(int _wordType)
{
if (this->isEnabled())
{
if (_wordType == 0) //8bit
{
emit setButton(byteNum+1,1);
emit setButton(byteNum+2,1);
emit setButton(byteNum+3,1);
}
else if (_wordType == 1) //16bit
{
emit setButton(byteNum+1,0);
emit setButton(byteNum+2,1);
emit setButton(byteNum+3,1);
}
else if (_wordType == 2) //32bit
{
emit setButton(byteNum+1,0);
emit setButton(byteNum+2,0);
emit setButton(byteNum+3,0);
}
}
}
void byteButton::setButtonStatus(int _byteNum, bool status)
{
if (byteNum == _byteNum)
{
this->setEnabled(status);
}
}
void byteButton::setWordType(int _devNum, int _byteNum, int _wordType)
{
if (devNum == _devNum && byteNum == _byteNum)
{
wordType = _wordType;
transformToWord(wordType);
}
}
void byteButton::setMaskInThisWord(int _devNum, int _byteNum)
{
if (_byteNum == byteNum && _devNum == devNum && !maskInside)
maskInside = true;
}
void byteButton::changeButtonColor()
{
this->setStyleSheet("QPushButton{background:#00FF00;}");
timer->setInterval(500);
timer->start();
}
void byteButton::defaultButtonColor()
{
timer->stop();
if (maskInside == false)
this->setStyleSheet("QPushButton{background:none;}");
else if (maskInside == true)
this->setStyleSheet("QPushButton{background:#FFFF00;}");
}
QString byteButton::Int2Hex(int num) //для удобства конвертирования из инт в хекс
{
return QString("%1").arg(num,0,16).toUpper();
}