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

📄 waitnotecontainer.cpp

📁 Symbian S60下的进度条使用例子,适合初学者
💻 CPP
字号:
/**
* 
* @brief Definition of CWaitNoteContainer
*
* Copyright (c) EMCC Software Ltd 2003
* @version 1.0
*/

// INCLUDE FILES

// Class include
#include "WaitNoteContainer.h"

// System includes
#include <aknnotedialog.h> // CAknWaitNoteWrapper
#include <waitnote.rsg>

// CONSTANTS
const TInt KNumberOfStepsToSaveGame(5);

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

/**
* Symbian OS 2nd phase constructor.  Creates a Window for the controls, which it contains.
* Constructs a label and adds it to the window, which it then activates.
* @param aRect The rectangle for this window
*/		
void CWaitNoteContainer::ConstructL(const TRect& aRect)
	{
	iTimeWaster.CreateLocal();
	CreateWindowL();
	SetRect(aRect);
	ActivateL();
	}

/**
* Symbian OS 2 phase constructor.
* Constructs the CWaitNoteContainer 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 CWaitNoteContainer
*/
CWaitNoteContainer* CWaitNoteContainer::NewL(const TRect& aRect)
	{
	CWaitNoteContainer* self = CWaitNoteContainer::NewLC(aRect);
	CleanupStack::Pop(self);
	return self;
	}

/**
* Symbian OS 2 phase constructor.
* Constructs the CWaitNoteContainer 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 CWaitNoteContainer
*/
CWaitNoteContainer* CWaitNoteContainer::NewLC(const TRect& aRect)
	{
	CWaitNoteContainer* self = new (ELeave) CWaitNoteContainer;
	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 CWaitNoteContainer::Draw(const TRect& aRect) const
	{
	CWindowGc& gc = SystemGc();
	gc.Clear(aRect);
	}

/**
* Destructor. Frees up memory. 
*/
CWaitNoteContainer::~CWaitNoteContainer()
	{
	iTimeWaster.Close();
	}

/**
* Called by the AppUi when the Save Game command is invoked. 
* Constructs and executes the wait note wrapper. If the user cancels the note,
* it cancels the game save processing.
*/
void CWaitNoteContainer::SaveGameL()
	{
	CAknWaitNoteWrapper* waitNoteWrapper = CAknWaitNoteWrapper::NewL();
	CleanupStack::PushL(reinterpret_cast<CBase*>(waitNoteWrapper)); // Required reinterpret_cast as CAknWaitNoteWrapper inherits privately from CActive
	if (! waitNoteWrapper->ExecuteL(R_WAITNOTE_SAVING_GAME_NOTE, *this)) // this is a blocking call, remember the wrapper isn't a dialog, so it doesn't need the EEikDialogFlagWait flag to make it blocking 
		CancelGameSave();
	CleanupStack::PopAndDestroy(waitNoteWrapper);
	}
/**
* Called by the wait note wrapper when the note is dismissed. 
* This is as a result of either the user cancelling the note,
* or the process finishing.
*/
void CWaitNoteContainer::DialogDismissedL(TInt /*aButtonId*/)
	{	
	}

/**
* Called by the wait note wrapper following StepL. Unless the user has cancelled the note, 
* if this returns EFalse, it will call StepL again, otherwise, it will call ProcessFinished.
* @return ETrue if processing is complete, EFalse otherwise
*/
TBool CWaitNoteContainer::IsProcessDone() const
	{
	return (iStepsCompleted == KNumberOfStepsToSaveGame);
	}

/**
* Called by the wait note wrapper if the process is complete or if the user cancelled the note.
* Completes the game save and resets the steps completed counter.
*/
void CWaitNoteContainer::ProcessFinished()
	{
		CompleteGameSave();
		iStepsCompleted = 0;
	}

/**
* Called by the wait note wrapper if the processing is not yet complete. 
* Completes a step in the processing, by saving part of the game to a file, and incrementing the
* number of steps completed. This is a synchronous method.
*/
void CWaitNoteContainer::StepL()
	{
	SaveGamePartToFile();

	// Note that we have completed a step
	iStepsCompleted++;
	}

/**
* Dummy method which could be used to cancel a partially saved game, e.g.
* by resetting values and deleting the partially created file.
*/
void CWaitNoteContainer::CancelGameSave()
	{
	}

/**
* Dummy method which could be used to save part of a game to a file
* In this example, it runs a timer for an arbitrary period of time
* to simulate saving part of the game. This is a synchronous method.
*/
void CWaitNoteContainer::SaveGamePartToFile ()
	{
	// Use an arbitrary delay to simulate saving part of the game
	TRequestStatus status;
	TInt delay = 1000000; // 1 second
	iTimeWaster.After(status, delay);
	User::WaitForRequest(status); 
	}

/**
* Dummy method which could be used to complete the game saving process, e.g. by closing
* the saved game file.
* In this example it stops the timer used to simulate a game save.
*/
void CWaitNoteContainer::CompleteGameSave()
	{
	iTimeWaster.Cancel();
	}


//End of File	

⌨️ 快捷键说明

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