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

📄 simpleclock.cpp

📁 一个symbian c++ GUI程序 闹钟 可以详细了解到symbian GUI
💻 CPP
字号:
// SimpleClock.cpp
//
// Copyright (c) 2000 Symbian Ltd.  All rights reserved.

// Asynchronous keyboard processing with messenger program.
// A single CWriteKeyProcessor active object (derived from 
// class CActiveConsole) which accepts and prints keyboard
// input to a console.

#include "SimpleClock.h"
#include "e32base.h"

//////////////////////////////////////////////////////////////////////////////
//
// -----> CSimpleClock (implementation)
//
//////////////////////////////////////////////////////////////////////////////
CSimpleClock::CSimpleClock()
: CTimer(CActive::EPriorityStandard)
// Construct standard-priority active object
{
	iStop = FALSE;
	
};


CSimpleClock* CSimpleClock::NewL()
{
	TTime tm;
	tm.UniversalTime();

	return CSimpleClock::NewL(tm);
}

CSimpleClock* CSimpleClock::NewLC(const TTime & aTime)
{
	CSimpleClock* self=new (ELeave) CSimpleClock();
	CleanupStack::PushL(self);
	self->ConstructL(aTime);
	return self;
}

CSimpleClock* CSimpleClock::NewL(const TTime & aTime)
{
	CSimpleClock* self = NewLC(aTime);
	CleanupStack::Pop();
	return self;
}

void CSimpleClock::ConstructL(const TTime & aTime)
{
	iTime = aTime;
	iObservers = new (ELeave) CArrayFixFlat<MClockObserver*>(5);
	// Base class second-phase construction.
	CTimer::ConstructL();

	CActiveScheduler::Add(this); 
}


CSimpleClock::~CSimpleClock()
{
	// Make sure we're cancelled
	Cancel();
	delete iObservers;
}

void CSimpleClock::DoCancel()
{
	// Base class
	CTimer::DoCancel(); 
}

void CSimpleClock::IssueRequest()
{
	if(IsActive())
		return;
	CTimer::After(900000);
}

void CSimpleClock::RunL()
{
	if (iStop == FALSE)
	{
		iTime += TTimeIntervalSeconds(1);
		TDateTime dt = iTime.DateTime();
		for(TInt i=0; i<iObservers->Count(); i++)
		{
			iObservers->At(i)->UpdateClock(iTime);
		}
		IssueRequest();

	}
}

void CSimpleClock::Start()
{
	iTime.UniversalTime();
	iTime += TTimeIntervalHours(8);
	IssueRequest();
}



void CSimpleClock::AddObserver(MClockObserver * aObserver)
{
	for(TInt i=0; i<iObservers->Count(); i++)
	{
		if( iObservers->At(i) == aObserver)
			return;
	}
	iObservers->AppendL(aObserver);
}


void CSimpleClock::RemoveObserver(MClockObserver *aObserver)
{
	TBool found = FALSE;
	for(TInt i=0; i<iObservers->Count(); i++)
	{
		if( iObservers->At(i) == aObserver)
		{
			found = TRUE;
			break;
		}
	}
	if(found)
		iObservers->Delete(i);
}

⌨️ 快捷键说明

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