📄 viewbase.cpp
字号:
/************************************************************************/
/* Bluetooth Test The.Berlin.Factor April 2003 */
/************************************************************************/
#include <AknNavi.h>
#include <AknNaviDe.h>
#include <AknTabGrp.h>
#include <EikBtGpC.h>
#include <EikEnv.h>
#include <EikMenuB.h>
#include <BluetoothGPS.rsg>
#include "ui/UserInterface.h"
#include "views/ViewBase.h"
CViewBase::CViewBase( ) {
iUserInterface = static_cast< CUserInterface * > ( iEikonEnv->EikAppUi( ) );
}
CViewBase::~CViewBase( ) {
delete( iNaviDecorator ); iNaviDecorator = NULL;
delete( iContextMenu ); iContextMenu = NULL;
}
void CViewBase::BaseConstructL
( const TRect & aRect, TInt aTitleResourceId, TInt aMenuResourceId, TInt aCbaResourceId ) {
// Titel setzen.
if ( aTitleResourceId != KDontChange )
SetViewTitleL( aTitleResourceId );
// Command-Buttons setzen.
if ( aCbaResourceId == 0 )
SetCommandButtonsL( R_CBA_VIEWDEFAULT );
else if ( aCbaResourceId != KDontChange )
SetCommandButtonsL( aCbaResourceId );
// Hauptmenue aktivieren.
if ( aMenuResourceId == 0 )
SetOptionsMenuL( R_MENUBAR_VIEWDEFAULT );
else if ( aMenuResourceId != KDontChange )
SetOptionsMenuL( aMenuResourceId );
// Create a window for this application view.
CreateWindowL( );
// Set the window's size and position
SetRect( aRect );
}
void CViewBase::HandleCommandL( TInt /*aCommand*/ ) {
//switch ( aCommand ) {
// //case ECmdContextMenu:
// // HandleContextCommandL( );
// // break;
// default:
// break;
//}
}
void CViewBase::ReActivateL( ) {
if ( iTitleLabelResourceId )
SetViewTitleL( iTitleLabelResourceId );
if ( iOptionsMenuBarResourceId )
SetOptionsMenuL( iOptionsMenuBarResourceId );
if ( iContextMenuBarResourceId )
SetContextMenuL( iCbaResourceId, iContextMenuBarResourceId );
else if ( iCbaResourceId )
SetCommandButtonsL( iCbaResourceId );
}
void CViewBase::SetEmphasis( CCoeControl * aMenuControl, TBool aEmphasis ) {
if ( aEmphasis )
iUserInterface->AddToStackL( aMenuControl );
else
iUserInterface->RemoveFromStack( aMenuControl );
}
void CViewBase::ProcessCommandL( TInt aCommandId ) {
if ( iContextMenu )
iContextMenu->StopDisplayingMenuBar( );
HandleCommandL( aCommandId );
}
void CViewBase::SetViewTitleL( TInt aTextResourceID ) {
CEikStatusPane * statusPane = iEikonEnv->AppUiFactory( )->StatusPane( );
CAknNavigationControlContainer * naviControl = ( CAknNavigationControlContainer * )
statusPane->ControlL( TUid::Uid( EEikStatusPaneUidNavi ) );
HBufC * title = iEikonEnv->AllocReadResourceLC( aTextResourceID );
if ( iNaviDecorator ) naviControl->Pop( iNaviDecorator );
delete( iNaviDecorator ); iNaviDecorator = NULL;
iNaviDecorator = naviControl->CreateNavigationLabelL( *title );
CleanupStack::PopAndDestroy( title );
naviControl->PushL( *iNaviDecorator );
iTitleLabelResourceId = aTextResourceID;
}
void CViewBase::SetTabGroupL( CDesCArrayFlat & aTabGroupTitleArray ) {
CEikStatusPane * statusPane = iEikonEnv->AppUiFactory( )->StatusPane( );
CAknNavigationControlContainer * naviContainer =
( CAknNavigationControlContainer * ) statusPane->ControlL( TUid::Uid( EEikStatusPaneUidNavi ) );
if ( iNaviDecorator ) naviContainer->Pop( iNaviDecorator );
delete( iNaviDecorator ); iNaviDecorator = NULL;
iNaviDecorator = naviContainer->CreateTabGroupL( );
CAknTabGroup * tabGroup = static_cast< CAknTabGroup * > ( iNaviDecorator->DecoratedControl( ) );
for ( TInt idx = 0; idx < aTabGroupTitleArray.Count( ); idx++ )
tabGroup->AddTabL( idx + 1, aTabGroupTitleArray[ idx ] );
tabGroup->SetTabFixedWidthL( KTabWidthWithTwoLongTabs );
tabGroup->SetActiveTabById( 1 );
naviContainer->PushL( *iNaviDecorator );
DrawDeferred( );
}
void CViewBase::ActivateTabByIdxL( TInt aIdx ) {
CAknTabGroup * tabGroup = static_cast< CAknTabGroup * > ( iNaviDecorator->DecoratedControl( ) );
tabGroup->SetActiveTabById( aIdx + 1 );
tabGroup->DrawDeferred( );
//DrawDeferred( );
}
void CViewBase::SetOptionsMenuL( TInt aMenuBarResourceID ) {
iEikonEnv->AppUiFactory( )->MenuBar( )->SetMenuTitleResourceId( aMenuBarResourceID );
iOptionsMenuBarResourceId = aMenuBarResourceID;
}
void CViewBase::SetContextMenuL( TInt aCbaResourceID, TInt aMenuBarResourceID ) {
CEikButtonGroupContainer * cba = iEikonEnv->AppUiFactory( )->Cba( );
cba->SetCommandSetL( aCbaResourceID );
delete( iContextMenu ); iContextMenu = NULL;
iContextMenu = new ( ELeave ) CEikMenuBar( );
iContextMenu->ConstructL( this, 0, aMenuBarResourceID );
iCbaResourceId = aCbaResourceID;
iContextMenuBarResourceId = aMenuBarResourceID;
}
void CViewBase::SetCommandButtonsL( TInt aCbaResourceID ) {
CEikButtonGroupContainer * cba = iEikonEnv->AppUiFactory( )->Cba( );
cba->SetCommandSetL( aCbaResourceID );
cba->DrawDeferred( );
iCbaResourceId = aCbaResourceID;
}
void CViewBase::ResetCommandButtonsL( ) {
CEikButtonGroupContainer * cba = iEikonEnv->AppUiFactory( )->Cba( );
cba->SetCommandSetL( R_CBA_VIEWDEFAULT );
cba->DrawDeferred( );
}
void CViewBase::ClearContextMenu( ) {
CEikButtonGroupContainer * cba = iEikonEnv->AppUiFactory( )->Cba( );
TRAPD( error, cba->SetCommandSetL( R_CBA_VIEWDEFAULT ) );
delete( iContextMenu ); iContextMenu = NULL;
}
void CViewBase::HandleContextCommandL( ) {
if ( iContextMenu )
iContextMenu->TryDisplayMenuBarL( );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -