changes in arhitecture, some improvments, much optimising and simplify,
many bagfixes and new graphics engine
This commit is contained in:
108
touch_butt.cpp
Normal file
108
touch_butt.cpp
Normal file
@@ -0,0 +1,108 @@
|
||||
#include "touch_butt.h"
|
||||
|
||||
touch_butt::touch_butt(int butt_index, QString caption, QColor colr, QColor colg, QColor colw, QColor colp, QPushButton * parent) : QPushButton(parent)
|
||||
{
|
||||
cr = colr; cg = colg; cw = colw; cp = colp;
|
||||
aim_col = this->palette().button().color();
|
||||
next_col = aim_col;
|
||||
index = butt_index;
|
||||
this->setText(caption);
|
||||
connect(this,SIGNAL(pressed()),SLOT(butt_push()));
|
||||
connect(this,SIGNAL(clicked()),SLOT(butt_click()));
|
||||
connect(this,SIGNAL(toggled(bool)),SLOT(butt_toggle(bool)));
|
||||
connect(this,SIGNAL(released()),SLOT(butt_release()));
|
||||
timer = new QTimer(this);
|
||||
connect(timer,SIGNAL(timeout()),this,SLOT(timerDone()));
|
||||
timer->start(10);
|
||||
setWhite();
|
||||
is_push = false;
|
||||
}
|
||||
|
||||
|
||||
void touch_butt::setColor(QColor colr, QColor colg, QColor colw, QColor colp)
|
||||
{
|
||||
cr = colr; cg = colg; cw = colw; cp = colp;
|
||||
setWhite();
|
||||
}
|
||||
|
||||
|
||||
void touch_butt::timerDone()
|
||||
{
|
||||
float r = this->palette().button().color().redF();
|
||||
float g = this->palette().button().color().greenF();
|
||||
float b = this->palette().button().color().blueF();
|
||||
r += (aim_col.redF()-r)/9.0f;
|
||||
g += (aim_col.greenF()-g)/9.0f;
|
||||
b += (aim_col.blueF()-b)/9.0f;
|
||||
QPalette pal;
|
||||
pal.setColor(QPalette::Button,QColor(qRound(r*255.0f),qRound(g*255.0f),qRound(b*255.0f)));
|
||||
this->setPalette(pal);
|
||||
if (qAbs(aim_col.redF() - r) < 0.02 && qAbs(aim_col.greenF() - g) < 0.02 && qAbs(aim_col.blueF() - b) < 0.02)
|
||||
{
|
||||
pal.setColor(QPalette::Button,aim_col);
|
||||
this->setPalette(pal);
|
||||
aim_col = next_col;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void touch_butt::butt_click()
|
||||
{
|
||||
is_push = false;
|
||||
//setWhite();
|
||||
//timerDone();
|
||||
emit touch_click(index);
|
||||
}
|
||||
|
||||
|
||||
void touch_butt::butt_push()
|
||||
{
|
||||
is_push = true;
|
||||
setPush();
|
||||
emit touch_push(index);
|
||||
}
|
||||
|
||||
|
||||
void touch_butt::butt_release()
|
||||
{
|
||||
is_push = false;
|
||||
setWhite();
|
||||
timerDone();
|
||||
}
|
||||
|
||||
|
||||
void touch_butt::butt_toggle(bool checked)
|
||||
{
|
||||
if (!checked) {
|
||||
setWhite();
|
||||
}
|
||||
emit touch_toggle(index,checked);
|
||||
}
|
||||
|
||||
|
||||
void touch_butt::setRed()
|
||||
{
|
||||
next_col = cr;
|
||||
timerDone();
|
||||
}
|
||||
|
||||
|
||||
void touch_butt::setGreen()
|
||||
{
|
||||
//if (!is_push)
|
||||
next_col = cg;
|
||||
}
|
||||
|
||||
|
||||
void touch_butt::setWhite()
|
||||
{
|
||||
//if (!is_push)
|
||||
next_col = cw;
|
||||
}
|
||||
|
||||
|
||||
void touch_butt::setPush()
|
||||
{
|
||||
next_col = cp;
|
||||
timerDone();
|
||||
}
|
||||
Reference in New Issue
Block a user