?? countdowncontainer.cpp
字號:
/*
* ============================================================================
* Name : CCountDownContainer from CountDownContainer.h
* Part of : CountDown
* Created : 2005-8-29 by
* Implementation notes:
* Initial content was generated by Series 60 AppWizard.
* Version :
* Copyright:
* ============================================================================
*/
// INCLUDE FILES
#include "CountDownContainer.h"
#include "CountDownAppUi.h"
#include <aknapp.h>
#include <AknIconArray.h>
#include <aknlists.h>
#include <eikclbd.h>
#include <CountDown.mbg>
#include <CountDown.rsg>
#include <aknquerydialog.h>
#include <aknmessagequerydialog.h>
#include <eikbtgpc.h>
#include <aknglobalnote.h>
#include <akntitle.h>
_LIT(KCountDownMbm, "CountDown.mbm");
void ShowNotify(TDesC &aBuf)
{
TRequestStatus status;
CAknGlobalNote* globalNote = CAknGlobalNote::NewLC();
globalNote->ShowNoteL(status, EAknGlobalInformationNote, aBuf );
User::WaitForRequest(status);
CleanupStack::PopAndDestroy();
}
// ================= MEMBER FUNCTIONS =======================
// ---------------------------------------------------------
// CCountDownContainer::ConstructL(const TRect& aRect)
// EPOC two phased constructor
// ---------------------------------------------------------
//
void CCountDownContainer::ConstructL(const TRect& aRect, CCountDownAppUi* aUi)
{
iUi = aUi;
iTimer = CPeriodic::NewL(CActive::EPriorityStandard);
CreateWindowL();
SetRect(aRect);
CreateFunctionListBoxL();
ActivateL();
}
// Destructor
CCountDownContainer::~CCountDownContainer()
{
delete iListBox;
delete iTimer;
}
// ---------------------------------------------------------
// CCountDownContainer::CountComponentControls() const
// ---------------------------------------------------------
//
TInt CCountDownContainer::CountComponentControls() const
{
return 1; // return nbr of controls inside this container
}
// ---------------------------------------------------------
// CCountDownContainer::ComponentControl(TInt aIndex) const
// ---------------------------------------------------------
//
CCoeControl* CCountDownContainer::ComponentControl(TInt aIndex) const
{
return iListBox;
}
// ---------------------------------------------------------
// CCountDownContainer::Draw(const TRect& aRect) const
// ---------------------------------------------------------
//
void CCountDownContainer::Draw(const TRect& aRect) const
{
CWindowGc& gc = SystemGc();
// TODO: Add your drawing code here
// example code...
gc.SetPenStyle(CGraphicsContext::ENullPen);
gc.SetBrushColor(KRgbGray);
gc.SetBrushStyle(CGraphicsContext::ESolidBrush);
gc.DrawRect(aRect);
}
// ---------------------------------------------------------
// CCountDownContainer::HandleControlEventL(
// CCoeControl* aControl,TCoeEvent aEventType)
// ---------------------------------------------------------
//
void CCountDownContainer::HandleControlEventL(
CCoeControl* /*aControl*/,TCoeEvent /*aEventType*/)
{
// TODO: Add your control event handler code here
}
void CCountDownContainer::CreateFunctionListBoxL()
{
delete iListBox;
iListBox = NULL;
iListBox = new( ELeave ) CAknSingleLargeStyleListBox();
iListBox->ConstructL( this, EAknListBoxSelectionList );
iListBox->CreateScrollBarFrameL( ETrue );
iListBox->ScrollBarFrame()->SetScrollBarVisibilityL(CEikScrollBarFrame::EOff,CEikScrollBarFrame::EAuto);
iListBox->SetListBoxObserver( this );
TBuf<8> iconId;
_LIT(KTab, "\t");
CDesCArray* itemArray = STATIC_CAST( CDesCArray*,iListBox->Model()->ItemTextArray() );
TName itemText;
CEikonEnv::Static()->ReadResource(itemText, R_STR_LOOK);
iconId.Num(0);
itemText.Insert(0, KTab);
itemText.Insert(0, iconId);
itemArray->AppendL(itemText);
CEikonEnv::Static()->ReadResource(itemText, R_STR_ADD);
iconId.Num(1);
itemText.Insert(0, KTab);
itemText.Insert(0, iconId);
itemArray->AppendL(itemText);
CEikonEnv::Static()->ReadResource(itemText, R_STR_MODIFY);
iconId.Num(2);
itemText.Insert(0, KTab);
itemText.Insert(0, iconId);
itemArray->AppendL(itemText);
CEikonEnv::Static()->ReadResource(itemText, R_STR_DELETE);
iconId.Num(3);
itemText.Insert(0, KTab);
itemText.Insert(0, iconId);
itemArray->AppendL(itemText);
TFileName appfullname = CEikonEnv::Static()->EikAppUi()->Application()->AppFullName();
TParse parse;
#ifdef __WINS__
parse.Set(_L("c:"), &appfullname, NULL);
#else
parse.Set(appfullname, NULL, NULL);
#endif
TFileName mbmPath(parse.DriveAndPath());
mbmPath.Append(KCountDownMbm);
CArrayPtr<CGulIcon>* iGulIcon =new( ELeave ) CAknIconArray( 1 );
iGulIcon->AppendL(iEikonEnv->CreateIconL(mbmPath, EMbmCountdownLook, EMbmCountdownLook_mask));
iGulIcon->AppendL(iEikonEnv->CreateIconL(mbmPath, EMbmCountdownAdd, EMbmCountdownAdd_mask));
iGulIcon->AppendL(iEikonEnv->CreateIconL(mbmPath, EMbmCountdownModify, EMbmCountdownModify_mask));
iGulIcon->AppendL(iEikonEnv->CreateIconL(mbmPath, EMbmCountdownDelete, EMbmCountdownDelete_mask));
((CEikColumnListBox *)iListBox)->ItemDrawer()->ColumnData()->SetIconArray(iGulIcon);
iUi->iCurFunctionId = EMenuPage;
iListBox->HandleItemAdditionL();
iListBox->SetRect(Rect());
iListBox->ActivateL();
iListBox->DrawNow();
TName title;
CEikStatusPane* sp = iEikonEnv->AppUiFactory()->StatusPane();
CAknTitlePane* iTitlePane = (CAknTitlePane *)sp->ControlL(TUid::Uid(EEikStatusPaneUidTitle));
CEikonEnv::Static()->ReadResource(title, R_QTN_APP_CAPTION_STRING);
iTitlePane->SetTextL(title);
}
void CCountDownContainer::CreateRecordListBoxL()
{
delete iListBox;
iListBox = NULL;
delete iListBox;
iListBox = new( ELeave ) CAknSingleStyleListBox();
iListBox->ConstructL( this, EAknListBoxSelectionList );
iListBox->CreateScrollBarFrameL( ETrue );
iListBox->ScrollBarFrame()->SetScrollBarVisibilityL(CEikScrollBarFrame::EOff,CEikScrollBarFrame::EAuto);
iListBox->SetListBoxObserver( this );
_LIT(KIconTab, "\t");
TName recordText;
CDesCArray* itemArray = STATIC_CAST( CDesCArray*,iListBox->Model()->ItemTextArray() );
TInt count = iUi->iDB->iArrayDB->Count();
for(TInt i=0; i<count; i++)
{
TRecordDBStruct &db = iUi->iDB->iArrayDB->At(i);
recordText.Copy(KIconTab);
recordText.Append(db.iName);
itemArray->AppendL(recordText);
}
iListBox->HandleItemAdditionL();
iListBox->SetRect(Rect());
iListBox->ActivateL();
iListBox->DrawNow();
TName title;
CEikStatusPane* sp = iEikonEnv->AppUiFactory()->StatusPane();
CAknTitlePane* iTitlePane = (CAknTitlePane *)sp->ControlL(TUid::Uid(EEikStatusPaneUidTitle));
switch(iUi->iCurFunctionId)
{
case EFunLook:
CEikonEnv::Static()->ReadResource(title, R_STR_LOOK);
break;
case EFunModify:
CEikonEnv::Static()->ReadResource(title, R_STR_MODIFY);
break;
case EFunDelete:
CEikonEnv::Static()->ReadResource(title, R_STR_DELETE);
break;
default:
CEikonEnv::Static()->ReadResource(title, R_QTN_APP_CAPTION_STRING);
break;
}
iTitlePane->SetTextL(title);
}
void CCountDownContainer::HandleListBoxEventL(CEikListBox* aListBox,TListBoxEvent aEventType )
{
if(aEventType==EEventEnterKeyPressed)
{
OpenCurrentListItem();
}
}
TKeyResponse CCountDownContainer::OfferKeyEventL(const TKeyEvent &aKeyEvent, TEventCode aType)
{
return iListBox->OfferKeyEventL(aKeyEvent, aType);
}
void CCountDownContainer::OpenCurrentListItem()
{
iTimer->Start( 0, 0, TCallBack(CCountDownContainer::TimerPeriod, this));
}
TInt CCountDownContainer::TimerPeriod(TAny * aPtr)
{
((CCountDownContainer*)aPtr)->UpdataTimer();
return TRUE;
}
void CCountDownContainer::UpdataTimer()
{
iTimer->Cancel();
if(iUi->iCurFunctionId == EMenuPage)
{
TInt index = iListBox->CurrentItemIndex();
if(index == EFunAdd)
{
CmdAdd();
}
else
{
if(iUi->iDB->iArrayDB->Count()==0)
{
TName info;
CEikonEnv::Static()->ReadResource(info, R_STR_NO_CD_TIPS);
ShowNotify(info);
}
else
{
switch(index)
{
case EFunLook:
iUi->iCurFunctionId = EFunLook;
break;
case EFunModify:
iUi->iCurFunctionId = EFunModify;
break;
case EFunDelete:
iUi->iCurFunctionId = EFunDelete;
break;
default:
break;
}
CreateRecordListBoxL();
}
}
}
else
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -