diff -r 000000000000 -r 2f259fa3e83a commonuisupport/uikon/test/teiksrv/tnotdial/tpluginV2.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/commonuisupport/uikon/test/teiksrv/tnotdial/tpluginV2.cpp Tue Feb 02 01:00:49 2010 +0200 @@ -0,0 +1,724 @@ +// Copyright (c) 2005-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: +// + +/** + @file + @internalComponent - Internal Symbian test code +*/ + + +#include +#include +#include +#include "tpluginV2.h" +#include "tnotdial.h" + +#include +#include +#include + +const TUid KScreenOutputChannel ={0x00000666}; +const TUid KLEDOutputChannel ={0x00000111}; + +_LIT(KResFileNamePath,"\\system\\test\\tnotdial\\"); +_LIT(KResFileName1,"tnotdial.rsc"); + +_LIT8(KStartAgendaDialogResponse,"Response: started Agenda dialog (asynch.)"); +_LIT8(KStartAgendaLEDResponse,"Response: started LED Agenda notifier (asynch.)"); +_LIT8(KUpdateAgendaDialogResponseAsync,"Response: Updated Agenda dialog (asynch.)"); +_LIT8(KUpdateAgendaLEDResponseAsync,"Response: Updated LED Agenda notifier (asynch.)"); +_LIT8(KUpdateAgendaResponse, "Response: Updated Agenda Dialog"); +_LIT8(KUpdateAgendaLEDResponse,"Response: Updated Agenda LED"); +_LIT8(KUpdatePhoneResponse, "Response: Updated Phone Dialog"); +_LIT8(KUpdatePhoneLEDResponse, "Response: Updated Phone LED"); +_LIT8(KUpdatePhoneResponseAsync, "Response: Updated Phone Dialog (asynch.)"); +_LIT8(KUpdatePhoneLEDResponseAsync, "Response: Updated Phone LED (asynch.)"); +_LIT8(KUpdateBatteryResponse, "Response: Updated Battery Dialog"); +_LIT8(KUpdateBatteryLEDResponse, "Response: Updated Battery LED"); +_LIT8(KUpdateBatteryResponseAsync, "Response: Updated Battery Dialog (asynch.)"); +_LIT8(KUpdateBatteryLEDResponseAsync, "Response: Updated Battery LED (asynch.)"); + +EXPORT_C CArrayPtr* NotifierArray() +// +// Lib main entry point +// + { + //RDebug::Print(_L("\nExported entry point\n")); + CArrayPtrFlat* subjects=new (ELeave)CArrayPtrFlat(6); + CleanupStack::PushL(subjects); + subjects->AppendL(CMyPhoneNotifierSubject::NewLC()); + subjects->AppendL(CMyLEDPhoneNotifierSubject::NewLC()); + subjects->AppendL(CMyLEDLowBatteryNotifierSubject::NewLC()); + subjects->AppendL(CMyLowBatteryNotifierSubject::NewLC()); + subjects->AppendL(CMyAgendaNotifierSubject::NewLC()); + subjects->AppendL(CMyLEDAgendaNotifierSubject::NewLC()); + CleanupStack::Pop(7, subjects); + return subjects; + } + +GLDEF_C TInt E32Dll( + ) +// +// DLL entry point +// + { +// INFO_PRINTF1(_L("\nPlugin E32 Dll entry point\n")); + return(KErrNone); + } + + +void CMyPhoneNotifierSubject::Release() + { + delete this; + } + +CMyPhoneNotifierSubject::TNotifierInfo CMyPhoneNotifierSubject::RegisterL() + { + iInfo.iUid=KMyNewPhoneNotifierUid; + iInfo.iChannel=KScreenOutputChannel; + iInfo.iPriority=ENotifierPriorityVHigh; + return iInfo; + } + +CMyPhoneNotifierSubject::TNotifierInfo CMyPhoneNotifierSubject::Info() const + { + return iInfo; + } + +TPtrC8 CMyPhoneNotifierSubject::StartL(const TDesC8& /*aBuffer*/) + { + RDebug::Print(_L("Plugin: Phone notifier started\n")); + RouseSleepingDialog(); + return KNullDesC8(); + } + + +void CMyPhoneNotifierSubject::StartL(const TDesC8& aBuffer, TInt /*aReplySlot*/, const RMessagePtr2& aMessage) + { + RDebug::Print(_L("Plugin: Phone notifier started\n")); + StartL(aBuffer); + aMessage.Complete(EEikNotExtRequestCompleted); + } + +void CMyPhoneNotifierSubject::Cancel() + { + RDebug::Print(_L("Plugin: Phone notifier canceled\n")); + ExitSleepingDialog(); + } + +TPtrC8 CMyPhoneNotifierSubject::UpdateL(const TDesC8& aBuffer) + { + RDebug::Print(_L("Plugin: Phone notifier updated\n")); + TBuf<100> buffer; + buffer.Copy(aBuffer); + CEikonEnv::Static()->InfoMsgWithAlignment(EHLeftVBottom,buffer); + return KUpdatePhoneResponse(); + } + +void CMyPhoneNotifierSubject::UpdateL(const TDesC8& aBuffer, TInt aReplySlot, const RMessagePtr2& aMessage) + { + RDebug::Print(_L("Plugin: Phone notifier updated (asynch. call) \n")); + UpdateL(aBuffer); + TRAPD(err,aMessage.WriteL(aReplySlot,KUpdatePhoneResponseAsync)); + __ASSERT_ALWAYS(!err,User::Panic(_L("WriteL(aReplySlot,KUpdatePhoneResponseAsync))"),err)); + aMessage.Complete(EEikNotExtRequestCompleted); + } + +CMyPhoneNotifierSubject* CMyPhoneNotifierSubject::NewLC() + { + CMyPhoneNotifierSubject* self=new (ELeave) CMyPhoneNotifierSubject(); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +CMyPhoneNotifierSubject::CMyPhoneNotifierSubject() + { + } + +CMyPhoneNotifierSubject::~CMyPhoneNotifierSubject() + { + } + +void CMyPhoneNotifierSubject::ConstructL() + { + //Get the system filesession + RFs& fs = CEikonEnv::Static()->FsSession(); + //Get the file finder + TFindFile* findFile=new(ELeave) TFindFile(fs); + CleanupStack::PushL(findFile); + //File name parser + TParse* fileNameParser=new(ELeave) TParse; + CleanupStack::PushL(fileNameParser); + + //search for all rsc files in *\system\libs\plugins\*.rsc + CDir* directory=NULL; + User::LeaveIfError(findFile->FindWildByDir(KResFileName1, KResFileNamePath, directory)); + CleanupStack::PushL(directory); + + const TEntry& entry=(*directory)[directory->Count()-1]; + fileNameParser->Set(entry.iName,&findFile->File(),NULL); + TFileName resourceFileName(fileNameParser->FullName()); + + BaflUtils::NearestLanguageFile(iCoeEnv->FsSession(),resourceFileName); + RDebug::Print(_L("Resource file name [%S]"),&resourceFileName); + TInt offset=iEikonEnv->AddResourceFileL(resourceFileName); + CleanupStack::PopAndDestroy(3); + + TRAPD(err,ConstructSleepingAlertDialogL(R_PHONE_RINGS)); + iEikonEnv->DeleteResourceFile(offset); + User::LeaveIfError(err); + } + +void CMyPhoneNotifierSubject::PreLayoutDynInitL() + { // must not fail + } + +TBool CMyPhoneNotifierSubject::OkToExitL(TInt /*aButtonId*/) + { + iManager->CancelNotifier(iInfo.iUid); + return ETrue; + } + +void CMyLowBatteryNotifierSubject::Release() + { + delete this; + } + +CMyLowBatteryNotifierSubject::TNotifierInfo CMyLowBatteryNotifierSubject::RegisterL() + { + iInfo.iUid=KMyNewLowBatteryNotifierUid; + iInfo.iChannel=KScreenOutputChannel; + iInfo.iPriority=ENotifierPriorityAbsolute; + return iInfo; + } + +CMyLowBatteryNotifierSubject::TNotifierInfo CMyLowBatteryNotifierSubject::Info() const + { + return iInfo; + } + +TPtrC8 CMyLowBatteryNotifierSubject::StartL(const TDesC8& /*aBuffer*/) + { + RDebug::Print(_L("Plugin: Low battery notifier started\n")); + RouseSleepingDialog(); + return KNullDesC8(); + } + +void CMyLowBatteryNotifierSubject::StartL(const TDesC8& aBuffer, TInt /*aReplySlot*/, const RMessagePtr2& aMessage) + { + RDebug::Print(_L("Plugin: Low battery notifier started \n")); + StartL(aBuffer); + aMessage.Complete(EEikNotExtRequestCompleted); + } + +void CMyLowBatteryNotifierSubject::Cancel() + { + RDebug::Print(_L("Plugin: Low battery notifier canceled\n")); + ExitSleepingDialog(); + } + +TPtrC8 CMyLowBatteryNotifierSubject::UpdateL(const TDesC8& aBuffer) + { + RDebug::Print(_L("Plugin: Low battery notifier updated\n")); + TBuf<100> buffer; + buffer.Copy(aBuffer); + CEikonEnv::Static()->InfoMsgWithAlignment(EHLeftVBottom,buffer); + return KUpdateBatteryResponse(); + } + +void CMyLowBatteryNotifierSubject::UpdateL(const TDesC8& aBuffer, TInt aReplySlot, const RMessagePtr2& aMessage) + { + RDebug::Print(_L("Plugin: Low Battery notifier updated (asynch. call) \n")); + UpdateL(aBuffer); + TRAPD(err,aMessage.WriteL(aReplySlot,KUpdateBatteryResponseAsync)); + __ASSERT_ALWAYS(!err,User::Panic(_L("WriteL(aReplySlot,KUpdateBatteryResponseAsync)"),err)); + aMessage.Complete(EEikNotExtRequestCompleted); + } + +CMyLowBatteryNotifierSubject* CMyLowBatteryNotifierSubject::NewLC() + { + CMyLowBatteryNotifierSubject* self=new (ELeave) CMyLowBatteryNotifierSubject(); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +CMyLowBatteryNotifierSubject::CMyLowBatteryNotifierSubject() + { + } + +CMyLowBatteryNotifierSubject::~CMyLowBatteryNotifierSubject() + { + } + +void CMyLowBatteryNotifierSubject::ConstructL() + { + //Get the system filesession + RFs& fs = CEikonEnv::Static()->FsSession(); + //Get the file finder + TFindFile* findFile=new(ELeave) TFindFile(fs); + CleanupStack::PushL(findFile); + //File name parser + TParse* fileNameParser=new(ELeave) TParse; + CleanupStack::PushL(fileNameParser); + + //search for all rsc files in *\system\libs\plugins\*.rsc + CDir* directory=NULL; + User::LeaveIfError(findFile->FindWildByDir(KResFileName1, KResFileNamePath, directory)); + CleanupStack::PushL(directory); + + const TEntry& entry=(*directory)[directory->Count()-1]; + fileNameParser->Set(entry.iName,&findFile->File(),NULL); + TFileName resourceFileName(fileNameParser->FullName()); + + BaflUtils::NearestLanguageFile(iCoeEnv->FsSession(),resourceFileName); + RDebug::Print(_L("Resource file name [%S]"),&resourceFileName); + TInt offset=iEikonEnv->AddResourceFileL(resourceFileName); + CleanupStack::PopAndDestroy(3); + + TRAPD(err,ConstructSleepingAlertDialogL(R_LOW_BATTERY)); + iEikonEnv->DeleteResourceFile(offset); + User::LeaveIfError(err); + } + +void CMyLowBatteryNotifierSubject::HandleSystemEventL(TUid aEvent) + //Added for flip support GPO 18.05.2001 + { + if(aEvent == KUidEventScreenModeChanged) + { + RDebug::Print(_L("MyLowBatteryNotifier had been notified of a EFlipChanged Event.\n")); + } + else + { + ASSERT(EFalse); + } + } + +TInt CMyLowBatteryNotifierSubject::NotifierCapabilites() + //Added for flip support GPO 18.05.2001 + { + TInt capabilities=0; + capabilities |=EScreenDeviceChangeSupported; + return capabilities; + } + +void CMyLowBatteryNotifierSubject::PreLayoutDynInitL() + { // must not fail + } + +TBool CMyLowBatteryNotifierSubject::OkToExitL(TInt /*aButtonId*/) + { + iManager->CancelNotifier(iInfo.iUid); + return ETrue; + } + +void CMyAgendaNotifierSubject::Release() + { + delete this; + } + +CMyAgendaNotifierSubject::TNotifierInfo CMyAgendaNotifierSubject::RegisterL() + { + iInfo.iUid=KMyNewAgendaAlarmUid; + iInfo.iChannel=KScreenOutputChannel; + iInfo.iPriority=ENotifierPriorityHigh; + return iInfo; + } +CMyAgendaNotifierSubject::TNotifierInfo CMyAgendaNotifierSubject::Info() const + { + return iInfo; + } + +TPtrC8 CMyAgendaNotifierSubject::StartL(const TDesC8& /*aBuffer*/) + { + RDebug::Print(_L("Plugin: Agenda notifier started\n")); + if (!IsVisible()) + { + RouseSleepingDialog(); + } + return KNullDesC8(); + } + +void CMyAgendaNotifierSubject::StartL(const TDesC8& aBuffer, TInt aReplySlot, const RMessagePtr2& aMessage) + { + RDebug::Print(_L("Plugin: Agenda notifier started (asynch.)\n")); + TRAPD(err,aMessage.WriteL(aReplySlot,KStartAgendaDialogResponse)); + __ASSERT_ALWAYS(!err,User::Panic(_L("WriteL(aReplySlot,KStartAgendaDialogResponse)"),err)); + StartL(aBuffer); + aMessage.Complete(EEikNotExtRequestCompleted); + } + +void CMyAgendaNotifierSubject::Cancel() + { + RDebug::Print(_L("Plugin: Agenda notifier canceled")); + ExitSleepingDialog(); + } + +TPtrC8 CMyAgendaNotifierSubject::UpdateL(const TDesC8& aBuffer) + { + RDebug::Print(_L("Plugin: Agenda notifier updated\n")); + TBuf<100> buffer; + buffer.Copy(aBuffer); + CEikonEnv::Static()->InfoMsgWithAlignment(EHLeftVBottom,buffer); + return KUpdateAgendaResponse(); + } + +void CMyAgendaNotifierSubject::UpdateL(const TDesC8& aBuffer, TInt aReplySlot, const RMessagePtr2& aMessage) + { + RDebug::Print(_L("Plugin: Agenda notifier updated (asynch. call) \n")); + UpdateL(aBuffer); + TRAPD(err,aMessage.WriteL(aReplySlot,KUpdateAgendaDialogResponseAsync)); + __ASSERT_ALWAYS(!err,User::Panic(_L("WriteL(aReplySlot,KUpdateAgendaDialogResponseAsync)"),err)); + aMessage.Complete(EEikNotExtRequestCompleted); + } + +CMyAgendaNotifierSubject* CMyAgendaNotifierSubject::NewLC() + { + CMyAgendaNotifierSubject* self=new (ELeave) CMyAgendaNotifierSubject(); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +CMyAgendaNotifierSubject::CMyAgendaNotifierSubject() + { + } + +void CMyAgendaNotifierSubject::ConstructL() + { + //Get the system filesession + RFs& fs = CEikonEnv::Static()->FsSession(); + //Get the file finder + TFindFile* findFile=new(ELeave) TFindFile(fs); + CleanupStack::PushL(findFile); + //File name parser + TParse* fileNameParser=new(ELeave) TParse; + CleanupStack::PushL(fileNameParser); + + //search for all rsc files in *\system\libs\plugins\*.rsc + CDir* directory=NULL; + User::LeaveIfError(findFile->FindWildByDir(KResFileName1, KResFileNamePath, directory)); + CleanupStack::PushL(directory); + + const TEntry& entry=(*directory)[directory->Count()-1]; + fileNameParser->Set(entry.iName,&findFile->File(),NULL); + TFileName resourceFileName(fileNameParser->FullName()); + + BaflUtils::NearestLanguageFile(iCoeEnv->FsSession(),resourceFileName); + RDebug::Print(_L("Resource file name [%S]"),&resourceFileName); + TInt offset=iEikonEnv->AddResourceFileL(resourceFileName); + CleanupStack::PopAndDestroy(3); + + TRAPD(err,ConstructSleepingAlertDialogL(R_AGENDA_ALARM)); + iEikonEnv->DeleteResourceFile(offset); + User::LeaveIfError(err); + } + +CMyAgendaNotifierSubject::~CMyAgendaNotifierSubject() + { + } + +void CMyAgendaNotifierSubject::PreLayoutDynInitL() + { // must not fail + } + +TBool CMyAgendaNotifierSubject::OkToExitL(TInt /*aButtonId*/) + { + iManager->CancelNotifier(iInfo.iUid); + return ETrue; + } + +void CMyLEDAgendaNotifierSubject::Release() + { + delete this; + } + +CMyLEDAgendaNotifierSubject::TNotifierInfo CMyLEDAgendaNotifierSubject::RegisterL() + { + iInfo.iUid=KMyNewAgendaAlarmUid; + iInfo.iChannel=KLEDOutputChannel; + iInfo.iPriority=ENotifierPriorityHigh; + return iInfo; + } + +CMyLEDAgendaNotifierSubject::TNotifierInfo CMyLEDAgendaNotifierSubject::Info() const + { + return iInfo; + } + +TPtrC8 CMyLEDAgendaNotifierSubject::StartL(const TDesC8& aBuffer) + { + RDebug::Print(_L("Plugin: LED Agenda notifier started\n")); + TBuf<100> buffer; + buffer.Copy(aBuffer); + iBusyMsgWin->StartDisplay(buffer,EHLeftVCenter); + return KNullDesC8(); + } + +void CMyLEDAgendaNotifierSubject::StartL(const TDesC8& aBuffer, TInt aReplySlot, const RMessagePtr2& aMessage) + { + RDebug::Print(_L("Plugin: LED Agenda notifier started (asynch. call) \n")); + StartL(aBuffer); + TRAPD(err,aMessage.WriteL(aReplySlot,KStartAgendaLEDResponse)); + __ASSERT_ALWAYS(!err,User::Panic(_L("WriteL(aReplySlot,KStartAgendaLEDResponse)"),err)); +// aMessage.Complete(EEikNotExtRequestCompleted); + } + +void CMyLEDAgendaNotifierSubject::Cancel() + { + RDebug::Print(_L("Plugin: LED Agenda notifier canceled\n")); + iBusyMsgWin->CancelDisplay(); + } + +TPtrC8 CMyLEDAgendaNotifierSubject::UpdateL(const TDesC8& aBuffer) + { + RDebug::Print(_L("Plugin: LED Agenda notifier updated\n")); + TBuf<100> buffer; + buffer.Copy(aBuffer); + CEikonEnv::Static()->InfoMsgWithAlignment(EHLeftVBottom,buffer); + return KUpdateAgendaLEDResponse(); + } + +void CMyLEDAgendaNotifierSubject::UpdateL(const TDesC8& aBuffer, TInt aReplySlot, const RMessagePtr2& aMessage) + { + RDebug::Print(_L("Plugin: LED Agenda notifier updated (asynch. call) \n")); + UpdateL(aBuffer); + TRAPD(err,aMessage.WriteL(aReplySlot,KUpdateAgendaLEDResponseAsync)); + __ASSERT_ALWAYS(!err,User::Panic(_L("WriteL(aReplySlot,KUpdateAgendaLEDResponseAsync)"),err)); + } + +CMyLEDAgendaNotifierSubject* CMyLEDAgendaNotifierSubject::NewLC() + { + CMyLEDAgendaNotifierSubject* self=new (ELeave) CMyLEDAgendaNotifierSubject(); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +CMyLEDAgendaNotifierSubject::CMyLEDAgendaNotifierSubject() + { + } + +void CMyLEDAgendaNotifierSubject::ConstructL() + { + iBusyMsgWin=new(ELeave) CEikBusyMsgWin(*iEikonEnv); + iBusyMsgWin->ConstructL(iEikonEnv->RootWin()); + } + +CMyLEDAgendaNotifierSubject::~CMyLEDAgendaNotifierSubject() + { + delete iBusyMsgWin; + } + +void CMyLEDLowBatteryNotifierSubject::Release() + { + delete this; + } + +CMyLEDLowBatteryNotifierSubject::TNotifierInfo CMyLEDLowBatteryNotifierSubject::RegisterL() + { + iInfo.iUid=KMyNewLowBatteryNotifierUid; + iInfo.iChannel=KLEDOutputChannel; + iInfo.iPriority=ENotifierPriorityAbsolute; + return iInfo; + } + +CMyLEDLowBatteryNotifierSubject::TNotifierInfo CMyLEDLowBatteryNotifierSubject::Info() const + { + return iInfo; + } + +TPtrC8 CMyLEDLowBatteryNotifierSubject::StartL(const TDesC8& aBuffer) + { + RDebug::Print(_L("Plugin: LED Battery notifier started\n")); + TBuf<100> buffer; + buffer.Copy(aBuffer); + iBusyMsgWin->StartDisplay(buffer,EHLeftVCenter); + return KNullDesC8(); + } + +void CMyLEDLowBatteryNotifierSubject::StartL(const TDesC8& aBuffer, TInt /*aReplySlot*/,const RMessagePtr2& aMessage) + { + RDebug::Print(_L("Plugin: LEDLowBat notifier started\n")); + StartL(aBuffer); + aMessage.Complete(EEikNotExtRequestCompleted); //don't have to complete straight away + } + +void CMyLEDLowBatteryNotifierSubject::Cancel() + { + RDebug::Print(_L("Plugin: LEDLow battery notifier canceled\n")); + iBusyMsgWin->CancelDisplay(); + } + +TPtrC8 CMyLEDLowBatteryNotifierSubject::UpdateL(const TDesC8& aBuffer) + { + RDebug::Print(_L("Plugin: LEDLow battery notifier updated")); + TBuf<100> buffer; + buffer.Copy(aBuffer); + CEikonEnv::Static()->InfoMsgWithAlignment(EHLeftVBottom,buffer); + return KUpdateBatteryLEDResponse(); + } + +void CMyLEDLowBatteryNotifierSubject::UpdateL(const TDesC8& aBuffer, TInt aReplySlot, const RMessagePtr2& aMessage) + { + RDebug::Print(_L("Plugin: LED Low Battery notifier updated (asynch. call) \n")); + UpdateL(aBuffer); + TRAPD(err,aMessage.WriteL(aReplySlot,KUpdateBatteryLEDResponseAsync)); + __ASSERT_ALWAYS(!err,User::Panic(_L("WriteL(aReplySlot,KUpdateBatteryLEDResponseAsync)"),err)); + aMessage.Complete(EEikNotExtRequestCompleted); + } + +CMyLEDLowBatteryNotifierSubject* CMyLEDLowBatteryNotifierSubject::NewLC() + { + CMyLEDLowBatteryNotifierSubject* self=new (ELeave) CMyLEDLowBatteryNotifierSubject(); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +CMyLEDLowBatteryNotifierSubject::CMyLEDLowBatteryNotifierSubject() + { + } + +CMyLEDLowBatteryNotifierSubject::~CMyLEDLowBatteryNotifierSubject() + { + delete iBusyMsgWin; + } + +void CMyLEDLowBatteryNotifierSubject::ConstructL() + { + iBusyMsgWin=new(ELeave) CEikBusyMsgWin(*iEikonEnv); + iBusyMsgWin->ConstructL(iEikonEnv->RootWin()); + } + +void CMyLEDLowBatteryNotifierSubject::HandleSystemEventL(TUid aEvent) + //Added for flip support GPO 18.05.2001 + { + if(aEvent == KUidEventScreenModeChanged) + { + RDebug::Print(_L("MyLEDLowBatteryNotifier had been notified of a EFlipChanged Event.\n")); + } + else + { + ASSERT(EFalse); + } + } + +TInt CMyLEDLowBatteryNotifierSubject::NotifierCapabilites() + //Added for flip support GPO 18.05.2001 + { + TInt capabilities=0; + capabilities |=EScreenDeviceChangeSupported; + return capabilities; + } + +void CMyLEDPhoneNotifierSubject::Release() + { + delete this; + } + +CMyLEDPhoneNotifierSubject::TNotifierInfo CMyLEDPhoneNotifierSubject::RegisterL() + { + iInfo.iUid=KMyNewPhoneNotifierUid; + iInfo.iChannel=KLEDOutputChannel; + iInfo.iPriority=ENotifierPriorityVHigh; + return iInfo; + } + +CMyLEDPhoneNotifierSubject::TNotifierInfo CMyLEDPhoneNotifierSubject::Info() const + { + return iInfo; + } + +TPtrC8 CMyLEDPhoneNotifierSubject::StartL(const TDesC8& aBuffer) + { + RDebug::Print(_L("Plugin: LED Phone notifier started\n")); + TBuf<100> buffer; + buffer.Copy(aBuffer); + iBusyMsgWin->StartDisplay(buffer,EHLeftVCenter); + return KNullDesC8(); + } + +void CMyLEDPhoneNotifierSubject::StartL(const TDesC8& aBuffer, TInt aReplySlot, const RMessagePtr2& aMessage) + { + RDebug::Print(_L("Plugin: Phone notifier started \n")); + TPtrC8 boolDes(_L8("LED Channel: PhoneAsynch")); + TRAPD(err,aMessage.WriteL(aReplySlot,boolDes)); + __ASSERT_ALWAYS(!err,User::Panic(_L("WriteL(aReplySlot,boolDes)"),err)); + StartL(aBuffer); + aMessage.Complete(EEikNotExtRequestCompleted); //don't have to complete straight away + } + +void CMyLEDPhoneNotifierSubject::Cancel() + { + RDebug::Print(_L("Plugin: LED Phone notifier canceled\n")); + iBusyMsgWin->CancelDisplay(); + } + +TPtrC8 CMyLEDPhoneNotifierSubject::UpdateL(const TDesC8& aBuffer) + { + RDebug::Print(_L("Plugin: LED Phone notifier updated\n")); + TBuf<100> buffer; + buffer.Copy(aBuffer); + CEikonEnv::Static()->InfoMsgWithAlignment(EHLeftVBottom,buffer); + return KUpdatePhoneLEDResponse(); + } + +void CMyLEDPhoneNotifierSubject::UpdateL(const TDesC8& aBuffer, TInt aReplySlot, const RMessagePtr2& aMessage) + { + RDebug::Print(_L("Plugin: LED Phone notifier updated (asynch. call) \n")); + UpdateL(aBuffer); + TRAPD(err,aMessage.WriteL(aReplySlot,KUpdatePhoneLEDResponseAsync)); + __ASSERT_ALWAYS(!err,User::Panic(_L("WriteL(aReplySlot,KUpdatePhoneLEDResponseAsync)"),err)); + aMessage.Complete(EEikNotExtRequestCompleted); + } + +CMyLEDPhoneNotifierSubject* CMyLEDPhoneNotifierSubject::NewLC() + { + CMyLEDPhoneNotifierSubject* self=new (ELeave) CMyLEDPhoneNotifierSubject(); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +CMyLEDPhoneNotifierSubject::CMyLEDPhoneNotifierSubject() + { + } + +void CMyLEDPhoneNotifierSubject::ConstructL() + { + iBusyMsgWin=new(ELeave) CEikBusyMsgWin(*iEikonEnv); + iBusyMsgWin->ConstructL(iEikonEnv->RootWin()); + } + +CMyLEDPhoneNotifierSubject::~CMyLEDPhoneNotifierSubject() + { + delete iBusyMsgWin; + } + + +//Adding ECOM SUPPORT +#include +const TImplementationProxy ImplementationTable[] = + { + IMPLEMENTATION_PROXY_ENTRY(0x10022239,NotifierArray) + }; + +EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount) + { + aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy) ; + return ImplementationTable; + }