/** Copyright (c) 2004 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: * MMS MMBox dialog defenitions.**/#ifndef __MMBOXDLG_H__#define __MMBOXDLG_H__#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 <MsvPrgReporter.h> // MMsvProgressDecoder#include <AknWaitDialog.h> // CAknWaitDialog#include <bldvariant.hrh>#include "MMBoxArray.h"// FORWARD DECLARATIONSclass CEikColumnListBox;class CAknNavigationControlContainer;class CAknNavigationDecorator;class CNotMtmUi;class CNotMtmUiData;class CMmsNotificationClientMtm;class CClientMtmRegistry;class CMsvSession;class CCoeEnv;class CAknWaitDialog;class CAknProgressDialog;class TMsvSelectionOrdering;const TInt KMMBoxMarkReplacementStringLength = 2;enum TMMBoxDialogFlags { EHelpSupported = 1, // Set when help menu option should be visible ESortTypeChanged = 2, // Set if sort type has been changed during dialog lifetime EDoNotDeleteOpen = 4 // Set if user has pressed arrow keys in NotViewer };// CLASS DEFINITIONS/*** CMMBoxDialog* Dialog class to display MMBox View*/class CMMBoxDialog : public CAknDialog, public MEikListBoxObserver, public MMsvSingleOpWatcher, public MMsvProgressDecoder, public MMsvSessionObserver { public: /** * C++ constructor */ CMMBoxDialog( CNotMtmUi& aUi, CNotMtmUiData& aUiData, CMsvSession& aSession, TInt& aExitCode ); /** * Destructor */ ~CMMBoxDialog(); /** * Two phase constructor * @param aUi: reference to not mtm ui object * @param aUiData: reference to not mtm ui data object * @param aSession: reference to message server session * @return object of CMMBoxDialog */ static CMMBoxDialog* NewL( CNotMtmUi& aUi, CNotMtmUiData& aUiData, CMsvSession& aSession, TInt& aExitCode ); /** * from CEikDialog * Creates scrollbarframe. * Sets the listbox. * Sets the navipane text. * Calls UpdateMMBoxArrayL. */ void PreLayoutDynInitL(); /** * from CEikDialog * Check if quota info is available. * Asks user if (s)he wants the info to be updated. */ void PostLayoutDynInitL(); /** * from CEikDialog * If CEikDialog thinks it's ok to exit, calls * RestoreTitleTextAndNavipaneL to set the title and returns ETrue. */ 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 CCoeControl, returns help context */ void GetHelpContext(TCoeHelpContext& aContext) const; /** * from MProgressDecoder */ virtual TInt DecodeProgress ( const TDesC8& aProgress, TBuf<CBaseMtmUi::EProgressStringMaxLen>& aReturnString, TInt& aTotalEntryCount, TInt& aEntriesDone, TInt& aCurrentEntrySize, TInt& aCurrentBytesTrans, TBool aInternal ); /** * from MMsvSessionObserver */ virtual void HandleSessionEventL(TMsvSessionEvent aEvent, TAny* aArg1, TAny* aArg2, TAny* aArg3); protected: /** * From MEikListBoxObserver */ virtual void HandleListBoxEventL( CEikListBox* aListBox, TListBoxEvent aEventType ); private: /** * Symbian OS constructor * Creates a message array. * Asks things from Feature Manager. * Gets a pointer to navipane. */ void ConstructL(); /** * Returns object of list box * @return pointer to list box object. */ CEikColumnListBox* ListBox() const; /** * Appends icon to icon array * @param aFileName: Bitmap filename with path * @param aIconIndex: index of the bitmap to be read * @param aIcons: icon array where bitmap is append */ void AppendSkinnedIconL( TFileName& aFileName, TInt aIconIndex, CArrayPtrFlat<CGulIcon>* aIcons); /** * Updates iMessages array */ void UpdateMMBoxArrayL(); /** * Updates navipane with the latest update date */ void UpdateNavipaneL(); /** * Stores current title pane text and replaces it with new one (qtn_mce_title_mms_notifs_view) */ void StoreTitleTextAndNavipaneAndSetNewL(); /** * Restores title pane text with the text stored in * StoreTitleTextAndSetNewL. */ void RestoreTitleTextAndNavipaneL(); /** * Called by OpCompleted after operation is completed. * If open op was completed and next/prev was chosen in Notviewer, * this function calls HandleOpenNextPreviousL(). * If update or Delete operations were completed, calls * UpdateMMBoxArrayL. * Returns ETrue if we should try to exit from MMBoxDialog after this function. * @param aOperation: pointer to operation which is completed. * @param aCompletionCode: Same as in OpCompleted. * @return ETrue if TryToExitL is called. That can happen * if exit is called during Open operation and dialog is dismissed. */ TBool DoOperationCompletedL( CMsvOperation* aOperation, TInt aCompletionCode ); /** * Launches help application */ void LaunchHelpL(); /** * Sorts the messages again. If aType is the same as the current * sorting, the sorting is reserved. * @param aType the type of the sorting */ void SortMessagesByL( TMMBoxSortType aType ); /** * Opens the currently focused item in Notification Viewer * */ void OpenNotificationL( ); /** * Starts fetching messages. * @param aAll - If ETrue, fetches all, if EFalse, fetches selection */ void FetchL( TBool aAll=EFalse ); /** * Deletes messages. * @param aAll - If ETrue, deletes all, if EFalse, deletes selection */ void DeleteL( TBool aAll=EFalse ); /** * Returns selection of entries * @param aAll - If ETrue, returns all, if EFalse, returns selected * if none are selected -> returns just the current one */ CMsvEntrySelection* SelectionL( TBool aAll=EFalse ); /** * Creates and shows the status info dialog. */ void ShowStatusL( ); /** * Creates an instance of Progress Reporter and calls Notification * Client MTM's UpdateMmBoxListL function to start the update process */ void UpdateListL( ); /** * Creates and shows an information note with text string aResourceId */ void ShowInformationNoteL( TInt aResourceID, TBool aWaiting ); /** * Creates and shows a confirmation query. * First loads the string aResourceId from the resource file. * Then calls the other ShowConfirmationQuery to show the query. */ TInt ShowConfirmationQueryL( TInt aResourceId, TBool aOnlyOK=EFalse ) const; /** * Creates and shows a confirmation query. * First loads the string aResourceId adding numbers into place holders. * Then calls the other ShowConfirmationQuery to show the query. * @param aCount - count of objects for which something happend * @param aTotalOnes - count of total objects * @param aResource - string resource to be shown * @return Returns the value returned by the dialog. */ TInt ShowConfirmationQueryL( TInt aCount, TInt aTotalOnes, TInt aResource ); /** * Creates and shows a confirmation query. * Creates a query dialog with text aText. If aOnlyOK is true, the softkeys * are OK-Empty. Otherwise they are Yes-No. * Returns the value returned by the dialog. */ TInt ShowConfirmationQueryL( const TDesC& aText, TBool aOnlyOK=EFalse ) const; /** * Opens next or previous message ie. sets the current context to next/prev * notification and calls OpenNotificationL function. */ void HandleOpenNextPreviousL( TBool aOpenNext = ETrue ); /** * Shows wait note using CAknWaitDialog. * @param aNoteTxtResourceId * @param aVisibilityDelayOff, ETrue show note immediately, * EFalse after 1.5 sec */ void ShowWaitNoteLC( TInt aNoteTxtResourceId, TBool aVisibilityDelayOff); /** * Construct and prepares wait note using CAknWaitDialog. * This is called from ShowWaitNoteLC variants. * @param aVisibilityDelayOff, ETrue show note immediately, * EFalse after 1.5 sec */ void ConstructWaitNoteLC( TBool aVisibilityDelayOff ); /** * TCleanupItem to clean wait or progress dialogs if leave happens after * dialog creation. * @param aAny: pointer to dialog pointer. */ static void CleanupWaitDialog(TAny* aAny); void ShowWaitNoteL( TInt aNoteTxtResourceId, TBool aVisibilityDelayOff); /** * Sets MSK if necessary. */ void SetMSKL(); private: CMMBoxArray* iMessages; CNotMtmUi& iUi; CNotMtmUiData& iUiData; CMmsNotificationClientMtm* iClientMtm; CClientMtmRegistry* iMtmReg; CMsvSession& iSession; CAknNavigationControlContainer* iNaviPane; //not owned CAknNavigationDecorator* iNaviDecorator; // CAknNavigationDecorator* iNaviOld; HBufC* iOldTitleText; TMsvId iMMBoxFolderId; TBuf<KMMBoxMarkReplacementStringLength> iMarkReplacementText; CMsvSingleOpWatcher* iDeleteOperation; CMsvSingleOpWatcher* iOpenOperation; CMsvSingleOpWatcherArray iFetchOperations; CMsvSingleOpWatcher* iUpdateOperation; CMsvEntrySelection* iDeleteSelection; CAknWaitDialog* iWaitDialog; TInt& iExitCode; TInt iFlags; TMsvSelectionOrdering iOriginalOrder; };#endif // __MMBOXDLG_H__// End of File