mmshplugins/mmshsettingsuiplugin/src/mussettingsplugin.cpp
branchRCL_3
changeset 33 bc78a40cd63c
parent 32 73a1feb507fb
--- a/mmshplugins/mmshsettingsuiplugin/src/mussettingsplugin.cpp	Tue Aug 31 15:12:07 2010 +0300
+++ b/mmshplugins/mmshsettingsuiplugin/src/mussettingsplugin.cpp	Wed Sep 01 12:31:01 2010 +0100
@@ -12,6 +12,7 @@
 * Contributors:
 *
 * Description:  MUSSettingsPlugin implementation.
+*  Version     : %version: be1sipx1#38 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
@@ -54,13 +55,20 @@
 // ======== MEMBER FUNCTIONS ========
 
 
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
 CMusSettingsPlugin::CMusSettingsPlugin()
     : iResources( *iCoeEnv )
     {
     MUS_LOG( "[MUSSET] <- CMusSettingsPlugin::CMusSettingsPlugin()" )
     }
 
-
+// -----------------------------------------------------------------------------
+// 
+// -----------------------------------------------------------------------------
+//
 CMusSettingsPlugin::~CMusSettingsPlugin()
     {
     MUS_LOG( "[MUSSET] -> CMusSettingsPlugin::~CMusSettingsPlugin()" )
@@ -71,29 +79,31 @@
         delete iContainer;
         iContainer = NULL;
         }
-
-    iResources.Close();
+        
+    CloseResourceFile();
 
     delete iModel;
     iModel = NULL;
 	delete iHandler;
 	iHandler = NULL;
     delete iDiskNotifyHandler;
+    delete iCaption;
     MUS_LOG( "[MUSSET] <- CMusSettingsPlugin::~CMusSettingsPlugin()" )
     }
 
-
+// -----------------------------------------------------------------------------
+// 
+//
+// -----------------------------------------------------------------------------
+//
 void CMusSettingsPlugin::ConstructL()
     {
     MUS_LOG( "[MUSSET] -> CMusSettingsPlugin::ConstructL()" )
     FeatureManager::InitializeLibL();
+  
+    iResourceFileOpen = false;
+    OpenResourceFileL();
 
-    HBufC* fileName = MusResourceFinderUtil::ResourcePathL(
-        KVSSettingsResourceFileName );    
-    TFileName fName(*fileName);
-    delete fileName;
-    MUS_LOG_TDESC( "[MUSSET] Resource FileName ",fName )
-    iResources.OpenL(fName);        
     MUS_LOG( "[MUSSET] Constructing the Base " )
     BaseConstructL( R_GS_VS_VIEW );
     iHandler = CMusSIPProfileModel::NewL();
@@ -101,11 +111,20 @@
     iModel = CMusSettingsModel::NewL( *iHandler );
     iDiskNotifyHandler = CDiskNotifyHandler::NewL( *this, 
                                             iEikonEnv->FsSession() );
-    User::LeaveIfError( iDiskNotifyHandler->NotifyDisk() ); // Subscribe disk notifications
+    // Subscribe disk notifications
+    User::LeaveIfError( iDiskNotifyHandler->NotifyDisk() ); 
+
+    iCaption = StringLoader::LoadL( R_GS_VS_PLUGIN_CAPTION );
+    CloseResourceFile();
+
     MUS_LOG( "[MUSSET] <- CMusSettingsPlugin::ConstructL()" )
     }
 
-
+// -----------------------------------------------------------------------------
+// 
+//
+// -----------------------------------------------------------------------------
+//
 CMusSettingsPlugin* CMusSettingsPlugin::NewL( TAny* /*aInitParams*/ )
     {
     MUS_LOG( "[MUSSET] -> CMusSettingsPlugin::NewL()" )
@@ -117,11 +136,10 @@
     return self;
     }
 
-
-// ----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
 // From class CAknView.
 // Returns UID of *this* settings plugin.
-// ----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
 //
 TUid CMusSettingsPlugin::Id() const
     {
@@ -130,11 +148,10 @@
     return KGSVSSettingsPluginUID;
     }
 
-
-// ----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
 // Hides non-virtual member from base class CGSBaseView.
 // Handles a change in client rectangle size.
-// ----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
 //
 void CMusSettingsPlugin::HandleClientRectChange()
     {
@@ -146,11 +163,10 @@
     MUS_LOG( "[MUSSET] <- CMusSettingsPlugin::HandleClientRectChange()" )
     }
 
-
-// ----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
 // From class CAknView.
 // Called by framework when *this* control is to be activated/focused.
