mobilemessaging/smum/simdialogplugins/defaultsimdlg/inc/smssimdialog.h
changeset 0 72b543305e3a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mobilemessaging/smum/simdialogplugins/defaultsimdlg/inc/smssimdialog.h	Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,317 @@
+/*
+* 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:  
+*     Sms sim dialog header.
+*
+*/
+
+
+
+#ifndef __SMSSIMDLG_H__
+#define __SMSSIMDLG_H__
+
+#include <simdlgplugin.h> //CSimDlgPlugin
+#include <eikdialg.h>// CEikDialog
+#include <msvstd.h>  // TMsvId
+#include <AknForm.h> // CAknDialog
+#include <eiklbo.h>  // MEikListBoxObserver
+#include <gulicon.h> // CGulIcon
+#include <MuiuMsvSingleOpWatcher.h> // MMsvSingleOpWatcher
+#include <AknWaitDialog.h>          // CAknWaitDialog
+
+#include <bldvariant.hrh>
+
+// FORWARD DECLARATIONS
+class CEikColumnListBox;
+class CSmsMtmUi;
+class CMsvSession;
+class CCoeEnv;
+class CAknWaitDialog;
+class CAknProgressDialog;
+
+
+const TInt KSmumMaxDisplayTextLength = 70;
+const TInt KSmumMaxVisibleChars = 30;
+const TInt KSmumMarkReplacementStringLength = 2;
+
+
+//  CLASS DEFINITIONS
+
+/**
+* CSimMessageArray
+* Helper array class used by CSmsSimDialog
+*/
+NONSHARABLE_CLASS( CSimMessageArray ) : 
+    public CBase, 
+    public MDesCArray
+    {
+    public:
+        /**
+        * Two phase constructor
+        */
+        static CSimMessageArray* NewL( CMsvSession& aSession );
+
+        /**
+        * Destructor
+        */
+        ~CSimMessageArray();
+
+        /**
+        * Update sim messages array
+        * @param aFolderId: id of the folder where sim messages are
+        */
+        void RefreshArrayL( TMsvId aFolderId );
+
+        /**
+        * Returns entry id 
+        * @param aIndex: index of the entry
+        * @return TMsvId: id of the entry
+        */
+        TMsvId EntryId( TInt aIndex ) const;
+
+    public: // Functions from base classes
+
+        /**
+        * from MDesCArray
+        */
+        virtual TInt MdcaCount() const;
+
+        /**
+        * from MDesCArray
+        */
+        virtual TPtrC MdcaPoint(TInt aIndex) const;
+
+    private:
+        /**
+        * C++ constructor
+        */
+        CSimMessageArray( CMsvSession& aSession );
+
+        /**
+        * EPOC constructor
+        */
+        void ConstructL();
+
+    private:
+        CMsvSession&    iSession;
+        CMsvEntry*      iSmsServiceEntry;
+        HBufC*          iListBoxText;        
+    };
+
+
+/**
+* CSmsSimDialog
+* Dialog class to display sim messages
+*/
+NONSHARABLE_CLASS( CSmsSimDialog ) : 
+    public CAknDialog,
+    public MEikListBoxObserver,
+    public MMsvSingleOpWatcher,
+    public MProgressDialogCallback
+    {
+    public:
+	    /**
+        * Two phase constructor
+        * @param aSmsMtmUi: reference to sms mtm ui object
+        * @param aSession: reference to message server session
+        * @return object of CSmsSimDialog
+        */
+        static CSmsSimDialog* NewL(CSmsMtmUi&  aSmsMtmUi, CMsvSession& aSession, TInt& aExitCode);
+	   
+        /**
+        * Destructor
+        */
+        virtual ~CSmsSimDialog();
+     
+    
+public:   
+        /**
+        * from CEikDialog
+        */
+        void PreLayoutDynInitL();
+
+        /**
+        * from CEikDialog
+        */
+        TBool OkToExitL(TInt aButtonId);
+
+        /**
+        * From CAknDialog
+        */
+        void ProcessCommandL( TInt aCommandId );
+
+        /**
+        * From MEikMenuObserver
+        */
+        void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane );
+
+        /**
+        * from CCoeControl
+        */
+        TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType) ;
+
+        /**
+        * From MMsvSingleOpWatcher
+        */
+        void OpCompleted(
+            CMsvSingleOpWatcher& aOpWatcher, 
+            TInt aCompletionCode );
+
+        /**
+        * from MProgressDialogCallback
+        */
+        void DialogDismissedL( TInt aButtonId );
+
+        /**
+        * From CCoeControl, returns help context
+        */
+        void GetHelpContext(TCoeHelpContext& aContext) const;
+
+    protected:
+
+        /**
+        * From MEikListBoxObserver
+        */
+        virtual void HandleListBoxEventL(
+            CEikListBox* aListBox, 
+            TListBoxEvent aEventType );
+
+    private:
+
+		/**
+        * C++ constructor
+        */
+        CSmsSimDialog(CSmsMtmUi&  aSmsMtmUi, CMsvSession& aSession, TInt& aExitCode);
+
+        /**
+        * Symbian OS constructor
+        */
+        void ConstructL();
+
+        /**
+        * Copies sim messages to local folder
+        */
+        void HandleCopyFromSimToLocalFolderL();
+
+        /**
+        * Deletes sim messages from sim card
+        */
+        void HandleDeleteFromSimL();
+
+        /**
+        * Returns object of list box
+        * @return pointer to list box object.
+        */
+        CEikColumnListBox* ListBox() const;
+
+        /**
+        * Reads sim messages from sim card.
+        */
+        void EnumerateSimMessagesL();
+
+        /**
+        * Deletes temporary sim messages folder.
+        */
+        void DeleteSimFolderL();
+
+        /**
+         * Handles Edit submenu. Checks what items are selected and deletes 
+         * Mark, Unmark, Mark All, Unmark All menu items accordingly.
+         */
+        void DynInitEditMenuL( CEikMenuPane* aMenuPane );
+
+        /**
+         * Creates CMsvEntrySelection array from the selected items.
+         * If no items marked adds item under 'cursor' to the array.
+         * @return pointer to CMsvEntrySelection. Caller must pop and delete array.
+         */
+        CMsvEntrySelection* CreateSelectionArrayLC();
+
+        /**
+         * Updates iMessages array
+         */
+        void UpdateSimMessagesArrayL();
+
+        /**
+         * Stores current title pane text and replaces it with new one (qtn_mce_title_sim)
+         */
+        void StoreTitleTextAndSetNewL();
+
+        /**
+         * Restores title pane text with the text stored in 
+         * StoreTitleTextAndSetNewL.
+         */
+        void RestoreTitleTextL();
+
+        /**
+        * Called by OpCompleted, does work after operation is completed.
+        * Gets progress of the completed operation, calls sms mtm ui's DisplayProgressSummary.
+        * If completed enumeration operation, updates dialog's array if no errors.
+        *    if errors, dismisses whole dialog.
+        * If completed copy or delete operation, starts enumeration.
+        * @param aOperation: pointer to operation which is completed.
+        * @param aCompletionCode: Same as in OpCompleted.
+        * @return ETrue if TryToExitL is called. That can happen
+        *    if there is errors with enumeration operation and dialog is dismissed.
+        *    OpCompleted should do nothing.
+        */ 
+        TBool DoOperationCompletedL(
+            CMsvOperation* aOperation, 
+            TInt aCompletionCode );
+
+        /**
+        * TCleanupItem to clean wait or progress dialogs if leave happens after
+        * dialog creation.
+        * @param aAny: pointer to dialog pointer.
+        */
+        static void CleanupWaitDialog(TAny* aAny);
+
+        /** 
+        * Launches help application
+        */
+        void LaunchHelpL();
+    
+        /** 
+        * Launches note and starts copy/delete operation
+        * @param aDestinationId to separate copy/delete operation
+        */
+        void LaunchNoteAndOperationL( TMsvId aDestinationId = NULL );
+
+		/** 
+        * Updates Middle softkey
+        */
+		void UpdateMskL();
+    private:
+        CSmsMtmUi&          iSmsMtmUi;
+        CMsvSession&        iSession;
+        CSimMessageArray*   iMessages;
+        TMsvId              iSimFolderId;
+        HBufC*              iOldTitleText;
+        TBuf<KSmumMarkReplacementStringLength>  iMarkReplacementText;
+        CMsvSingleOpWatcher* iEnumerationOperation;
+        CMsvSingleOpWatcher* iCopyOrDeleteOperation;
+        CAknWaitDialog*     iWaitDialog;
+        CAknProgressDialog* iProgressDialog;
+        TInt&               iExitCode;
+        TBool               iSelectionKeyPressed;
+        TBool               iDialogDismissed;
+        TBool               iHelpFeatureSupported;
+        TInt                iMsgCountBeforeOperation;
+        TInt                iResourceFileOffset;
+ 	    TBool               iContextCommand;
+    };
+
+#endif // __SMSSIMDLG_H__
+
+//  End of File