phonebookui/Phonebook2/Application/inc/CPbk2ViewActivationTransaction.h
changeset 0 e686773b3f54
--- /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 <e32base.h>
+#include <MPbk2ViewActivationTransaction.h>
+#include <vwsdef.h> // 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