-// ----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
 //
 void CMusSettingsPlugin::DoActivateL(
     const TVwsViewId& aPrevViewId,
@@ -158,69 +174,39 @@
     const TDesC8& aCustomMessage )
     {
     MUS_LOG( "[MUSSET] -> CMusSettingsPlugin::DoActivateL()" )
+    OpenResourceFileL();
     CGSBaseView::DoActivateL( aPrevViewId, aCustomMessageId, aCustomMessage );
     MUS_LOG( "[MUSSET] <- CMusSettingsPlugin::DoActivateL()" )
     }
 
-
-// ----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
 // From class CAknView.
 // Called by framework when *this* control is to be deactivated.
-// ----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
 //
 void CMusSettingsPlugin::DoDeactivate()
     {
     MUS_LOG( "[MUSSET] -> CMusSettingsPlugin::DoDeactivate()" )
     CGSBaseView::DoDeactivate();
+    CloseResourceFile();
     MUS_LOG( "[MUSSET] <- CMusSettingsPlugin::DoDeactivate()" )
     }
 
-
-// ----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
 // From class CAknView.
 // Handles a user selected menu command.
-// ----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
 //
 void CMusSettingsPlugin::HandleCommandL( TInt aCommand )
     {
     MUS_LOG1( "[MUSSET] -> CMusSettingsPlugin::HandleCommandL()( %d )",
               aCommand )
-    CMusSettingsContainer& container =
-        *static_cast<CMusSettingsContainer*>( iContainer );
-    const TInt currentItem = container.CurrentFeatureId();
-
     switch ( aCommand )
         {
         case EGSMSKCmdAppChange:
-        case EGSCmdAppChange:
+//        case EGSCmdAppChange:
             {
-        	if ( currentItem == KGSSettIdVSActivation
-        		&& aCommand == EGSCmdAppChange )
-        		{
-        		if ( iModel->VSSettingsOperatorVariantL() ==
-        			MusSettingsKeys::EOperatorSpecific )
-        			{
-        			ShowOperatorSpecificActivationSettingDialogL();
-        			}
-        		else
-        			{
-        			ShowVSSettingsActivationSettingDialogL();
-        			}
-        		}
-        	else if ( currentItem == KGSSettIdRecordedVideoSaving
-        		&& aCommand == EGSCmdAppChange )
-        		{
-        		ShowVSSettingsRecordedVideoSavingSettingDialogL();
-        		}
-        	else if ( KGSSettIdNote == currentItem
-        		&& EGSCmdAppChange == aCommand )
-        		{
-        		ShowVSSettingsNoteSettingDialogL();
-        		}
-        	else
-        		{
-        		HandleListBoxSelectionL();
-        		}
+            HandleListBoxSelectionL();
             break;
             }
 
@@ -249,26 +235,26 @@
     MUS_LOG( "[MUSSET] <- CMusSettingsPlugin::HandleCommandL()" )
     }
 
-
-// ----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
 // From class CGSPluginInterface.
 // Gets caption text of *this* plugin.
-// ----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
 //
 void CMusSettingsPlugin::GetCaptionL( TDes& aCaption ) const
     {
     MUS_LOG( "[MUSSET] -> CMusSettingsPlugin::GetCaptionL()" )
-    HBufC* result = StringLoader::LoadL( R_GS_VS_PLUGIN_CAPTION );
-    aCaption.Copy( *result );
-    delete result;
+    if ( iCaption && iCaption->Length() <= aCaption.MaxLength() )
+        {
+    	aCaption.Copy( *iCaption );
+        }
+    
     MUS_LOG( "[MUSSET] <- CMusSettingsPlugin::GetCaptionL()" )
     }
 
-
-// ----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
 // From class CGSPluginInterface.
 // Returns provider category of *this* plugin.
-// ----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
 //
 TInt CMusSettingsPlugin::PluginProviderCategory() const
     {
@@ -276,11 +262,10 @@
     return KGSPluginProviderInternal;
     }
 
-
-// ----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
 // From class MEikMenuObserver.
 // Called by framework before creating menus
-// ----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
 //
 void CMusSettingsPlugin::DynInitMenuPaneL( TInt aResourceId,
                                               CEikMenuPane* aMenuPane )
@@ -294,12 +279,11 @@
             }
         }
     }
-
     
-// ----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
 // From MDiskNotifyHandlerCallback
 // Called by framework When disk status changed
-// ----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
 //
 void CMusSettingsPlugin::HandleNotifyDisk( TInt /*aError*/, 
                                            const TDiskEvent& /*aEvent*/ )
@@ -319,11 +303,10 @@
     MUS_LOG( "[MUSSET] <- CMusSettingsPlugin::HandleNotifyDisk()" )
     }
 
