uifw/EikStd/coctlsrc/aknitemactionmenuregister.cpp
branchRCL_3
changeset 10 9f56a4e1b8ab
parent 9 aabf2c525e0f
child 16 71dd06cfe933
equal deleted inserted replaced
9:aabf2c525e0f 10:9f56a4e1b8ab
    39 
    39 
    40     AknItemActionMenuRegister* instance( Instance() );
    40     AknItemActionMenuRegister* instance( Instance() );
    41 
    41 
    42     if ( instance )
    42     if ( instance )
    43         {
    43         {
    44         instance->iMenuBarOwner = aMenuBarOwner;
    44         instance->DoSetConstructingMenuBarOwnerL( aMenuBarOwner ); 
    45         }
    45         }
    46 
    46 
    47     _AKNTRACE_FUNC_EXIT;
    47     _AKNTRACE_FUNC_EXIT;
    48     }
    48     }
    49 
    49 
   344     
   344     
   345     CAknItemActionMenu* menu( NULL );
   345     CAknItemActionMenu* menu( NULL );
   346     for ( TInt i = 0; i < iUnregisteredMenus.Count(); i++ )
   346     for ( TInt i = 0; i < iUnregisteredMenus.Count(); i++ )
   347         {
   347         {
   348         TAknUnregisteredMenuData& data( iUnregisteredMenus[ i ] );
   348         TAknUnregisteredMenuData& data( iUnregisteredMenus[ i ] );
   349         CEikMenuBar* ownerMenubar( NULL );
   349         if ( data.iOwner ) 
   350         data.iOwner->MopGetObjectNoChaining( ownerMenubar );
   350             {
   351         if ( ownerMenubar == &aMenuBar )
   351             CEikMenuBar* ownerMenubar( NULL );
   352             {
   352             data.iOwner->MopGetObjectNoChaining( ownerMenubar );
   353             menu = data.iMenu;
   353             if ( ownerMenubar == &aMenuBar )
   354             if ( menu )
       
   355                 {
   354                 {
   356                 AddRegisterEntryL( aMenuBar, *menu );
   355                 menu = data.iMenu;
   357                 iUnregisteredMenus.Remove( i );
   356                 if ( menu )
       
   357                     {
       
   358                     AddRegisterEntryL( aMenuBar, *menu );
       
   359                     iUnregisteredMenus.Remove( i );
       
   360                     }
       
   361                 break;
   358                 }
   362                 }
   359             break;
       
   360             }
   363             }
   361         }
   364         }
   362 
   365 
   363     _AKNTRACE_FUNC_EXIT;
   366     _AKNTRACE_FUNC_EXIT;
   364     }
   367     }
   391     for ( TInt i = 0; i < iUnregisteredMenus.Count(); i++ )
   394     for ( TInt i = 0; i < iUnregisteredMenus.Count(); i++ )
   392         {
   395         {
   393         TAknUnregisteredMenuData& data( iUnregisteredMenus[ i ] );
   396         TAknUnregisteredMenuData& data( iUnregisteredMenus[ i ] );
   394         if ( data.iMenu == &aItemActionMenu )
   397         if ( data.iMenu == &aItemActionMenu )
   395             {
   398             {
   396             data.iOwner->MopGetObjectNoChaining( menuBar );
   399             if ( data.iOwner ) 
   397             if ( menuBar )
       
   398                 {
   400                 {
   399                 AddRegisterEntryL( *menuBar, aItemActionMenu );
   401                 data.iOwner->MopGetObjectNoChaining( menuBar );
   400                 iUnregisteredMenus.Remove( i );
   402                 if ( menuBar )
       
   403                     {
       
   404                     AddRegisterEntryL( *menuBar, aItemActionMenu );
       
   405                     iUnregisteredMenus.Remove( i );
       
   406                     }
   401                 }
   407                 }
   402             break;
   408             break;
   403             }
   409             }
   404         }
   410         }
   405 
   411 
   875 
   881 
   876     _AKNTRACE_FUNC_EXIT;
   882     _AKNTRACE_FUNC_EXIT;
   877     return instance;
   883     return instance;
   878     }
   884     }
   879 
   885 
       
   886 // ---------------------------------------------------------------------------
       
   887 // AknItemActionMenuRegister::DoSetConstructingMenuBarOwnerL
       
   888 // ---------------------------------------------------------------------------
       
   889 //
       
   890 void AknItemActionMenuRegister::DoSetConstructingMenuBarOwnerL( 
       
   891         MObjectProvider* aMenuBarOwner )
       
   892     {
       
   893     if ( aMenuBarOwner )
       
   894         {
       
   895         CEikDialog* dialog( NULL );
       
   896         aMenuBarOwner->MopGetObjectNoChaining( dialog );
       
   897         // Get information if the constructing menu bar owner is a dialog  
       
   898         // and store it to iIsConstructingDialog
       
   899         if ( dialog )
       
   900             {
       
   901             iIsConstructingDialog = ETrue; 
       
   902             }
       
   903         }
       
   904     else if ( !aMenuBarOwner && iIsConstructingDialog )
       
   905         {
       
   906         // When setting constructing menubar owner to NULL from a dialog check
       
   907         // if there is item with the same menubar owner in iUnregisteredMenus 
       
   908         // and try to find correct menubar for it.
       
   909         for ( TInt i = 0; i < iUnregisteredMenus.Count(); i++ )
       
   910             {
       
   911             TAknUnregisteredMenuData& data( iUnregisteredMenus[ i ] );
       
   912             if ( data.iOwner == iMenuBarOwner ) 
       
   913                 {
       
   914                 data.iOwner = iMenuBarOwner = NULL; 
       
   915                 CEikMenuBar* menuBar = FindCurrentMenuBarL(); 
       
   916                 if ( menuBar )
       
   917                     {
       
   918                     AddRegisterEntryL( *menuBar, *data.iMenu );
       
   919                     iUnregisteredMenus.Remove( i );
       
   920                     }
       
   921                 iIsConstructingDialog = EFalse; 
       
   922                 return; 
       
   923                 }
       
   924             }
       
   925         }
       
   926     iMenuBarOwner = aMenuBarOwner;
       
   927     }
   880 
   928 
   881 // ---------------------------------------------------------------------------
   929 // ---------------------------------------------------------------------------
   882 // AknItemActionMenuRegister::TAknUnregisteredObserverData
   930 // AknItemActionMenuRegister::TAknUnregisteredObserverData
   883 // ::TAknUnregisteredObserverData
   931 // ::TAknUnregisteredObserverData
   884 // ---------------------------------------------------------------------------
   932 // ---------------------------------------------------------------------------