diff -r 000000000000 -r 2f259fa3e83a commonuisupport/uikon/test/teiksrv/tnotdial/tnotify2v2.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/commonuisupport/uikon/test/teiksrv/tnotdial/tnotify2v2.cpp Tue Feb 02 01:00:49 2010 +0200 @@ -0,0 +1,514 @@ +// 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 "tnotify2v2.h" +#include "tnotdial.h" + +#include +#include + + +const TUid KScreenOutputChannel ={0x00000666}; +const TUid KLEDOutputChannel ={0x00000111}; + +_LIT(KResFileNamePath,"\\system\\test\\tnotdial\\"); +_LIT(KResFileName1,"tnotdial.rsc"); + +_LIT8(KStartSmsDialogResponse,"Response: started SMS dialog"); +_LIT8(KStartSmsLEDResponse,"Response: started SMS LED"); +_LIT8(KStartEmailDialogResponse,"Response: started email dialog"); +_LIT8(KStartEmailLEDResponse,"Response: started email LED"); +_LIT8(KUpdateSmsDialogResponse, "Response: updated SMS dialog"); +_LIT8(KUpdateSmsLEDResponse, "Response: updated SMS LED"); +_LIT8(KUpdateEmailDialogResponse, "Response: updated email dialog"); +_LIT8(KUpdateEmailLEDResponse, "Response: updated email LED"); +_LIT8(KUpdateSmsDialogResponseAsync, "Response: updated SMS dialog"); +_LIT8(KUpdateSmsLEDResponseAsync, "Response: updated SMS LED"); +_LIT8(KUpdateEmailDialogResponseAsync, "Response: updated email dialog"); +_LIT8(KUpdateEmailLEDResponseAsync, "Response: updated email LED"); + +EXPORT_C CArrayPtr* NotifierArray() +// +// Lib main entry point +// + { +// RDebug::Print(_L("\nExported entry point\n")); + CArrayPtrFlat* subjects=new (ELeave)CArrayPtrFlat(4); + CleanupStack::PushL(subjects); + subjects->AppendL(CMySmsNotifierSubject::NewLC()); + subjects->AppendL(CMyLEDSmsNotifierSubject::NewLC()); + subjects->AppendL(CMyEmailNotifierSubject::NewLC()); + subjects->AppendL(CMyLEDEmailNotifierSubject::NewLC()); + CleanupStack::Pop(5, subjects); + return subjects; + } + +EXPORT_C CArrayPtr* NotifierArray1() +// +// Lib main entry point +// + { +// RDebug::Print(_L("\nExported entry point\n")); + CArrayPtrFlat* subjects=new (ELeave)CArrayPtrFlat(2); + CleanupStack::PushL(subjects); + subjects->AppendL(CMySmsNotifierSubject::NewLC()); + subjects->AppendL(CMyLEDSmsNotifierSubject::NewLC()); + CleanupStack::Pop(3, subjects); + return subjects; + } +EXPORT_C CArrayPtr* NotifierArray2() +// +// Lib main entry point +// + { +// RDebug::Print(_L("\nExported entry point\n")); + CArrayPtrFlat* subjects=new (ELeave)CArrayPtrFlat(2); + CleanupStack::PushL(subjects); + subjects->AppendL(CMyEmailNotifierSubject::NewLC()); + subjects->AppendL(CMyLEDEmailNotifierSubject::NewLC()); + CleanupStack::Pop(3, subjects); + return subjects; + } + +GLDEF_C TInt E32Dll( + ) +// +// DLL entry point +// + { +// INFO_PRINTF1(_L("\nPlugin E32 Dll entry point\n")); + return(KErrNone); + } + + +void CMySmsNotifierSubject::Release() + { + delete this; + } + +CMySmsNotifierSubject::TNotifierInfo CMySmsNotifierSubject::RegisterL() + { + iInfo.iUid=KMyNewSmsNotifierUid; + iInfo.iChannel=KScreenOutputChannel; + iInfo.iPriority=ENotifierPriorityHigh; + return iInfo; + } + +CMySmsNotifierSubject::TNotifierInfo CMySmsNotifierSubject::Info() const + { + return iInfo; + } + +TPtrC8 CMySmsNotifierSubject::StartL(const TDesC8& /*aBuffer*/) + { + RDebug::Print(_L("Plugin: SMS notifier started\n")); + if (!IsVisible()) + { + RouseSleepingDialog(); + } + return KNullDesC8(); + } + +void CMySmsNotifierSubject::StartL(const TDesC8& aBuffer, TInt aReplySlot, const RMessagePtr2& aMessage) + { + RDebug::Print(_L("Plugin: SMS notifier started (asynch.)\n")); + TRAPD(err,aMessage.WriteL(aReplySlot,KStartSmsDialogResponse)); + __ASSERT_ALWAYS(!err,User::Panic(_L("WriteL(aReplySlot,KStartSmsDialogResponse)"),err)); + StartL(aBuffer); + //aMessage.Complete(EEikNotExtRequestCompleted); + } + +void CMySmsNotifierSubject::Cancel() + { + RDebug::Print(_L("Plugin: SMS notifier canceled\n")); + ExitSleepingDialog(); + } + +TPtrC8 CMySmsNotifierSubject::UpdateL(const TDesC8& aBuffer) + { + RDebug::Print(_L("Plugin: SMS notifier updated\n")); + TBuf<100> buffer; + buffer.Copy(aBuffer); + CEikonEnv::Static()->InfoMsgWithAlignment(EHLeftVBottom,buffer); + return KUpdateSmsDialogResponse(); + } + +void CMySmsNotifierSubject::UpdateL(const TDesC8& aBuffer, TInt aReplySlot, const RMessagePtr2& aMessage) + { + RDebug::Print(_L("Plugin: SMS notifier updated (asynch. call) \n")); + UpdateL(aBuffer); + TRAPD(err,aMessage.WriteL(aReplySlot,KUpdateSmsDialogResponseAsync)); + __ASSERT_ALWAYS(!err,User::Panic(_L("WriteL(aReplySlot,KUpdateSmsDialogResponseAsync)"),err)); + aMessage.Complete(EEikNotExtRequestCompleted); + } + +CMySmsNotifierSubject* CMySmsNotifierSubject::NewLC() + { + CMySmsNotifierSubject* self=new (ELeave) CMySmsNotifierSubject(); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +CMySmsNotifierSubject::CMySmsNotifierSubject() + { + } + +CMySmsNotifierSubject::~CMySmsNotifierSubject() + { + } + +void CMySmsNotifierSubject::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_SMS_ALERT)); + iEikonEnv->DeleteResourceFile(offset); + User::LeaveIfError(err); + } + +void CMySmsNotifierSubject::PreLayoutDynInitL() + { // must not fail + } + +TBool CMySmsNotifierSubject::OkToExitL(TInt /*aButtonId*/) + { + iManager->CancelNotifier(iInfo.iUid); + return ETrue; + } + +void CMyEmailNotifierSubject::Release() + { + delete this; + } + +CMyEmailNotifierSubject::TNotifierInfo CMyEmailNotifierSubject::RegisterL() + { + iInfo.iUid=KMyNewEmailNotifierUid; + iInfo.iChannel=KScreenOutputChannel; + iInfo.iPriority=ENotifierPriorityVLow; + return iInfo; + } + +CMyEmailNotifierSubject::TNotifierInfo CMyEmailNotifierSubject::Info() const + { + return iInfo; + } + +TPtrC8 CMyEmailNotifierSubject::StartL(const TDesC8& /*aBuffer*/) + { + RDebug::Print(_L("Plugin: email notifier started\n")); + if (!IsVisible()) + { + RouseSleepingDialog(); + } + return KNullDesC8(); + } + +void CMyEmailNotifierSubject::StartL(const TDesC8& aBuffer, TInt aReplySlot, const RMessagePtr2& aMessage) + { +// __DEBUGGER(); + RDebug::Print(_L("Plugin: email notifier started (asynch.)\n")); + TRAPD(err,aMessage.WriteL(aReplySlot,KStartEmailDialogResponse)); + __ASSERT_ALWAYS(!err,User::Panic(_L("WriteL(aReplySlot,KStartEmailDialogResponse)"),err)); + StartL(aBuffer); + } + +void CMyEmailNotifierSubject::Cancel() + { + RDebug::Print(_L("Plugin: email notifier canceled\n")); + ExitSleepingDialog(); + } + +TPtrC8 CMyEmailNotifierSubject::UpdateL(const TDesC8& aBuffer) + { + RDebug::Print(_L("Plugin: email notifier updated\n")); + TBuf<100> buffer; + buffer.Copy(aBuffer); + CEikonEnv::Static()->InfoMsgWithAlignment(EHLeftVBottom,buffer); + return KUpdateEmailDialogResponse(); + } + +void CMyEmailNotifierSubject::UpdateL(const TDesC8& aBuffer, TInt aReplySlot, const RMessagePtr2& aMessage) + { + RDebug::Print(_L("Plugin: Email notifier updated (asynch. call) \n")); + UpdateL(aBuffer); + TRAPD(err,aMessage.WriteL(aReplySlot,KUpdateEmailDialogResponseAsync)); + __ASSERT_ALWAYS(!err,User::Panic(_L("WriteL(aReplySlot,KUpdateEmailDialogResponseAsync)"),err)); + aMessage.Complete(EEikNotExtRequestCompleted); + } + +CMyEmailNotifierSubject* CMyEmailNotifierSubject::NewLC() + { + CMyEmailNotifierSubject* self=new (ELeave) CMyEmailNotifierSubject(); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +CMyEmailNotifierSubject::CMyEmailNotifierSubject() + { + } + +void CMyEmailNotifierSubject::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_EMAIL_ALERT)); + iEikonEnv->DeleteResourceFile(offset); + User::LeaveIfError(err); + } + +CMyEmailNotifierSubject::~CMyEmailNotifierSubject() + { + } + +void CMyEmailNotifierSubject::PreLayoutDynInitL() + { // must not fail + } + +TBool CMyEmailNotifierSubject::OkToExitL(TInt /*aButtonId*/) + { + iManager->CancelNotifier(iInfo.iUid); + return ETrue; + } + +void CMyLEDEmailNotifierSubject::Release() + { + delete this; + } + +CMyLEDEmailNotifierSubject::TNotifierInfo CMyLEDEmailNotifierSubject::RegisterL() + { + iInfo.iUid=KMyNewEmailNotifierUid; + iInfo.iChannel=KLEDOutputChannel; + iInfo.iPriority=ENotifierPriorityVLow; + return iInfo; + } + +CMyLEDEmailNotifierSubject::TNotifierInfo CMyLEDEmailNotifierSubject::Info() const + { + return iInfo; + } + +TPtrC8 CMyLEDEmailNotifierSubject::StartL(const TDesC8& aBuffer) + { + RDebug::Print(_L("Plugin: LED email notifier started\n")); + TBuf<100> buffer; + buffer.Copy(aBuffer); + iBusyMsgWin->StartDisplay(buffer,EHLeftVCenter); + return KNullDesC8(); + } + +void CMyLEDEmailNotifierSubject::StartL(const TDesC8& aBuffer, TInt aReplySlot, const RMessagePtr2& aMessage) + { + RDebug::Print(_L("Plugin: LED email notifier started (asynch.)\n")); + TRAPD(err,aMessage.WriteL(aReplySlot,KStartEmailLEDResponse)); + __ASSERT_ALWAYS(!err,User::Panic(_L("WriteL(aReplySlot,KStartEmailLEDResponse)"),err)); + StartL(aBuffer); + +// aMessage.Complete(EEikNotExtRequestCompleted); + } + +void CMyLEDEmailNotifierSubject::Cancel() + { + RDebug::Print(_L("Plugin: LED email notifier canceled\n")); + iBusyMsgWin->CancelDisplay(); + } + +TPtrC8 CMyLEDEmailNotifierSubject::UpdateL(const TDesC8& aBuffer) + { + RDebug::Print(_L("Plugin: LED email notifier updated\n")); + TBuf<100> buffer; + buffer.Copy(aBuffer); + CEikonEnv::Static()->InfoMsgWithAlignment(EHLeftVBottom,buffer); + return KUpdateEmailLEDResponse(); + } + +void CMyLEDEmailNotifierSubject::UpdateL(const TDesC8& aBuffer, TInt aReplySlot, const RMessagePtr2& aMessage) + { + RDebug::Print(_L("Plugin: LED Email notifier updated (asynch. call) \n")); + UpdateL(aBuffer); + TRAPD(err,aMessage.WriteL(aReplySlot,KUpdateEmailLEDResponseAsync)); + __ASSERT_ALWAYS(err,User::Panic(_L("WriteL(aReplySlot,KUpdateEmailLEDResponseAsync)"),err)); + } + +CMyLEDEmailNotifierSubject* CMyLEDEmailNotifierSubject::NewLC() + { + CMyLEDEmailNotifierSubject* self=new (ELeave) CMyLEDEmailNotifierSubject(); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +CMyLEDEmailNotifierSubject::CMyLEDEmailNotifierSubject() + { + } + +void CMyLEDEmailNotifierSubject::ConstructL() + { + iBusyMsgWin=new(ELeave) CEikBusyMsgWin(*iEikonEnv); + iBusyMsgWin->ConstructL(iEikonEnv->RootWin()); + } + +CMyLEDEmailNotifierSubject::~CMyLEDEmailNotifierSubject() + { + delete iBusyMsgWin; + } + +void CMyLEDSmsNotifierSubject::Release() + { + delete this; + } + +CMyLEDSmsNotifierSubject::TNotifierInfo CMyLEDSmsNotifierSubject::RegisterL() + { + iInfo.iUid=KMyNewSmsNotifierUid; + iInfo.iChannel=KLEDOutputChannel; + iInfo.iPriority=ENotifierPriorityHigh; + return iInfo; + } + +CMyLEDSmsNotifierSubject::TNotifierInfo CMyLEDSmsNotifierSubject::Info() const + { + return iInfo; + } + +TPtrC8 CMyLEDSmsNotifierSubject::StartL(const TDesC8& aBuffer) + { + RDebug::Print(_L("Plugin: LED SMS notifier started\n")); + TBuf<100> buffer; + buffer.Copy(aBuffer); + iBusyMsgWin->StartDisplay(buffer,EHLeftVCenter); + return KNullDesC8(); + } + +void CMyLEDSmsNotifierSubject::StartL(const TDesC8& aBuffer, TInt aReplySlot, const RMessagePtr2& aMessage) + { + RDebug::Print(_L("Plugin: LED SMS notifier started (asynch.)\n")); + TRAPD(err,aMessage.WriteL(aReplySlot,KStartSmsLEDResponse)); + __ASSERT_ALWAYS(!err,User::Panic(_L("WriteL(aReplySlot,KUpdateEmailDialogResponseAsync)"),err)); + StartL(aBuffer); +// aMessage.Complete(EEikNotExtRequestCompleted); + } + +void CMyLEDSmsNotifierSubject::Cancel() + { + RDebug::Print(_L("Plugin: LED SMS notifier canceled\n")); + iBusyMsgWin->CancelDisplay(); + } + +TPtrC8 CMyLEDSmsNotifierSubject::UpdateL(const TDesC8& aBuffer) + { + RDebug::Print(_L("Plugin: LED SMS notifier updated\n")); + TBuf<100> buffer; + buffer.Copy(aBuffer); + CEikonEnv::Static()->InfoMsgWithAlignment(EHLeftVBottom,buffer); + return KUpdateSmsLEDResponse(); + } + +void CMyLEDSmsNotifierSubject::UpdateL(const TDesC8& aBuffer, TInt aReplySlot, const RMessagePtr2& aMessage) + { + RDebug::Print(_L("Plugin: LED SMS notifier updated (asynch. call) \n")); + UpdateL(aBuffer); + TRAPD(err,aMessage.WriteL(aReplySlot,KUpdateSmsLEDResponseAsync)); + __ASSERT_ALWAYS(!err,User::Panic(_L("WriteL(aReplySlot,KUpdateSmsLEDResponseAsync"),err)); + } + +CMyLEDSmsNotifierSubject* CMyLEDSmsNotifierSubject::NewLC() + { + CMyLEDSmsNotifierSubject* self=new (ELeave) CMyLEDSmsNotifierSubject(); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +CMyLEDSmsNotifierSubject::CMyLEDSmsNotifierSubject() + { + } + +void CMyLEDSmsNotifierSubject::ConstructL() + { + iBusyMsgWin=new(ELeave) CEikBusyMsgWin(*iEikonEnv); + iBusyMsgWin->ConstructL(iEikonEnv->RootWin()); + } + +CMyLEDSmsNotifierSubject::~CMyLEDSmsNotifierSubject() + { + delete iBusyMsgWin; + } + +//Adding ECOM SUPPORT +#include +const TImplementationProxy ImplementationTable[] = + { + IMPLEMENTATION_PROXY_ENTRY(0x10022238,NotifierArray1), + IMPLEMENTATION_PROXY_ENTRY(0x10022237,NotifierArray2) + }; + +EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount) + { + aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy) ; + return ImplementationTable; + }