-
-// ----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
 // From class CGSBaseView.
 // Called by GS framework to create a GS container for *this* plugin.
-// ----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
 //
 void CMusSettingsPlugin::NewContainerL()
     {
@@ -331,11 +314,10 @@
     iContainer = new( ELeave ) CMusSettingsContainer( *iModel );
     }
 
-
-// ----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
 // From class CGSBaseView.
 // Handles users "middle click" aka MSK on selected feature.
-// ----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
 //
 void CMusSettingsPlugin::HandleListBoxSelectionL()
     {
@@ -343,61 +325,35 @@
     CMusSettingsContainer& container =
         *static_cast<CMusSettingsContainer*>( iContainer );
     const TInt currentItem = container.CurrentFeatureId();
-
-    RDebug::Print( _L(
-        "[CMusSettingsPlugin] Item selected: %d" ),
-        currentItem );
-
-	MusSettingsKeys::TOperatorVariant operatorVarValue =
-		iModel->VSSettingsOperatorVariantL();
+    MUS_LOG1( "[MUSSET]    Item selected: ", currentItem )
 
     switch ( currentItem )
         {
         case KGSSettIdVSActivation:
             {
-        	if ( operatorVarValue == MusSettingsKeys::EOperatorSpecific )
-    			{
-    			SwitchOnOffValueL( KGSSettIdVSActivation );
-    			container.UpdateListBoxL( KGSSettIdVSActivation );
-				}
-			else
-				{
-				ShowVSSettingsActivationSettingDialogL();
-    			}
-    		break;
+            SwitchOnOffValueL( KGSSettIdVSActivation );
+            break;
     	    }
-
         case KGSSettIdSIPProfile:
             {
             ShowVSSettingsProfileSettingDialogL();
             break;
             }
-
         case KGSSettIdAutoRecord:
             {
             SwitchOnOffValueL( KGSSettIdAutoRecord );
-            container.UpdateListBoxL( KGSSettIdAutoRecord );
-        	break;
+            break;
             }
-
         case KGSSettIdRecordedVideoSaving:
             {
-
-        	ShowVSSettingsRecordedVideoSavingSettingDialogL();
-
-//        	SwitchOnOffValueL( KGSSettIdRecordedVideoSaving );
-//        	container.UpdateListBoxL( KGSSettIdRecordedVideoSaving );
-
-        	break;
+            ShowVSSettingsRecordedVideoSavingSettingDialogL();
+            break;
             }
-
         case KGSSettIdNote:
             {
-        	SwitchOnOffValueL( KGSSettIdNote );
-        	container.UpdateListBoxL( KGSSettIdNote );
-        	break;
+            SwitchOnOffValueL( KGSSettIdNote );
+            break;
             }
-
         default:
             {
             break;
@@ -406,12 +362,11 @@
     MUS_LOG( "[MUSSET] <- CMusSettingsPlugin::HandleListBoxSelectionL()" )
     }
 
-
-// ----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
 // From class CGSBaseView.
 // Returns container class of *this* plugin. iContainer is always garanteed to
 // be of type CMusSettingsContainer*.
-// ----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
 //
 CMusSettingsContainer* CMusSettingsPlugin::Container()
     {
@@ -419,115 +374,17 @@
     return static_cast<CMusSettingsContainer*>( iContainer );
     }
 
-
-// ----------------------------------------------------------------------------
-// Shows a dialog for user to modify VS activation setting. Note that this
-// method has an alternative method for operator specific variant.
-// ----------------------------------------------------------------------------
-//
-void CMusSettingsPlugin::ShowVSSettingsActivationSettingDialogL()
-    {
-    MUS_LOG(
-    "[MUSSET] -> CMusSettingsPlugin::ShowVSSettingsActivationSettingDialogL()"
-     )
-
-    MusSettingsKeys::TActivation currentValue =
-    	iModel->VSSettingsActivationL();
-
-    CDesCArrayFlat* items = iCoeEnv->ReadDesC16ArrayResourceL(
-        R_ACTIVATION_SETTING_PAGE_LBX );
-
-    CleanupStack::PushL( items );
-    TInt intCurrentValue = static_cast<TInt>( currentValue );
-
-    CAknRadioButtonSettingPage* dlg =
-    	new ( ELeave ) CAknRadioButtonSettingPage(
-        	R_ACTIVATION_SETTING_PAGE,
-        	intCurrentValue,
-        	items);
-
-    if ( dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged ) )
-        {
-        currentValue =
-        	static_cast<MusSettingsKeys::TActivation>( intCurrentValue );
-
-        iModel->SetVSSettingsActivationL( currentValue );
-        Container()->UpdateListBoxL( KGSSettIdVSActivation );
-        }
-
-    CleanupStack::PopAndDestroy( items );
-    MUS_LOG(
-    "[MUSSET] <- CMusSettingsPlugin::ShowVSSettingsActivationSettingDialogL()" )
-    }
-
-
-// ----------------------------------------------------------------------------
-// Shows a dialog for user to modify VS activation setting. Note that this
-// method is used only for operator specific variant. Alternative method for
-// "standard" variant exists. Note that because standard variant contains 3
-// different values and operator variant contains only 2 values (0,2) the value
-// 2 (MusSettingsKeys::ENever) is converted to value 1
-// (MusSettingsKeys::EActiveInHomeNetworks) in operator variant just before
-// showing the dialog. After showing the dialog the conversion mentioned above
-// is reversed. This temporarily conversion is done solely to use values 0 and
-// 1 for direct mapping to items array.
-// ----------------------------------------------------------------------------
-//
-void CMusSettingsPlugin::ShowOperatorSpecificActivationSettingDialogL()
-    {
-    MUS_LOG(
-    "[MUSSET] -> CMusSettingsPlugin::ShowOperatorSpecificActivationSettingDialogL()"
-     )
-
-    MusSettingsKeys::TActivation currentValue =
-    	iModel->VSSettingsActivationL();
-
-    if ( currentValue == MusSettingsKeys::ENever )
-    	{
-    	currentValue = MusSettingsKeys::EActiveInHomeNetworks;
-    	}
-
-    CDesCArrayFlat* items = iCoeEnv->ReadDesC16ArrayResourceL(
-        R_OPERATOR_ACTIVATION_SETTING_PAGE_LBX);
-
-    CleanupStack::PushL( items );
-    TInt intCurrentValue = static_cast<TInt>(currentValue);
-
-    CAknRadioButtonSettingPage* dlg =
-    	new ( ELeave ) CAknRadioButtonSettingPage(
-        	R_ACTIVATION_SETTING_PAGE,
-        	intCurrentValue,
-        	items );
-
-    if ( dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged ) )
-        {
-        currentValue =
-        	static_cast<MusSettingsKeys::TActivation>( intCurrentValue );
-        if ( currentValue == MusSettingsKeys::EActiveInHomeNetworks )
-        	{
-        	currentValue = MusSettingsKeys::ENever;
-        	}
-        iModel->SetVSSettingsActivationL( currentValue );
-        Container()->UpdateListBoxL( KGSSettIdVSActivation );
-        }
-
-    CleanupStack::PopAndDestroy( items );
-    MUS_LOG(
-    "[MUSSET] <- CMusSettingsPlugin::ShowOperatorSpecificActivationSettingDialogL()" )
-    }
-
-
-// ----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
 // Shows SIP profile setting dialog (i.e. "use default profile" or "select
 // profile from list"). If select profile from list is selected, a list of
 // SIP profiles is provided for user to choose wanted SIP profile.
