messagingfw/msgurlhandler/test/ui/src/TestMsgUrlHandlerDoc.CPP
changeset 0 8e480a14352b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingfw/msgurlhandler/test/ui/src/TestMsgUrlHandlerDoc.CPP	Mon Jan 18 20:36:02 2010 +0200
@@ -0,0 +1,177 @@
+// Copyright (c) 2001-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:
+// This file contains the implementation for the class defined in 
+// TestMsgUrlHandlerApp.h
+// 
+//
+
+/**
+ @file
+ @see	TestMsgUrlHandlerApp.h
+*/
+#include <e32test.h>
+#include "smstestutils.h"
+#include <cemailaccounts.h>
+#include <csmsaccount.h>
+#include <pop3set.h>
+#include <smtpset.h>
+#include <iapprefs.h>
+
+#include "TestMsgUrlHandlerApp.H"
+
+//             The constructor of the document class just passes the
+//             supplied reference to the constructor initialisation list.
+//             The document has no real work to do in this application.
+//
+
+CTestMsgUrlHandlerDocument* CTestMsgUrlHandlerDocument::NewL(CEikApplication& aApp)
+    {
+    CTestMsgUrlHandlerDocument* self = new (ELeave) CTestMsgUrlHandlerDocument(aApp);
+	self->ConstructL();
+    return self;
+    }
+
+void CTestMsgUrlHandlerDocument::ConstructL()
+    {
+	// Ensure there are default service settings.
+	CreateSMSServiceL();
+	CreateEmailServiceL();
+
+    }
+
+void CTestMsgUrlHandlerDocument::CreateSMSServiceL()
+	{
+	RTest aTest(_L("URL Handler UI Test"));
+	CSmsTestUtils* testUtils = CSmsTestUtils::NewL(aTest);
+	CleanupStack::PushL(testUtils);
+	testUtils->SetEntryL(testUtils->iSmsServiceId);
+	CSmsAccount* account = CSmsAccount::NewLC();
+	account->LoadSettingsL(*testUtils->iServiceSettings);
+	// Remove the default service centres from the service settings
+	TInt count = testUtils->iServiceSettings->ServiceCenterCount();
+	while( count-- )
+		{
+		testUtils->iServiceSettings->RemoveServiceCenter(count);
+		}
+	// Add the Vodafone service centre - store the settings.
+	testUtils->iServiceSettings->AddServiceCenterL(_L("Vodafone"), _L("+447785016005"));
+	// Set delivery options - do matching and make reports visible.	
+	testUtils->iServiceSettings->SetDeliveryReport(ETrue);
+	testUtils->iServiceSettings->SetStatusReportHandling(CSmsSettings::EMoveReportToInboxVisibleAndMatch);
+	account->SaveSettingsL(*testUtils->iServiceSettings);
+	CleanupStack::PopAndDestroy(2, testUtils); // account, testUtils
+	aTest.Close();
+	}
+
+void CTestMsgUrlHandlerDocument::CreateEmailServiceL()
+	{	
+	TMsvId popServiceId = 0;
+	TRAPD(err, ServiceIdL(KUidMsgTypePOP3, popServiceId));
+
+	if (err)
+		{
+		CEmailAccounts* account = CEmailAccounts::NewLC();
+
+		CImPop3Settings* popSettings = new(ELeave) CImPop3Settings();
+		CleanupStack::PushL(popSettings);
+		CImSmtpSettings* smtpSettings = new(ELeave) CImSmtpSettings();
+		CleanupStack::PushL(smtpSettings);
+		
+		CImIAPPreferences* popIAP = CImIAPPreferences::NewLC();
+		CImIAPPreferences* smtpIAP = CImIAPPreferences::NewLC();
+				
+		account->PopulateDefaultPopSettingsL(*popSettings, *popIAP); 
+		account->PopulateDefaultSmtpSettingsL(*smtpSettings, *smtpIAP);
+
+		_LIT(KSmtpServer, "smtp.dial.pipex.com");
+		smtpSettings->SetServerAddressL(KSmtpServer);
+		smtpSettings->SetEmailAliasL(_L("Messaging Test1"));
+		_LIT(KSmtpEmailAddress, "msgtest1@internet-test.plc.psion.com");
+		smtpSettings->SetEmailAddressL(KSmtpEmailAddress);
+		smtpSettings->SetReplyToAddressL(KSmtpEmailAddress);
+		smtpSettings->SetBodyEncoding(EMsgOutboxMIME);
+		smtpSettings->SetReceiptAddressL(KSmtpEmailAddress);
+		smtpSettings->SetPort(25);
+	
+		TPopAccount popAccount= account->CreatePopAccountL(KNullDesC, *popSettings, *popIAP, EFalse);
+		
+		account->CreateSmtpAccountL(popAccount, *smtpSettings, *smtpIAP, EFalse);
+		
+		CleanupStack::PopAndDestroy(5, account); // smtpIAP, popIAP, smtpSettings, popSettings, account
+		}
+	}
+
+void CTestMsgUrlHandlerDocument::ServiceIdL(TUid aMtm, TMsvId& rFirstId)
+	{
+	//Returns the Service IDs of MTM aMtm
+	CDummyObserver* ob1 = new(ELeave) CDummyObserver;
+	CleanupStack::PushL(ob1);
+
+	CMsvSession* session = CMsvSession::OpenSyncL(*ob1);
+	CleanupStack::PushL(session);
+	
+	CMsvEntry* cEntry = session->GetEntryL(KMsvRootIndexEntryId);
+	CleanupStack::PushL(cEntry);
+
+	rFirstId = KMsvNullIndexEntryId;
+
+	TMsvSelectionOrdering order;
+	order.SetShowInvisibleEntries(ETrue);
+	cEntry->SetSortTypeL(order);
+
+	//Get the children on the Root Index Entry
+	CMsvEntrySelection* selection = cEntry->ChildrenWithTypeL(KUidMsvServiceEntry);
+	CleanupStack::PushL(selection);
+
+	TInt count = selection->Count();
+
+	//Find an entry for MTM aMtm
+	for (TInt curChild = 0; curChild < count && (rFirstId == KMsvNullIndexEntryId); curChild++)
+		{
+		cEntry->SetEntryL(selection->At(curChild));
+
+		if (cEntry->Entry().iMtm == aMtm)
+			{
+			TMsvId id = cEntry->Entry().Id();
+
+			if (rFirstId == KMsvNullIndexEntryId)
+				rFirstId = id;
+			}
+		}
+
+	//Leave if no Service Entry found for MTM aMtm
+	if (rFirstId == KMsvNullIndexEntryId)
+		{
+		CleanupStack::PopAndDestroy(); //selection
+		User::Leave(KErrNotFound);
+		}
+
+	CleanupStack::PopAndDestroy(4, ob1); //selection, cMsvEntry, session, ob1
+	}
+
+CTestMsgUrlHandlerDocument::CTestMsgUrlHandlerDocument(CEikApplication& aApp)
+		: CEikDocument(aApp)
+	{
+	}
+
+
+//             This is called by the UI framework as soon as the 
+//             document has been created. It creates an instance
+//             of the ApplicationUI. The Application UI class is
+//             an instance of a CEikAppUi derived class.
+//
+CEikAppUi* CTestMsgUrlHandlerDocument::CreateAppUiL()
+	{
+	return new (ELeave) CTestMsgUrlHandlerAppUi;
+	}