uifw/AvKon/src/aknbattery.cpp
branchRCL_3
changeset 18 0aa5fbdfbc30
parent 16 71dd06cfe933
child 23 3d340a0166ff
equal deleted inserted replaced
16:71dd06cfe933 18:0aa5fbdfbc30
    68 //
    68 //
    69 EXPORT_C CAknBatteryPane::~CAknBatteryPane()
    69 EXPORT_C CAknBatteryPane::~CAknBatteryPane()
    70     {
    70     {
    71     AKNTASHOOK_REMOVE();
    71     AKNTASHOOK_REMOVE();
    72     
    72     
    73     MTouchFeedback* feedback = MTouchFeedback::Instance();
       
    74     if ( feedback )
       
    75         {
       
    76         feedback->RemoveFeedbackForControl( this );
       
    77         }
       
    78     
       
    79     AknsUtils::DeregisterControlPosition( this );
    73     AknsUtils::DeregisterControlPosition( this );
    80 
    74 
    81     delete iBatteryIconControl;
    75     delete iBatteryIconControl;
    82     delete iBatteryStrengthControl;
    76     delete iBatteryStrengthControl;
    83 
    77 
   103     iBatteryStrengthControl = CAknBatteryStrength::NewL();
    97     iBatteryStrengthControl = CAknBatteryStrength::NewL();
   104     iBatteryStrengthControl->SetContainerWindowL( *this );
    98     iBatteryStrengthControl->SetContainerWindowL( *this );
   105     iPrivateFlags = 0; // reset flags
    99     iPrivateFlags = 0; // reset flags
   106     iDataObserver = new (ELeave) CAknBatteryDataObserver( this );
   100     iDataObserver = new (ELeave) CAknBatteryDataObserver( this );
   107     iStatusPane = CEikStatusPaneBase::Current();
   101     iStatusPane = CEikStatusPaneBase::Current();
   108     
       
   109     MTouchFeedback* feedback = MTouchFeedback::Instance();
       
   110     if ( feedback )
       
   111         {
       
   112         CFeedbackSpec* fbSpec = CFeedbackSpec::New();
       
   113         if ( fbSpec )
       
   114             {
       
   115             fbSpec->AddFeedback( ETouchEventStylusDown,
       
   116                                  ETouchFeedbackSensitiveButton );
       
   117             fbSpec->AddFeedback( ETouchEventStylusUp,
       
   118                                  ETouchFeedbackSensitiveButton,
       
   119                                  ETouchFeedbackVibra );
       
   120 
       
   121             feedback->SetFeedbackArea( this,
       
   122                                        0,
       
   123                                        Rect(),
       
   124                                        fbSpec );
       
   125             delete fbSpec; 
       
   126             }        
       
   127         }
       
   128     }
   102     }
   129 
   103 
   130 
   104 
   131 // ---------------------------------------------------------------------------
   105 // ---------------------------------------------------------------------------
   132 // CAknBatteryPane::ConstructFromResourceL
   106 // CAknBatteryPane::ConstructFromResourceL
   368             feedback->EnableFeedbackForControl( this, EFalse );
   342             feedback->EnableFeedbackForControl( this, EFalse );
   369             }
   343             }
   370         else
   344         else
   371             {
   345             {
   372             feedback->EnableFeedbackForControl( this, ETrue );
   346             feedback->EnableFeedbackForControl( this, ETrue );
   373             feedback->ChangeFeedbackArea( this,
       
   374                                           0,
       
   375                                           parent );
       
   376             }
   347             }
   377         }
   348         }
   378     }
   349     }
   379 
   350 
   380 
   351 
   580         iPrivateFlags &= (~EAknBatteryPaneButton1DownInBatteryRect);
   551         iPrivateFlags &= (~EAknBatteryPaneButton1DownInBatteryRect);
   581         return;
   552         return;
   582         }
   553         }
   583 
   554 
   584     CEikStatusPaneBase* sp = CEikStatusPaneBase::Current();
   555     CEikStatusPaneBase* sp = CEikStatusPaneBase::Current();
   585 	if( sp )
   556 	if ( sp )
   586 	    {
   557 	    {
   587         TInt statusPaneCurrentLayoutResourceId = sp->CurrentLayoutResId();
   558         TInt statusPaneCurrentLayoutResourceId = sp->CurrentLayoutResId();
   588         if(statusPaneCurrentLayoutResourceId == R_AVKON_STATUS_PANE_LAYOUT_POWER_OFF_RECHARGE
   559         if ( statusPaneCurrentLayoutResourceId ==
   589                     || statusPaneCurrentLayoutResourceId == R_AVKON_STATUS_PANE_LAYOUT_POWER_OFF_RECHARGE_MIRRORED)
   560                  R_AVKON_STATUS_PANE_LAYOUT_POWER_OFF_RECHARGE ||
   590             {
   561              statusPaneCurrentLayoutResourceId ==
   591             MTouchFeedback* feedback = MTouchFeedback::Instance();
   562                  R_AVKON_STATUS_PANE_LAYOUT_POWER_OFF_RECHARGE_MIRRORED )
   592             if ( feedback )
   563             {
   593                 {
       
   594                 feedback->RemoveFeedbackForControl( this );
       
   595                 }
       
   596         
       
   597             AknsUtils::DeregisterControlPosition( this );
   564             AknsUtils::DeregisterControlPosition( this );
   598             return;
   565             return;
   599             }
   566             }
   600           }       
   567         }
   601     // Get the rect of battery pane.
   568     // Get the rect of battery pane.
   602     TRect rect( Rect() );
   569     TRect rect( Rect() );
   603 
   570 
   604     // Switch by type
   571     // Switch by type
   605     switch ( aPointerEvent.iType )
   572     switch ( aPointerEvent.iType )
   609             // if battery pane's rect contains pointer down position
   576             // if battery pane's rect contains pointer down position
   610             if ( rect.Contains( aPointerEvent.iPosition ) )
   577             if ( rect.Contains( aPointerEvent.iPosition ) )
   611                 {
   578                 {
   612                 // set flag that pointerdown was inside battery pane
   579                 // set flag that pointerdown was inside battery pane
   613                 iPrivateFlags |= EAknBatteryPaneButton1DownInBatteryRect;
   580                 iPrivateFlags |= EAknBatteryPaneButton1DownInBatteryRect;
       
   581                 MTouchFeedback* feedback = MTouchFeedback::Instance();
       
   582                 if ( feedback )
       
   583                     {
       
   584                     feedback->InstantFeedback( ETouchFeedbackSensitiveButton );
       
   585                     }
   614                 }
   586                 }
   615             }
   587             }
   616             break;
   588             break;
   617 
   589 
   618         case TPointerEvent::EButton1Up:
   590         case TPointerEvent::EButton1Up:
   660                 if ( ( iPrivateFlags & EAknBatteryPaneButton1DownInBatteryRect &&
   632                 if ( ( iPrivateFlags & EAknBatteryPaneButton1DownInBatteryRect &&
   661                        rect.Contains( aPointerEvent.iPosition ) ) ||
   633                        rect.Contains( aPointerEvent.iPosition ) ) ||
   662                      pointerUpInClockArea ||
   634                      pointerUpInClockArea ||
   663                      pointerUpInIndicatorArea )
   635                      pointerUpInIndicatorArea )
   664                     {
   636                     {
   665                     if ( pointerUpInClockArea || pointerUpInIndicatorArea )
   637                     MTouchFeedback* feedback = MTouchFeedback::Instance();
       
   638                     if ( feedback )
   666                         {
   639                         {
   667                         MTouchFeedback* feedback = MTouchFeedback::Instance();
   640                         feedback->InstantFeedback(
   668                         if ( feedback )
   641                             this,
   669                             {
   642                             ETouchFeedbackSensitiveButton,
   670                             // The pointer down was received in another
   643                             ETouchFeedbackVibra,
   671                             // control, so the tactile feedback must be
   644                             aPointerEvent );
   672                             // given directly.
       
   673                             feedback->InstantFeedback(
       
   674                                 this,
       
   675                                 ETouchFeedbackSensitiveButton,
       
   676                                 ETouchFeedbackVibra,
       
   677                                 aPointerEvent );
       
   678                             }
       
   679                         }
   645                         }
   680 
   646 
   681                     CAknSmallIndicator* indicatorNotifier =
   647                     CAknSmallIndicator* indicatorNotifier =
   682                         CAknSmallIndicator::NewLC( TUid::Uid( 0 ) );
   648                         CAknSmallIndicator::NewLC( TUid::Uid( 0 ) );
   683                     indicatorNotifier->HandleIndicatorTapL();
   649                     indicatorNotifier->HandleIndicatorTapL();