-// ----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
 //
 void CMusSettingsPlugin::ShowVSSettingsProfileSettingDialogL()
     {
     MUS_LOG(
     "[MUSSET] -> CMusSettingsPlugin::ShowVSSettingsProfileSettingDialogL()" )
-    TInt cenRepValue = iModel->VSSettingsProfileL();
+    TInt cenRepValue = MultimediaSharingSettings::SipProfileSettingL();
     TInt profileMode = CMusSettingsModel::KVsSipProfileDefault;
     if ( cenRepValue != CMusSettingsModel::KVsSipProfileDefault )
     	{
@@ -548,29 +405,29 @@
     if ( dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged ) )
         {
         if ( profileMode == CMusSettingsModel::KVsSipProfileDefault )
-        	{
-        	if ( oldProfileMode != profileMode )
-        		{
-        		iModel->SetVSSettingsProfileL( 
-        		            CMusSettingsModel::KVsSipProfileDefault );
-        		Container()->ShowNewProfileActiveAfterCallL();
-        		Container()->UpdateListBoxL( KGSSettIdSIPProfile );
-        		}
-        	}
+            {
+            if ( oldProfileMode != profileMode )
+                {
+                MultimediaSharingSettings::SetSipProfileSettingL( 
+                            CMusSettingsModel::KVsSipProfileDefault );
+                Container()->ShowNewProfileActiveAfterCallL();
+                Container()->UpdateListBoxL( KGSSettIdSIPProfile );
+                }
+            }
         else
-        	{
+            {
             ShowVSSettingsSelectSipProfileDialogL();
-			}
+            }
         }
     CleanupStack::PopAndDestroy( items );
     MUS_LOG(
     "[MUSSET] <- CMusSettingsPlugin::ShowVSSettingsProfileSettingDialogL()" )
     }
 
