--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mobilemessaging/audiomsg/src/audiomessagedocument.cpp Wed Sep 01 12:31:54 2010 +0100
@@ -0,0 +1,247 @@
+/*
+* Copyright (c) 2005-2006 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: Provides audioMessage document methods.
+*
+*/
+
+
+
+
+#include <MuiuMsvUiServiceUtilities.h> //Disk space check
+#include <centralrepository.h>
+#include <mmsclient.h>
+#include <MmsEngineInternalCRKeys.h>
+#include <mmsmsventry.h>
+#include <MuiuMsgEditorLauncher.h>
+#include <MsgMediaResolver.h>
+#include "audiomessageappui.h"
+#include "audiomessagedocument.h"
+#include "MsgMimeTypes.h"
+
+const TInt KAmsIndexEntryExtra = 2000; // space reserved for the index entry
+const TInt KDefaultMaxSize = 300 * 1024;
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------
+// CAudioMessageDocument::Constructor
+// ---------------------------------------------------------
+//
+CAudioMessageDocument::CAudioMessageDocument( CEikApplication& aApp ) :
+ CMsgEditorDocument( aApp ),
+ iMaxMessageSize( KDefaultMaxSize ),
+ iRecordIconStatus( EAudioInsert )
+ {
+ }
+
+// ---------------------------------------------------------
+// CAudioMessageDocument::Destructor
+// ---------------------------------------------------------
+//
+CAudioMessageDocument::~CAudioMessageDocument()
+ {
+ delete iMediaResolver;
+ }
+
+// ---------------------------------------------------------
+// CAudioMessageDocument::SetMessageType
+// ---------------------------------------------------------
+//
+void CAudioMessageDocument::SetMessageType()
+ {
+ const TInt flags = LaunchFlags();
+ TMmsMsvEntry tEntry = static_cast<TMmsMsvEntry>( Entry() );
+
+ if ( tEntry.Parent( ) == KMsvSentEntryId )
+ {
+ iMessageType = EAmsSent;
+ return;
+ }
+
+ if ( flags & EMsgCreateNewMessage )
+ {
+ iMessageType = EAmsNewMessage;
+ return;
+ }
+ else if ( flags & EMsgForwardMessage )
+ {
+ iMessageType = EAmsForward;
+ return;
+ }
+ else if ( flags & EMsgCreateDuplicate )
+ {
+ iMessageType = EAmsEdit;
+ return;
+ }
+ else if ( flags & EMsgEditNewMessage )
+ {
+ iMessageType = EAmsSendAs;
+ return;
+ }
+ else if ( flags & EMsgReadOnly && flags & EMsgLaunchEditorEmbedded )
+ {
+ iMessageType = EAmsInbox;
+ return;
+ }
+
+ // Either sendas or open from draft
+ if ( tEntry.IsForwardedMessage() )
+ {
+ // Forwarded message saved to draft
+ iMessageType = EAmsForward;
+ }
+ else if ( tEntry.EditorOriented() )
+ {
+ iMessageType = EAmsOpenFromDraft;
+ }
+ else
+ {
+ iMessageType = EAmsSendAs;
+ }
+ }
+
+// ---------------------------------------------------------
+// CAudioMessageDocument::ConstructL
+// ---------------------------------------------------------
+//
+void CAudioMessageDocument::ConstructL()
+ {
+ CMsgEditorDocument::ConstructL();
+
+ CRepository* repository = CRepository::NewL( KCRUidMmsEngine );
+ TInt maxSendSize = 0;
+ // value is returned as bytes now
+ TInt err = repository->Get( KMmsEngineMaximumSendSize, maxSendSize );
+ if ( !err )
+ {
+ iMaxMessageSize = maxSendSize;
+ }
+ delete repository;
+ PrepareMtmL( KUidMsgTypeMultimedia );
+ }
+
+// ---------------------------------------------------------
+// CAudioMessageDocument::NewL
+// ---------------------------------------------------------
+//
+CAudioMessageDocument* CAudioMessageDocument::NewL(CEikApplication& aApp)
+ {
+ CAudioMessageDocument* med = new ( ELeave ) CAudioMessageDocument( aApp );
+ CleanupStack::PushL( med );
+ med->ConstructL();
+ CleanupStack::Pop( med );
+ return med;
+ }
+
+// ---------------------------------------------------------
+// CAudioMessageDocument::CreateAppUiL
+// ---------------------------------------------------------
+//
+CEikAppUi* CAudioMessageDocument::CreateAppUiL()
+ {
+ return new ( ELeave ) CAudioMessageAppUi;
+ }
+
+
+// ---------------------------------------------------------
+// CAudioMessageDocument::CreateNewL
+// ---------------------------------------------------------
+//
+TMsvId CAudioMessageDocument::CreateNewL(TMsvId /* aServiceId */, TMsvId aDestFolder )
+ {
+ // Can only create to draft
+ if ( aDestFolder != KMsvDraftEntryIdValue )
+ {
+ User::Leave( KErrNotSupported );
+ }
+
+ // Don't allow creation if will go under CL
+ if ( MsvUiServiceUtilities::DiskSpaceBelowCriticalLevelL(
+ Session(),
+ KAmsIndexEntryExtra ) )
+ {
+ User::Leave( KErrDiskFull );
+ }
+
+ CMmsClientMtm& clientMtm = Mtm();
+
+ // CREATE TO aDestFolder (DRAFT)
+ CMsvOperationActiveSchedulerWait* wait = CMsvOperationActiveSchedulerWait::NewLC();
+ CMsvOperation* createOperation = clientMtm.CreateNewEntryL( aDestFolder, wait->iStatus );
+ CleanupStack::PushL( createOperation );
+ wait->Start();
+
+ if ( wait->iStatus.Int() != KErrNone )
+ {
+ User::Leave( wait->iStatus.Int() );
+ }
+
+ // Get the message id
+ TPckgBuf<TMsvId> pkg;
+ pkg.Copy( createOperation->ProgressL() );
+ TMsvId progress = 0;
+ progress = pkg();
+ CleanupStack::PopAndDestroy( createOperation );
+ CleanupStack::PopAndDestroy( wait );
+ return progress;
+ }
+
+// ---------------------------------------------------------------------------
+// CAudioMessageDocument::EntryChangedL
+// Intentionally empty implementation.
+// ---------------------------------------------------------------------------
+//
+void CAudioMessageDocument::EntryChangedL()
+ {
+ }
+
+// ---------------------------------------------------------
+// CAudioMessageDocument::InitializeL
+// ---------------------------------------------------------
+//
+TInt CAudioMessageDocument::InitializeL( )
+ {
+ iMediaResolver = CMsgMediaResolver::NewL();
+ return KErrNone;
+ }
+
+// ---------------------------------------------------------
+// CAudioMessageDocument::Mtm
+// ---------------------------------------------------------
+//
+CMmsClientMtm& CAudioMessageDocument::Mtm()
+ {
+ return static_cast <CMmsClientMtm&> ( CMsgEditorDocument::Mtm() );
+ }
+
+// ---------------------------------------------------------
+// CAudioMessageDocument::MessageType
+// ---------------------------------------------------------
+//
+TBool CAudioMessageDocument::IsAmrL( RFile& aFile, TDataType& aMimeType ) const
+ {
+ iMediaResolver->RecognizeL( aFile, aMimeType);
+ TDataType testType( KMsgMimeAudioAmr );
+ if ( aMimeType != testType )
+ {
+ return EFalse;
+ }
+ else
+ {
+ return ETrue;
+ }
+
+ }
+
+