helloviewappui.cpp
来自「symbianOS第三版开发与实用教程部分源码和部分试验」· C++ 代码 · 共 190 行
CPP
190 行
/*
============================================================================
Name : HelloViewAppUi.cpp
Author : Lion
Copyright : Your copyright notice
Description : CHelloViewAppUi implementation
============================================================================
*/
// INCLUDE FILES
#include <avkon.hrh>
#include <aknnotewrappers.h>
#include <stringloader.h>
#include <HelloView.rsg>
#include <f32file.h>
#include <s32file.h>
#include "HelloView.pan"
#include "HelloViewAppUi.h"
#include "HelloViewAppview1.h"
#include "HelloViewAppview2.h"
#include "HelloView.hrh"
_LIT( KFileName, "C:\\private\\0DD9A677\\HelloView.txt" );
_LIT( KText, "Hello World!");
// ============================ MEMBER FUNCTIONS ===============================
// -----------------------------------------------------------------------------
// CHelloViewAppUi::ConstructL()
// Symbian 2nd phase constructor can leave.
// -----------------------------------------------------------------------------
//
void CHelloViewAppUi::ConstructL()
{
BaseConstructL();
// Show tabs for main views from resources
CEikStatusPane* sp = StatusPane();
// Fetch pointer to the default navi pane control
iNaviPane = (CAknNavigationControlContainer*)sp->ControlL( TUid::Uid(EEikStatusPaneUidNavi));
// Tabgroup has been read from resource and it were pushed to the navi pane.
// Get pointer to the navigation decorator with the ResourceDecorator() function.
// Application owns the decorator and it has responsibility to delete the object.
// iDecoratedTabGroup = iNaviPane->ResourceDecorator();
iDecoratedTabGroup = iNaviPane->CreateTabGroupL();
if (iDecoratedTabGroup)
{
iTabGroup = (CAknTabGroup*) iDecoratedTabGroup->DecoratedControl();
iTabGroup->AddTabL(1,_L("View1"));
iTabGroup->AddTabL(2,_L("View2"));
iTabGroup->SetActiveTabByIndex(0);
iNaviPane->PushL(*iDecoratedTabGroup);
}
CHelloViewAppView1* view1 = new (ELeave) CHelloViewAppView1;
CleanupStack::PushL( view1 );
view1->ConstructL();
AddViewL( view1 ); // transfer ownership to CAknViewAppUi
CleanupStack::Pop(); // view1
CHelloViewAppView2* view2 = new (ELeave) CHelloViewAppView2;
CleanupStack::PushL( view2 );
view2->ConstructL();
AddViewL( view2 ); // transfer ownership to CAknViewAppUi
CleanupStack::Pop(); // view2
SetDefaultViewL(*view1);
}
// -----------------------------------------------------------------------------
// CHelloViewAppUi::CHelloViewAppUi()
// C++ default constructor can NOT contain any code, that might leave.
// -----------------------------------------------------------------------------
//
CHelloViewAppUi::CHelloViewAppUi()
{
// No implementation required
}
// -----------------------------------------------------------------------------
// CHelloViewAppUi::~CHelloViewAppUi()
// Destructor.
// -----------------------------------------------------------------------------
//
CHelloViewAppUi::~CHelloViewAppUi()
{
delete iDecoratedTabGroup;
}
// -----------------------------------------------------------------------------
// CHelloViewAppUi::HandleCommandL()
// Takes care of command handling.
// -----------------------------------------------------------------------------
//
void CHelloViewAppUi::HandleCommandL( TInt aCommand )
{
switch( aCommand )
{
case EEikCmdExit:
case EAknSoftkeyExit:
Exit();
break;
case EHelloViewCmd1:
{
ActivateLocalViewL(TUid::Uid(EHelloViewId2));
iTabGroup->SetActiveTabById(2);
break;
}
break;
case EHelloViewCmd2:
{
ActivateLocalViewL(TUid::Uid(EHelloViewId1));
iTabGroup->SetActiveTabById(1);
break;
}
break;
default:
//Panic( EHelloViewUi );
break;
}
}
// -----------------------------------------------------------------------------
// Called by the framework when the application status pane
// size is changed. Passes the new client rectangle to the
// AppContainer1
// -----------------------------------------------------------------------------
//
//void CHelloViewAppUi::HandleStatusPaneSizeChange()
//{
// iAppContainer1->SetRect( ClientRect() );
//
//}
TKeyResponse CHelloViewAppUi::HandleKeyEventL(const TKeyEvent& aKeyEvent, TEventCode /*aType*/)
{
if ( iTabGroup == NULL )
{
return EKeyWasNotConsumed;
}
TInt active = iTabGroup->ActiveTabIndex();
TInt count = iTabGroup->TabCount();
if (aKeyEvent.iScanCode == EStdKeyLeftArrow)
{ if ( active > 0 )
{
active--;
iTabGroup->SetActiveTabByIndex( active );
if (active == 0)
{
ActivateLocalViewL(TUid::Uid(EHelloViewId1));
}
}
return EKeyWasConsumed;
}
if (aKeyEvent.iScanCode == EStdKeyRightArrow)
{ if( (active + 1) < count )
{
active++;
iTabGroup->SetActiveTabByIndex( active );
if (active == 1)
{
ActivateLocalViewL(TUid::Uid(EHelloViewId2));
}
}
return EKeyWasConsumed;
}
return EKeyWasNotConsumed;
}
// End of File
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?