-// ----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
 // Provides user a list of SIP profiles to select from. If no SIP profiles
 // exist an error note is displayed.
-// ----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
 //
 void CMusSettingsPlugin::ShowVSSettingsSelectSipProfileDialogL()
     {
@@ -579,50 +436,48 @@
 	CleanupStack::PushL( array );
 
 	if ( array->Count() < 1 )
-		{
-		ShowNoProfilesNotificationL();
-		}
+            {
+            ShowNoProfilesNotificationL();
+            }
 	else
-		{
-    	TInt selectedIndex = iModel->ProfileIndexByIdL(
-    	    iModel->VSSettingsProfileL() );
-        TInt currentIndex ( selectedIndex );
+            {
+            TInt selectedIndex = iModel->ProfileIndexByIdL(
+                                MultimediaSharingSettings::SipProfileSettingL() );
+            TInt currentIndex ( selectedIndex );
 
-		if ( selectedIndex == KErrNotFound )
-			{
-			// first profile in the list
-			selectedIndex = CMusSettingsModel::KVsSipProfileDefault;
-			}
+            if ( selectedIndex == KErrNotFound )
+                {
+                // first profile in the list
+                selectedIndex = CMusSettingsModel::KVsSipProfileDefault;
+                }
 
-		// Create and display the pop-up list
-		CAknRadioButtonSettingPage* defaultPopUp =
-			new ( ELeave ) CAknRadioButtonSettingPage(
-    			R_VS_SIP_PROFILE_LIST_VIEW_SELECT_SETTING_PAGE,
-    			selectedIndex,
-    			array );
-		if ( defaultPopUp->ExecuteLD(
-			CAknSettingPage::EUpdateWhenChanged ) )
-			{
-			if ( selectedIndex != currentIndex )
-        		{
-	        	// User has changed the selected profile, set new
-    	    	// setting to persistent storage
-    	    	TUint newValue = iModel->ProfileIdByIndex( selectedIndex );
-	    	    iModel->SetVSSettingsProfileL( newValue );
-	    	    Container()->ShowNewProfileActiveAfterCallL();
-				Container()->UpdateListBoxL( KGSSettIdSIPProfile );
-    			}
-			}
-		}
+            // Create and display the pop-up list
+            CAknRadioButtonSettingPage* defaultPopUp =
+                    new ( ELeave ) CAknRadioButtonSettingPage(
+                    R_VS_SIP_PROFILE_LIST_VIEW_SELECT_SETTING_PAGE,
+                    selectedIndex,
+                    array );
+            if ( defaultPopUp->ExecuteLD( CAknSettingPage::EUpdateWhenChanged ) )
+                {
+                if ( selectedIndex != currentIndex )
+                    {
+                    // User has changed the selected profile, set new
+                    // setting to persistent storage
+                    TUint newValue = iModel->ProfileIdByIndex( selectedIndex );
+                        MultimediaSharingSettings::SetSipProfileSettingL( newValue );
+                        Container()->ShowNewProfileActiveAfterCallL();
+                                    Container()->UpdateListBoxL( KGSSettIdSIPProfile );
+                    }
+                }
+            }
 
 	CleanupStack::PopAndDestroy( array );  // array
     }
 
-
-// ----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
 // Provides a dialog for user to choose saving location for recorderded video.
 // (locations are naturally phone memory or memory card).
-// ----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
 //
 void CMusSettingsPlugin::ShowVSSettingsRecordedVideoSavingSettingDialogL()
     {
@@ -632,20 +487,9 @@
                     TParsePtrC( PathInfo::PhoneMemoryRootPath() ).Drive() );
     TDriveUnit mmcUnit( TParsePtrC( PathInfo::MemoryCardRootPath() ).Drive() );
     TInt currentValue =	iModel->VSSettingsRecordedVideoSavingL();
-
-
-     CAknMemorySelectionDialogMultiDrive* dlg = 
-                                    iModel->MemorySelectionDialogLC();
-
-    // Use ECFDDialogTypeSave to have double list box in the query
-/*	CAknMemorySelectionDialog* dlg = CAknMemorySelectionDialog::NewL(
-                                    ECFDDialogTypeSave,
-                                    R_VS_RECORDED_VIDEO_SAVING_SETTING_PAGE,
-                                    EFalse );
-    CleanupStack::PushL( dlg );    
-*/
-
     
+    CAknMemorySelectionDialogMultiDrive* dlg = 
+                                    iModel->MemorySelectionDialogLC();   
 
     TBool result( EFalse );
     TDriveNumber driveNumber((TDriveNumber)currentValue);    
