📄 simpleclock.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 + -