messagingappbase/smsmtm/servermtm/src/SMSSERV.CPP
changeset 25 84d9eb65b26f
parent 23 238255e8b033
child 27 e4592d119491
child 37 518b245aa84c
child 79 2981cb3aa489
--- a/messagingappbase/smsmtm/servermtm/src/SMSSERV.CPP	Fri Apr 16 14:56:15 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,432 +0,0 @@
-// 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:
-// SmssServ.cpp
-// 
-//
-
-#include "SMSSERV.H"
-#include "SMSSPAN.H"
-#include "SMSSOUTB.H"
-
-#include <msventry.h>
-#include <SMSS.rsg>
-#include <smscmds.h>
-#include <smut.h>
-#include <c32comm.h>
-#include "SMSSchSend.h"
-#include "SmssSimUtils.h"
-#include <centralrepository.h>
-#include <tmsvsystemprogress.h>
-
-EXPORT_C CSmsServerMtm* CSmsServerMtm::NewL(CRegisteredMtmDll& aRegisteredMtmDll, CMsvServerEntry* aServerEntry)
-	{
-	CSmsServerMtm* smsservermtm=new(ELeave) CSmsServerMtm(aRegisteredMtmDll, aServerEntry);
-	CleanupStack::PushL(smsservermtm);
-	smsservermtm->ConstructL();
-	CleanupStack::Pop();
-	return smsservermtm;
-	}
-
-CSmsServerMtm::~CSmsServerMtm()
-	{
-	Cancel();
-	delete iScheduleSend;
-	delete iOutboxSend;
-	delete iSimUtils;
-	}
-
-void CSmsServerMtm::CopyToLocalL(const CMsvEntrySelection& /*aSelection*/,TMsvId /*aDestination*/, TRequestStatus& aStatus)
-	{
-	TRequestStatus* status=&aStatus;
-	User::RequestComplete(status,KErrNotSupported);
-	}
-
-void CSmsServerMtm::CopyFromLocalL(const CMsvEntrySelection& aSelection,TMsvId /*aDestination*/, TRequestStatus& aStatus)
-	{
-	__ASSERT_ALWAYS(iServerEntry!=NULL,Panic(ESmssEntryNotSet));
-	__ASSERT_ALWAYS(!iOutboxSend, Panic(KSmssPanicMtmAlreadyActive));
-	
-	Queue(aStatus);
-	RestoreSettingsL();
-	iOutboxSend=CSmsOutboxSend::NewL(*iServerEntry, *iScheduleSend, iFs);
-	iState=ESmsServerMtmSending;
-#if (defined SYMBIAN_USER_PROMPT_SERVICE)	
-	iOutboxSend->StartL(iStatus,aSelection, EFalse, KNullDesC8, iClientThreadId, iHasCapability);
-#else
-	iOutboxSend->Start(iStatus,aSelection, EFalse, KNullDesC8);
-#endif	
-	SetActive();
-	}
-
-void CSmsServerMtm::CopyWithinServiceL(const CMsvEntrySelection& /*aSelection*/,TMsvId /*aDestination*/, TRequestStatus& aStatus)
-	{
-	TRequestStatus* status=&aStatus;
-	User::RequestComplete(status,KErrNotSupported);
-	}
-
-void CSmsServerMtm::MoveToLocalL(const CMsvEntrySelection& /*aSelection*/,TMsvId /*aDestination*/, TRequestStatus& aStatus)
-	{
-	TRequestStatus* status=&aStatus;
-	User::RequestComplete(status,KErrNotSupported);
-	}
-
-void CSmsServerMtm::MoveFromLocalL(const CMsvEntrySelection& /*aSelection*/,TMsvId /*aDestination*/, TRequestStatus& aStatus)
-	{
-	TRequestStatus* status=&aStatus;
-	User::RequestComplete(status,KErrNotSupported);
-	}
-
-void CSmsServerMtm::MoveWithinServiceL(const CMsvEntrySelection& /*aSelection*/,TMsvId /*aDestination*/, TRequestStatus& aStatus)
-	{
-	TRequestStatus* status=&aStatus;
-	User::RequestComplete(status,KErrNotSupported);
-	}
-
-void CSmsServerMtm::DeleteAllL(const CMsvEntrySelection& aSelection, TRequestStatus& aStatus)
-	{
-	iProgress = TSmsProgress();
-	iProgress.iType = TSmsProgress::ESmsProgressTypeDeleteAll;
-	iProgress.iMsgCount = aSelection.Count();
-	User::LeaveIfError(iServerEntry->SetEntry(aSelection[0]));
-	User::LeaveIfError(iServerEntry->SetEntry(iServerEntry->Entry().Parent()));
-	CMsvEntrySelection* sel = aSelection.CopyL();
-	iProgress.iError = iServerEntry->DeleteEntries(*sel);
-	delete sel;
-
-	TRequestStatus* status = &aStatus;
-	User::RequestComplete(status, KErrNone);
-	}
-
-void CSmsServerMtm::CreateL(TMsvEntry /*aNewEntry*/, TRequestStatus& aStatus)
-	{
-	TRequestStatus* status=&aStatus;
-	User::RequestComplete(status,KErrNotSupported);
-	}
-
-void CSmsServerMtm::ChangeL(TMsvEntry /*aNewEntry*/, TRequestStatus& aStatus)
-	{
-	TRequestStatus* status=&aStatus;
-	User::RequestComplete(status,KErrNotSupported);
-	}
-
-void CSmsServerMtm::StartCommandL(CMsvEntrySelection& aSelection, TInt aCommand, const TDesC8& aParameter, TRequestStatus& aStatus)
-	{
-	__ASSERT_ALWAYS(iServerEntry!=NULL,Panic(ESmssEntryNotSet));
-	__ASSERT_ALWAYS(iState==ESmsServerMtmWaiting,Panic(KSmssPanicMtmAlreadyActive));
-
-	RestoreSettingsL();	
-	iProgress = TSmsProgress();
-	TInt err = KErrNone;
-
-	switch (aCommand)
-		{
-		case ESmsMtmCommandScheduleCopy:
-		case ESmsMtmCommandScheduleMove:
-		case ESmsMtmCommandDeleteSchedule:
-		case ESmsMtmCommandCheckSchedule:
-		case ESmsMtmCommandSendScheduledCopy:
-		case ESmsMtmCommandSendScheduledMove:
-			{
-			TRAP(err, ScheduleCommandL(aSelection, aCommand, aParameter, aStatus));
-			break;
-			}
-		case ESmsMtmCommandEnumeratePhoneStores:
-		case ESmsMtmCommandDeleteFromPhoneStore:
-		case ESmsMtmCommandCopyFromPhoneStore:
-		case ESmsMtmCommandMoveFromPhoneStore:
-		case ESmsMtmCommandReadSimParams:
-		case ESmsMtmCommandWriteSimParams:
-		case ESmsMtmCommandCopyToPhoneStore:
-		case ESmsMtmCommandMoveToPhoneStore:
-			{
-			TRAP(err, SimUtilsL(aSelection, aCommand, aParameter, aStatus));
-			break;
-			}
-		default:
-			{
-			Panic(KSmssPanicUnexpectedCommand);
-			}
-		}
-
-	if (err != KErrNone)
-		{
-		iServerEntry->SetEntry(KMsvNullIndexEntryId);
-		User::Leave(err);
-		}
-	}
-
-TBool CSmsServerMtm::CommandExpected()
-	{
-	return EFalse;
-	}
-
-const TDesC8& CSmsServerMtm::Progress()
-	{
-	switch (iState)
-		{
-		case ESmsServerMtmSending:
-			{
-			iProgress = iOutboxSend->Progress();
-			break;
-			}
-		case ESmsServerMtmSimUtils:
-			{
-			iProgress = iSimUtils->Progress();
-			break;
-			}
-		default:
-			{
-			//Do not change iProgress
-			}
-		}
-
-	iProgressBuf = TSmsProgressBuf(iProgress);
-	return iProgressBuf;
-	}
-
-void CSmsServerMtm::DoCancel()
-	{
-	switch (iState)
-		{
-		case ESmsServerMtmSending:
-			{
-			iOutboxSend->Cancel();
-			break;
-			}
-		case ESmsServerMtmSimUtils:
-			{
-			iSimUtils->Cancel();
-			break;
-			}
-		case ESmsServerMtmScheduling:
-			{
-			break;
-			}
-		default:
-			{
-			Panic(KSmssPanicUnexpectedCommand);
-			}
-		}
-	CompleteCommand(KErrCancel);
-	}
-
-void CSmsServerMtm::DoRunL()
-	{
-	DoComplete(KErrNone);
-	}
-
-void CSmsServerMtm::CompleteCommand(TInt aError)
-	{
-	if (iReport)
-		{
-		switch (iState)
-			{
-			case ESmsServerMtmSending:
-				{
-				Progress();
-				delete iOutboxSend;
-				iOutboxSend=NULL;
-				break;
-				}
-			case ESmsServerMtmScheduling:
-				{
-				break;
-				}
-			case ESmsServerMtmSimUtils:
-				{
-				Progress();
-				delete iSimUtils;
-				iSimUtils = NULL;
-				break;
-				}
-			default:
-				{
-				Panic(KSmssPanicUnexpectedState);
-				}
-			}
-		if (aError != KErrNone)         //  iProgress.iError may be recording a send error 
-			{
-			iProgress.iError = aError;  //  so it shouldn't be over-written with KErrNone
-			}
-
-		User::RequestComplete(iReport, KErrNone);
-		}
-
-	iState = ESmsServerMtmWaiting;
-	iReport = NULL;
-
-	if (iServerEntry)
-		iServerEntry->SetEntry(KMsvNullIndexEntryId); //ignore error
-	}
-
-void CSmsServerMtm::DoComplete(TInt aError)
-	{
-	CompleteCommand(aError);
-	}
-
-CSmsServerMtm::CSmsServerMtm(CRegisteredMtmDll& aRegisteredMtmDll, CMsvServerEntry* aServerEntry):
-	CScheduleBaseServerMtm(aRegisteredMtmDll, aServerEntry)
-	{
-	CActiveScheduler::Add(this);
-	}
-		
-void CSmsServerMtm::ConstructL()
-	{
-	CScheduleBaseServerMtm::ConstructL();
-
-#if defined (__WINS__)
-	TInt ret=StartC32();
-	if (ret!=KErrAlreadyExists)
-		User::LeaveIfError(ret);
-#endif
-
-	iScheduleSend = CSmsScheduleSend::NewL(*iServerEntry);
-    TSmsUtilities::ServiceIdL(*iServerEntry, iSmsServiceId);
-	RestoreSettingsL();
-	}
-
-void CSmsServerMtm::RestoreSettingsL()
-	{
-	__ASSERT_ALWAYS(iServerEntry!=NULL,Panic(ESmssEntryNotSet));
-
-	User::LeaveIfError(iServerEntry->SetEntry(iSmsServiceId));
-	RestoreScheduleSettingsL();
-	User::LeaveIfError(iServerEntry->SetEntry(KMsvNullIndexEntryId));
-	}
-
-void CSmsServerMtm::LoadResourceFileL()
-	{
-	CScheduleBaseServerMtm::LoadResourceFileL(KSmsResourceFile);
-	}
-
-void CSmsServerMtm::RestoreScheduleSettingsL()
-	{
-	CRepository* repository = CRepository::NewLC(KUidMsgTypeSMS);
-	// just v2
-	CScheduleBaseServerMtm::LoadScheduleSettingsL(*repository, ETrue, ERROR_ACTIONS);
-	CleanupStack::PopAndDestroy(repository);    
-	}
-
-void CSmsServerMtm::PopulateSchedulePackage(const TDesC8& aParameter, const TBool aMove, TMsvSchedulePackage& aPackage) const
-	{
-	aPackage.iPollProgress = 3000000;
-	aPackage.iParameter = aParameter;
-	aPackage.iCommandId = aMove ? ESmsMtmCommandSendScheduledMove : ESmsMtmCommandSendScheduledCopy;
-	}
-
-void CSmsServerMtm::ScheduleCommandL(CMsvEntrySelection& aSelection, TInt aCommand, const TDesC8& aParameter, TRequestStatus& aStatus)
-	{
-	iState = ESmsServerMtmScheduling;
-	iProgress.iType = TSmsProgress::ESmsProgressTypeScheduling;
-
-	switch (aCommand)
-		{
-		case ESmsMtmCommandScheduleCopy:
-			ScheduleL(aSelection, EFalse, aParameter, aStatus);
-			break;
-		case ESmsMtmCommandScheduleMove:
-			{
-			TRequestStatus* status = &aStatus;
-			User::RequestComplete(status, KErrNotSupported);
-			break;
-			}
-		case ESmsMtmCommandDeleteSchedule:
-			iProgress.iType  = TSmsProgress::ESmsProgressTypeDeleteSchedule;
-			DeleteScheduleL(aSelection, aParameter, aStatus);
-			break;
-		case ESmsMtmCommandCheckSchedule:
-			iProgress.iType = TSmsProgress::ESmsProgressTypeCheckSchedule;
-			CheckScheduleL(aSelection, aParameter, aStatus);
-			break;
-		case ESmsMtmCommandSendScheduledCopy:
-			SendScheduledL(aSelection, EFalse, aParameter, aStatus);
-			break;
-		case ESmsMtmCommandSendScheduledMove:
-			SendScheduledL(aSelection, ETrue, aParameter, aStatus);
-			break;
-		default:
-			Panic(KSmssPanicUnexpectedCommand);
-		}
-	}
-
-void CSmsServerMtm::SimUtilsL(const CMsvEntrySelection& aSelection, TInt aCommand, const TDesC8& aParameter, TRequestStatus& aStatus)
-	{
-	__ASSERT_DEBUG(iSimUtils == NULL, Panic(KSmssPanicAlreadyUsingSimUtils));
-	
-	Queue(aStatus);
-
-	iSimUtils = CSmsSimUtils::NewL(*iServerEntry, iFs, iSmsServiceId);
-
-	iState = ESmsServerMtmSimUtils;
-
-	switch (aCommand)
-		{
-		case ESmsMtmCommandEnumeratePhoneStores:
-			iSimUtils->EnumerateL(aParameter, iStatus);
-			break;
-		case ESmsMtmCommandDeleteFromPhoneStore:
-			iSimUtils->DeleteFromPhoneStoreL(aSelection, iStatus);
-			break;
-		case ESmsMtmCommandCopyFromPhoneStore:
-			iSimUtils->CopyFromPhoneStoreL(aSelection, aParameter, iStatus);
-			break;
-		case ESmsMtmCommandMoveFromPhoneStore:
-			iSimUtils->MoveFromPhoneStoreL(aSelection, aParameter, iStatus);
-			break;
-		case ESmsMtmCommandReadSimParams:
-			iSimUtils->ReadSimParamsL(iStatus);
-			break;
-		case ESmsMtmCommandWriteSimParams:
-			iSimUtils->WriteSimParamsL(iStatus);
-			break;
-		case ESmsMtmCommandCopyToPhoneStore:
-			iSimUtils->CopyToPhoneStoreL(aSelection, aParameter, iStatus);
-			break;
-		case ESmsMtmCommandMoveToPhoneStore:
-			iSimUtils->MoveToPhoneStoreL(aSelection, aParameter, iStatus);
-			break;
-		default:
-			Panic(KSmssPanicUnexpectedCommand);
-		}
-
-	SetActive();
-	}
-
-/**
-The extension method provides a polymorphic behaviour to call the correct
-MTM.
-@param aExtensionId The Uid passed in as KUIDMsgClientThreadInfo to copy the
-					Client Thread Info.
-@return KErrNone.
-*/	
-TInt CSmsServerMtm::Extension_(TUint aExtensionId, TAny*& a0, TAny* a1)
-	{
-	switch(aExtensionId)
-		{
-#if (defined SYMBIAN_USER_PROMPT_SERVICE)		
-		case KUIDMsgClientThreadInfo:
-			{
-			iClientThreadId = *(TThreadId*) (a1);
-	    	iHasCapability = (TBool)*(TInt*)(a0);
-	    	return KErrNone;
-			}
-#endif			
-		case KUIDMsgMsvSystemProgress:
-		default:
-			{
-			// Chain to base class
-			return CBaseServerMtm::Extension_(aExtensionId, a0, a1);
-			}
-		}
-	}