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

📄 viewbase.cpp

📁 SYMBIAN GPS NMEA协议实现
💻 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 + -