📄 mycolumnlistboxappview.cpp
字号:
/* Copyright (c) 2008, Nokia. All rights reserved */
#include "MyColumnListBoxAppView.h"
#include <aknviewappui.h>
#include <aknconsts.h>
#include <MyColumnListBox.rsg>
#include "CDreamColumnListBox.h"
#include "MyColumnListBox.hrh"
CMyColumnListBoxAppView* CMyColumnListBoxAppView::NewL(const TRect& aRect)
{
CMyColumnListBoxAppView* self = NewLC(aRect);
CleanupStack::Pop(self);
return self;
}
CMyColumnListBoxAppView* CMyColumnListBoxAppView::NewLC(const TRect& aRect)
{
CMyColumnListBoxAppView* self = new (ELeave) CMyColumnListBoxAppView;
CleanupStack::PushL(self);
self->ConstructL(aRect);
return self;
}
void CMyColumnListBoxAppView::ConstructL(const TRect& aRect)
{
BaseConstructL(R_VIEW);
iRect = aRect;
// CreateWindowL();
//
// SetRect(aRect);
//
// ActivateL();
}
CMyColumnListBoxAppView::CMyColumnListBoxAppView()
{
// Add any construction code that can not leave here
}
CMyColumnListBoxAppView::~CMyColumnListBoxAppView()
{
// Add any destruction code here
}
//void CMyColumnListBoxAppView::Draw(const TRect& /*aRect*/) const
// {
// // Clear the screen
// CWindowGc& gc = SystemGc();
// gc.Clear(Rect());
// }
TUid CMyColumnListBoxAppView::Id() const
{
return TUid::Uid(1);
}
void CMyColumnListBoxAppView::DoActivateL(const TVwsViewId& /*aPrevViewId*/,
TUid /*aCustomMessageId*/,
const TDesC8& /*aCustomMessage*/)
{
// ASSERT(!(iContainer));
// iContainer = CMultiViewsContainer1::NewL(ClientRect());
TFontSpec iFontSpec(_L("宋体"),170);//SwissA
iCoeEnv->ScreenDevice()->GetNearestFontInTwips(iFont,iFontSpec);
iBox=new (ELeave) CDreamColumnListBox();
// TRect irect;
// irect = ClientRect();
iBox->ConstructL(0,iFont,AppUi()->ClientRect());
iBox->SetMopParent(this);
iBox->SetObserver(this);
AppUi()->AddToStackL( *this, iBox );//保证iBox获得焦点,有滚动条
// AppUi()->AddToStackL(*this, iBox->GetListBoxSub());
iBox->SetRect(AppUi()->ClientRect());
iBox->SetPosition(TPoint(0,22));
iBox->SetSize(TSize(200,150));//120,200
/* Just for having some nice content for the list box, enumerate
all installed fonts and show their names, whether they are
scalable or not, how many different sizes they have, and whether
they are proportional or monospaced, in 4 different columns
*/
TBuf<100> iLine;
TBuf<10> iStr;
iBox->AppendColumnL(50,iFont,_L("name"));//150
iBox->AppendColumnL(40,iFont,_L("price"));
iBox->AppendColumnL(40,iFont,_L("time"));
iBox->AppendColumnL(40,iFont,_L("handle"));
CDesCArrayFlat* iArray=new(ELeave) CDesCArrayFlat(5);
iBox->SetItemTextArray(iArray);
_LIT(KTab,"\t");
_LIT(KYes,"yes");
_LIT(KNo,"no");
//枚举Symbian可用的字体列表
TTypefaceSupport iTypefaceSupport=TTypefaceSupport();
TInt iFontCount=iCoeEnv->ScreenDevice()->NumTypefaces();
TInt iIndex=0;
for (;;)
{
if (iIndex==iFontCount)
{
break;
}
iCoeEnv->ScreenDevice()->TypefaceSupport(iTypefaceSupport,iIndex);
iLine.Copy(iTypefaceSupport.iTypeface.iName);
iLine.Append(KTab);
if (iTypefaceSupport.iIsScalable)
{
iLine.Append(KYes);
}
else
{
iLine.Append(KNo);
}
iLine.Append(KTab);
iStr.Num(iTypefaceSupport.iNumHeights);
iLine.Append(iStr);
iLine.Append(KTab);
if (iTypefaceSupport.iTypeface.IsProportional())
{
iLine.Append(KYes);
}
else
{
iLine.Append(KNo);
}
iArray->AppendL(iLine);
iIndex++;
}
iBox->BaseBox()->HandleItemAdditionL();
// ActivateL();
// Set the focus to the list box; without focus, it won't show
// the selection
iBox->SetScrollBarVisibilityL(CEikScrollBarFrame::EOn,
CEikScrollBarFrame::EAuto);
iBox->ActivateL();
iBox->SetFocus(ETrue);
// iBox->ActivatelSub();
}
void CMyColumnListBoxAppView::DoDeactivate()
{
if (iBox)
{
AppUi()->RemoveFromStack(iBox);
delete iBox;
iBox = NULL;
}
}
void CMyColumnListBoxAppView::HandleCommandL(TInt aCommand)
{
AppUi()->HandleCommandL(aCommand);
}
TKeyResponse CMyColumnListBoxAppView::HandleKeyEventL(
const TKeyEvent& aKeyEvent,
TEventCode aType)
{
if(aType == EKeyDownArrow)
{
TInt i;
i = 1;
}
else
{
}
return EKeyWasConsumed;
}
TKeyResponse CMyColumnListBoxAppView::OfferKeyEventL(
const TKeyEvent& aKeyEvent, TEventCode aType )
{
TInt code = aKeyEvent.iCode;
return( EKeyWasNotConsumed );
}
void CMyColumnListBoxAppView::HandleControlEventL(
CCoeControl* /*aControl*/,TCoeEvent /*aEventType*/)
{
TInt i = 0;
// TODO: Add your control event handler code here
}
void CMyColumnListBoxAppView::HandleListBoxEventL(CEikListBox* /*aListBox*/,TListBoxEvent aListBoxEvent)
{
TInt i = 0;
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);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -