src/hbwidgets/widgets/hbpushbutton.cpp
changeset 28 b7da29130b0e
parent 23 e6ad4ef83b23
equal deleted inserted replaced
23:e6ad4ef83b23 28:b7da29130b0e
   256             q->ungrabGesture(Qt::TapGesture);
   256             q->ungrabGesture(Qt::TapGesture);
   257         } else {
   257         } else {
   258             q->grabGesture(Qt::TapGesture);
   258             q->grabGesture(Qt::TapGesture);
   259         }
   259         }
   260     }
   260     }
   261 
       
   262     if( !focusItem ) {
       
   263         focusItem = HbStylePrivate::createPrimitive(HbStylePrivate::P_PushButton_focus, q);
       
   264         //focus primitive is will not be visible by default, 
       
   265         //only in case of keyboard focus events it will be Visible.
       
   266         focusItem->setVisible( false );
       
   267     }
       
   268 }
   261 }
   269 
   262 
   270 void HbPushButtonPrivate::_q_handleLongKeyPress( )
   263 void HbPushButtonPrivate::_q_handleLongKeyPress( )
   271 {
   264 {
   272     Q_Q( HbPushButton );
   265     Q_Q( HbPushButton );
   678     
   671     
   679  */
   672  */
   680 void HbPushButton::recreatePrimitives()
   673 void HbPushButton::recreatePrimitives()
   681 {
   674 {
   682    Q_D( HbPushButton );
   675    Q_D( HbPushButton );
   683   HbWidget::recreatePrimitives();
   676    HbWidget::recreatePrimitives();
   684 
   677    if ( d->frameItem ) {
   685    delete d->frameItem;
   678        delete d->frameItem;
   686    d->frameItem = 0;
   679        d->frameItem = 0;
   687    delete d->iconItem;
   680    }
   688    d->iconItem = 0;
   681    if ( d->iconItem ) {
   689    delete d->textItem;
   682        delete d->iconItem;
   690    d->textItem = 0;
   683        d->iconItem = 0;
   691    delete d->touchArea;
   684    }
   692    d->touchArea = 0;
   685    if ( d->textItem ) {
   693    delete d->additionalTextItem;
   686        delete d->textItem ;
   694    d->additionalTextItem = 0;
   687        d->textItem = 0;
   695    delete d->focusItem;
   688    }
   696    d->focusItem = 0;
   689    if ( d->touchArea ) {
   697    
   690        delete d->touchArea ;
       
   691        d->touchArea = 0;
       
   692    }
       
   693    if ( d->additionalTextItem ) {
       
   694        delete d->additionalTextItem ;
       
   695        d->additionalTextItem = 0;
       
   696    }
       
   697    if ( d->focusItem ) {
       
   698        delete d->focusItem ;
       
   699        d->focusItem = 0;
       
   700    }
   698    d->createPrimitives( );
   701    d->createPrimitives( );
   699    setFrameBackground( 0 );
   702    setFrameBackground( 0 );
   700 }
   703 }
   701 
   704 
   702 /*!
   705 /*!
   704  */
   707  */
   705 void HbPushButton::updatePrimitives()
   708 void HbPushButton::updatePrimitives()
   706 {
   709 {
   707     Q_D( HbPushButton );
   710     Q_D( HbPushButton );
   708     HbWidget::updatePrimitives( );
   711     HbWidget::updatePrimitives( );
   709 
       
   710     HbStyleOptionPushButton buttonOption;
   712     HbStyleOptionPushButton buttonOption;
   711     initStyleOption(&buttonOption);
   713     initStyleOption(&buttonOption);
       
   714     //update the button color property information 
       
   715     if ( d->checkable ) { 
       
   716         if ( d->checked ) {
       
   717             setProperty( "state", "latched" );
       
   718         }
       
   719         else {
       
   720             setProperty( "state", "normal" );
       
   721         }
       
   722     }
       
   723     else{
       
   724         if ( d->down ) {
       
   725             setProperty( "state", "pressed" );
       
   726         }
       
   727         else {
       
   728             setProperty( "state", "normal" );
       
   729         }
       
   730     }
   712     if ( d->textItem ) {
   731     if ( d->textItem ) {
   713         HbStylePrivate::updatePrimitive( d->textItem, HbStylePrivate::P_PushButton_text, &buttonOption );
   732         HbStylePrivate::updatePrimitive( d->textItem, HbStylePrivate::P_PushButton_text, &buttonOption );
   714     }
   733     }
   715     if ( d->touchArea ) {
   734     if ( d->touchArea ) {
   716         HbStylePrivate::updatePrimitive( d->touchArea, HbStylePrivate::P_PushButton_toucharea, &buttonOption );
   735         HbStylePrivate::updatePrimitive( d->touchArea, HbStylePrivate::P_PushButton_toucharea, &buttonOption );
   915             case Qt::GestureStarted:
   934             case Qt::GestureStarted:
   916                 if( hit ){
   935                 if( hit ){
   917 #ifdef HB_EFFECTS
   936 #ifdef HB_EFFECTS
   918                     HbEffect::start( this, HB_PUSHBUTTON_TYPE, "pressed" );
   937                     HbEffect::start( this, HB_PUSHBUTTON_TYPE, "pressed" );
   919 #endif
   938 #endif
   920                     if( d->checkable && !d->checked) {
   939                    /* if( d->checkable && !d->checked) {
   921                         setProperty( "state", "latched" );
   940                         setProperty( "state", "latched" );
   922                     }else if(!d->checkable) {
   941                     }else if(!d->checkable) {
   923                         setProperty( "state", "pressed" );
   942                         setProperty( "state", "pressed" );
   924                     }
   943                     }*/
   925                 }
   944                 }
   926                 break;
   945                 break;
   927             case Qt::GestureUpdated:
   946             case Qt::GestureUpdated:
   928                 if(tap->tapStyleHint() == HbTapGesture::TapAndHold && hit) {
   947                 if(tap->tapStyleHint() == HbTapGesture::TapAndHold && hit) {
   929                     d->longPress = true;
   948                     d->longPress = true;
   937                 if( hit ){
   956                 if( hit ){
   938 #ifdef HB_EFFECTS
   957 #ifdef HB_EFFECTS
   939                     HbEffect::start( this, HB_PUSHBUTTON_TYPE, "released" );
   958                     HbEffect::start( this, HB_PUSHBUTTON_TYPE, "released" );
   940 #endif
   959 #endif
   941                 }
   960                 }
   942                 if( d->checkable && !d->checked) {
   961                 /*if( d->checkable && !d->checked) {
   943                     setProperty( "state", "latched" );
   962                     setProperty( "state", "latched" );
   944                 }else {
   963                 }else {
   945                     setProperty( "state", "normal" );
   964                     setProperty( "state", "normal" );
   946                 }
   965                 }*/
   947                 break;
   966                 break;
   948             default:
   967             default:
   949                 break;
   968                 break;
   950         }
   969         }
   951     }
   970     }
   983 void HbPushButton::focusInEvent( QFocusEvent *event )
  1002 void HbPushButton::focusInEvent( QFocusEvent *event )
   984 {
  1003 {
   985     Q_D( HbPushButton );
  1004     Q_D( HbPushButton );
   986     if( ( event->reason() == Qt::TabFocusReason || event->reason() == Qt::BacktabFocusReason ) 
  1005     if( ( event->reason() == Qt::TabFocusReason || event->reason() == Qt::BacktabFocusReason ) 
   987         && ( d->navigationKeyPress ) ) {
  1006         && ( d->navigationKeyPress ) ) {
   988         if( d->focusItem ) {
  1007         if( !d->focusItem ) {
       
  1008             d->focusItem = HbStylePrivate::createPrimitive(HbStylePrivate::P_PushButton_focus, this);
       
  1009         } else {
   989             d->focusItem->setVisible( true );
  1010             d->focusItem->setVisible( true );
   990             if( hasFocus() ) {
  1011             if( hasFocus() ) {
   991                 HbStyleOptionPushButton buttonOption;
  1012                 HbStyleOptionPushButton buttonOption;
   992                 initStyleOption( &buttonOption );
  1013                 initStyleOption( &buttonOption );
   993                 HbStylePrivate::updatePrimitive( d->focusItem,HbStylePrivate::P_PushButton_focus, &buttonOption );
  1014                 HbStylePrivate::updatePrimitive( d->focusItem,HbStylePrivate::P_PushButton_focus, &buttonOption );
   994             }
  1015             }            
   995         } else {
       
   996             d->focusItem = HbStylePrivate::createPrimitive(HbStylePrivate::P_PushButton_focus, this);
       
   997         }
  1016         }
   998     }
  1017     }
   999     HbAbstractButton::focusInEvent( event );
  1018     HbAbstractButton::focusInEvent( event );
  1000 }
  1019 }
  1001 
  1020