@@ -654,67 +498,37 @@
     if ( result != CAknCommonDialogsBase::TReturnKey(
                                         CAknCommonDialogsBase::ERightSoftkey) )
         {
-        if ( ( TInt ) driveNumber != currentValue )
+        if ( /*( TInt )*/ driveNumber != currentValue )
             {
-            iModel->SetVSSettingsRecordedVideoSavingL( ( TInt ) driveNumber );
+            MultimediaSharingSettings::SetVideoLocationSettingL( ( TInt ) driveNumber );
             }
         Container()->UpdateListBoxL( KGSSettIdRecordedVideoSaving );
         }
 
-/*  CAknMemorySelectionDialog::TMemory mem;
-    if ( currentValue == ( TInt )mmcUnit )
-        {
-        mem = CAknMemorySelectionDialog::EMemoryCard;
-        }
-    else
-        {
-        mem = CAknMemorySelectionDialog::EPhoneMemory;
-        }
-                    
-    TFileName ignore;
-    TFileName path;
-
-    if ( dlg->ExecuteL( mem, &path, &ignore ) )
-        {
-        if ( mem == CAknMemorySelectionDialog::EPhoneMemory 
-        	&& currentValue != ( TInt ) phoneMemUnit )
-        	{
-        	iModel->SetVSSettingsRecordedVideoSavingL( ( TInt )phoneMemUnit );
-        	Container()->UpdateListBoxL( KGSSettIdRecordedVideoSaving );
-        	}	
-        else if ( mem == CAknMemorySelectionDialog::EMemoryCard
-        	&& currentValue != ( TInt )mmcUnit )
-        	{
-        	iModel->SetVSSettingsRecordedVideoSavingL( ( TInt )mmcUnit );
-        	Container()->UpdateListBoxL( KGSSettIdRecordedVideoSaving );
-        	}	
-        }
-*/
-
     CleanupStack::PopAndDestroy(dlg); 
     MUS_LOG(
     "[MUSSET] <- CMusSettingsPlugin::ShowVSSettingsRecordedVideoSavingSettingDialogL()" )
     }
 
-
-// ----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
 // In standard variant provides user a "Capability auditory note" setting
 // dialog, and in operator variant provides user an "Alerts" setting dialog.
 // Note that in both variants the different dialogs toggle the same setting.
-// ----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
 //
 void CMusSettingsPlugin::ShowVSSettingsNoteSettingDialogL()
     {
     MUS_LOG(
     "[MUSSET] -> CMusSettingsPlugin::ShowVSSettingsNoteSettingDialogL()" )
     MusSettingsKeys::TAuditoryNotification currentValue =
-    	iModel->VSSettingsNoteL();
+                    MultimediaSharingSettings::AuditoryNotificationSettingL();
     TInt intCurrentValue = static_cast<TInt>( currentValue );
 
     CAknRadioButtonSettingPage* dlg;
     CDesCArrayFlat* items;
 
-    if ( iModel->VSSettingsOperatorVariantL() == MusSettingsKeys::EStandard )
+    if ( MultimediaSharingSettings::OperatorVariantSettingL() == 
+         MusSettingsKeys::EStandard )
         {
         items = iCoeEnv->ReadDesC16ArrayResourceL(
             R_VS_AUDIO_SETTING_PAGE_LBX );
@@ -738,9 +552,9 @@
     if ( dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged ) )
         {
         currentValue =
-        	static_cast<MusSettingsKeys::TAuditoryNotification>
-        	    ( intCurrentValue );
-        iModel->SetVSSettingsNoteL( currentValue );
+                static_cast<MusSettingsKeys::TAuditoryNotification>( intCurrentValue );
+        MultimediaSharingSettings::SetAuditoryNotificationSettingL(
+                                                                currentValue );
         Container()->UpdateListBoxL( KGSSettIdNote );
         }
 
@@ -749,10 +563,9 @@
     "[MUSSET] <- CMusSettingsPlugin::ShowVSSettingsNoteSettingDialogL()" )
     }
 
-
-// ----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
 // Shows a notifications that no SIP profiles exists.
-// ----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
 //
 void CMusSettingsPlugin::ShowNoProfilesNotificationL()
     {
@@ -764,84 +577,133 @@
     MUS_LOG( "[MUSSET] <- CMusSettingsPlugin::ShowNoProfilesNotificationL()" )
     }
 
-
-// ---------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
 // Switches between two possible values from one to another (i.e. toggles a
 // setting on/off). Toggled setting is passed in aValue parameter.
