mmshplugins/mmshsettingsuiplugin/inc/mussipprofilemodel.h
branchRCL_3
changeset 22 73a1feb507fb
parent 10 a184f3d659e6
child 23 bc78a40cd63c
--- a/mmshplugins/mmshsettingsuiplugin/inc/mussipprofilemodel.h	Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshsettingsuiplugin/inc/mussipprofilemodel.h	Tue Aug 31 15:12:07 2010 +0300
@@ -12,7 +12,6 @@
 * Contributors:
 *
 * Description:  Class implementing SIP profile model.
-*  Version     : %version: 9 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
@@ -24,21 +23,25 @@
 
 #include "mmussipprofilehandler.h"
 #include <e32base.h>
+#include <sipmanagedprofile.h>
+#include <gsplugininterface.h>
 #include <sipprofileregistryobserver.h>
-#include <sipobserver.h>
-#include <sipconnectionobserver.h>
+
 
 class CSIPManagedProfileRegistry;
-class CMusSettingsModel;
+
 
 /**
  *  CMusSIPProfileModel model class.
  *  Model class implementing SIP profile model.
+ *
+ *  @since S60 v3.2
  */
-class CMusSIPProfileModel : public CBase,
-                            public MSIPProfileRegistryObserver,
-                            public MMusSIPProfileHandler
-{
+class CMusSIPProfileModel
+    :public CBase,
+     public MSIPProfileRegistryObserver,
+	 public MMusSIPProfileHandler
+	 {
 public:
 
     static CMusSIPProfileModel* NewL();
@@ -54,32 +57,17 @@
      * From MMusSIPProfileHandler.
      * Returns the index of the default SIP profile.
      * @return KErrNotFound, if one does not exist, otherwise index of the
-     * default SIP profile.
+     *         default SIP profile.
      */
-    TInt DefaultProfileIndex();
+    virtual TInt DefaultProfileIndex();
 
     /**
      * From MMusSIPProfileHandler.
      * Returns the id of the default SIP profile.
      * @return KErrNotFound, if one does not exist, otherwise id of the
-     * default SIP profile.
-     */
-    TUint32 DefaultProfileId();
-	
-    /*
-     * Disables MUS profile
+     *         default SIP profile.
      */
-    void DisableProfileL();
-	
-    /*
-     * Enables MUS profile
-     */
-    void EnableProfileL();
-	
-    /*
-     * Checks, if MUS profile is enabled
-     */
-    TBool ProfileEnabledL();
+	virtual TUint32 DefaultProfileId();
 
     /**
      * From MMusSIPProfileHandler.
@@ -87,7 +75,7 @@
      * @param aId Profile id
      * @return Profile index or KErrNotFound if no matching profile is found.
      */
-    TInt ProfileIndexByIdL( TUint32 aId );
+    virtual TInt ProfileIndexByIdL( TUint32 aId );
 
     /**
      * From MMusSIPProfileHandler.
@@ -95,19 +83,19 @@
      * @param aIndex Profile index
      * @return Profile id or KUnknownProfileId if no matching profile is found.
      */
-    TUint32 ProfileIdByIndex( TUint aIndex );
+    virtual TUint32 ProfileIdByIndex( TUint aIndex );
 
     /**
      * From MMusSIPProfileHandler.
-     * Returns a reference to the SIP profile array.
+     * Returns pointer to the SIP profile array, does not change ownership.
      * Note that previously returned value goes out of scope after a new
      * call to ProfileArrayL. So it is not advised to store return value
      * in long persistent variable, but rather to be used like stack
      * variables for safety.
      *
-     * @return Reference to internally cached SIP profile array.
+     * @return Pointer to internally cached SIP profile array.
      */
-    RPointerArray<CSIPProfile>& ProfileArrayL();
+    virtual CArrayPtr<CSIPManagedProfile>* ProfileArrayL();
 
 public: // From base class MSIPProfileRegistryObserver.
 
@@ -116,65 +104,68 @@
      * SIP profile information event.
      * @param aProfileId Id of SIP profile in question.
      * @param aEvent Type of information event.
-     */
-    void ProfileRegistryEventOccurred(
+	 */
+	virtual void ProfileRegistryEventOccurred(
 	    TUint32 aSIPProfileId,
 	    TEvent aEvent );
 
-    /**
-    * From MSIPProfileRegistryObserver.
-    * An asynchronous error has occurred related to SIP profile.
-    * @param aSIPProfileId Id of the failed profile.
-    * @param aError An error code.
-    */
-    void ProfileRegistryErrorOccurred(
-        TUint32 aSIPProfileId,
-        TInt aError );
-
-
-public:
-    
-    /**
-     * Set CMusSettingsModel to handle ProfileRegistry Event.
-     * @param aCMusSettingsModel the CMusSettingsModel to handle ProfileRegistry Event
-     */		
-    void SetCMusSettingsModel(CMusSettingsModel* aCMusSettingsModel);
+	/**
+     * From MSIPProfileRegistryObserver.
+	 * An asynchronous error has occurred related to SIP profile.
+     * @param aSIPProfileId Id of the failed profile.
+	 * @param aError An error code.
+	 */
+	virtual void ProfileRegistryErrorOccurred(
+	    TUint32 aSIPProfileId,
+	    TInt aError );
 
 protected:
 
     /**
+     * Reads the profile array from SIP Profile Client.
+     */
+    void ReadArrayFromEngineL();
+
+    /**
      * Sorts internal array of SIP profiles by id.
      */
     void SortProfilesL();
 
+    /**
+     * Deletes internally cached profiles.
+     */
+    void DeleteProfiles();
+
+    /**
+     * Reads profile list from the engine; if reading fails,
+     * keeps the old list safe.
+     */
+    void ReadProfileListFromEngineSafeL();
 
 private:
 
     CMusSIPProfileModel();
 
     void ConstructL();
-    
+
+    /**
+     * For deleting RPointerArray in case of leave.
+     */
+    static void ResetAndDestroy( TAny* aPointerArray );
 
 private: // data
 
     /**
-    * Instance of the SIP profile registry engine for managing SIP profiles.
-    * Own.
-    */
+     * Instance of the SIP profile registry engine for managing SIP profiles.
+     * Own.
+     */
     CSIPManagedProfileRegistry* iEngine;
 
     /**
-    * Locally cached array of SIP profiles.
-    */
-    RPointerArray<CSIPProfile> iProfiles;
-    
-    /**
-    * CMusSettingsModel to handle ProfileRegistry 
-    * Event
-    */
-    CMusSettingsModel* iCMusSettingsModel;
-    
-    
+     * Locally cached array of SIP profiles.
+     * Own.
+     */
+    CArrayPtrFlat<CSIPManagedProfile>* iProfiles;
 
     };