void Input::gpioChanged(bool value) { //Q_UNUSED(value); // check if is the same input if(m_debounceTimer->isActive()){ return; } qCDebug(dcRaspberryio) << "Gpio Changed. Value: " << value << "Gpio: " << m_number; if (value) { //input is on emit stateHigh(m_number); if(m_doublepressTimer->isActive()){ emit doublePressed(m_number); m_doublepressTimer->stop(); m_longpressTimer->stop(); return; } m_longpressTimer->start(); m_doublepressTimer->start(); m_debounceTimer->start(); } else { //input off emit stateLow(m_number); m_longpressTimer->stop(); //m_doublepressTimer->stop(); } }
cFrameSliderPopup::cFrameSliderPopup(QWidget *parent) : QFrame(parent), ui(new Ui::cFrameSliderPopup) { ui->setupUi(this); connect(ui->slider, SIGNAL(sliderReleased()), this, SLOT(sliderReleased())); connect(ui->buClose, SIGNAL(pressed()), this, SLOT(hide())); connect(ui->buDouble, SIGNAL(pressed()), this, SIGNAL(doublePressed())); connect(ui->buHalf, SIGNAL(pressed()), this, SIGNAL(halfPressed())); connect(ui->buInteger, SIGNAL(pressed()), this, SIGNAL(intPressed())); connect(ui->buReset, SIGNAL(pressed()), this, SIGNAL(resetPressed())); connect(ui->buZero, SIGNAL(pressed()), this, SIGNAL(zeroPressed())); sliderTimer = new QTimer(); sliderTimer->setSingleShot(true); connect(sliderTimer, SIGNAL(timeout()), this, SLOT(slotSliderTimerTrigger())); sliderTimer->start(100); integerMax = 0; integerMin = 0; integerMode = false; dialMode = false; dialScale = 1; ui->dial->hide(); ui->buUp->hide(); ui->buRight->hide(); ui->buDown->hide(); ui->buLeft->hide(); }
void MyDoubleSpinBox::focusInEvent(QFocusEvent *event) { QDoubleSpinBox::focusInEvent(event); QString type = GetType(objectName()); if (type != "text") { if (!slider) { QWidget *topWidget = window(); slider = new cFrameSliderPopup(topWidget); slider->setFocusPolicy(Qt::NoFocus); if (type == QString("spinboxd") || type == QString("spinboxd3") || type == QString("spinboxd4")) { int dialScale = pow(10.0, double(decimals())); slider->SetDialMode(dialScale, value()); hasDial = true; } slider->hide(); } QWidget *topWidget = window(); QPoint windowPoint = mapTo(topWidget, QPoint()); int width = this->width(); int hOffset = height(); slider->adjustSize(); QSize minimumSize = slider->minimumSizeHint(); width = max(width, int(minimumSize.width() * 0.6)); slider->setFixedWidth(width); if (windowPoint.y() + slider->height() + hOffset > topWidget->height()) hOffset = -slider->height(); slider->move(windowPoint.x(), windowPoint.y() + hOffset); slider->show(); connect(slider, SIGNAL(resetPressed()), this, SLOT(slotResetToDefault())); connect(slider, SIGNAL(intPressed()), this, SLOT(slotRoundValue())); if (hasDial) { connect(this, SIGNAL(valueChanged(double)), slider, SLOT(slotUpdateValue(double))); connect(slider, SIGNAL(valueChanged(double)), this, SLOT(setValue(double))); connect(slider, SIGNAL(upPressed()), this, SLOT(slotZeroValue())); connect(slider, SIGNAL(downPressed()), this, SLOT(slot180Value())); connect(slider, SIGNAL(rightPressed()), this, SLOT(slot90Value())); connect(slider, SIGNAL(leftPressed()), this, SLOT(slotMinus90Value())); } else { connect(slider, SIGNAL(timerTrigger()), this, SLOT(slotSliderTimerUpdateValue())); connect(slider, SIGNAL(zeroPressed()), this, SLOT(slotZeroValue())); connect(slider, SIGNAL(halfPressed()), this, SLOT(slotHalfValue())); connect(slider, SIGNAL(doublePressed()), this, SLOT(slotDoubleValue())); connect(slider, SIGNAL(minusPressed()), this, SLOT(slotInvertSign())); } }
void MyLineEdit::focusInEvent(QFocusEvent *event) { QLineEdit::focusInEvent(event); QString type = GetType(objectName()); if (type != "text") { if (!slider) { QWidget *topWidget = window(); slider = new cFrameSliderPopup(topWidget); slider->setFocusPolicy(Qt::NoFocus); slider->hide(); } QWidget *topWidget = window(); QPoint windowPoint = mapTo(topWidget, QPoint()); int width = this->width(); int hOffset = height(); QSize minimumSize = slider->minimumSizeHint(); width = max(width, int(minimumSize.width() * 0.6)); slider->adjustSize(); slider->setFixedWidth(width); if (windowPoint.y() + slider->height() + hOffset > topWidget->height()) hOffset = -slider->height(); slider->move(windowPoint.x(), windowPoint.y() + hOffset); slider->show(); connect(slider, SIGNAL(timerTrigger()), this, SLOT(slotSliderTimerUpdateValue())); connect(slider, SIGNAL(resetPressed()), this, SLOT(slotResetToDefault())); connect(slider, SIGNAL(zeroPressed()), this, SLOT(slotZeroValue())); connect(slider, SIGNAL(minusPressed()), this, SLOT(slotInvertSign())); connect(slider, SIGNAL(halfPressed()), this, SLOT(slotHalfValue())); connect(slider, SIGNAL(doublePressed()), this, SLOT(slotDoubleValue())); connect(slider, SIGNAL(intPressed()), this, SLOT(slotRoundValue())); } }
void MySpinBox::focusInEvent(QFocusEvent *event) { QSpinBox::focusInEvent(event); QString type = GetType(objectName()); if (type != "text") { if (!slider) { QWidget *topWidget = window(); slider = new cFrameSliderPopup(topWidget); slider->setFocusPolicy(Qt::NoFocus); slider->hide(); } // update min and max slider->SetIntegerMode(minimum(), maximum(), value()); QWidget *topWidget = window(); QPoint windowPoint = mapTo(topWidget, QPoint()); int width = this->width(); int hOffset = height(); slider->adjustSize(); slider->setFixedWidth(width); if (windowPoint.y() + slider->height() + hOffset > topWidget->height()) hOffset = -slider->height(); slider->move(windowPoint.x(), windowPoint.y() + hOffset); slider->show(); connect(slider, SIGNAL(resetPressed()), this, SLOT(slotResetToDefault())); connect(slider, SIGNAL(halfPressed()), this, SLOT(slotHalfValue())); connect(slider, SIGNAL(doublePressed()), this, SLOT(slotDoubleValue())); connect(this, SIGNAL(valueChanged(int)), slider, SLOT(slotUpdateValue(int))); connect(slider, SIGNAL(valueChanged(int)), this, SLOT(setValue(int))); } }