-// ---------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
 //
 void CMusSettingsPlugin::SwitchOnOffValueL( TInt aValue )
     {
+    MUS_LOG( "[MUSSET] -> CMusSettingsPlugin::SwitchOnOffValueL()" )
+            
     switch( aValue )
-	    {
-	    case KGSSettIdVSActivation:
-	    	{
-	    	if ( MusSettingsKeys::EAlwaysActive
-	    		== iModel->VSSettingsActivationL() )
-	    		{
-	    		iModel->SetVSSettingsActivationL( MusSettingsKeys::ENever );
-	    		}
-	    	else
-	    		{
-	    		iModel->SetVSSettingsActivationL(
-	    			MusSettingsKeys::EAlwaysActive );
-	    		}
-	    	break;
-	    	}
-	    case KGSSettIdAutoRecord:
-	        {
-	        if ( MusSettingsKeys::EAutoRecordOff ==
-	                                iModel->VSSettingsAutoRecordL() )
-		    	{
-		    	iModel->SetVSSettingsAutoRecordL( 
-		    	                    MusSettingsKeys::EAutoRecordOn );
-		    	}
-			else
-				{
-				iModel->SetVSSettingsAutoRecordL(
-					                MusSettingsKeys::EAutoRecordOff );
-				}
-	        break;
-	        }
-	    case KGSSettIdRecordedVideoSaving:
-	    	{
-		    TDriveUnit phoneMemUnit( 
-		            TParsePtrC( PathInfo::PhoneMemoryRootPath() ).Drive() );
-            TDriveUnit mmcUnit( 
-                    TParsePtrC( PathInfo::MemoryCardRootPath() ).Drive() );    
-    
-		    if ( ( TInt )phoneMemUnit 
-		        == iModel->VSSettingsRecordedVideoSavingL() )
-		    	{
-		    	iModel->SetVSSettingsRecordedVideoSavingL( ( TInt )mmcUnit );
-		    	}
-			else
-				{
-				iModel->SetVSSettingsRecordedVideoSavingL( ( TInt )phoneMemUnit );
-				}
-			break;
-	    	}
-		case KGSSettIdNote:
-			{
-		    if ( MusSettingsKeys::EAuditoryNotificationOn
-		    	== iModel->VSSettingsNoteL() )
-		    	{
-		    	iModel->SetVSSettingsNoteL(
-		    		MusSettingsKeys::EAuditoryNotificationOff );
-		    	}
-			else
-				{
-				iModel->SetVSSettingsNoteL(
-					MusSettingsKeys::EAuditoryNotificationOn );
-				}
-			break;
-			}
-	    default:
-	    	{
-	    	MUS_LOG( "[MUSSET] -> CMusSettingsPlugin::SwitchOnOffValueL() - error unknown setting" )
-	    	User::Leave( KErrArgument );
-	    	}
-	    }
+        {
+        case KGSSettIdVSActivation:
+            {
+            MusSettingsKeys::TOperatorVariant operatorVarValue =
+                    MultimediaSharingSettings::OperatorVariantSettingL();
+                
+            if ( operatorVarValue == MusSettingsKeys::EOperatorSpecific )
+                {
+                
+                TInt aCallCount = 0;
+                RProperty::Get( NMusSessionInformationApi::KCategoryUid,
+                              NMusSessionInformationApi::KMusCallCount,
+                              aCallCount );
+                MUS_LOG1( "[MUSSET] CallCount ( %d )", aCallCount)
+                if ( aCallCount == 0 )
+                    {
+                    MUS_LOG( "[MUSSET] no calls. Set VS on/off" )
+                    TBool enabled = EFalse;
+                    TRAPD( error, enabled = iHandler->ProfileEnabledL( ));
+                    MUS_LOG2( "[MUSSET]   VS now %d (err=%d)", enabled, error )
+                    if ( !error ) 
+                        {
+                        if( enabled ) //currently enabled => disable
+                            {
+                            TRAPD( error, iHandler->DisableProfileL() );
+                            MUS_LOG1( "[MUSSET]   VS is off (err=%d)", error )
+                            //activation disabled = true
+                            iModel->SetActivationItem( enabled );
+                            
+                            if ( error == KErrNone )
+                            	{
+								MUS_LOG( "[MUSSET]    Activation setting set off" )
+								//MusSettingsKeys::ENever = 2 can not be used anymore
+								//EActiveInHomeNetworks = 1 is used instead -> off
+								MultimediaSharingSettings::SetActivationSettingL(
+												MusSettingsKeys::EActiveInHomeNetworks );
+								}
+                            }
+                        else//currently disabled => enable
+                            {
+                            TRAPD( error, iHandler->EnableProfileL() );
+                            MUS_LOG1( "[MUSSET]   VS is on (err=%d)", error )
+                            //if failed activation disabled = true
+                            enabled = error != KErrNone;
+                            //activation disabled = false/true(if failed)
+                            iModel->SetActivationItem( enabled );
+
+                            if ( error == KErrNone )
+                            	{
+								MUS_LOG( "[MUSSET]    Activation setting set on" )
+								MultimediaSharingSettings::SetActivationSettingL(
+													MusSettingsKeys::EAlwaysActive );
+								}                            
+                            }             
+                        }
+                    }
+                }
+            else
+                {
+                if ( MusSettingsKeys::EAlwaysActive ==
+                     MultimediaSharingSettings::ActivationSettingL() )
+                    {
+                    MUS_LOG( "[MUSSET]    Activation setting set off" )
+                    //MusSettingsKeys::ENever = 2 can not be used anymore
+                    //EActiveInHomeNetworks = 1 is used instead -> off
+                    MultimediaSharingSettings::SetActivationSettingL(
+                                    MusSettingsKeys::EActiveInHomeNetworks );
+                    }
+                else
+                    {
+                    MUS_LOG( "[MUSSET]    Activation setting set on" )
+                    MultimediaSharingSettings::SetActivationSettingL(
+                                        MusSettingsKeys::EAlwaysActive );
+                    }
+                }
+            break;
+        }
+        case KGSSettIdAutoRecord:
+            {
+            if ( MusSettingsKeys::EAutoRecordOff ==
+                        MultimediaSharingSettings::AutoRecordSettingL() )
+                {
+                MultimediaSharingSettings::SetAutoRecordSettingL( 
+                                            MusSettingsKeys::EAutoRecordOn );
+                }
+            else
+                {
+                MultimediaSharingSettings::SetAutoRecordSettingL(
+                                            MusSettingsKeys::EAutoRecordOff );
+                }
+            break;
+            }
+        case KGSSettIdNote:
+            {
+            if ( MusSettingsKeys::EAuditoryNotificationOn == 
+                        MultimediaSharingSettings::AuditoryNotificationSettingL() )
+                {
+                MultimediaSharingSettings::SetAuditoryNotificationSettingL(
+                        MusSettingsKeys::EAuditoryNotificationOff );
+                }
+            else
+                {
+                MultimediaSharingSettings::SetAuditoryNotificationSettingL(
+                                        MusSettingsKeys::EAuditoryNotificationOn );
+                }
+            break;
+            }
+        default:
+            {
+            MUS_LOG( "[MUSSET] -> CMusSettingsPlugin::SwitchOnOffValueL() - error unknown setting" )
+            User::Leave( KErrArgument );
+            }
+        }
+	        
+	Container()->UpdateListBoxL( aValue );
+	        
+    MUS_LOG( "[MUSSET] <- CMusSettingsPlugin::SwitchOnOffValueL()" )
     }
 
 // -----------------------------------------------------------------------------
