emailcontacts/contactactionservice/inc/cfsccontactactionplugin.h
changeset 0 8466d47a6819
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/emailcontacts/contactactionservice/inc/cfsccontactactionplugin.h	Thu Dec 17 08:39:21 2009 +0200
@@ -0,0 +1,144 @@
+/*
+* Copyright (c) 2008 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:  Declaration of class CFscContactActionPlugin.
+*
+*/
+
+
+#ifndef C_FSCCONTACTACTIONPLUGIN_H
+#define C_FSCCONTACTACTIONPLUGIN_H
+
+#include <e32base.h>
+
+//<cmail>
+#include "fsccontactactionservicedefines.h"
+#include "tfsccontactactionpluginparams.h"
+
+// FORWARD DECLARATIONS
+class MFscContactAction;
+class MFscContactSet;
+class MFscContactActionPluginObserver;
+
+/**
+ *  Contact Action Plugin API.
+ *  Defines an ECom interface for Contact Action Plugins.
+ *
+ *  @since S60 3.1
+ */
+class CFscContactActionPlugin : public CBase
+    {
+
+public: // Public constructor and destructor
+
+    /**
+     * Two-phased constructor.
+     *
+     * @param aPluginUid Implementation uid of plugin to be created
+     * @return New instance of CFscContactActionPlugin
+     */
+    static inline CFscContactActionPlugin* NewL( 
+        TUid aPluginUid,
+        TFscContactActionPluginParams& aParams );
+
+    /**
+    * Destructor.
+    */
+    virtual ~CFscContactActionPlugin();
+    
+public: // Public pure virtual methods
+
+    /**
+     * Implementation Uid
+     *
+     * @return Implementation Uid of the plugin
+     */
+    virtual TUid Uid() const = 0;
+
+    /**
+     * Action List
+     *
+     * @return a const pointer to a array contaning uids of implemented actions
+     */
+    virtual const CArrayFix<TUid>* ActionList() const = 0;
+
+    /**
+     * Get Action
+     *   Method returns a reference to requested action or 
+     *   leaves with KErrNotFound error code if action is not found.
+     *
+     * @param aActionUid Action uid
+     * @return Reference to requested action. 
+     */
+    virtual const MFscContactAction& GetActionL( 
+        TUid aActionUid ) const = 0;
+    
+    /**
+     * Method for quering action's priority and visibility in current context with given contacts
+     *
+     * @param aActionUid Action uid
+     * @param aContactSet Target contact set
+     * @param aGroupList List containing target groups and their contacts
+     * @param aActionMenuVisibility Action's visibility in action menu. 
+     *   Visibility information is updated by the method.
+     * @param aOptionsMenuVisibility Action's visibility in options menu
+     *   Visibility information is updated by the method.
+     * @return Priority of the action
+     */
+    virtual void PriorityForContactSetL( 
+        TUid aActionUid,
+        MFscContactSet& aContactSet,
+        TFscContactActionVisibility& aActionMenuVisibility,
+        TFscContactActionVisibility& aOptionsMenuVisibility,
+        MFscContactActionPluginObserver* aObserver ) = 0;
+    
+    /**
+     * Cancels async method PriorityForContactSetL.
+     */
+    virtual void CancelPriorityForContactSet() = 0;
+    
+    /**
+     * Execute action. Asynchronous method.
+     *
+     * @param aActionUid Action uid of the action to be executed.
+     * @param aContactSet Target contact set.
+     * @param aObserver operation observer.
+     */
+    virtual void ExecuteL( 
+        TUid aActionUid,
+        MFscContactSet& aContactSet,
+        MFscContactActionPluginObserver* aObserver ) = 0;
+    
+    /**
+     * Cancels async method ExecuteL.
+     */
+    virtual void CancelExecute() = 0;
+                              
+protected: // protected data
+    
+private: // data
+
+    /** iDtor_ID_Key Instance identifier key. When instance of an
+     *               implementation is created by ECOM framework, the
+     *               framework will assign UID for it. The UID is used in
+     *               destructor to notify framework that this instance is
+     *               being destroyed and resources can be released.
+     */
+    TUid iDtor_ID_Key;
+
+    };
+
+#include "cfsccontactactionplugin.inl"
+//</cmail>
+
+#endif // C_FSCCONTACTACTIONPLUGIN_H