📄 listboxappcontainer.cpp
字号:
/*
* ============================================================================
* Name : CListBoxAppContainer from ListBoxAppContainer.h
* Part of : ListBoxApp
* Created : 2006-2-23 by
* Implementation notes:
* Initial content was generated by Series 60 AppWizard.
* Version :
* Copyright:
* ============================================================================
*/
// INCLUDE FILES
#include "ListBoxAppContainer.h"
#include <barsread.h>
#include <gulicon.h>
#include <stringloader.h>
#include <gulicon.h>
#include <akniconarray.h>
#include <eikclbd.h>
#include <aknnotewrappers.h>
#include <listboxapp.mbg>
#include <listboxapp.rsg>
#include <uikon.hrh>
#include <eikmenub.h>
#define KListPosition TPoint(0,0)
// ================= MEMBER FUNCTIONS =======================
// ---------------------------------------------------------
// CListBoxAppContainer::ConstructL(const TRect& aRect)
// EPOC two phased constructor
// ---------------------------------------------------------
//
void CListBoxAppContainer::ConstructL(const TRect& aRect)
{
CreateWindowL();
CreateListBoxL();
iListBox->SetListBoxObserver(this);
SetupListIconsL();
SetupScrollBarsL();
SetRect(aRect);
ActivateL();
}
// Destructor
CListBoxAppContainer::~CListBoxAppContainer()
{
delete iListBox;
}
// ---------------------------------------------------------
// CListBoxAppContainer::SizeChanged()
// Called by framework when the view size is changed
// ---------------------------------------------------------
//
void CListBoxAppContainer::SizeChanged()
{
iListBox->SetExtent (KListPosition, iListBox->MinimumSize());
}
// ---------------------------------------------------------
// CListBoxAppContainer::CountComponentControls() const
// ---------------------------------------------------------
//
TInt CListBoxAppContainer::CountComponentControls() const
{
return 1; // return nbr of controls inside this container
}
// ---------------------------------------------------------
// CListBoxAppContainer::ComponentControl(TInt aIndex) const
// ---------------------------------------------------------
//
CCoeControl* CListBoxAppContainer::ComponentControl(TInt aIndex) const
{
switch ( aIndex )
{
case 0:
return iListBox;
default:
return NULL;
}
}
// ---------------------------------------------------------
// CListBoxAppContainer::Draw(const TRect& aRect) const
// ---------------------------------------------------------
//
void CListBoxAppContainer::Draw(const TRect& aRect) const
{
CWindowGc& gc = SystemGc();
gc.Clear(aRect);
// TODO: Add your drawing code here
// example code...
}
// ---------------------------------------------------------
// CListBoxAppContainer::HandleControlEventL(
// CCoeControl* aControl,TCoeEvent aEventType)
// ---------------------------------------------------------
//
void CListBoxAppContainer::HandleControlEventL(
CCoeControl* /*aControl*/,TCoeEvent /*aEventType*/)
{
// TODO: Add your control event handler code here
}
void CListBoxAppContainer::CreateListBoxL()
{
iListBox=new(ELeave)CAknSingleGraphicStyleListBox();
iListBox->SetContainerWindowL(*this);
TResourceReader reader;
iCoeEnv->CreateResourceReaderLC(reader,R_SIMPLE_LISTBOX);
iListBox->ConstructFromResourceL(reader);
CleanupStack::PopAndDestroy();
}
void CListBoxAppContainer::SetupListIconsL()
{
HBufC* iconFileName;
iconFileName=StringLoader::LoadLC(R_ICON_FILE_NAME);
CArrayPtr<CGulIcon>* icons=new(ELeave) CAknIconArray(2);
CleanupStack::PushL(icons);
icons->AppendL(iEikonEnv->CreateIconL(*iconFileName,EMbmListboxappIcon1,EMbmListboxappIcon1_m));
icons->AppendL(iEikonEnv->CreateIconL(*iconFileName,EMbmListboxappIcon2,EMbmListboxappIcon2_m));
CleanupStack::Pop(icons);
CleanupStack::PopAndDestroy(iconFileName);
iListBox->ItemDrawer()->ColumnData()->SetIconArray(icons);
}
void CListBoxAppContainer::SetupScrollBarsL()
{
iListBox->CreateScrollBarFrameL(ETrue);
iListBox->ScrollBarFrame()->SetScrollBarVisibilityL(CEikScrollBarFrame::EOff,CEikScrollBarFrame::EAuto);
}
TKeyResponse CListBoxAppContainer::OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode& aType)
{
TBool selectKeyPressed=(aType==EEventKey)&&(aKeyEvent.iCode==EKeyPhoneSend);
TBool ListBoxNotEmpty=(iListBox)&&(iListBox->Model()->NumberOfItems()>0);
if(selectKeyPressed&&ListBoxNotEmpty)
{
CEikMenuBar* parentMenuBar=iEikonEnv->AppUiFactory()->MenuBar();
parentMenuBar->SetMenuTitleResourceId(R_LISTBOXAPP_CONTEXT_MENUBAR);
if(parentMenuBar)
{
parentMenuBar->TryDisplayMenuBarL();
}
parentMenuBar->SetMenuTitleResourceId(R_LISTBOXAPP_MENUBAR);
return EKeyWasConsumed;
}
else
return iListBox->OfferKeyEventL(aKeyEvent,aType);
}
void CListBoxAppContainer::HandleListBoxEventL(CEikListBox* /*aListBox*/,TListBoxEvent aListBoxEvent)
{
if(aListBoxEvent==MEikListBoxObserver::EEventEnterKeyPressed)
{
HBufC* noteText;
TInt currentItem=iListBox->CurrentItemIndex();
switch (currentItem)
{
case 0:
{
noteText=StringLoader::LoadLC(R_NOTE_TEXT1);
break;
}
case 1:
{
noteText=StringLoader::LoadLC(R_NOTE_TEXT2);
break;
}
default:
break;
}
CAknConfirmationNote* note=new(ELeave) CAknConfirmationNote();
note->ExecuteLD(*noteText);
CleanupStack::PopAndDestroy(noteText);
}
}
// End of File
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -