idlefw/plugins/mcsplugin/publisher/inc/mcsplugindata.h
changeset 0 79c6a41cd166
child 11 bd874ee5e5e2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlefw/plugins/mcsplugin/publisher/inc/mcsplugindata.h	Thu Dec 17 08:54:17 2009 +0200
@@ -0,0 +1,208 @@
+/*
+* Copyright (c) 2009 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:  Plug-in data class
+*
+*/
+
+
+#ifndef CMCSPLUGINDATA_H
+#define CMCSPLUGINDATA_H
+
+// INCLUDE FILES
+#include <e32base.h>
+#include <badesca.h>
+#include <mhomescreensettingsobserver.h>
+#include <hspluginsettings.h>
+#include <propertymap.h>
+
+class TMenuItem;
+class CMCSPluginEngine;
+class CMCSPluginWatcher;
+
+
+/**
+ *  @ingroup group_mcsplugin
+ *
+ *  TMCData class
+ *
+ *  @since S60 v9.1
+ */
+class TMCSData
+    {
+public:
+    /**
+     * SetMenuItem
+     * 
+     * @param aMenuItem
+     */
+    void SetMenuItem( TMenuItem& aMenuItem );
+
+    /**
+     * MenuItem
+     * 
+     * @return TMenuItem
+     */
+    TMenuItem& MenuItem();
+
+    /**
+     * SetDirty
+     * 
+     * @param aDirty
+     * @return TBool
+     */
+    void SetDirty( TBool aDirty );
+
+    /**
+     * IsDirty
+     * 
+     * @return TBool
+     */
+    TBool IsDirty() const;
+
+private:
+    /**
+     * iMenuItem
+     */
+    TMenuItem iMenuItem;
+
+    /**
+     * iDirty
+     */
+    TBool iDirty;
+    };
+
+/**
+ *  @ingroup group_mcsplugin
+ *
+ *  Plug-in data class
+ *
+ *  @since
+ */
+class CMCSPluginData : public CBase,
+    public HSPluginSettingsIf::MHomeScreenSettingsObserver
+    {
+
+public:
+
+    /**
+    * Part of the two phased constuction
+    *
+    * @param aEngine
+    * @param aInstanceUid
+    * @return Pointer to the created CMCSPluginData object
+    */
+    static CMCSPluginData* NewL( CMCSPluginEngine& aEngine,
+        const TDesC8& aInstanceUid );
+
+    /**
+    * Constructor
+    *
+    * @param aEngine
+    * @param aInstanceUid
+    * @return none
+    */
+    CMCSPluginData( CMCSPluginEngine& aEngine, const TDesC8& aInstanceUid );
+
+    /**
+    * Destructor
+    *
+    * @param none
+    * @return none
+    */
+    ~CMCSPluginData();
+
+    /**
+     * DataItem
+     * 
+     * @param aIndex
+     * @return TMCSData&
+     */
+    TMCSData& DataItemL( TInt aIndex );
+
+    /**
+     * ReplaceMenuItemL
+     * 
+     * @param aIndex
+     * @param aMenuItem
+     */
+    void ReplaceMenuItemL( const TInt& aIndex, TMenuItem& aMenuItem );
+
+    /**
+     * SaveSettingsL
+     * 
+     * @param aIndex
+     * @param aMenuItem
+     */
+    void SaveSettingsL( const TInt& aIndex, CMenuItem& aMenuItem );
+
+    /**
+     * DataCount
+     * 
+     * @return TInt
+     */
+    TInt DataCount(){ return iData.Count();};
+
+    /**
+     * UpdateDataL
+     */
+    void UpdateDataL();
+
+    // From MHomeScreenSettingsObserver
+    /**
+     * SettingsChangedL
+     * 
+     * @param aEvent
+     * @param aPluginName
+     * @param aPluginUid
+     * @param aPluginId
+     * @return TInt
+     */
+    TInt SettingsChangedL( const TDesC8& aEvent,  const TDesC8& aPluginName,
+                           const TDesC8& aPluginUid, const TDesC8& aPluginId );
+
+private:
+
+    /**
+    * Part of the two phased construction
+    *
+    * @param void
+    * @return void
+    */
+    void ConstructL();
+
+    /**
+     * CreateMenuItemL
+     * @param aProperties
+     * @return TMenuItem
+     */
+    TMenuItem CreateMenuItemL(
+        RPointerArray<HSPluginSettingsIf::CPropertyMap>& aProperties );
+
+private: // data
+
+    // Menu items, which are defined in settings
+    // Own
+    RArray<TMCSData> iData;
+
+    // Plugin settings
+    HSPluginSettingsIf::CHomescreenSettings* iPluginSettings;
+
+    // Reference to MCS plug-in engine
+    CMCSPluginEngine& iEngine;
+
+    // Reference to instance uid of HSPS widget
+    const TDesC8& iInstanceUid;
+    };
+
+#endif // CMCSPLUGINDATA_H