calendarui/commonutils/inc/calenattachmentutils.h
changeset 0 f979ecb2b13e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/calendarui/commonutils/inc/calenattachmentutils.h	Tue Feb 02 10:12:19 2010 +0200
@@ -0,0 +1,172 @@
+/*
+* Copyright (c) 2009 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 : attachment utils apis for fetching the attachments from other
+*              : apps
+ *
+*/
+
+#ifndef CALENATTACHMENTUTILS_H
+#define CALENATTACHMENTUTILS_H
+
+#include <e32std.h>
+#include <e32base.h>
+#include <apparc.h>
+#include <badesca.h>
+#include <AknServerApp.h>
+#include <MediaFileTypes.hrh>
+#include <MMGFetchVerifier.h>
+#include <MAknFileFilter.h>
+#include <MAknFileSelectionObserver.h>
+#include <AknWaitNoteWrapper.h>
+#include <ConeResLoader.h>
+#include "calenattachmentmodel.h"
+
+class CAiwGenericParamList;
+class CCoeEnv;
+
+/**
+ * Attachment utils used for attachment support 
+ */
+class CCalenAttachmentUtils : public CBase
+    {
+    public:
+        enum TCalenAttachmentFileType
+            {
+            EUnknown = 0,
+            EImage,
+            ENote,
+            EAudio,
+            EVideo
+            };
+    public:
+
+        /**
+         * Fetches an attachment of given type from external application.
+         * 
+         * @param aType Fetch type.
+         * @param aSelectedFiles  OUT: array of selected files.
+         * @param aParams Generic AIW parameters
+         * @param aCheckDiskSpace 
+         * @param aMultiSelect if ETrue Media Gallery allows multiselect in file list.
+         * @param aVerifier To verify selection.       
+         * @return EFalse if fetch canceled.
+         */
+        IMPORT_C static TBool FetchFileL( TCalenAttachmentFileType aType,
+                                          CDesCArray& aSelectedFiles,
+                                          CAiwGenericParamList* aParams,
+                                          TBool aCheckDiskSpace = EFalse,
+                                          TBool aMultiSelect = EFalse,
+                                          MMGFetchVerifier* aVerifier = NULL );
+
+        /**
+         * Fetches an any attachment file from external application.
+         * 
+         * @param aFileName OUT: filename of the fetched file.
+         * @param aFilter To filter shown files.
+         * @param aVerifier To verify selection.       
+         * @return EFalse if fetch canceled.
+         */
+        IMPORT_C static TBool FetchAnyFileL( TFileName& aFileName,
+                                  MAknFileSelectionObserver* aVerifier = NULL,
+                                  MAknFileFilter* aFilter = NULL );
+
+        /**
+         * Returns temp path used by calendar unified editor and optionally
+         * appends file name to it.
+         * 
+         * @param aTempPath  generated temp path and filename.
+         * @param aFileName  optionally appended file name.
+         */
+        IMPORT_C static void GetCalenEditorTempPath( TFileName& aTempPath,
+                                               const TDesC* aFileName = NULL );
+        
+        /**
+         * Gets mime type of the given file handle
+         * 
+         * @param RFile File handle
+         * @return TDataType returns file's mime type
+         */
+        IMPORT_C static TDataType GetMimeType(RFile aFile);
+        
+        /**
+         * Gets mime type of the given file name
+         * 
+         * @param aFileName name of the file
+         * @return TDataType returns file's mime type
+         */
+        IMPORT_C static TDataType GetMimeTypeL(const TDesC& aFileName);
+        
+        /**
+         * Gets file size in bytes based on the file name 
+         * 
+         * @param aFileName name of the file of which size is required
+         * @return TInt returns file size in bytes
+         */
+        IMPORT_C static TInt GetFileSizeL(const TDesC& aFileName);
+        
+		/**
+         * Opens the attachment  
+         * 
+         * @param RFile	File handler to be opened
+		 * @param aExitObserver	Exit observer that listens for exiting from the attahcment viewer
+         * @return None
+         */
+        IMPORT_C static void OpenAttachmentL(RFile& file, MAknServerAppExitObserver& aExitObserver);
+        
+		/**
+         * Saves attachment either to the phone memory or memory card as chosen by the user
+         * 
+         * @param RFile	File handler to be saved
+		  * @param aExitObserver	Exit observer that listens for exiting from the save UI dialogs
+         * @return TInt returns Error code if any
+         */
+        IMPORT_C static TInt SaveAttachmentL(RFile& aFile, MAknServerAppExitObserver& aExitObserver);
+        
+    private:
+        
+        /**
+         * Fetches notes from notepad app
+         * 
+         * @aParam aSelectedFiles has selected files
+         */
+        static TBool FetchNoteL(CDesCArray& aSelectedFiles);
+        
+        /**
+         * Fetch the file which is already existing
+         * 
+         * @param aFileType Type of the file to be fetched 
+         * @param aSelectedFiles selecetd files after fetching
+         * @param aMultiSelect for selecting multile files/or single file
+         * @param aVerifier verifier for call back if file is selected
+         */     
+        static TBool FetchExistingL( TMediaFileType aFileType,
+                                     CDesCArray& aSelectedFiles,
+                                     TBool aMultiSelect,
+                                     MMGFetchVerifier* aVerifier );
+        
+        /**
+         * Generates a legal filename from given text buffer.
+         * 
+         * @param aFileName  OUT: generated filename.
+         * @param aBuffer    text buffer.
+         * @param aMaxLength maximum length for filename.
+         * @param aExt       optional file extension.
+         */
+        static void GetFileNameFromBuffer( TFileName& aFileName,
+                                           const TDesC& aBuffer,
+                                           TInt aMaxLength,
+                                           const TDesC* aExt = NULL );
+    };
+
+#endif
\ No newline at end of file