uirefreshtimer.cpp

来自「国内著名嵌入式培训机构内部资料,内含一些实例代码,包括技术专题书籍」· C++ 代码 · 共 89 行

CPP
89
字号
/*
 ============================================================================
 Name		: UiRefreshTimer.cpp
 Author	  : 
 Version	 : 1.0
 Copyright   : Your copyright notice
 Description : CUiRefreshTimer implementation
 ============================================================================
 */

#include "UiRefreshTimer.h"

CUiRefreshTimer::CUiRefreshTimer() :
	CActive(EPriorityStandard) // Standard priority
	{
	m_pObserver=NULL;
	}

CUiRefreshTimer* CUiRefreshTimer::NewLC()
	{
	CUiRefreshTimer* self = new ( ELeave ) CUiRefreshTimer();
	CleanupStack::PushL(self);
	self->ConstructL();
	return self;
	}

CUiRefreshTimer* CUiRefreshTimer::NewL()
	{
	CUiRefreshTimer* self = CUiRefreshTimer::NewLC();
	CleanupStack::Pop(); // self;
	return self;
	}

void CUiRefreshTimer::ConstructL()
	{
	User::LeaveIfError(iTimer.CreateLocal() ); // Initialize timer
	CActiveScheduler::Add( this); // Add to scheduler
	}

void CUiRefreshTimer::SetObserver(MUiRefreshTimerObserver* pObserver)
	{
	m_pObserver=pObserver;
	}

CUiRefreshTimer::~CUiRefreshTimer()
	{
	Cancel(); // Cancel any request, if outstanding
	iTimer.Close(); // Destroy the RTimer object
	// Delete instance variables if any
	}

void CUiRefreshTimer::DoCancel()
	{
	iTimer.Cancel();
	}

void CUiRefreshTimer::StartL(TTimeIntervalMicroSeconds32 aDelay)
	{
	Cancel(); // Cancel any request, just to be sure
	iState = EUninitialized;
	iTimer.After(iStatus, aDelay); // Set for later
	SetActive(); // Tell scheduler a request is active
	}

void CUiRefreshTimer::RunL()
	{
	if (iState == EUninitialized)
		{
		// Do something the first time RunL() is called
		iState = EInitialized;
		}
	else
		if (iState != EError)
			{
			// Do something
			}
	
	if(m_pObserver)
		m_pObserver->NotifyRefresh();
	
	iTimer.After(iStatus, 1000000); // Set for 1 sec later
	SetActive(); // Tell scheduler a request is active
	}

TInt CUiRefreshTimer::RunError(TInt aError)
	{
	return aError;
	}

⌨️ 快捷键说明

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