⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 aknexmenuview.cpp

📁 symbian ui的 例子 初学者可以 好好看看,这个是培训的资料,应该比较宝贵
💻 CPP
字号:
/* Copyright (c) 2005, Nokia. All rights reserved */


// INCLUDE FILES
#include <eiklabel.h>
#include <eikmenub.h>
#include <aknviewappui.h>
#include <avkon.hrh>
#include <AknExMenu.rsg>

#include "AknExMenuView.h"
#include "AknExMenuContainer.h" 
#include "AknExMenu.hrh"
#include "AknExMenuappui.h"


// ========================= MEMBER FUNCTIONS ==================================

// -----------------------------------------------------------------------------
// CAknExMenuView::ConstructL()
// Symbian 2nd phase constructor can leave.
// -----------------------------------------------------------------------------
//
void CAknExMenuView::ConstructL( TInt aResId )
    {
    BaseConstructL( aResId );
    iState = EAknExMenuStateLast;
    iCoeEnv->ReadResource( iUpperMsg, R_AKNEXMENU_NO_SUB_UP_TEXT );
    iCoeEnv->ReadResource( iLowerMsg, R_AKNEXMENU_NO_SUB_LOW_TEXT );
    iCoeEnv->ReadResource( iTitleMsg, R_AKNEXMENU_NO_SUB_TITLE );
    }

// -----------------------------------------------------------------------------
// CAknExMenuView::~CAknExMenuView()
// Destructor.
// -----------------------------------------------------------------------------
//
CAknExMenuView::~CAknExMenuView()
    {
    if ( iContainer )
        {
        AppUi()->RemoveFromStack( iContainer );
        }

    delete iContainer;
    }

// -----------------------------------------------------------------------------
// TUid CAknExMenuView::Id()
// returns MenuView's Uid
// -----------------------------------------------------------------------------
//
TUid CAknExMenuView::Id() const
    {
    return KViewId;
    }

// -----------------------------------------------------------------------------
// CAknExMenuView::HandleCommandL()
// Takes care of Command handling.
// -----------------------------------------------------------------------------
//
void CAknExMenuView::HandleCommandL( TInt aCommand )
    {   

    TBuf< KLengthOfMsgStringInView > msgString;
    TBuf< KLengthOfMsgStringInView > msgFormat;
    iCoeEnv->ReadResource(  msgFormat, R_AKNEXMENU_MESSAGE_FORMAT  );
    
    msgString.Format( msgFormat, aCommand );
    iEikonEnv->AlertWin( msgString );

    switch ( aCommand )
        {
    
        case EEikCmdExit:
        case EAknSoftkeyBack:
            {
            AppUi()->HandleCommandL( EAknCmdExit );
            break;
            }

        case EAknExMenuCtxCmd1:
            {
            if ( EAknExMenuStateDim1 == iState )
                {
                iState = EAknExMenuStateDim2;
                }
            else if ( EAknExMenuStateDim2 == iState )
                {
                iState = EAknExMenuStateLast;
                }
            else
                {
                iState = EAknExMenuStateDim1;
                }
            break;
            }
        case EAknExMenuCtxCmd2:
            {
            if ( EAknExMenuStateLast == iState )
                {
                iState = EAknExMenuStateNo;
                }
            break;
            }
        case EAknExMenuCtxCmd3:
            {
            if ( EAknExMenuStateNo == iState )
                {
                iState = EAknExMenuStateLast;
                }
            break;
            }
       
        default:
            {
            AppUi()->HandleCommandL( aCommand );
            break;
            }
        }
    }

// -----------------------------------------------------------------------------
// CAknExMenuView::DynInitMenuPaneL()
// This function is called by the EIKON framework just before it displays
// a menu pane. Its default implementation is empty, and by overriding it,
// the application can set the state of menu items dynamically according
// to the state of application data.
// -----------------------------------------------------------------------------
//
void CAknExMenuView::DynInitMenuPaneL( TInt aResourceId,
                                       CEikMenuPane* aMenuPane )
    {
    if ( R_AKNEXMENU_NO_SUB_STATE_MENU == aResourceId )
        {
        if ( EAknExMenuStateNo == iState )
            {
            aMenuPane->DeleteMenuItem( EAknExMenuStateCmd1 );
            aMenuPane->DeleteMenuItem( EAknExMenuStateCmd2 );
            }
        }
    if ( R_AKNEXMENU_NO_SUB_APP_MENU == aResourceId )
        {
        if ( EAknExMenuStateDim1 == iState )
            {
            aMenuPane->SetItemDimmed( EAknExMenuAppCmd1, ETrue );
            aMenuPane->SetItemDimmed( EAknExMenuAppCmd2, EFalse );
            }
        if ( EAknExMenuStateDim2 == iState )
            {
            aMenuPane->SetItemDimmed( EAknExMenuAppCmd1, EFalse );
            aMenuPane->SetItemDimmed( EAknExMenuAppCmd2, ETrue );
            }
        }
    if ( R_AKNEXMENU_NO_SUB_CONTEXT_MENU == aResourceId )
        {
        if ( EAknExMenuStateLast == iState )
            {
            aMenuPane->DeleteMenuItem( EAknExMenuCtxCmd3 );
            }
        if ( EAknExMenuStateNo == iState )
            {
            aMenuPane->DeleteMenuItem( EAknExMenuCtxCmd1 );
            aMenuPane->DeleteMenuItem( EAknExMenuCtxCmd2 );
            }
        if ( EAknExMenuStateDim1 == iState || EAknExMenuStateDim2 == iState )
            {
            aMenuPane->DeleteMenuItem( EAknExMenuCtxCmd2 );
            aMenuPane->DeleteMenuItem( EAknExMenuCtxCmd3 );
            }
        }
            
    }

// -----------------------------------------------------------------------------
// CAknExMenuView::DoActivateL()
// Activate an AknView
// -----------------------------------------------------------------------------
//
void CAknExMenuView::DoActivateL( const TVwsViewId& /*aPrevViewId*/,
                                  TUid /*aCustomMessageId*/,
                                  const TDesC8& /*aCustomMessage*/ )
    {
    iContainer = new( ELeave ) CAknExMenuContainer;
    iContainer->SetMopParent( this );
    iContainer->ConstructL( ClientRect(), this );
    
    static_cast<CAknExMenuAppUi*> (AppUi() )->iTitlePane->SetTextL( iTitleMsg );

    AppUi()->AddToStackL( *this, iContainer );
    }

// -----------------------------------------------------------------------------
// CAknExMenuView::DoDeactivate()
// Deactivate an AknView
// -----------------------------------------------------------------------------
//
void CAknExMenuView::DoDeactivate()
    {
    if ( iContainer )
        {
        AppUi()->RemoveFromStack( iContainer );
        }
    
    delete iContainer;
    iContainer = NULL;
    }

// End of File

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -