//! Button clicked void QwtCounter::btnClicked() { for ( int i = 0; i < ButtonCnt; i++ ) { if ( d_data->buttonUp[i] == sender() ) incrementValue( d_data->increment[i] ); if ( d_data->buttonDown[i] == sender() ) incrementValue( -d_data->increment[i] ); } }
long getNumber (long val) { char number[MAX_DIGITS]; long temp=val,bestValue=-1; int count = MAX_DIGITS-1, var=0, len=0,j=0, prevDup=0; if (!validateInputLength(val)) return -1; while (temp>0 && count >= 0) { number[count--] = temp%10; temp = temp / 10; } //shifting the elements in number to begin from 0 for (var = count+1; var < MAX_DIGITS; ++var) { number[len]=number[var]; if(number[len] < 1) return -1; len++; } //now we have each digit in number[] and the length in len do { for (var = 0; var < len; ++var) { if ((number[var]+var)%len != (var+1)%len) break; } if (var == len) { if ((count=isDuplicates(number, len))) { if (bestValue==-1 || prevDup>count) { bestValue=findVal(number,len); prevDup=count; } if (!incrementValue(number, &len)) return bestValue; } else //no duplicates and the required number return findVal(number,len); } else { number[var]+=len-(number[var]%len) + 1; for (j = var+1; j < len; ++j) { number[j] = 1; } if (number[var] > 9) { if (var>0 && number[var-1]<9) { number[var]=1; number[var-1]++; } else if (!incrementDigit(number, &len)) //already reached the greatest number return bestValue; } } //printf ("%ld\n",findVal(number,len)); } while (len <= MAX_DIGITS); return bestValue; }
/*! Mouse press event handler \param event Mouse event */ void QwtSlider::mousePressEvent( QMouseEvent *event ) { if ( isReadOnly() ) { event->ignore(); return; } const QPoint pos = event->pos(); if ( isValid() && d_data->sliderRect.contains( pos ) ) { if ( !handleRect().contains( pos ) ) { const int markerPos = transform( value() ); d_data->stepsIncrement = pageSteps(); if ( d_data->orientation == Qt::Horizontal ) { if ( pos.x() < markerPos ) d_data->stepsIncrement = -d_data->stepsIncrement; } else { if ( pos.y() < markerPos ) d_data->stepsIncrement = -d_data->stepsIncrement; } if ( isInverted() ) d_data->stepsIncrement = -d_data->stepsIncrement; const double v = value(); incrementValue( d_data->stepsIncrement ); if ( v != value() ) { if ( isTracking() ) Q_EMIT valueChanged( value() ); else d_data->pendingValueChange = true; Q_EMIT sliderMoved( value() ); } d_data->timerTick = false; d_data->repeatTimerId = startTimer( qMax( 250, 2 * updateInterval() ) ); return; } } QwtAbstractSlider::mousePressEvent( event ); }
void MSTypeEntryField<Type>::decrement(void) { if (MSView::model()!=0) { if (minimumValue().isSet()==MSTrue) { Type aType=value(); aType-=incrementValue(); if (aType>=minimumValue()) { value()=aType; valueChange(); } } else { value()-=incrementValue(); valueChange(); } } }
void MSIntEntryField::decrement(void) { if (MSView::model()!=0) { if (value() >= INT_MIN + incrementValue()) // prevent underflow { if (minimumValue().isSet()==MSTrue) { int anInt=value(); anInt-=(int)incrementValue(); if (anInt>=minimumValue()) { value()=anInt; valueChange(); } } else { value()-=incrementValue(); valueChange(); } } } }
void MSIntEntryField::increment(void) { if (MSView::model()!=0) { if (value() <= INT_MAX - incrementValue()) // prevent overflow { if (maximumValue().isSet()==MSTrue) { int anInt=value(); anInt+=(int)incrementValue(); if (anInt<=maximumValue()) { value()=anInt; valueChange(); } } else { value()+=incrementValue(); valueChange(); } } } }
void MSFloatEntryField::decrement(void) { if (MSView::model()!=0) { if (value() >= -DBL_MAX + incrementValue()) // prevent underflow { if (minimumValue().isSet()==MSTrue) { double anFloat=value(); anFloat-=incrementValue(); if (anFloat>=minimumValue()) { value()=anFloat; valueChange(); } } else { value()-=incrementValue(); valueChange(); } } } }
void MSFloatEntryField::increment(void) { if (MSView::model()!=0) { if (value() <= DBL_MAX - incrementValue()) // prevent overflow { if (maximumValue().isSet()==MSTrue) { double anFloat=value(); anFloat+=incrementValue(); if (anFloat<=maximumValue()) { value()=anFloat; valueChange(); } } else { value()+=incrementValue(); valueChange(); } } } }
void MSTypeEntryField<Type>::set(MSAttrValueList& avList_) { MSEntryFieldPlus::set(avList_); MSIndexVector index; for (unsigned i=0;i<avList_.length();i++) { const MSString& attr=avList_[i].attribute(); const MSString& aValue=avList_[i].value(); if (attr=="incrementValue") { Type aType; if (aType.set(aValue)==MSError::MSSuccess) { incrementValue(aType),index<<i; } } else if (attr=="minimumValue") { Type aType; if (aValue.length()==0) { _minimumValue.unset(); } else if (aType.set(aValue)==MSError::MSSuccess) { _minimumValue=aType; } index<<i; } else if (attr=="maximumValue") { Type aType; if (aValue.length()==0) { _maximumValue.unset(); } else if (aType.set(aValue)==MSError::MSSuccess) { _maximumValue=aType; } index<<i; } } avList_.remove(index); }
/*! Handle wheel events \param event Wheel event */ void QwtCounter::wheelEvent( QWheelEvent *event ) { event->accept(); if ( d_data->numButtons <= 0 ) return; int increment = d_data->increment[0]; if ( d_data->numButtons >= 2 ) { if ( event->modifiers() & Qt::ControlModifier ) increment = d_data->increment[1]; } if ( d_data->numButtons >= 3 ) { if ( event->modifiers() & Qt::ShiftModifier ) increment = d_data->increment[2]; } for ( int i = 0; i < d_data->numButtons; i++ ) { if ( d_data->buttonDown[i]->geometry().contains( event->pos() ) || d_data->buttonUp[i]->geometry().contains( event->pos() ) ) { increment = d_data->increment[i]; } } const int wheel_delta = 120; #if 1 int delta = event->delta(); if ( delta >= 2 * wheel_delta ) delta /= 2; // Never saw an abs(delta) < 240 #endif incrementValue( delta / wheel_delta * increment ); }
int main() { int a = 10, b = 20; std::cout << "std::ref" << std::endl; incrementRef(std::ref(a), std::ref(b)); std::cout << "a = " << a << std::endl; std::cout << "b = " << b << std::endl; std::cout << "compiler generated reference call" << std::endl; incrementRef(a, b); std::cout << "a = " << a << std::endl; std::cout << "b = " << b << std::endl; std::cout << "pointer call" << std::endl; incrementPtr(&a, &b); std::cout << "a = " << a << std::endl; std::cout << "b = " << b << std::endl; std::cout << "value call" << std::endl; incrementValue(a, b); std::cout << "a = " << a << std::endl; std::cout << "b = " << b << std::endl; }
/*! Timer event handler Handles the timer, when the mouse stays pressed inside the sliderRect(). \param event Mouse event */ void QwtSlider::timerEvent( QTimerEvent *event ) { if ( event->timerId() != d_data->repeatTimerId ) { QwtAbstractSlider::timerEvent( event ); return; } if ( !isValid() ) { killTimer( d_data->repeatTimerId ); d_data->repeatTimerId = 0; return; } const double v = value(); incrementValue( d_data->stepsIncrement ); if ( v != value() ) { if ( isTracking() ) Q_EMIT valueChanged( value() ); else d_data->pendingValueChange = true; Q_EMIT sliderMoved( value() ); } if ( !d_data->timerTick ) { // restart the timer with a shorter interval killTimer( d_data->repeatTimerId ); d_data->repeatTimerId = startTimer( updateInterval() ); d_data->timerTick = true; } }
/*! Handle key events - Ctrl + Qt::Key_Home\n Step to minimum() - Ctrl + Qt::Key_End\n Step to maximum() - Qt::Key_Up\n Increment by incSteps(QwtCounter::Button1) - Qt::Key_Down\n Decrement by incSteps(QwtCounter::Button1) - Qt::Key_PageUp\n Increment by incSteps(QwtCounter::Button2) - Qt::Key_PageDown\n Decrement by incSteps(QwtCounter::Button2) - Shift + Qt::Key_PageUp\n Increment by incSteps(QwtCounter::Button3) - Shift + Qt::Key_PageDown\n Decrement by incSteps(QwtCounter::Button3) \param event Key event */ void QwtCounter::keyPressEvent ( QKeyEvent *event ) { bool accepted = true; switch ( event->key() ) { case Qt::Key_Home: { if ( event->modifiers() & Qt::ControlModifier ) setValue( minimum() ); else accepted = false; break; } case Qt::Key_End: { if ( event->modifiers() & Qt::ControlModifier ) setValue( maximum() ); else accepted = false; break; } case Qt::Key_Up: { incrementValue( d_data->increment[0] ); break; } case Qt::Key_Down: { incrementValue( -d_data->increment[0] ); break; } case Qt::Key_PageUp: case Qt::Key_PageDown: { int increment = d_data->increment[0]; if ( d_data->numButtons >= 2 ) increment = d_data->increment[1]; if ( d_data->numButtons >= 3 ) { if ( event->modifiers() & Qt::ShiftModifier ) increment = d_data->increment[2]; } if ( event->key() == Qt::Key_PageDown ) increment = -increment; incrementValue( increment ); break; } default: { accepted = false; } } if ( accepted ) { event->accept(); return; } QWidget::keyPressEvent ( event ); }