void SoundSlider::mouseMoveEvent( QMouseEvent *event ) { /* handle mouserelease hijacking */ if ( isSliding && ( event->buttons() & ~Qt::RightButton ) == Qt::NoButton ) processReleasedButton(); if( isSliding ) { QRect rect( paddingL - 15, -1, wlength + 15 * 2 , wheight + 5 ); if( !rect.contains( event->pos() ) ) { /* We are outside */ if ( !b_mouseOutside ) setValue( i_oldvalue ); b_mouseOutside = true; } else { /* We are inside */ b_mouseOutside = false; changeValue( event->x() - paddingL ); emit sliderMoved( value() ); } } else { int i = ( ( event->x() - paddingL ) * maximum() + 40 ) / wlength; i = __MIN( __MAX( 0, i ), maximum() ); setToolTip( QString("%1 %" ).arg( i ) ); } }
void SeekSlider::mouseReleaseEvent( QMouseEvent *event ) { if ( event->button() != Qt::LeftButton && event->button() != Qt::MidButton ) { QSlider::mouseReleaseEvent( event ); return; } event->accept(); processReleasedButton(); }
int main(void) { DDRB = 0b01111111; // portB all registers are output except for PINB7 DDRD = 0b01111111; // portD all registers are output except for PIND7 PORTB = 0b10000000; // keep PINB7 as high PORTD = 0b10000000; /// keep PIND7 as high while(1) { if(bit_is_clear(PINB,7)){ processPressedButton(0); }else{ processReleasedButton(0); } if(bit_is_clear(PIND,7)){ processPressedButton(1); }else{ processReleasedButton(1); } } }
void SeekSlider::mouseMoveEvent( QMouseEvent *event ) { if ( ! ( event->buttons() & ( Qt::LeftButton | Qt::MidButton ) ) ) { /* Handle button release when mouserelease has been hijacked by popup */ processReleasedButton(); } if ( !isEnabled() ) return event->accept(); if( isSliding ) { setValue( QStyle::sliderValueFromPosition( MINIMUM, MAXIMUM, event->x() - handleLength() / 2, width() - handleLength(), false) ); emit sliderMoved( value() ); } /* Tooltip */ if ( inputLength > 0 ) { int margin = handleLength() / 2; int posX = qMax( rect().left() + margin, qMin( rect().right() - margin, event->x() ) ); QString chapterLabel; if ( orientation() == Qt::Horizontal ) /* TODO: vertical */ { QList<SeekPoint> points = chapters->getPoints(); int i_selected = -1; bool b_startsnonzero = false; if ( points.count() > 0 ) b_startsnonzero = ( points.at(0).time > 0 ); for( int i = 0 ; i < points.count() ; i++ ) { int x = points.at(i).time / 1000000.0 / inputLength * size().width(); if ( event->x() >= x ) i_selected = i + ( ( b_startsnonzero )? 1 : 0 ); } if ( i_selected >= 0 && i_selected < points.size() ) chapterLabel = points.at( i_selected ).name; } QPoint target( event->globalX() - ( event->x() - posX ), QWidget::mapToGlobal( QPoint( 0, 0 ) ).y() ); if( likely( size().width() > handleLength() ) ) { secstotimestr( psz_length, ( ( posX - margin ) * inputLength ) / ( size().width() - handleLength() ) ); mTimeTooltip->setTip( target, psz_length, chapterLabel ); } } event->accept(); }
void SoundSlider::mouseReleaseEvent( QMouseEvent *event ) { if( event->button() != Qt::RightButton ) processReleasedButton(); }