@@ -859,16 +721,18 @@
     CleanupStack::PopAndDestroy( dlg );
     }
 
-// ----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
 // From class CGSPluginInterface.
 // Creates a new icon of desired type. Overrided to provide custom icons.
 // Ownership of the created icon is transferred to the caller.
-// ----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
 //
 CGulIcon* CMusSettingsPlugin::CreateIconL( const TUid aIconType )
     {
     MUS_LOG( "[MUSSET] -> CMusSettingsPlugin::CreateIconL()" )
 
+    OpenResourceFileL();
+
 	CGulIcon* icon;
 
     if( aIconType == KGSIconTypeLbxItem )
@@ -902,3 +766,37 @@
     return icon;
     }
 
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusSettingsPlugin::OpenResourceFileL()
+	{
+    MUS_LOG( "[MUSSET] -> CMusSettingsPlugin::OpenResourceFileL()" )
+        
+    if (!iResourceFileOpen) 
+        {
+        HBufC* fileName = MusResourceFinderUtil::ResourcePathL(
+        KVSSettingsResourceFileName );    
+        TFileName fName(*fileName);
+        delete fileName;
+        MUS_LOG_TDESC( "[MUSSET] Resource FileName ",fName )
+        iResources.OpenL(fName);  
+        iResourceFileOpen = true;
+        } 
+    
+    MUS_LOG( "[MUSSET] <- CMusSettingsPlugin::OpenResourceFileL()" )
+	}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusSettingsPlugin::CloseResourceFile()
+    {
+    MUS_LOG( "[MUSSET] -> CMusSettingsPlugin::CloseResourceFile()" )
+    iResources.Close();
+    iResourceFileOpen = false;
+    MUS_LOG( "[MUSSET] <- CMusSettingsPlugin::CloseResourceFile()" )
+    }
+