diff -r 4ca382093dae -r 493058e57c8c buildverification/smoketest/Timew/ConsoleAlarmAlertServer/Source/ConsoleAlarmAlertConsole.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/buildverification/smoketest/Timew/ConsoleAlarmAlertServer/Source/ConsoleAlarmAlertConsole.cpp Wed Sep 01 12:30:50 2010 +0100 @@ -0,0 +1,404 @@ +// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +#include "consolealarmalertconsole.h" + +// System includes +#include +#include +#include + +// User includes +#include "asaltdefs.h" +#include "consolealarmalertsession.h" + +// Type definitions + +// Constants + +// Enumerations + +// Classes referenced + + +// +// ----> CConsoleAlarmAlertConsole (source) +// + +//************************************************************************************* +CConsoleAlarmAlertConsole::CConsoleAlarmAlertConsole(CConsoleAlarmAlertSession& aSession) +: CActive(CActive::EPriorityLow), iSession(aSession), iInstructionIndex(0) + { + CActiveScheduler::Add(this); + } + + +//************************************************************************************* +CConsoleAlarmAlertConsole::~CConsoleAlarmAlertConsole() + { + Cancel(); + Hide(); + } + + +// +// +// + + +//************************************************************************************* +void CConsoleAlarmAlertConsole::GetKey() + { + if (iWin && !IsActive()) + { + SetActive(); + iWin->Read(iStatus); + } + } + + +//************************************************************************************* +void CConsoleAlarmAlertConsole::CancelKey() + { + if (IsActive()) + Cancel(); + } + + +//************************************************************************************* +void CConsoleAlarmAlertConsole::DecCounter() + { + if (iTimeInterval > 0) + { + --iTimeInterval; + UpdateDisplay(); + } + } + + +//************************************************************************************* +void CConsoleAlarmAlertConsole::UpdateDisplay() + { + TBuf<180> buf; + _LIT(KEalwlAlarmSoundOff, "Off"); + _LIT(KEalwlAlarmSoundOn, "On"); + _LIT(KEalwlStatusEnabled, "Are"); + _LIT(KEalwlStatusNotEnabled, "Are Not"); + _LIT(KEalwlStatusIs, "Is"); + _LIT(KEalwlStatusIsNo, "Is No"); + // + if (!iWin) + return; + iWin->SetCursorPosAbs(TPoint(0,0)); + + // MESSAGE + buf.Format(_L("Message : %S"), &iSession.Alarm().Message()); + iWin->Write(buf); + iWin->ClearToEndOfLine(); + + // DATA + if (iSession.Alarm().HasAssociatedData()) + { + const TAgnAlarmInfo data = iSession.AlarmData(); + const TUid KUidAgendaModelAlarmCategory = { 0x101F4A70 }; + if (data.iAlarmCategory == KUidAgendaModelAlarmCategory) + { + _LIT(KEalwlAgendaData,"\ndata: agenda filename \"%S\""); + if (data.iFileName.Length() < 40) + buf.Format(KEalwlAgendaData,&data.iFileName); + else + { + TBuf<40> temp = data.iFileName.Left(40); + buf.Format(KEalwlAgendaData,&temp); + } + } + else + buf.Format(_L("\nAlarm has %d data bytes"), iSession.AlarmDataSize()); + } + else + { + buf = _L("\nAlarm has no associated data"); + } + iWin->Write(buf); + iWin->ClearToEndOfLine(); + + // DEFER TIME + if (iSession.DeferTime() != Time::NullTTime()) + { + TDateTime dateTime(iSession.DeferTime().DateTime()); + buf.Format(_L("\nDefer : %02d:%02d"), dateTime.Hour(), dateTime.Minute()); + } + else + buf=_L("\nNULL defer time"); + iWin->Write(buf); + iWin->ClearToEndOfLine(); + + // TIME INTERVAL + buf.Format(_L("\nCurrent time interval is %d minutes"), GetTimeInterval()); + iWin->Write(buf); + iWin->ClearToEndOfLine(); + + // STATE FLAGS + buf.Format(_L("\nAlarm sounds are %S"),(iAlertState&EASAltStateFlagsSilentRunning)?&KEalwlAlarmSoundOff:&KEalwlAlarmSoundOn); + iWin->Write(buf); + iWin->ClearToEndOfLine(); + buf.Format(_L("\nAlarm sounds %S paused"),(iAlertState&EASAltStateFlagsSoundIsPaused)?&KEalwlStatusEnabled:&KEalwlStatusNotEnabled); + iWin->Write(buf); + iWin->ClearToEndOfLine(); + buf.Format(_L("\nAlarm sounds %S deferred"),(iAlertState&EASAltStateFlagsInQuietPeriod)?&KEalwlStatusEnabled:&KEalwlStatusNotEnabled); + iWin->Write(buf); + iWin->ClearToEndOfLine(); + buf.Format(_L("\nThere %S more than one unacknowledged alarms"),(iAlertState&EASAltStateFlagsMoreThanOneDueAlarm)?&KEalwlStatusEnabled:&KEalwlStatusNotEnabled); + iWin->Write(buf); + iWin->ClearToEndOfLine(); + buf.Format(_L("\nThere %S memory to snooze alarms"),(iAlertState&EASAltStateFlagsNoMemoryForSnoozeAlarm)?&KEalwlStatusIsNo:&KEalwlStatusIs); + iWin->Write(buf); + iWin->ClearToEndOfLine(); + buf.Format(_L("\nThere %S an alarm sound to play"),(iAlertState&EASAltStateFlagsAlarmHasNoSoundFileName)?&KEalwlStatusIsNo:&KEalwlStatusIs); + iWin->Write(buf); + iWin->ClearToEndOfLine(); + + // COMMAND PROMPTS + iWin->Write(_L("\nENTER = Silence alarm SPACE = Quiet Period")); + iWin->ClearToEndOfLine(); + iWin->Write(_L("\nESCAPE = Acknowledge alarm A = Acknowledge all")); + iWin->ClearToEndOfLine(); + iWin->Write(_L("\nP = Pause alarm sound TAB = Snooze alarm")); + iWin->ClearToEndOfLine(); + iWin->Write(_L("\n1 = 1 min sound interval 0 = 0 mins sound interval")); + iWin->ClearToEndOfLine(); + iWin->Write(_L("\n+ = Increase int. and pause - = Decrease int. and pause")); + iWin->ClearToEndOfLine(); + iWin->Write(_L("\n! = Kill alarm alert server")); + iWin->ClearToEndOfLine(); + iWin->Write(_L("\n")); + iWin->ClearToEndOfLine(); + iWin->Write(_L("\r")); + // + if(!iSession.InstructionSet()) //Get user input if instruction set unspecified. + GetKey(); + else if (iInstructionIndex >= static_cast*>(iSession.InstructionSet())->Count()) //Get user input if program has already iterated thru entire instruction set. + GetKey(); + else //Use the command in the instruction set, instead of waiting for user input. + { + if(!IsActive()) + { + iStatus = KRequestPending; + TRequestStatus* ptrStatus = &iStatus; + User::RequestComplete( ptrStatus, KErrNone ); + SetActive(); + } + } + } + +//************************************************************************************* +TInt CConsoleAlarmAlertConsole::GetTimeInterval() const + { + return(iTimeInterval); + } + + +//************************************************************************************* +void CConsoleAlarmAlertConsole::SetVisibility(TInt aVis) + { + if (!aVis) + Hide(); + else if (!iWin) + { + // Create a new window, since cannot set order of console windows + CreateWin(); + UpdateDisplay(); + } + } + + +//************************************************************************************* +void CConsoleAlarmAlertConsole::SetAlertState(TInt aFlags) + { + iAlertState = aFlags; + UpdateDisplay(); + } + + +// +// +// + + +//************************************************************************************* +void CConsoleAlarmAlertConsole::RunL() + { + if (iStatus.Int() == KErrCancel) + return; + + __ASSERT_DEBUG(iWin, User::Invariant()); + TInt key = iWin->KeyCode(); + if(iSession.InstructionSet() && iInstructionIndex < static_cast*>(iSession.InstructionSet())->Count()) + { + RArray* temp = static_cast*>(iSession.InstructionSet()); + key = (*temp)[iInstructionIndex++]; + GetKey(); + } + else + { + GetKey(); + if ((key>=EKeyF1 && key<=EKeyF12) || key==EKeyTab) + { + DoDeferTime(EASAltAlertServerResponseSnooze); + } + } + + switch (key) + { + // ACKNOWLEDGE CURRENT + case EKeyEscape: + iSession.Notify(EASAltAlertServerResponseClear); + return; + // ACKNOWLEDGE ALL + case 'a': + case 'A': + iSession.Notify(EASAltAlertServerResponseClearAll); + return; + // QUIET PERIOD + case EKeySpace: + DoDeferTime(EASAltAlertServerResponseQuietPeriod); + break; + // PAUSE SOUND + case 'p': + case 'P': + DoDeferTime(EASAltAlertServerResponsePauseSound); + break; + // SILENCE ALL SOUND + case EKeyEnter: + iSession.Notify(EASAltAlertServerResponseSilence); + break; + // INTERVAL 1 MINUTE + case '1': + iTimeInterval=1; + iSession.Notify(EASAltAlertServerResponsePauseSound); + break; + // INTERVAL 0 MINUTES + case '0': + iTimeInterval=0; + iSession.Notify(EASAltAlertServerResponsePauseSound); + break; + // PAUSE + + case '=': + case '+': + iTimeInterval++; + iSession.Notify(EASAltAlertServerResponsePauseSound); + break; + // PAUSE - + case '-': + iTimeInterval--; + iSession.Notify(EASAltAlertServerResponsePauseSound); + break; + + // QUIT + case '!': + CActiveScheduler::Stop(); + break; + } + + TBuf<10> buf; + buf.Format(_L("'%c',"), key); + iWin->Write(buf); + } + + +//************************************************************************************* +void CConsoleAlarmAlertConsole::DoCancel() + { + __ASSERT_DEBUG(iWin, User::Invariant()); + iWin->ReadCancel(); + } + + +// +// +// + + +//************************************************************************************* +void CConsoleAlarmAlertConsole::Hide() + { + if (iWin) + CancelKey(); + // + delete iWin; + iWin = NULL; + // + if (iCountDown) + iCountDown->Cancel(); + // + delete iCountDown; + iCountDown=NULL; + } + + +//************************************************************************************* +void CConsoleAlarmAlertConsole::CreateWin() + { + _LIT(KAlarmAlertConsoleCaption, "Test Alarm Alert Server Console"); + // + __ASSERT_DEBUG(!iWin, User::Invariant()); + __ASSERT_DEBUG(!iCountDown, User::Invariant()); + // + TRAPD(trapCheck, iWin = Console::NewL(KAlarmAlertConsoleCaption, TSize(KConsFullScreen, KConsFullScreen))); + if (trapCheck) + { + iWin=NULL; + return; + } + + TRAP(trapCheck, iCountDown = CPeriodic::NewL(CActive::EPriorityIdle)); + if (trapCheck) + { + iCountDown=NULL; + return; + } + // + const TTimeIntervalMicroSeconds32 interval(60000000); + iCountDown->Start(interval, interval, TCallBack(&CountDownCallBack, this)); + } + + +//************************************************************************************* +void CConsoleAlarmAlertConsole::DoDeferTime(TASAltAlertServerResponse aResponse) + { + if (++iTimeInterval > 60) + { + iTimeInterval = 5; + User::Beep(440, 12); + } + // + TTime now; + now.HomeTime(); + now += TTimeIntervalMinutes(iTimeInterval); + // + iSession.Notify(aResponse, now); + } + + +//************************************************************************************* +TBool CConsoleAlarmAlertConsole::CountDownCallBack(TAny* aSelf) + { + CConsoleAlarmAlertConsole& self = *reinterpret_cast(aSelf); + self.DecCounter(); + // + return EFalse; + } + +