diff -r 000000000000 -r 72b543305e3a mobilemessaging/smum/simdialogplugins/defaultsimdlg/inc/smssimdialog.h --- /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 //CSimDlgPlugin +#include // CEikDialog +#include // TMsvId +#include // CAknDialog +#include // MEikListBoxObserver +#include // CGulIcon +#include // MMsvSingleOpWatcher +#include // CAknWaitDialog + +#include + +// 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 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