uifw/EikStd/coctlsrc/AknButton.cpp
changeset 14 3320e4e6e8bb
parent 0 2f259fa3e83a
equal deleted inserted replaced
0:2f259fa3e83a 14:3320e4e6e8bb
  2225 
  2225 
  2226                     if ( iFlags & KAknButtonReportOnKeyDown )
  2226                     if ( iFlags & KAknButtonReportOnKeyDown )
  2227                         {
  2227                         {
  2228                         // State is changed on button down event
  2228                         // State is changed on button down event
  2229                         ChangeState( EFalse );
  2229                         ChangeState( EFalse );
  2230                         redrawNeeded = EFalse;
  2230                         redrawNeeded = ETrue;
  2231                         DrawNow();  //Redraw before noticing the observer for observer might open dialog                        
       
  2232                         if ( Observer() )
  2231                         if ( Observer() )
  2233                             {
  2232                             {
  2234                             Observer()->HandleControlEventL( this,
  2233                             Observer()->HandleControlEventL( this,
  2235                                 MCoeControlObserver::EEventStateChanged );
  2234                                 MCoeControlObserver::EEventStateChanged );
  2236                             }
  2235                             }
  2334                             }
  2333                             }
  2335                         }
  2334                         }
  2336                     iButtonPressed = EFalse;
  2335                     iButtonPressed = EFalse;
  2337                     }
  2336                     }
  2338 
  2337 
  2339                 TBool hasDrawn( EFalse );
       
  2340                 if ( buttonEvent && !IsDimmed() )
  2338                 if ( buttonEvent && !IsDimmed() )
  2341                     {
  2339                     {
  2342                         // feedback/BasicButton on up event, if hit test is
  2340                         // feedback/BasicButton on up event, if hit test is
  2343                         // used. Area registry is used for rectangular
  2341                         // used. Area registry is used for rectangular
  2344                         // buttons
  2342                         // buttons
  2357                     if ( !( iFlags & KAknButtonReportOnKeyDown ) &&
  2355                     if ( !( iFlags & KAknButtonReportOnKeyDown ) &&
  2358                          !( iExtension->iFlags.IsSet( CAknButtonExtension::ELongPressReported ) ) &&
  2356                          !( iExtension->iFlags.IsSet( CAknButtonExtension::ELongPressReported ) ) &&
  2359                          !( iExtension->iFlags.IsSet( CAknButtonExtension::EKeyRepeatEventReported ) ) )
  2357                          !( iExtension->iFlags.IsSet( CAknButtonExtension::EKeyRepeatEventReported ) ) )
  2360                         {
  2358                         {
  2361                         ChangeState( EFalse );
  2359                         ChangeState( EFalse );
  2362                         if ( !hasDrawn )
  2360                         redrawNeeded = ETrue;
  2363                         	{
       
  2364 	                        DrawNow();
       
  2365 	                        hasDrawn = ETrue;
       
  2366                         	}
       
  2367                         
       
  2368                         if ( Observer() )
  2361                         if ( Observer() )
  2369                             {
  2362                             {
  2370                             Observer()->HandleControlEventL( this,
  2363                             Observer()->HandleControlEventL( this,
  2371                                 MCoeControlObserver::EEventStateChanged );
  2364                                 MCoeControlObserver::EEventStateChanged );
  2372                             }
  2365                             }
  2373                         }
  2366                         }
  2374                    else
  2367                    else
  2375                         {
  2368                         {
  2376                         if ( iExtension->iFlags.IsSet( CAknButtonExtension::ELongPressReported ) && Observer() )
  2369                         if ( iExtension->iFlags.IsSet( CAknButtonExtension::ELongPressReported ) && Observer() )
  2377                             {
  2370                             {
  2378                             if ( redrawNeeded && !hasDrawn )
       
  2379                             	{
       
  2380                             	DrawNow();
       
  2381                             	hasDrawn = ETrue;
       
  2382                             	}
       
  2383                             Observer()->HandleControlEventL( this, 
  2371                             Observer()->HandleControlEventL( this, 
  2384                                 static_cast<MCoeControlObserver::TCoeEvent>( 
  2372                                 static_cast<MCoeControlObserver::TCoeEvent>( 
  2385                                 CAknButton::ELongPressEndedEvent ) );
  2373                                 CAknButton::ELongPressEndedEvent ) );
  2386                             }
  2374                             }
  2387                         iExtension->iFlags.Clear( CAknButtonExtension::ELongPressReported );
  2375                         iExtension->iFlags.Clear( CAknButtonExtension::ELongPressReported );
  2388                         iExtension->iFlags.Clear( CAknButtonExtension::EKeyRepeatEventReported );
  2376                         iExtension->iFlags.Clear( CAknButtonExtension::EKeyRepeatEventReported );
  2389                         }
  2377                         }
  2390 
  2378 
  2391                     if ( RequestExit() && Observer() )
  2379                     if ( RequestExit() && Observer() )
  2392                         {
  2380                         {
  2393                         if ( redrawNeeded && !hasDrawn )
       
  2394                         	{
       
  2395                         	DrawNow();
       
  2396                         	hasDrawn = ETrue;
       
  2397                         	}
       
  2398                         Observer()->HandleControlEventL( this,
  2381                         Observer()->HandleControlEventL( this,
  2399                             MCoeControlObserver::EEventRequestExit );
  2382                             MCoeControlObserver::EEventRequestExit );
  2400                         }
  2383                         }
  2401                     }
  2384                     }
  2402                         
  2385                         
  2403                 if ( !buttonEvent && !IsDimmed() && Observer() )
  2386                 if ( !buttonEvent && !IsDimmed() && Observer() )
  2404                    {
  2387                    {
  2405                    if ( redrawNeeded && !hasDrawn )
       
  2406                 	   {
       
  2407                 	   DrawNow();
       
  2408                 	   hasDrawn = ETrue;
       
  2409                 	   }
       
  2410                    Observer()->HandleControlEventL( this,
  2388                    Observer()->HandleControlEventL( this,
  2411                         MCoeControlObserver::EEventRequestCancel );
  2389                         MCoeControlObserver::EEventRequestCancel );
  2412                         
  2390                         
  2413                     if ( iExtension->iFlags.IsSet( CAknButtonExtension::ELongPressReported ) )
  2391                     if ( iExtension->iFlags.IsSet( CAknButtonExtension::ELongPressReported ) )
  2414                         {
  2392                         {
  2417                             CAknButton::ELongPressEndedEvent ) );
  2395                             CAknButton::ELongPressEndedEvent ) );
  2418                         iExtension->iFlags.Clear( CAknButtonExtension::ELongPressReported );
  2396                         iExtension->iFlags.Clear( CAknButtonExtension::ELongPressReported );
  2419                         iExtension->iFlags.Clear( CAknButtonExtension::EKeyRepeatEventReported );
  2397                         iExtension->iFlags.Clear( CAknButtonExtension::EKeyRepeatEventReported );
  2420                         }                        
  2398                         }                        
  2421                    }
  2399                    }
  2422                 if ( hasDrawn )
  2400 
  2423                 	{
       
  2424                 	redrawNeeded = EFalse;
       
  2425                 	}
       
  2426                 break;
  2401                 break;
  2427                 }
  2402                 }
  2428 
  2403 
  2429             default:
  2404             default:
  2430                 break;
  2405                 break;