src/hbwidgets/widgets/hbpushbutton.cpp
changeset 6 c3690ec91ef8
parent 5 627c4a0fd0e7
child 7 923ff622b8b9
equal deleted inserted replaced
5:627c4a0fd0e7 6:c3690ec91ef8
    40 
    40 
    41 #include <QGraphicsSceneMouseEvent>
    41 #include <QGraphicsSceneMouseEvent>
    42 #include <QTimer>
    42 #include <QTimer>
    43 #include <QGraphicsItem>
    43 #include <QGraphicsItem>
    44 #include <QDebug>
    44 #include <QDebug>
    45 
    45 #include <QCoreApplication>
       
    46 #include <QApplication>
    46 
    47 
    47 /*!
    48 /*!
    48     @beta
    49     @beta
    49     @hbwidgets
    50     @hbwidgets
    50     \class HbPushButton
    51     \class HbPushButton
   369         //updatePrimitives();
   370         //updatePrimitives();
   370         if( d->textItem ) {
   371         if( d->textItem ) {
   371             HbStyleOptionPushButton buttonOption;
   372             HbStyleOptionPushButton buttonOption;
   372             initStyleOption( &buttonOption );
   373             initStyleOption( &buttonOption );
   373             style( )->updatePrimitive( d->textItem, HbStyle::P_PushButton_text, &buttonOption);
   374             style( )->updatePrimitive( d->textItem, HbStyle::P_PushButton_text, &buttonOption);
       
   375             if ( isEnabled() ) {
       
   376                 setProperty("state", "normal");
       
   377             }
   374         }
   378         }
   375         if(doPolish) {
   379         if(doPolish) {
   376             repolish( );
   380             repolish( );
   377         }
   381         }
   378     }
   382     }
   457                 setProperty("state", "normal");
   461                 setProperty("state", "normal");
   458             } 
   462             } 
   459 
   463 
   460         }
   464         }
   461         if( doPolish ) {
   465         if( doPolish ) {
   462             repolish();
   466             //Instead of posting an event we are directly sending polish and layout request
       
   467             //event because during runtime if icon is set for the first time some
       
   468             //flickering was coming. That was coming because icon was getting painted
       
   469             //before polish.
       
   470             QEvent* polishEvent = new QEvent( QEvent::Polish );
       
   471             QCoreApplication::sendEvent(this, polishEvent);
       
   472             QApplication::sendPostedEvents(this, QEvent::LayoutRequest);
   463         }
   473         }
   464     }
   474     }
   465 }
   475 }
   466 
   476 
   467 /*!
   477 /*!
   738             }
   748             }
   739             break;
   749             break;
   740         case Qt::Key_Up:
   750         case Qt::Key_Up:
   741         case Qt::Key_Left:
   751         case Qt::Key_Left:
   742         case Qt::Key_Right:
   752         case Qt::Key_Right:
   743         case Qt::Key_Down:{
   753         case Qt::Key_Down:
       
   754             if( d->keyNavigation()) {
   744                 d->navigationKeyPress = true;
   755                 d->navigationKeyPress = true;
   745             }
   756             }
   746             break;       
   757             break;       
   747     }
   758     }
   748     HbAbstractButton::keyPressEvent(event);
   759     HbAbstractButton::keyPressEvent(event);
   770             }
   781             }
   771             break;
   782             break;
   772             case Qt::Key_Up:
   783             case Qt::Key_Up:
   773             case Qt::Key_Left:
   784             case Qt::Key_Left:
   774             case Qt::Key_Right:
   785             case Qt::Key_Right:
   775             case Qt::Key_Down:{
   786             case Qt::Key_Down:
       
   787                 if ( d->keyNavigation() ) {
   776                     d->navigationKeyPress = false;
   788                     d->navigationKeyPress = false;
   777                 }
   789                 }
   778             break;       
   790             break;       
   779     }
   791     }
   780     HbAbstractButton::keyReleaseEvent( event );
   792     HbAbstractButton::keyReleaseEvent( event );
   849 #ifdef HB_GESTURE_FW
   861 #ifdef HB_GESTURE_FW
   850 void HbPushButton::gestureEvent( QGestureEvent *event )
   862 void HbPushButton::gestureEvent( QGestureEvent *event )
   851 {
   863 {
   852     Q_D(HbPushButton);
   864     Q_D(HbPushButton);
   853     if(HbTapGesture *tap = qobject_cast<HbTapGesture *>(event->gesture(Qt::TapGesture))) {
   865     if(HbTapGesture *tap = qobject_cast<HbTapGesture *>(event->gesture(Qt::TapGesture))) {
       
   866         bool hit = hitButton(mapFromScene(event->mapToGraphicsScene(tap->position())));
   854         switch(tap->state()) {
   867         switch(tap->state()) {
   855         case Qt::GestureStarted:{
   868             case Qt::GestureStarted:
       
   869                 if( hit ){
   856 #ifdef HB_EFFECTS
   870 #ifdef HB_EFFECTS
   857                 HbEffect::start( this, HB_PUSHBUTTON_TYPE, "pressed" );
   871                     HbEffect::start( this, HB_PUSHBUTTON_TYPE, "pressed" );
   858 #endif
   872 #endif
       
   873                     if( d->checkable && !d->checked) {
       
   874                         setProperty( "state", "latched" );
       
   875                     }else if(!d->checkable) {
       
   876                         setProperty( "state", "pressed" );
       
   877                     }
       
   878                 }
       
   879                 break;
       
   880             case Qt::GestureUpdated:
       
   881                 if(tap->tapStyleHint() == HbTapGesture::TapAndHold && hit) {
       
   882                     d->longPress = true;
       
   883                     emit longPress( event->mapToGraphicsScene(tap->position()) );
       
   884                 }
       
   885                 break;
       
   886             case Qt::GestureCanceled:
       
   887                 setProperty( "state", "normal" );
       
   888                 break;
       
   889             case Qt::GestureFinished:
       
   890                 if( hit ){
       
   891 #ifdef HB_EFFECTS
       
   892                     HbEffect::start( this, HB_PUSHBUTTON_TYPE, "released" );
       
   893 #endif
       
   894                 }
   859                 if( d->checkable && !d->checked) {
   895                 if( d->checkable && !d->checked) {
   860                     setProperty( "state", "latched" );
   896                     setProperty( "state", "latched" );
   861                 }else if(!d->checkable) {
   897                 }else {
   862                     setProperty( "state", "pressed" );
       
   863                 }
       
   864             }
       
   865             break;
       
   866         case Qt::GestureUpdated:
       
   867             if(tap->tapStyleHint() == HbTapGesture::TapAndHold) {
       
   868                 d->longPress = true;
       
   869                 emit longPress( event->mapToGraphicsScene(tap->position()) );
       
   870             }
       
   871             break;
       
   872         case Qt::GestureCanceled:
       
   873             setProperty( "state", "normal" );
       
   874             break;
       
   875         case Qt::GestureFinished:{
       
   876 #ifdef HB_EFFECTS
       
   877                 HbEffect::start( this, HB_PUSHBUTTON_TYPE, "released" );
       
   878 #endif
       
   879                 if( d->checkable && !d->checked) {
       
   880                     setProperty( "state", "latched" );
       
   881                 }else {                    
       
   882                     setProperty( "state", "normal" );
   898                     setProperty( "state", "normal" );
   883                 }
   899                 }
   884 
   900                 break;
   885             }
   901             default:
   886             break;
   902                 break;
   887         default:
   903         }
   888             break;
   904     }
   889         }
       
   890     }
       
   891 
       
   892     HbAbstractButton::gestureEvent( event );
   905     HbAbstractButton::gestureEvent( event );
   893 
       
   894 }
   906 }
   895 #endif
   907 #endif
   896 
   908 
   897 
   909 
   898 /*!
   910 /*!