phonebookui/Phonebook2/ccapplication/ccacommlauncherplugin/inc/ccappcommlauncherplugin.h
changeset 0 e686773b3f54
child 3 04ab22b956c2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookui/Phonebook2/ccapplication/ccacommlauncherplugin/inc/ccappcommlauncherplugin.h	Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,303 @@
+/*
+* 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 C_CCAPPCOMMLAUNCHERPLUGIN_H
+#define C_CCAPPCOMMLAUNCHERPLUGIN_H
+
+#include <mccacontactobserver.h>
+
+#include "ccappcommlauncherheaders.h"
+#include <mccappviewpluginbase2.h>
+
+class CCCAppCommLauncherContactHandler;
+class CCCAppCommLauncherMenuHandler;
+class CCAContactorService;
+class CCCAppCommLauncherLSetDefault;
+
+/**
+ *  Class implementing CCCAppViewPluginBase interface. This is
+ *  the main class and controlling the other classes of the plugin.
+ *
+ *  @code
+ *   ?good_class_usage_example(s)
+ *  @endcode
+ *
+ *  @lib ccappcommlauncherplugin.dll
+ *  @since S60 v3.2
+ */
+class CCCAppCommLauncherPlugin :
+    public CCCAppViewPluginBase,
+    public MCCAppPluginsContactObserver,
+    public MCCAppViewPluginBase2
+    {
+#ifdef __COMMLAUNCHERPLUGINUNITTESTMODE
+    friend class T_CCCAppCommLauncherPlugin;
+#endif// __COMMLAUNCHERPLUGINUNITTESTMODE
+
+public:
+
+    /**
+     * Two-phased constructor.
+     */
+    static CCCAppCommLauncherPlugin* NewL();
+
+    /**
+     * Destructor.
+     */
+    ~CCCAppCommLauncherPlugin();
+
+public: //From MCCAppPluginsContactObserver
+
+    void NotifyPluginOfContactEventL();
+
+public:
+
+// from base class CCCAppViewPluginBase
+
+    /**
+     * From CCCAppViewPluginBase
+     */
+    void PreparePluginViewL(
+        MCCAppPluginParameter& aPluginParameter );
+
+    /**
+     * From CCCAppViewPluginBase
+     * NEW API
+     */
+    void ProvideBitmapL(
+        TCCAppIconType aIconType,
+        CAknIcon& aIcon );
+
+    /**
+     * From CCCAppViewPluginBase
+     */
+    TAny* CCCAppViewPluginBaseExtension( TUid aExtensionUid );
+
+// from base class CAknView
+
+    /**
+     * From CAknView
+     */
+    void DynInitMenuPaneL(
+        TInt aResourceId,
+        CEikMenuPane* aMenuPane );
+
+    /**
+     * From CAknView
+     */
+    void HandleCommandL(
+        TInt aCommand );
+
+    /**
+     * From CAknView
+     */
+    void DoActivateL(
+        const TVwsViewId& aPrevViewId,
+        TUid aCustomMessageId,
+        const TDesC8& aCustomMessage );
+
+    /**
+     * From CAknView
+     */
+    void DoDeactivate();
+
+    /**
+     * From CAknView
+     */
+    TUid Id() const;
+
+// from base class CCCAppViewPluginAknView
+
+    /**
+     * From CCCAppViewPluginAknView
+     */
+    void PrepareViewResourcesL();
+
+    /**
+     * From CCCAppViewPluginAknView
+     */
+    void NewContainerL();
+    
+public: //From MCCAppViewPluginBase2
+    
+    TBool PluginBusy();
+
+public:
+
+    /**
+     * Returns a pointer to preferred comm methods
+     *
+     * @since S60 v5.0
+     * @return pointer to preferred comm method array
+     */
+    RArray<VPbkFieldTypeSelectorFactory::TVPbkContactActionTypeSelector>&
+        PreferredCommMethods();
+
+   /**
+     * Classes enumerated, see ErrorNotifierL() below
+     *
+     * @since S60 v5.0
+     */
+    enum TCCAppCommLauncherPluginErrorSource
+        {
+        ECCAppCommLauncherContactHandler = 1
+        };
+
+   /**
+     * Error handler for errors coming from differen classes
+     *
+     * @since S60 v5.0
+     */
+    void ErrorNotifierL(
+        TCCAppCommLauncherPluginErrorSource aErrorSource,
+        TInt aError );
+
+    /**
+     * For getting information if the contact is Top Contact
+     *
+     * @since S60 v5.0
+     * @return TBool
+     */
+    TBool IsTopContactL();
+
+    /**
+     * For getting information if the contact is from the contacts db
+     *
+     * @since S60 v5.0
+     * @return TBool
+     */
+    TBool IsContactL();
+
+    /**
+     * For getting reference to container-class
+     *
+     * @since S60 v5.0
+     * @return reference to container-class
+     */
+    CCCAppCommLauncherContainer& Container();
+
+    /**
+     * For getting reference to contacthandler-class
+     *
+     * @since S60 v5.0
+     * @return reference to contacthandler-class
+     */
+    CCCAppCommLauncherContactHandler& ContactHandler();
+
+    /**
+     * Helper function for get the reference
+     * to container data.
+     *
+     * return container
+     */
+    CCCAppViewPluginAknContainer& GetContainer()
+    {
+        return *iContainer;
+    }
+
+    /**
+     * Return pointer to contactor service.
+     */
+    CCAContactorService* ContactorService();
+    
+    void DefaultSettingComplete();
+
+private: // new
+
+    /**
+     * Initialises the preferred communication methods array.
+     *
+     * @since S60 v5.0
+     */
+    void InitialisePreferredCommMethods();
+
+    /**
+     * Loads preferred communication methods array from CenRep.
+     *
+     * @since S60 v5.0
+     */
+    void LoadPreferredCommMethodsL();
+
+    /**
+     * Creates menuhandler if not created already.
+     *
+     * @since S60 v5.0
+     */
+    void EnsureMenuHandlerCreatedL();
+
+private: // constructors
+
+    CCCAppCommLauncherPlugin();
+    void ConstructL();
+
+public:
+    /*
+     * Sets the title to the plugin
+     * @param aTitle - title to be set
+     */
+    void SetTitleL( const TDesC& aTitle );
+
+    /**
+     * Sets the CBA labels.
+     * @param aEditable Boolean that tells if contact has communication
+     * methods or not.
+     */
+    void UpdateMSKinCbaL( TBool aCommMethodsAvailable );
+
+private:// data
+
+    /**
+     * Pointer to contact data fetcher.
+     * Own.
+     */
+    CCCAppCommLauncherContactHandler* iContactHandler;
+    
+    CCCAppCommLauncherLSetDefault* iSetDefault;
+
+    /**
+     * Pointer to preferred communication methods.
+     * In case of deactivation, this is not deleted for making the new opening faster.
+     * Own.
+     */
+    RArray<VPbkFieldTypeSelectorFactory::TVPbkContactActionTypeSelector>
+        iPreferredCommMethods;
+
+    /**
+     * Pointer to commlauncher's menuhandler
+     * Own.
+     */
+    CCCAppCommLauncherMenuHandler* iMenuHandler;
+
+    /**
+     * Flag if contact must be refetched.
+     */
+    TBool iRefetchContact;
+
+    /**
+     * Pointer to contactor service.
+     * Own.
+     */
+    CCAContactorService* iContactorService;
+    
+    CActiveSchedulerWait* iWaitFinish;
+
+    };
+
+#endif // C_CCAPPCOMMLAUNCHERPLUGIN_H
+
+// End of File