//!  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] );
    }
}
Exemple #2
0
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;
}
Exemple #3
0
/*!
   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 );
}
Exemple #4
0
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();
      }
   }
}
Exemple #5
0
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();
        }
      }
   }
}
Exemple #6
0
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();
        }
     }
   }
}
Exemple #7
0
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();
        }
      }
   }
}
Exemple #8
0
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();
        }
     }
   }
}
Exemple #9
0
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;
 }
Exemple #12
0
/*!
   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 );
}