diff -r ebe688cedc25 -r 7fdbb852d323 email/imum/Utils/Inc/IMSFolderSubscription.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/email/imum/Utils/Inc/IMSFolderSubscription.h Wed Sep 01 12:31:54 2010 +0100 @@ -0,0 +1,334 @@ +/* +* Copyright (c) 2006 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: +* folder subscription dialog +* +*/ + + +#if !defined(__IMSFOLDERSUBSCRIPTION_H__) +#define __IMSFOLDERSUBSCRIPTION_H__ + +// INCLUDES +#include +#include +#include // CAknDialog +#include +#include // CGulIcon +#include +#include "IMSSoftkeyControl.h" +#include "IMSFolderListArray.h" + +//enumeration for folder icon indexes. +enum TImumFolderIconIndexes + { + EImumFolderSingleUnsubbed = 0, + EImumFolderSingleSubbed, + EImumFolderSingleSubbedNew, + EImumFolderSubfoldersUnsubbed, + EImumFolderSubfoldersSubbed, + EImumFolderSubfoldersSubbedNew, + EImumFolderUnsubbedNew, + EImumFolderSubfoldersUnsubbedNew, + }; + +class CMtmStore; +class CBaseMtmUiData; +class CBaseMtmUi; +class CAknWaitDialog; +class CMuiuFlags; +class CImumInternalApiImpl; +class MImumInMailboxUtilities; + +class CAknNavigationControlContainer; +class CAknNavigationDecorator; + +/** +* CImapSubscriptionDialog +* Folder subscription dialog class +*/ +class CImapSubscriptionDialog : + public CAknDialog, + public MEikListBoxObserver, + public MMsvSessionObserver + { + public: + + /** + * NewL() + * @param CMuiuFlags&, flags + * @param TMsvId, folder id + * @param TMsvId, mailbox id + * @param TBool&, login info changed (in/out) + * @param const TDesC8&, user name + * @param const TDesC8&, password + * @param CMsvSession& session reference + * @return CImapSubscriptionDialog* + */ + static CImapSubscriptionDialog* NewL( + CMuiuFlags& aFlags, + TMsvId aServiceId, + TMsvId aMailboxId, + TBool& aLoginChanged, + const TDesC8& aUserName, + const TDesC8& aPassword, + CImumInternalApiImpl& aMailboxApi ); + + ~CImapSubscriptionDialog(); + + + /** + * From MMsvSessionObserver + * HandleSessionEventL + * @param TMsvSessionEvent, event id + * @param TAny* + * @param TAny* + * @param TAny* + */ + virtual void HandleSessionEventL( + TMsvSessionEvent aEvent, + TAny* aArg1, + TAny* aArg2, + TAny* aArg3 ); + + /** + * SynchroniseFoldersL() + */ + void SynchroniseFoldersL(); + + /** + * DisplayFinalProgressDialog() + * To deal with final progress from suboperations + * @param CMsvOperation& + */ + void DisplayFinalProgressDialog( + CMsvOperation& aCompletedOperation) const; + + /** + * from CCoeControl + * OfferKeyEventL() + * @param TKeyEvent&, key event + * @param TEventCode + * @return TKeyResponse + */ + TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType); + + + /** + * From CAknDialog + * DynInitMenuPaneL() + * @param TInt, resource id + * @param CEikMenuPane* + */ + virtual void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane ) ; + + /** + * From CAknDialog + * ProcessCommandL() + * @param TInt, command id + */ + virtual void ProcessCommandL( TInt aCommandId ); + + /** + * from CCoeControl + * ActivateL() + */ + virtual void ActivateL(); + + protected: + + /** + * From MEikListBoxObserver + * @param CEikListBox* + * @param TListBoxEvent + */ + virtual void HandleListBoxEventL( + CEikListBox* aListBox, + TListBoxEvent aEventType ); + + /** + * HandleSubscriptionL() + * @param TInt type of subscription, either subscribed or unsubscribed + * @param CMsvEntrySelection&, selection to subscribe + */ + void HandleSubscriptionL( TInt aSubType, CMsvEntrySelection& aSelection ); + + /** + * CheckAreAllFoldersIncludedL() + * Checks if all subfolders are either subscribed of unsubscribed + * @param TInt, type of subscription, either subscribed or unsubscribed + * @param CMsvEntrySelection*, selection to check + * @return TBool, ETrue if all subfolders have same subscription state + */ + TBool CheckAreAllFoldersIncludedL( TInt aSubType, CMsvEntrySelection* sel ); + + private: + + /** + * PreLayoutDynInitL() + */ + virtual void PreLayoutDynInitL(); + + /** + * PostLayoutDynInitL() + */ + virtual void PostLayoutDynInitL(); + + /** + * OkToExitL() + * @param TInt + * @return TBool + */ + virtual TBool OkToExitL(TInt aButtonId); + + /** + * C++ constructor + * @param CMuiuFlags&, flags + * @param TMsvId, folder id + * @param TMsvId, mailbox id + * @param TBool&, login info changed (in/out) + * @param const TDesC8&, user name + * @param const TDesC8&, password + * @param CMsvSession& session reference + */ + CImapSubscriptionDialog( + CMuiuFlags& aFlags, + TMsvId aServiceId, + TMsvId aMailboxId, + TBool& aLoginChanged, + const TDesC8& aUserName, + const TDesC8& aPassword, + CImumInternalApiImpl& aMailboxApi ); + + /** + * ConstructL() + */ + void ConstructL(); + + /** + * CreateOperationL() + * @param TInt, button id + */ + void CreateOperationL(TInt aButtonId); + + /** + * ContextHasChildFolders() + * @return TBool, ETrue if has children + */ + TBool ContextHasChildFolders() const; + + /** + * GetMtmUiL() + */ + void GetMtmUiL(); + + + /** + * AppendIconsL() + * Appends icons to icon array + * @param TFileName&: Bitmap filename with path + * @param CArrayPtrFlat*: icon array where bitmap is append + */ + void AppendIconsL( + TFileName& aFileName, + CArrayPtrFlat* aIcons); + + /** + * CurrentFolderL() + * @return TMsvId, id of current folder + */ + TMsvId CurrentFolderL(); + + /** + * HandleRefreshL + */ + void HandleRefreshL(); + + /** + * LaunchHelpL() + * Launches help + */ + void LaunchHelpL(); + + /** + * Gets the text resource for MSK, based on the selected item + * @since S60 3.1 + * @return Text resource + */ + TInt GetResourceForMiddlekeyL(); + + /** + * Refresh folder list array and change listbox to root view + * @since S60 3.2 + */ + void RefreshFolderListL(); + + /** + * Set Folder Back to Folder where user was before refresh + * @since S60 3.2 + */ + void SetBackToOldFolderL(); + + /** + * Save login information into database + * @since S60 3.2 + */ + void SetLoginInformationL(); + + /** + * Set middle softkey label + * @since S60 3.2 + */ + void SetMskL(); + + + /** + * Set folder depth for the navi pane icons + * @since S60 5.0 + */ + void SetFolderDepthL( TInt aDepth ); + + private: + + CImumInternalApiImpl& iMailboxApi; + CMuiuFlags& iFlags; + TMsvId iServiceId; + TMsvId iMailboxId; + TBool& iLoginChanged; + const TDesC8& iUserName; + const TDesC8& iPassword; + + TBool iLoginSaved; + CMtmStore* iMtmStore; + CBaseMtmUiData* iMtmUiData; + CBaseMtmUi* iMtmUi; + CMsvEntry* iContextEntry; + CImapFolderListArray* iFolderListArray; + CIMSSoftkeyControl* iSoftkeys; + TMsvId iOpenedFolderId; + TInt iPreviousSubscriptionRID; + TInt iPreviousFolderOpenRID; + MImumInMailboxUtilities* iUtils; + RArray< TMsvId > iFolderIdArray; + + // depth of the folder structure + // used for drawing the folder icons to navipane + TInt iDepth; + // pointer to navipane + CAknNavigationControlContainer* iNaviPane; + // pointer to navi pane decorator + CAknNavigationDecorator* iFolderIndicator; + }; + +#endif // __IMSFOLDERSUBSCRIPTION_H__