diff -r 000000000000 -r e686773b3f54 phonebookui/Phonebook2/Application/inc/CPbk2ViewActivationTransaction.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phonebookui/Phonebook2/Application/inc/CPbk2ViewActivationTransaction.h Tue Feb 02 10:12:17 2010 +0200 @@ -0,0 +1,140 @@ +/* +* Copyright (c) 2005-2007 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: Phonebook 2 view activation transaction. +* +*/ + + +#ifndef CPBK2VIEWACTIVATIONTRANSACTION_H +#define CPBK2VIEWACTIVATIONTRANSACTION_H + +// INCLUDES +#include +#include +#include // TVwsViewId + +// FORWARD DECLARATIONS +class CPbk2ViewNode; +class CAknTitlePane; +class CAknContextPane; +class CEikImage; +class CAknNavigationDecorator; +class CAknTabGroup; +class CPbk2AppUi; +class CPbk2ViewExplorer; +class CAknNavigationControlContainer; + +// CLASS DECLARATION + +/** + * Phonebook 2 view activation transaction. + * Transaction class for updating application-wide state leave-safely + * at a view switch. + */ +class CPbk2ViewActivationTransaction : public CBase, + public MPbk2ViewActivationTransaction + { + public: // Constructors and destructor + + /** + * Creates an instace of this transaction, performs all update + * operations of this transaction and saves rollback data in case + * the transaction is not committed. + * + * @param aAppUi Phonebook 2's application UI. + * @param aViewExplorer Phonebook 2 view explorer. + * @param aViewId Id of the view to be activated. + * @param aPrevViewId Previously active view's id. + * @param aTitlePaneText Text to place into the title pane, + * if NULL default text is used. + * @param aContextPanePicture Picture to place into context pane, + * if NULL default picture is used. + * @param aFlags View actication flags. + * @return A new instance of this class. + */ + static CPbk2ViewActivationTransaction* NewLC( + CPbk2AppUi& aAppUi, + CPbk2ViewExplorer& aViewExplorer, + const TUid& aViewId, + const TVwsViewId& aPrevViewId, + const TDesC* aTitlePaneText, + const CEikImage* aContextPanePicture, + TUint aFlags ); + + /** + * Destructor. Rolls back changes done in NewLC if this transaction + * is not committed. + */ + ~CPbk2ViewActivationTransaction(); + + public: // From MPbk2ViewActivationTransaction + void Commit(); + void RollbackL(); + + private: // Implementation + CPbk2ViewActivationTransaction( + CPbk2AppUi& aAppUi, + CPbk2ViewExplorer& aViewExplorer, + const TUid& aViewId, + const TVwsViewId& aPrevViewId, + TUint aFlags ); + void ConstructL( + const TDesC* aTitlePaneText, + const CEikImage* aContextPanePicture ); + void UpdateViewNavigationState(); + void UpdateNaviPaneL( + TUid aViewId ); + void SetTitlePaneTextL( + const TDesC* aTitlePaneText ); + void SetContextPanePictureL( + const CEikImage* aContextPanePicture ); + CEikImage* CopyImageL( + const CEikImage& aSrc ); + void Rollback(); + + private: // Data + /// Ref: Phonebook 2 Application UI + CPbk2AppUi* iAppUi; + /// Ref: Phonebook 2 view explorer + CPbk2ViewExplorer& iViewExplorer; + /// Own: Activated view's id + TUid iViewId; + /// Own: Deactivated view's id + TVwsViewId iPrevViewId; + /// Own: Flags + TUint iFlags; + /// Ref: Saved previous view node state + CPbk2ViewNode* iSavePreviousViewNode; + /// Ref: Application's title pane + CAknTitlePane* iTitlePane; + /// Own: Saved title pane text + HBufC* iSaveTitlePaneText; + /// Ref: Application's context pane + CAknContextPane* iContextPane; + /// Own: Saved picture from context pane + CEikImage* iSaveContextPanePicture; + /// Ref: Navigation decorator pushed on the navi pane, + /// if NULL nothing was pushed + CAknNavigationDecorator* iPushedNaviDecorator; + /// Ref: Modified tab group + CAknTabGroup* iTabGroup; + /// Own: Saved index of active tab in iTabGroup + TInt iSaveTabIndex; + /// Ref: Navi pane + CAknNavigationControlContainer* iNaviPane; + }; + +#endif // CPBK2VIEWACTIVATIONTRANSACTION_H + +// End of File