phonebookui/Phonebook2/NamesListExtension/inc/CPbk2NlxAddToTopContactsCmd.h
branchRCL_3
changeset 63 f4a778e096c2
child 64 c1e8ba0c2b16
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookui/Phonebook2/NamesListExtension/inc/CPbk2NlxAddToTopContactsCmd.h	Wed Sep 01 12:29:52 2010 +0100
@@ -0,0 +1,213 @@
+/*
+* 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 CCA launcher command
+*
+*/
+
+
+#ifndef CPBK2NLXADDTOTOPCONTACTSCMD_H
+#define CPBK2NLXADDTOTOPCONTACTSCMD_H
+
+// INCLUDES
+#include <e32base.h>
+#include <MPbk2Command.h>
+#include <MVPbkOperationObserver.h>
+#include "MPbk2ContactRelocatorObserver.h"
+#include <MPbk2FetchDlgObserver.h>
+#include <MVPbkContactViewObserver.h>
+#include <MVPbkContactSelector.h>
+#include <MPbk2ProcessDecorator.h>
+
+#include "CPbk2DelayedWaitNote.h"
+
+// FORWARD DECLARATIONS
+class MPbk2ContactUiControl;
+class MVPbkContactOperationBase;
+class CVPbkTopContactManager;
+class CPbk2ContactRelocator;
+class MPbk2ContactLinkIterator;
+class CVPbkContactLinkArray;
+class CVPbkContactManager;
+class MPbk2DialogEliminator;
+class CVPbkContactStoreUriArray;
+
+
+
+
+// CLASS DECLARATION
+/**
+ * Phonebook 2 add to top contacts command object.
+ */
+class CPbk2NlxAddToTopContactsCmd : 
+    public CActive,
+    public MPbk2Command,
+    private MVPbkOperationObserver,
+    private MVPbkOperationErrorObserver,
+    private MPbk2ContactRelocatorObserver,
+    private MPbk2FetchDlgObserver,
+    private MVPbkContactViewObserver,
+    private MVPbkContactSelector,
+    private MPbk2ProcessDecoratorObserver
+    {
+    public: // Construction and destruction
+
+        /**
+         * Creates a new instance of this class.
+         *
+         * @param aUiControl The UI control.
+         * @param aAddFavourites ETrue if the "Add favourites" feature
+         *      is to be executed.
+         * 
+         * @return  A new instance of this class.
+         */
+        static CPbk2NlxAddToTopContactsCmd* NewL( 
+            MPbk2ContactUiControl& aUiControl,
+            TBool aAddFavourites );
+
+        /**
+         * Destructor.
+         */
+        ~CPbk2NlxAddToTopContactsCmd();
+
+    private: //From MPbk2ContactRelocatorObserver
+    	void ContactRelocatedL(	MVPbkStoreContact* aRelocatedContact );
+    	void ContactRelocationFailed(
+	        TInt aReason,
+	        MVPbkStoreContact* aContact );
+    	void ContactsRelocationFailed(
+	        TInt aReason,
+	        CVPbkContactLinkArray* aContacts );
+    	void RelocationProcessComplete();
+        
+    private: //From MVPbkOperationObserver
+	    void VPbkOperationCompleted( MVPbkContactOperationBase* aOperation );
+    private: //From MVPbkOperationErrorObserver	    
+	    void VPbkOperationFailed(
+	            MVPbkContactOperationBase* aOperation,
+	            TInt aError );
+
+    private: //From MPbk2Command
+        void ExecuteLD();
+        void ResetUiControl( MPbk2ContactUiControl& aUiControl );
+        void AddObserver( MPbk2CommandObserver& aObserver );
+
+    private: // From MVPbkContactViewObserver
+        void ContactViewReady(
+                MVPbkContactViewBase& aView );
+        void ContactViewUnavailable(
+                MVPbkContactViewBase& aView );
+        void ContactAddedToView(
+                MVPbkContactViewBase& aView, 
+                TInt aIndex, 
+                const MVPbkContactLink& aContactLink );
+        void ContactRemovedFromView(
+                MVPbkContactViewBase& aView, 
+                TInt aIndex, 
+                const MVPbkContactLink& aContactLink );
+        void ContactViewError(
+                MVPbkContactViewBase& aView, 
+                TInt aError, 
+                TBool aErrorNotified );
+
+    private: // From MVPbkContactSelector
+        TBool IsContactIncluded(
+                const MVPbkBaseContact& aContact );
+        
+    private: // From MPbk2ProcessDecoratorObserver
+        void ProcessDismissed(
+                TInt aCancelCode );        
+        
+    private: //Construction
+        CPbk2NlxAddToTopContactsCmd( 
+            MPbk2ContactUiControl& aUiControl,
+            TBool aAddFavourites );
+        void ConstructL();
+        
+    private://From CActive
+        void RunL();
+        TInt RunError(TInt aError);
+        void DoCancel();
+
+    private: // From MPbk2FetchDlgObserver
+        MPbk2FetchDlgObserver::TPbk2FetchAcceptSelection AcceptFetchSelectionL(
+            TInt aNumMarkedEntries,
+            MVPbkContactLink& aLastSelection );
+        void FetchCompletedL(
+            MVPbkContactLinkArray* aMarkedEntries );
+        void FetchCanceled();
+        void FetchAborted();
+        TBool FetchOkToExit();
+
+    private: // Implementation        
+		enum TPhase 
+		    {
+		    EPhaseNone,
+		    EGetSelectionWithFetchUi,
+		    ERelocate,
+		    ESetAsTopContact,
+		    EFinish
+			};
+			
+		void GetSelectionWithFetchUiL();
+		void GetUiControlSelectionL();
+    	void StartSimContactsRelocationL();
+        void Finish( TInt aReason );
+        void StartNext( TPhase aPhase );
+        void StartNext();
+        void CleanAfterFetching();
+        TInt CountSimContacts() const;
+        CVPbkContactLinkArray* CreateSimContactsArrayLC() const;
+        void ReplaceSimContactsL();
+        void ShowDelayedWaitNoteL();
+
+    private: // Data
+        
+    	TPhase iNextPhase;
+        /// Ref
+        MPbk2CommandObserver* iCommandObserver;
+        /// Ref
+        MPbk2ContactUiControl *iUiControl;
+        /// Whether in "Add favourites" mode.
+        TBool iAddFavourites;
+        ///Own:         
+        CVPbkTopContactManager* iVPbkTopContactManager;
+        ///Own
+        CPbk2ContactRelocator* iContactRelocator;
+        ///Own: Top contact operation
+        MVPbkContactOperationBase* iContactOperation;
+        /// Own
+        MPbk2ContactLinkIterator* iContactIterator;
+        /// Own: contacts from fetch or ui controls
+        CVPbkContactLinkArray* iMarkedEntries;
+        /// Own: relocated sim contacts
+        CVPbkContactLinkArray* iRelocatedContacts;
+        /// Ref
+        CVPbkContactManager* iContactManager;
+        /// Own: group view without empty groups
+        MVPbkContactViewBase* iNonEmptyGroupsView;
+        /// Own: all contacts view sans read-only stores
+        //      Not constructed if current store configuration doesn't include
+        //      read-only stores
+        MVPbkContactViewBase* iAllContactsView;
+        /// Own: reference to the fetch dlg, to insure is deleted
+        MPbk2DialogEliminator* iFetchDlgEliminator;
+        /// Own: Store uris used for the fetch dlg
+        CVPbkContactStoreUriArray* iStoreUris;
+        /// Own: Decorator for the delayed wait note process
+        CPbk2DelayedWaitNote* iDelayedWaitNote;
+    };
+
+#endif // CPBK2NLXADDTOTOPCONTACTSCMD_H
+
+// End of File