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

📄 listboxappcontainer.cpp

📁 列表框事例
💻 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 + -