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

📄 listquerycontainer.cpp

📁 S60下演示列表查询的用法
💻 CPP
字号:
/**
* 
* @brief Definition of CListQueryContainer
*
* Copyright (c) EMCC Software Ltd 2003
* @version 1.0
*/

// INCLUDE FILES

// Class include
#include "ListQueryContainer.h"

// System includes
#include <aknquerydialog.h> // CAknQueryDialog
#include <listquery.rsg> // resources
#include <stringloader.h> // StringLoader

// User includes
#include "listquery.hrh" // constants

// CONSTANTS
const TInt KMaxSavedGames(4);

// ================= MEMBER FUNCTIONS =======================

/**
* Symbian OS 2nd phase constructor.  Creates and activates it.
* Sets up the list query item array.
* @param aRect The rectangle for this window
*/		
void CListQueryContainer::ConstructL(const TRect& aRect)
	{
	SetupListQueryItemArrayL();
	CreateWindowL();
	SetRect(aRect);
	ActivateL();
	}

/**
* Symbian OS 2 phase constructor.
* Constructs the CListQueryContainer using the NewLC method, popping
* the constructed object from the CleanupStack before returning it.
* 
* @param aRect The rectangle for this window
* @return The newly constructed CListQueryContainer
*/
CListQueryContainer* CListQueryContainer::NewL(const TRect& aRect)
	{
	CListQueryContainer* self = CListQueryContainer::NewLC(aRect);
	CleanupStack::Pop(self);
	return self;
	}

/**
* Symbian OS 2 phase constructor.
* Constructs the CListQueryContainer using the constructor and ConstructL 
* method, leaving the constructed object on the CleanupStack before returning it.
* 
* @param aRect The rectangle for this window
* @return The newly constructed CListQueryContainer
*/
CListQueryContainer* CListQueryContainer::NewLC(const TRect& aRect)
	{
	CListQueryContainer* self = new (ELeave) CListQueryContainer;
	CleanupStack::PushL(self);
	self->ConstructL(aRect);
	return self;
	}
/**
* Called by the framework to draw this control.  Clears the area in 
* aRect.
* @param aRect in which to draw
*/
void CListQueryContainer::Draw(const TRect& aRect) const
	{
	CWindowGc& gc = SystemGc();
	gc.Clear(aRect);
	}

/**
* Called by the AppUi when Exit is selected from the Options menu.
* Queries whether to save the game. If yes, then queries the name for the 
* saved game from a list of predefined names and saves the game to file.
*/
void CListQueryContainer::SaveGameL()
	{
	CAknQueryDialog* saveGameQuery = CAknQueryDialog::NewL();	
	if (saveGameQuery->ExecuteLD(R_LISTQUERY_CONFIRMATION_QUERY))
		{
		TInt index(0); // the index of the selected item
		CAknListQueryDialog* query = new (ELeave) CAknListQueryDialog(&index);
		query->PrepareLC(R_LISTQUERY_LIST_QUERY);
		query->SetItemTextArray(iListQueryItemArray);	
		query->SetOwnershipType (ELbmDoesNotOwnItemArray); // keep ownership of the item array. Only call this after setting the item array!
		if (query->RunLD())
			{
			SaveGameToFileL((*iListQueryItemArray)[index]); // use the name of the currently selected item as the file name. 
			}
		}
	}

/**
* Called on construction. Instantiates the list query item array and populates
* it with appropriate list items. This method merely creates some list items dynamically, and adds them
* to the array.  In a real-world application, it is likely that the 
* items would be read from a file   
*/
void CListQueryContainer::SetupListQueryItemArrayL()
	{
	iListQueryItemArray =  new (ELeave) CDesCArrayFlat(KMaxSavedGames);
	_LIT (KStringHeader, "Saved Game %d");
	TBuf <16> aString;
	for (TInt i = 1; i<= KMaxSavedGames; i++)
		{
		aString.Format(KStringHeader(), i);
		iListQueryItemArray->AppendL (aString);
		}
	}

/** 
* Destructor.  Frees up memory for the list query item array.
*/
CListQueryContainer::~CListQueryContainer()
	{
	if (iListQueryItemArray)
		{
		iListQueryItemArray->Reset();
		delete iListQueryItemArray;
		}
	}

//End of File	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -