⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 countdowncontainer.cpp

📁 Example_XXX为每章内容介绍所用源代码文件; Exercise_XXX为每章习题所提供的源代码样例。 包括 倒计时例程 对话框例程 动态列表例程 俄罗斯方块例程 蓝牙例程
💻 CPP
📖 第 1 页 / 共 2 页
字号:
/*
* ============================================================================
*  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 + -