--- /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 <MsgMailUtils.rsg>
+
+#include <AknQueryDialog.h> // CAknTextQueryDialog
+#include <aknnotewrappers.h>
+#include <StringLoader.h> // StringLoader
+#include <MuiuMsvUiServiceUtilities.h>
+#include <CommonContentPolicy.h>
+#include <e32property.h>
+#include <coemain.h>
+#include <CoreApplicationUIsSDKCRKeys.h>
+
+// 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