--- /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 <techview/eikdialg.h>
+#include <bautils.h>
+#include "tnotify2v2.h"
+#include "tnotdial.h"
+
+#include <uikon.hrh>
+#include <tnotdial.rsg>
+
+
+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<MEikSrvNotifierBase2>* NotifierArray()
+//
+// Lib main entry point
+//
+ {
+// RDebug::Print(_L("\nExported entry point\n"));
+ CArrayPtrFlat<MEikSrvNotifierBase2>* subjects=new (ELeave)CArrayPtrFlat<MEikSrvNotifierBase2>(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<MEikSrvNotifierBase2>* NotifierArray1()
+//
+// Lib main entry point
+//
+ {
+// RDebug::Print(_L("\nExported entry point\n"));
+ CArrayPtrFlat<MEikSrvNotifierBase2>* subjects=new (ELeave)CArrayPtrFlat<MEikSrvNotifierBase2>(2);
+ CleanupStack::PushL(subjects);
+ subjects->AppendL(CMySmsNotifierSubject::NewLC());
+ subjects->AppendL(CMyLEDSmsNotifierSubject::NewLC());
+ CleanupStack::Pop(3, subjects);
+ return subjects;
+ }
+EXPORT_C CArrayPtr<MEikSrvNotifierBase2>* NotifierArray2()
+//
+// Lib main entry point
+//
+ {
+// RDebug::Print(_L("\nExported entry point\n"));
+ CArrayPtrFlat<MEikSrvNotifierBase2>* subjects=new (ELeave)CArrayPtrFlat<MEikSrvNotifierBase2>(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 <ecom/implementationproxy.h>
+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;
+ }