phonebookui/Phonebook2/ccapplication/ccacommlauncherplugin/inc/ccappcommlaunchersetdefault.h
changeset 0 e686773b3f54
child 3 04ab22b956c2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookui/Phonebook2/ccapplication/ccacommlauncherplugin/inc/ccappcommlaunchersetdefault.h	Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,237 @@
+/*
+* Copyright (c) 2007-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:  Implementation of comm launcher view plugin
+*
+*/
+
+#ifndef CCAPPCOMMLAUNCHERSETDEFAULT_H_
+#define CCAPPCOMMLAUNCHERSETDEFAULT_H_
+
+#include <e32base.h>
+#include "ccalogger.h"
+#include <mvpbksinglecontactoperationobserver.h>
+#include <mvpbkcontactattributemanager.h>
+#include <mvpbkcontactstoreobserver.h>
+#include <vpbkfieldtype.hrh>
+#include <mvpbkcontactobserver.h>
+#include <rpbk2localizedresourcefile.h>
+#include <mvpbkbatchoperationobserver.h>
+
+class CCCAppCmsContactFetcherWrapper;
+class CPbk2ApplicationServices;
+
+class CCCAppCommLauncherLSetDefault: 
+    public CBase,
+    public MVPbkSingleContactOperationObserver,
+    public MVPbkSetAttributeObserver,
+    public MVPbkContactStoreObserver,
+    public MVPbkContactObserver
+{
+public:
+	/**
+	 * Two phased constructor.
+	 */
+	 static CCCAppCommLauncherLSetDefault* NewL( CCCAppCommLauncherPlugin& aPlugin );
+
+	/**
+	 * Destructor.
+	 */
+	 ~CCCAppCommLauncherLSetDefault();
+	 
+	 void ExecuteAssignDefaultL();
+	 
+public: // From MVPbkSingleContactOperationObserver
+
+    void VPbkSingleContactOperationComplete(
+        MVPbkContactOperationBase& aOperation,
+        MVPbkStoreContact* aContact);
+
+    void VPbkSingleContactOperationFailed(
+        MVPbkContactOperationBase& aOperation,
+        TInt aError);
+    
+private: // From MVPbkSetAttributeObserver
+	
+    void AttributeOperationComplete(
+            MVPbkContactOperationBase& aOperation );
+    void AttributeOperationFailed(
+            MVPbkContactOperationBase& aOperation,
+            TInt aError );
+    
+public: // From MVPbkContactStoreObserver
+
+    void StoreReady(
+        MVPbkContactStore& aContactStore);
+
+    void StoreUnavailable(
+        MVPbkContactStore& aContactStore,
+        TInt aReason);
+
+    void HandleStoreEventL(
+        MVPbkContactStore& aContactStore,
+        TVPbkContactStoreEvent aStoreEvent );
+    
+private: // From MVPbkContactObserver
+    
+	void ContactOperationCompleted(
+            TContactOpResult aResult );
+    
+	void ContactOperationFailed(
+            TContactOp aOpCode,
+            TInt aErrorCode,
+            TBool aErrorNotified );
+	
+private:
+
+    /**
+     * Private constructor
+     */    
+	CCCAppCommLauncherLSetDefault(CCCAppCommLauncherPlugin& aPlugin );
+
+    /**
+     * ConstructL
+     */    
+    void ConstructL();
+    
+private: // New implemetations
+	
+	/* Wait to finish
+     * @param - none
+	 * @return - none
+     */
+	void WaitFinish();
+	
+	/* Stop wait
+	 * @param - none
+	 * @return - none
+	 */
+	void StopWait();
+	
+	/* Lock contact before setting default
+	 * @param - none
+     * @return - none
+	 */
+	void LockContactL();
+	
+	/* Loop through all fields to find if have field for this default type
+	 * @param:aDefaultType - default type
+	 * @return - ETrue if find, EFalse if not find
+	 */
+	TBool FindContactFieldWithAttributeL( TVPbkDefaultType aDefaultType );
+	
+	/* Do set default atrribut
+	 * @param: aDefaultType - default type
+	 * @return: aIndex - the field index which will be set default
+	 */
+	void DoSetDefaultL( TVPbkDefaultType aDefaultType, TInt aIndex );
+	
+	/* Set next
+	 * @param - none
+     * @return - none
+	 */
+	void SetNextL();
+	
+	/* Check if has field for this selector
+	 * @param:aContactAction - contact action
+	 * @param:aIndex - the field index 
+	 * @return - true for have, false for not have
+	 */
+	TBool IsContactActionHasField(
+	        VPbkFieldTypeSelectorFactory::TVPbkContactActionTypeSelector aContactAction, TInt& aIndex);
+	
+	/* Map selector id to default type
+	 * @param:aSelectorID - selector id
+	 * @return - default type
+	 */
+	TVPbkDefaultType MapSelectorIdToDefaultType( 
+			const VPbkFieldTypeSelectorFactory::TVPbkContactActionTypeSelector aSelectorID );
+	
+	/* Get next selector id
+	 * @param - none
+	 * @return - next selector id
+	 */
+	VPbkFieldTypeSelectorFactory::TVPbkContactActionTypeSelector NextAttribute();
+	
+	/* Default setting complete
+	 * @param - none
+	 * @return - none
+	 */
+	void DefaultSettingCompleteL();
+	
+	/* Process finished
+	 * @param:aError - error id
+	 * @return - none
+	 */
+	void ProcessFinished( TInt aError );
+	
+	/* Handle error
+	 * @param:aError - error id
+	 * @return - none
+	 */
+	void HandleError( TInt aError );
+	
+	/* Check if the contact is phone memory contact
+	 * @param:aContact - the contact
+	 * @return - true for phone memory contact, otherwise return false
+	 */
+	TBool IsPhoneMemoryContact(
+	        const MVPbkStoreContact& aContact) const;
+    
+private: // Member variables
+	
+	// Own: array for action id
+	CArrayFixFlat<VPbkFieldTypeSelectorFactory::TVPbkContactActionTypeSelector>* iDefaultActions;
+	
+	// Own: Scheduler wait
+	CActiveSchedulerWait* iWaitFinish;
+	
+	// Own: store contact
+	MVPbkStoreContact* iStoreContact;
+	
+	// Own: retrieve operation
+    MVPbkContactOperationBase* iRetrieveOperation; 
+    
+    // Own: links
+    MVPbkContactLinkArray* iLinks;
+    
+    // Own: attribut operation
+    MVPbkContactOperationBase* iSetAttributeOperation;
+    
+    // Own: contact store
+    MVPbkContactStore* iContactStore;
+    
+    // referenct to plugin
+    CCCAppCommLauncherPlugin& iPlugin;
+    
+    // wrapper
+    CCCAppCmsContactFetcherWrapper* iCmsWrapper;
+    
+    // link array des
+    HBufC8* iContactLinkArrayDes;
+    
+    // Application service
+    CPbk2ApplicationServices* iAppServices;
+    
+    /// Own: Phonebook 2 commands dll resource file
+    RPbk2LocalizedResourceFile iCommandsResourceFile;
+
+    /// Own: Phonebook 2 UI controls dll resource file
+    RPbk2LocalizedResourceFile iUiControlsResourceFile;
+
+    /// Own: Phonebook 2 common UI dll resource file
+    RPbk2LocalizedResourceFile iCommonUiResourceFile;
+       
+    };
+
+#endif /* CCAPPCOMMLAUNCHERSETDEFAULT_H_ */