diff -r 000000000000 -r 72b543305e3a mobilemessaging/postcard/postcardsrc/PostcardDocument.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mobilemessaging/postcard/postcardsrc/PostcardDocument.cpp Thu Dec 17 08:44:11 2009 +0200 @@ -0,0 +1,354 @@ +/* +* Copyright (c) 2005 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 CPostcardDocument class methods. +* +*/ + + + + +// ========== INCLUDE FILES ================================ + +#include +#include + +#include // TMsvEntry +#include +#include // Msgs Uids +#include // CBaseMtm + +#include + +#include // Client Mtm API +#include //Disk space check +#include +#include + + #include // link against centralrepository.lib + #include // for Central Repository keys + +#include + +// Features +#include +#include +#include + +#include +#include +#include + +#include + +#include "PostcardDocument.h" +#include "PostcardAppUi.h" + +const TInt KPostcardIndexEntryExtra = 2000; // space reserved for the index entry +const TInt KMaxPostcardWidth = 1600; +const TInt KMaxPostcardHeight = 1200; + +// --------------------------------------------------------- +// C++ default constructor can NOT contain any code, that +// might leave. +// --------------------------------------------------------- +// +CPostcardDocument::CPostcardDocument( CEikApplication& aApp ) : + CMsgEditorDocument( aApp ), + iMsgChanged( 0 ), + iMsgType( EPostcardSent ), + iMaxMessageSize( 300 ) + { + } + +// --------------------------------------------------------- +// CPostcardDocument::CreateAppUiL +// --------------------------------------------------------- +// +CEikAppUi* CPostcardDocument::CreateAppUiL() + { + CEikAppUi* appui = new ( ELeave ) CPostcardAppUi(); + return appui; + } + +// --------------------------------------------------------- +// CPostcardDocument::ConstructL +// --------------------------------------------------------- +// +void CPostcardDocument::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 ); + } + +// ---------------------------------------------------- +// CPostcardDocument::NewL +// ---------------------------------------------------- +CPostcardDocument* CPostcardDocument::NewL(CEikApplication& aApp) + { + CPostcardDocument* self = new ( ELeave ) CPostcardDocument( aApp ); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + +// --------------------------------------------------------- +// CPostcardDocument::~CPostcardDocument +// --------------------------------------------------------- +CPostcardDocument::~CPostcardDocument() + { + delete iMediaResolver; + delete iTextUtils; + } + +// --------------------------------------------------------- +// CPostcardDocument::DefaultMsgFolder +// --------------------------------------------------------- +TMsvId CPostcardDocument::DefaultMsgFolder() const + { + return KMsvDraftEntryIdValue; + } + +// --------------------------------------------------------- +// CPostcardDocument::DefaultMsgService +// --------------------------------------------------------- +TMsvId CPostcardDocument::DefaultMsgService() const + { + return KMsvLocalServiceIndexEntryId; + } + +// --------------------------------------------------------- +// CPostcardDocument::CreateNewL +// --------------------------------------------------------- +TMsvId CPostcardDocument::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(), + KPostcardIndexEntryExtra ) ) + { + User::Leave( KErrDiskFull ); + } + + CMmsClientMtm& clientMtm = Mtm(); + + // CREATE TO aDestFolder (DRAFT) + CMsvOperation* createOperation = NULL; + CMsvOperationWait* wait = CMsvOperationWait::NewLC(); + wait->Start(); + createOperation = clientMtm.CreateNewEntryL( aDestFolder, wait->iStatus ); + CleanupStack::PushL( createOperation ); + CActiveScheduler::Start(); + + if ( wait->iStatus.Int() != KErrNone ) + { + User::Leave( wait->iStatus.Int() ); + } + + // Get the message id + TPckgBuf pkg; + pkg.Copy( createOperation->ProgressL() ); + TMsvId progress = 0; + progress = pkg(); + CleanupStack::PopAndDestroy( 2, wait ); // wait, createOperation + + return progress; + } + +// --------------------------------------------------------- +// CPostcardDocument::Mtm +// --------------------------------------------------------- +CMmsClientMtm& CPostcardDocument::Mtm() + { + return static_cast ( CMsgEditorDocument::Mtm() ); + } + +// --------------------------------------------------------- +// CPostcardDocument::MtmUi +// --------------------------------------------------------- +CBaseMtmUi& CPostcardDocument::MtmUi() + { + return CMsgEditorDocument::MtmUi(); + } + +// --------------------------------------------------------- +// CPostcardDocument::EntryChangedL +// Intentionally empty implementation. +// --------------------------------------------------------- +void CPostcardDocument::EntryChangedL() + { + } + +// --------------------------------------------------------- +// CPostcardDocument::InitializeL +// --------------------------------------------------------- +void CPostcardDocument::InitializeL( RFs& aFs ) + { + iFs = aFs; + + iMediaResolver = CMsgMediaResolver::NewL(); + iMediaResolver->SetCharacterSetRecognition( iMsgType == EPostcardSendAs ); + + iTextUtils = CMsgTextUtils::NewL( iFs ); + } + +// ---------------------------------------------------- +// CMmsEditorDocument::SetMessageType +// ---------------------------------------------------- +void CPostcardDocument::SetMessageType() + { + const TInt flags = LaunchFlags(); + TMmsMsvEntry tEntry = static_cast( Entry() ); + + if ( tEntry.Parent( ) == KMsvSentEntryId ) + { + iMsgType = EPostcardSent; + return; + } + + if ( flags & EMsgCreateNewMessage ) + { + iMsgType = EPostcardNew; + return; + } + else if ( flags & EMsgForwardMessage ) + { + iMsgType = EPostcardForward; + return; + } + else if ( flags & EMsgCreateDuplicate ) + { + iMsgType = EPostcardEdit; + return; + } + else if ( flags & EMsgEditNewMessage ) + { + iMsgType = EPostcardSendAs; + return; + } + + // Either sent or sendas or open from draft + if ( tEntry.ReadOnly( ) ) + { + iMsgType = EPostcardSent; + } + else + { + if( tEntry.EditorOriented( ) ) + { + iMsgType = EPostcardDraft; + } + else + { + iMsgType = EPostcardSendAs; + } + } + } + +// ---------------------------------------------------- +// SetChanged +// ---------------------------------------------------- +void CPostcardDocument::SetChanged( TPostcardPart aPart ) + { + iMsgChanged |= aPart; + } + +// ---------------------------------------------------- +// Changed +// ---------------------------------------------------- +TBool CPostcardDocument::Changed( TPostcardPart aPart ) const + { + return iMsgChanged & aPart; + } + +// ---------------------------------------------------- +// Modified +// ---------------------------------------------------- +TBool CPostcardDocument::Modified( ) const + { + return iMsgChanged; + } + +// ---------------------------------------------------- +// MaxMessageSize +// ---------------------------------------------------- +TInt CPostcardDocument::MaxMessageSize( ) const + { + return iMaxMessageSize; + } + +// ---------------------------------------------------- +// MaxImageSize +// ---------------------------------------------------- +TInt CPostcardDocument::MaxImageSize( ) const + { + return iMaxMessageSize - KPostcardAddressGreetingOverhead; + } + +// --------------------------------------------------------- +// AppFullName +// --------------------------------------------------------- +TFileName CPostcardDocument::AppFullName( ) + { + return Application( )->AppFullName( ); + } + +// --------------------------------------------------------- +// IsImage +// --------------------------------------------------------- +TBool CPostcardDocument::IsImage( const TDataType& aMimeType ) + { + if ( aMimeType.Des8( ).CompareF( KMsgMimeImageJpeg ) == 0 ) + { + return ETrue; + } + else if ( aMimeType.Des8( ).CompareF( KMsgMimeImageGif ) == 0 ) + { + return ETrue; + } + else if ( aMimeType.Des8( ).CompareF( KMsgMimeImagePng ) == 0 ) + { + return ETrue; + } + return EFalse; + } + +// --------------------------------------------------------- +// MaxImageDimensions +// --------------------------------------------------------- +TSize CPostcardDocument::MaxImageDimensions( ) + { + return TSize( KMaxPostcardWidth, KMaxPostcardHeight ); + } + + +// End of File