--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/voipaudioservices/VoIPIntfc/src/VoIPRingTonePlayerImpl.cpp Tue Feb 02 01:08:46 2010 +0200
@@ -0,0 +1,274 @@
+/*
+* Copyright (c) 2007-2008 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: VOIP Audio Service
+*
+*/
+
+
+#include <e32base.h>
+#include "VoIPAudioSession.h"
+#include "VoIPRingTonePlayerImpl.h"
+
+// CONSTANTS
+//_LIT8(KMimetypeMP3, "audio/mpeg");
+
+
+// ---------------------------------------------------------------------------
+// CRingTonePlayerImpl::NewL
+// ---------------------------------------------------------------------------
+//
+CRingTonePlayerImpl* CRingTonePlayerImpl::NewL()
+ {
+ CRingTonePlayerImpl* self = new (ELeave) CRingTonePlayerImpl();
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// CRingTonePlayerImpl::~CRingTonePlayerImpl
+// ---------------------------------------------------------------------------
+//
+CRingTonePlayerImpl::~CRingTonePlayerImpl()
+ {
+ Close();
+
+ if (iMsgQComHandler)
+ {
+ iMsgQComHandler->Cancel();
+ delete iMsgQComHandler;
+ }
+
+ if (iMsgComQueue.Handle() > 0)
+ {
+ iMsgComQueue.Close();
+ }
+
+ if (iVoIPAudioSession.Handle() > 0)
+ {
+ iVoIPAudioSession.Close();
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CRingTonePlayerImpl::CRingTonePlayerImpl
+// ---------------------------------------------------------------------------
+//
+CRingTonePlayerImpl::CRingTonePlayerImpl()
+ {
+ }
+
+// ---------------------------------------------------------------------------
+// CRingTonePlayerImpl::ConstructL
+// ---------------------------------------------------------------------------
+//
+void CRingTonePlayerImpl::ConstructL()
+ {
+ // Pass ownership to the parent class
+ CRingTonePlayer::ConstructL(this);
+
+ TInt err = iVoIPAudioSession.Connect();
+ User::LeaveIfError(err);
+ }
+
+// ---------------------------------------------------------------------------
+// CRingTonePlayerImpl::OpenL
+//
+// Gets ring tone from the Profiles
+// ---------------------------------------------------------------------------
+//
+void CRingTonePlayerImpl::OpenL(MRingToneObserver& aObserver)
+ {
+ iObserver = &aObserver;
+ StartMsgQueueL();
+
+ TInt err = iVoIPAudioSession.OpenRingTonePlayer();
+ User::LeaveIfError(err);
+ }
+
+// ---------------------------------------------------------------------------
+// CRingTonePlayerImpl::OpenL
+//
+// Plays ring tone from file
+// ---------------------------------------------------------------------------
+//
+void CRingTonePlayerImpl::OpenL(MRingToneObserver& aObserver, TPtr aFileName)
+ {
+ iObserver = &aObserver;
+ StartMsgQueueL();
+ TInt err = iVoIPAudioSession.OpenRingTonePlayer(aFileName);
+ User::LeaveIfError(err);
+ }
+
+// ---------------------------------------------------------------------------
+// CRingTonePlayerImpl::OpenL
+//
+// Plays ring tone from file handle
+// ---------------------------------------------------------------------------
+//
+void CRingTonePlayerImpl::OpenL(MRingToneObserver& aObserver,
+ RFile& aFileHandle)
+ {
+ iObserver = &aObserver;
+ StartMsgQueueL();
+ TInt err = iVoIPAudioSession.OpenRingTonePlayer(aFileHandle);
+ User::LeaveIfError(err);
+ }
+
+// ---------------------------------------------------------------------------
+// CRingTonePlayerImpl::OpenL
+//
+// Plays ring tone from a descriptor string based on its MIME type
+// ---------------------------------------------------------------------------
+//
+void CRingTonePlayerImpl::OpenL(MRingToneObserver& aObserver,
+ TPtr8 aDesTone,
+ TPtr8 /*aMimeType*/)
+ {
+ iObserver = &aObserver;
+ StartMsgQueueL();
+
+ TInt size = aDesTone.Size();
+
+ if (size <= 0)
+ {
+ User::Leave(KErrArgument);
+ }
+ else
+ {
+// size += aMimeType.Size();
+
+ HBufC8* tone = HBufC8::NewLC(size);
+ TPtr8 ptr = tone->Des();
+/*
+ if (aMimeType.Compare(KMimetypeMP3) == 0)
+ {
+ // MP3 requires mime header
+ ptr.Copy(aMimeType);
+ ptr.Append(aDesTone);
+ }
+ else
+ {*/
+ ptr.Copy(aDesTone);
+// }
+
+ TInt err = iVoIPAudioSession.OpenRingTonePlayer(*tone);
+ CleanupStack::PopAndDestroy(tone);
+ User::LeaveIfError(err); //return error via trap mechanism
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CRingTonePlayerImpl::Play
+// ---------------------------------------------------------------------------
+//
+TInt CRingTonePlayerImpl::Play()
+ {
+ TInt err = iVoIPAudioSession.PlayRingTone();
+ return err;
+ }
+
+// ---------------------------------------------------------------------------
+// CRingTonePlayerImpl::Pause
+// ---------------------------------------------------------------------------
+//
+TInt CRingTonePlayerImpl::Pause()
+ {
+ TInt err = iVoIPAudioSession.PauseRingTone();
+ return err;
+ }
+
+// ---------------------------------------------------------------------------
+// CRingTonePlayerImpl::Resume
+// ---------------------------------------------------------------------------
+//
+TInt CRingTonePlayerImpl::Resume()
+ {
+ TInt err = iVoIPAudioSession.ResumeRingTone();
+ return err;
+ }
+
+// ---------------------------------------------------------------------------
+// CRingTonePlayerImpl::Stop
+// ---------------------------------------------------------------------------
+//
+TInt CRingTonePlayerImpl::Stop()
+ {
+ TInt err = iVoIPAudioSession.StopRingTone();
+ return err;
+ }
+
+// ---------------------------------------------------------------------------
+// CRingTonePlayerImpl::Close
+// ---------------------------------------------------------------------------
+//
+void CRingTonePlayerImpl::Close()
+ {
+ iVoIPAudioSession.CloseRingTonePlayer();
+ }
+
+// ---------------------------------------------------------------------------
+// CRingTonePlayerImpl::StrartMsgQueueL
+//
+// ---------------------------------------------------------------------------
+//
+void CRingTonePlayerImpl::StartMsgQueueL()
+ {
+ if (iMsgComQueue.Handle() <= 0)
+ {
+ TInt err = iMsgComQueue.CreateGlobal(KRingToneComQueue,
+ KVoIPMsgComQSlots);
+ User::LeaveIfError(err);
+ }
+
+ ReceiveMsgQComHandlerEventsL();
+ }
+
+// ---------------------------------------------------------------------------
+// CRingTonePlayerImpl::ReceiveMsgQComHandlerEventsL
+// Starts message queue handler (A/O) to monitor server side events
+// ---------------------------------------------------------------------------
+//
+void CRingTonePlayerImpl::ReceiveMsgQComHandlerEventsL()
+ {
+ if (iMsgQComHandler)
+ {
+ iMsgQComHandler->Cancel();
+ }
+ else
+ {
+ iMsgQComHandler = CQueueHandler::NewL(this, &iMsgComQueue);
+ }
+
+ iMsgQComHandler->Start();
+ }
+
+
+// ======== CALLBACK FUNCTIONS ========
+
+
+// ---------------------------------------------------------------------------
+// CRingTonePlayerImpl::Event
+//
+// From MQueueHandlerObserver
+// ---------------------------------------------------------------------------
+//
+void CRingTonePlayerImpl::Event(TInt aEventType, TInt aError)
+ {
+ iObserver->Event(*this, aEventType, aError);
+ }
+
+
+// End of file