diff -r 000000000000 -r 72b543305e3a email/mail/UtilsSrc/MailUtils.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/email/mail/UtilsSrc/MailUtils.cpp Thu Dec 17 08:44:11 2009 +0200 @@ -0,0 +1,316 @@ +/* +* Copyright (c) 2002 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: Static helper methods. +* +*/ + + +// INCLUDE FILES +#include "MailUtils.h" // Own header +#include + +#include // CAknTextQueryDialog +#include +#include // StringLoader +#include +#include +#include +#include +#include + +// This is a maximum size in KBs for attachments which are +// fetched without confirmation query +const TInt KMaximumAttachmentSize(100); + +// ================= MEMBER FUNCTIONS ======================= + +// ----------------------------------------------------------------------------- +// MailUtils::TextQueryL +// leaves if user cancels query +// ----------------------------------------------------------------------------- +// +EXPORT_C void MailUtils::TextQueryL(TInt aQueryResource, TDes& aText) + { + CAknTextQueryDialog* dlg = new (ELeave) CAknTextQueryDialog(aText,CAknQueryDialog::ENoTone); + if (dlg->ExecuteLD(aQueryResource)) //R_DATA_QUERY + { + // query approved + return; + } + // query was cancelled + User::Leave(KLeaveWithoutAlert); + } +// ----------------------------------------------------------------------------- +// MailUtils::ConfirmationNoteL +// ----------------------------------------------------------------------------- +// +EXPORT_C void MailUtils::ConfirmationNoteL(const TDesC& aText) + { + CAknConfirmationNote* note = new (ELeave) CAknConfirmationNote; + note->ExecuteLD(aText); + } +// ----------------------------------------------------------------------------- +// MailUtils::ConfirmationNoteL +// ----------------------------------------------------------------------------- +// +EXPORT_C void MailUtils::ConfirmationNoteL(TInt aStringResource) + { + HBufC* buf = StringLoader::LoadLC(aStringResource); + ConfirmationNoteL(*buf); + CleanupStack::PopAndDestroy(buf); + } +// ----------------------------------------------------------------------------- +// MailUtils::InformationNoteL +// ----------------------------------------------------------------------------- +// +EXPORT_C void MailUtils::InformationNoteL(const TDesC& aText) + { + CAknInformationNote* note = new (ELeave) CAknInformationNote(ETrue); + note->ExecuteLD(aText); + } +// ----------------------------------------------------------------------------- +// MailUtils::InformationNoteL +// ----------------------------------------------------------------------------- +// +EXPORT_C void MailUtils::InformationNoteL(TInt aStringResource) + { + HBufC* buf = StringLoader::LoadLC(aStringResource); + InformationNoteL(*buf); + CleanupStack::PopAndDestroy(buf); + } + +// ----------------------------------------------------------------------------- +// MailUtils::ShowNoteIfMsgStoreSpaceLowL +// ----------------------------------------------------------------------------- +// +EXPORT_C TBool MailUtils::ShowNoteIfMsgStoreSpaceLowL(const TInt /*aSize*/) + { + // Deprecated -> to be removed + User::Leave(KErrNotSupported); + + return EFalse; + } +// ----------------------------------------------------------------------------- +// MailUtils::OfflineProfileActiveL +// ----------------------------------------------------------------------------- +// +EXPORT_C TBool MailUtils::OfflineProfileActiveL() + { + TInt value(0); + TBool retVal(EFalse); + + CRepository* cenRep = CRepository::NewLC( KCRUidCoreApplicationUIs ); + TInt err = cenRep->Get(KCoreAppUIsNetworkConnectionAllowed, value ); + if ( !err && !value ) + { // Phone is offline + retVal = ETrue; + } + CleanupStack::PopAndDestroy(); // cenRep + return retVal; + } +// ----------------------------------------------------------------------------- +// MailUtils::IsClosedMimeL +// ----------------------------------------------------------------------------- +// +EXPORT_C TBool MailUtils::IsClosedMimeL(const TDesC& aMimeType) + { + CCommonContentPolicy* contentPolicy = CCommonContentPolicy::NewLC(); + + TBool banned(contentPolicy->IsClosedType( aMimeType )); + + CleanupStack::PopAndDestroy(); //contentPolicy + + return banned; + } + +// ----------------------------------------------------------------------------- +// MailUtils::IsClosedMimeL +// ----------------------------------------------------------------------------- +// +EXPORT_C TBool MailUtils::IsClosedMimeL(const TDesC8& aMimeType) + { + HBufC* dataTypeString = HBufC::NewLC(aMimeType.Length()); + dataTypeString->Des().Copy(aMimeType); + TBool banned(ETrue); + + banned = IsClosedMimeL(*dataTypeString); + + CleanupStack::PopAndDestroy(); //contentPolicy + + return banned; + } + +// ----------------------------------------------------------------------------- +// MailUtils::IsClosedFileL +// ----------------------------------------------------------------------------- +// +EXPORT_C TBool MailUtils::IsClosedFileL( RFile& aFileHandle ) + { + if ( aFileHandle.SubSessionHandle() != 0 ) + { + CCommonContentPolicy* contentPolicy = CCommonContentPolicy::NewLC(); + + TBool banned( contentPolicy->IsClosedFileL( aFileHandle ) ); + + CleanupStack::PopAndDestroy(); //contentPolicy + return banned; + } + else + { + return EFalse; + } + } + +// ----------------------------------------------------------------------------- +// MailUtils::ConfirmationQueryL +// ----------------------------------------------------------------------------- +// +EXPORT_C TBool MailUtils::ConfirmationQueryL(const TDesC& aText, TInt aNoteResource) + { + CAknQueryDialog* qDlg = CAknQueryDialog::NewL(); + + if (qDlg->ExecuteLD(aNoteResource, aText)) + { + return ETrue; + } + return EFalse; + } + +// ----------------------------------------------------------------------------- +// MailUtils::ConfirmationQueryL +// ----------------------------------------------------------------------------- +// +EXPORT_C TBool MailUtils::ConfirmationQueryL( + TInt aStringResource, + TInt aNoteResource) + { + HBufC* buf = StringLoader::LoadLC(aStringResource); + TBool result = ConfirmationQueryL(*buf, aNoteResource); + CleanupStack::PopAndDestroy(buf); + return result; + } + +// ----------------------------------------------------------------------------- +// MailUtils::LargeAttachmentQueryL +// ----------------------------------------------------------------------------- +// +EXPORT_C TBool MailUtils::LargeAttachmentQueryL( TInt aSize, TInt aStatus ) + { + + TInt size( aSize / KKilo ); + // This check is done in MsgAttachmentUtils::FileSizeToStringL + // so it is done here also, so consistent sizes are shown to user. + if (size % KKilo) + { + size++; + } + enum TResponce + { + EMsgMailNotQueried, + EMsgMailFetch, + EMsgMailDontFetch + }; + TInt noteResource( R_MAIL_QUEST_LARGE_ATTA_FWD ); + TInt secondNoteResource( R_MAIL_QUEST_FETCH_ATTA_FWD ); + if ( (aStatus & EQueryAttachmentFetch ) ) + { + noteResource = R_MAIL_LARGE_ATTA_QUERY; + secondNoteResource = R_MAIL_QUEST_FETCH_ATTACHMENT; + } + + TBool response( EMsgMailNotQueried ); + + if ( size > KMaximumAttachmentSize ) + { + HBufC* string = StringLoader::LoadLC( + noteResource, + size ); + if ( !MailUtils::ConfirmationQueryL(*string, + R_MAIL_YES_NO_QUERY_DLG) ) + { + response = EMsgMailDontFetch; + } + else + { + response = EMsgMailFetch; + } + CleanupStack::PopAndDestroy(); // string + } + + if ( response == EMsgMailDontFetch ) + { + return EFalse; + } + + // if we're offline, ask confirmation to connect + if ( response == EMsgMailNotQueried && (aStatus & EConnectionOffline) ) + { + if ( !MailUtils::ConfirmationQueryL( + secondNoteResource, + R_MAIL_YES_NO_QUERY_DLG) ) + { + return EFalse; + } + } + + return ETrue; + } +// ----------------------------------------------------------------------------- +// MailUtils::OfflineProfileActiveWithNoteL +// ----------------------------------------------------------------------------- +// +EXPORT_C TBool MailUtils::OfflineProfileActiveWithNoteL() + { + User::Leave( KErrNotSupported ); + return EFalse; + } + +// ----------------------------------------------------------------------------- +// MailUtils::ConfirmationQueryL +// ----------------------------------------------------------------------------- +// +EXPORT_C TBool MailUtils::ConfirmationQueryL( const TDesC& aText ) + { + return MailUtils::ConfirmationQueryL( aText, R_MAIL_YES_NO_QUERY_DLG ); + } + +// ----------------------------------------------------------------------------- +// MailUtils::ConfirmationQueryL +// ----------------------------------------------------------------------------- +// +EXPORT_C TBool MailUtils::ConfirmationQueryL( TInt aStringResource ) + { + return MailUtils::ConfirmationQueryL( + aStringResource, R_MAIL_YES_NO_QUERY_DLG ); + } + +// ----------------------------------------------------------------------------- +// MailUtils::FileSize() +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt MailUtils::FileSize(const TDesC& aFilename) + { + RFile file; + RFs& fs = CCoeEnv::Static()->FsSession(); + TInt filesize(file.Open(fs, aFilename, EFileShareReadersOnly)); + if (filesize == KErrNone) + { + file.Size(filesize); + } + file.Close(); + + return filesize; + } + +// End of File