void CFirstFuckAppUi::ConstructL()
{
// Initialise app UI with standard value.
BaseConstructL(CAknAppUi::EAknEnableSkin);
CEikStatusPane *sp = StatusPane();
iTitlePane = static_cast<CAknTitlePane*> (sp->ControlL( TUid::Uid(EEikStatusPaneUidTitle)));
iNaviPane = static_cast<CAknNavigationControlContainer*> (sp->ControlL(TUid::Uid(EEikStatusPaneUidNavi)));
if(iNaviPane)
{
CAknNavigationDecorator *naviDecorator = iNaviPane->Top();
if(naviDecorator)
{
iTabGroup = (CAknTabGroup*)naviDecorator->DecoratedControl();
}
}
iActive = iTabGroup->ActiveTabIndex();
iTabCount = iTabGroup->TabCount();
iView = new (ELeave)CFirstFuckAppView;
CleanupStack::PushL(iView);
iView->ConstructL();
CleanupStack::Pop();
AddViewL( iView );
iView1 = new (ELeave)CFirstFuckAppView1;
CleanupStack::PushL(iView1);
iView1->ConstructL();
CleanupStack::Pop();
AddViewL( iView1 );
this->SetDefaultViewL( *iView );//设置默认为第一个视图
}
void CFirstFuckAppUi::HandleCommandL(TInt aCommand)
{
switch (aCommand)
{
case EEikCmdExit:
case EAknSoftkeyExit:
Exit();
break;
case ECommandAlarm:
case ECommandAbout:
case EHelp:
case EClose:
iView->HandleCommandL( aCommand ); //传递给第一个视图的事件
break;
case ECommandStart:
case ECommandStop:
iView1->HandleCommandL( aCommand ); //传递给第二个视图的事件
break;
default:
Panic(EFirstFuckUi);
break;
}
}
TKeyResponse CFirstFuckAppUi::HandleKeyEventL( //捕获左右键并激活视图
const TKeyEvent& aKeyEvent,TEventCode aType )
{
switch(aKeyEvent.iCode)
{
case EKeyLeftArrow:
if( iActive > 0 )
{
iActive--;
iTabGroup->SetActiveTabByIndex( iActive );
this->ActivateLocalViewL( KViewId );
}
break;
case EKeyRightArrow:
if( (iActive+1) < iTabCount )
{
iActive++;
iTabGroup->SetActiveTabByIndex( iActive );
this->ActivateLocalViewL( KViewId1 );
}
break;
default:
return EKeyWasNotConsumed;
break;
}
return EKeyWasNotConsumed;
}
RESOURCE EIK_APP_INFO
{
status_pane = r_aknfirstfuck_status_pane;
}
RESOURCE STATUS_PANE_APP_MODEL r_aknfirstfuck_status_pane
{
panes =
{
SPANE_PANE
{
id = EEikStatusPaneUidNavi;
type = EAknCtNaviPane;
resource = r_aknfirstfuck_navi_decorator;//导航
}
};
}
RESOURCE NAVI_DECORATOR r_aknfirstfuck_navi_decorator
{
type = ENaviDecoratorControlTabGroup;
control = TAB_GROUP
{
tab_width = EAknTabWidthWithTwoTabs;
active = 0;
tabs =
{
TAB
{
id = EAknFirstFuckViewTab1;
txt = r_string_firstfuck_tab_label1;
},
TAB
{
id = EAknFirstFuckViewTab2;
txt = r_string_firstfuck_tab_label2;
}
};
};
}