mmshplugins/mmshsettingsuiplugin/src/mussettingscontainer.cpp
changeset 0 f0cf47e981f9
child 2 b31261fd4e04
equal deleted inserted replaced
-1:000000000000 0:f0cf47e981f9
       
     1 /*
       
     2 * Copyright (c) 2006-2007 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  Container for MUSSettingsPlugin.
       
    15 *  Version     : %version: 15.2.4.1.7 % << Don't touch! Updated by Synergy at check-out.
       
    16 *
       
    17 */
       
    18 
       
    19 
       
    20 
       
    21 #include    "mussettingscontainer.h"
       
    22 #include    "mussettingsplugin.h"
       
    23 #include    "mussettingsmodel.h"
       
    24 #include    "gslistbox.h"
       
    25 #include    "mussettingsplugin.hrh"
       
    26 #include    <mussettingsuirsc.rsg>
       
    27 #include    <aknlists.h>
       
    28 #include    <akntitle.h>
       
    29 #include 	<aknnotewrappers.h>
       
    30 #include    <csxhelp/msh.hlp.hrh>
       
    31 #include    <gsfwviewuids.h>
       
    32 #include    <StringLoader.h>
       
    33 #include 	<sipmanagedprofile.h>
       
    34 #include 	<ctsydomainpskeys.h>
       
    35 #include	<e32property.h>
       
    36 #include    <pathinfo.h>
       
    37 
       
    38 
       
    39 #ifdef RD_MULTIPLE_DRIVE
       
    40 #include    <CAknMemorySelectionDialogMultiDrive.h>
       
    41 
       
    42 #endif
       
    43 
       
    44 /** default SIP profile is selected */
       
    45 const TInt KDefaultSipProfile = 0;
       
    46 
       
    47 /** No SIP profile is selected */
       
    48 const TInt KNoSipProfileSelected = -1;
       
    49 
       
    50 // UID of Multimedia Sharing.
       
    51 // This UID is used for accessing the help IDs controlled by MUSH help files
       
    52 const TUid KUidMUSH = { 0x10282391 };
       
    53 
       
    54 // ======== MEMBER FUNCTIONS ========
       
    55 
       
    56 
       
    57 CMusSettingsContainer::CMusSettingsContainer( CMusSettingsModel& aModel ) :
       
    58 	iModel( aModel )
       
    59     {
       
    60     MUS_LOG( "[MUSSET] <- CMusSettingsContainer::CMusSettingsContainer()" )
       
    61     }
       
    62 
       
    63 
       
    64 void CMusSettingsContainer::ConstructL( const TRect& aRect )
       
    65     {
       
    66     MUS_LOG( "[MUSSET] -> CMusSettingsContainer::ConstructL()" )
       
    67 
       
    68     iOperatorVariant = iModel.VSSettingsOperatorVariantL();
       
    69 
       
    70     iListBox = new( ELeave ) CAknSettingStyleListBox;
       
    71 
       
    72     if ( iOperatorVariant == MusSettingsKeys::EStandard )
       
    73     	{
       
    74     	BaseConstructL( aRect, R_GS_VSSETTINGS_VIEW_TITLE, R_VS_LBX );
       
    75     	}
       
    76     else
       
    77     	{
       
    78     	BaseConstructL( aRect, R_GS_VSSETTINGS_VIEW_TITLE, R_VS_LBX_OPERATOR );
       
    79     	}
       
    80 
       
    81     MUS_LOG( "[MUSSET] <- CMusSettingsContainer::ConstructL()" )
       
    82     }
       
    83 
       
    84 
       
    85 CMusSettingsContainer::~CMusSettingsContainer()
       
    86     {
       
    87     MUS_LOG( "[MUSSET] -> CMusSettingsContainer::~CMusSettingsContainer()" )
       
    88     delete iActivationItems;
       
    89   	delete iProfileItems;
       
    90   	delete iAutoRecordItems;
       
    91    	delete iListboxItemArray;
       
    92     MUS_LOG( "[MUSSET] <- CMusSettingsContainer::~CMusSettingsContainer()" )
       
    93     }
       
    94 
       
    95 
       
    96 // ---------------------------------------------------------------------------
       
    97 // Constructs a listbox from a specified resource id.
       
    98 // ---------------------------------------------------------------------------
       
    99 //
       
   100 void CMusSettingsContainer::ConstructListBoxL( TInt aResLbxId )
       
   101     {
       
   102     MUS_LOG( "[MUSSET] -> CMusSettingsContainer::ConstructListBoxL()" )
       
   103     iListBox->ConstructL( this, EAknListBoxSelectionList );
       
   104     iListboxItemArray = CGSListBoxItemTextArray::NewL(
       
   105         aResLbxId, *iListBox, *iCoeEnv );
       
   106     iListBox->Model()->SetItemTextArray( iListboxItemArray );
       
   107     iListBox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
       
   108 
       
   109 	// OCC: removed "Automatic in home network" choice
       
   110 	iActivationItems =
       
   111 		iCoeEnv->ReadDesC16ArrayResourceL(
       
   112 		R_OPERATOR_ACTIVATION_SETTING_PAGE_LBX );
       
   113 
       
   114     iAutoRecordItems = iCoeEnv->ReadDesC16ArrayResourceL(
       
   115                                     R_VS_VIDEO_SAVING_SETTING_PAGE_LBX );
       
   116 
       
   117     iProfileItems = iCoeEnv->ReadDesC16ArrayResourceL(
       
   118     	R_SIP_PROFILE_SETTING_PAGE_LBX );
       
   119 
       
   120     CreateListBoxItemsL();
       
   121 
       
   122     // Operator variant mode needs some item should not be visible to user.
       
   123     // Hide those items.
       
   124     if ( iOperatorVariant == MusSettingsKeys::EOperatorSpecific )
       
   125     	{        
       
   126         // Hide VS Activation Settings. If needed in future it can be made
       
   127         // visible.
       
   128     	// 
       
   129         //HideItemsL( KGSSettIdVSActivation );
       
   130         // Hide SIP Profile choosing option.If needed in future it can be made
       
   131         // visible.
       
   132         HideItemsL( KGSSettIdSIPProfile );
       
   133         }    
       
   134     MUS_LOG( "[MUSSET] <- CMusSettingsContainer::ConstructListBoxL()" )
       
   135     }
       
   136 
       
   137 
       
   138 // ---------------------------------------------------------------------------
       
   139 // Populates listbox items.
       
   140 // ---------------------------------------------------------------------------
       
   141 //
       
   142 void CMusSettingsContainer::CreateListBoxItemsL()
       
   143     {
       
   144     MUS_LOG( "[MUSSET] -> CMusSettingsContainer::CreateListBoxItemsL()" )
       
   145     if ( iOperatorVariant == MusSettingsKeys::EStandard )
       
   146     	{
       
   147     	MakeActivationItemL();
       
   148     	}
       
   149     else
       
   150     	{
       
   151     	MakeOperatorActivationItemL();
       
   152     	}
       
   153     MakeSIPProfileItemL();
       
   154     MakeAutoRecordItemL();
       
   155     MakeRecordedVideoSavingItemL();
       
   156     MakeNoteItemL();
       
   157     MUS_LOG( "[MUSSET] <- CMusSettingsContainer::CreateListBoxItemsL()" )
       
   158     }
       
   159 
       
   160 
       
   161 // ---------------------------------------------------------------------------
       
   162 // Updates a specified feature (item in listbox).
       
   163 // ---------------------------------------------------------------------------
       
   164 //
       
   165 void CMusSettingsContainer::UpdateListBoxL( TInt aFeatureId )
       
   166     {
       
   167     MUS_LOG1( "[MUSSET] <- CMusSettingsContainer::UpdateListBoxL()( %d )",
       
   168               aFeatureId )
       
   169     switch ( aFeatureId )
       
   170         {
       
   171         case KGSSettIdVSActivation:
       
   172             if ( iOperatorVariant == MusSettingsKeys::EStandard )
       
   173             	{
       
   174             	MakeActivationItemL();
       
   175             	}
       
   176             else
       
   177             	{
       
   178             	MakeOperatorActivationItemL();
       
   179             	}
       
   180 	        break;
       
   181         case KGSSettIdSIPProfile:
       
   182             MakeSIPProfileItemL();
       
   183             break;
       
   184         case KGSSettIdAutoRecord:
       
   185             MakeAutoRecordItemL();
       
   186         	break;
       
   187         case KGSSettIdRecordedVideoSaving:
       
   188         	MakeRecordedVideoSavingItemL();
       
   189         	break;
       
   190         case KGSSettIdNote:
       
   191         	MakeNoteItemL();
       
   192         	break;
       
   193         default:
       
   194             break;
       
   195         }
       
   196 
       
   197     iListBox->HandleItemAdditionL();
       
   198     MUS_LOG( "[MUSSET] <- CMusSettingsContainer::UpdateListBoxL()" )
       
   199     }
       
   200 
       
   201 
       
   202 // ---------------------------------------------------------------------------
       
   203 // Generic method to add an item to listbox and make it visible.
       
   204 // ---------------------------------------------------------------------------
       
   205 //
       
   206 void CMusSettingsContainer::AddItemL( TInt aId, const TPtrC aText )
       
   207 	{
       
   208 	MUS_LOG( "[MUSSET] -> CMusSettingsContainer::AddItemL()" )
       
   209     iListboxItemArray->SetDynamicTextL( aId, aText );
       
   210     iListboxItemArray->SetItemVisibilityL( aId,
       
   211     	CGSListBoxItemTextArray::EVisible );
       
   212 	MUS_LOG( "[MUSSET] <- CMusSettingsContainer::AddItemL()" )
       
   213 	}
       
   214 
       
   215 
       
   216 // ---------------------------------------------------------------------------
       
   217 // Adds activation setting item to listbox.
       
   218 // ---------------------------------------------------------------------------
       
   219 //
       
   220 void CMusSettingsContainer::MakeActivationItemL()
       
   221     {
       
   222     MUS_LOG( "[MUSSET] -> CMusSettingsContainer::MakeActivationItemL()" )
       
   223 
       
   224    	iVSActication = iModel.VSSettingsActivationL();
       
   225    	AddItemL( KGSSettIdVSActivation, ( *iActivationItems )[ iVSActication ] );
       
   226 
       
   227     MUS_LOG( "[MUSSET] <- CMusSettingsContainer::MakeActivationItemL()" )
       
   228     }
       
   229 
       
   230 
       
   231 // ---------------------------------------------------------------------------
       
   232 // Adds operator specific activation setting item to listbox.
       
   233 // ---------------------------------------------------------------------------
       
   234 //
       
   235 void CMusSettingsContainer::MakeOperatorActivationItemL()
       
   236     {
       
   237     MUS_LOG( "[MUSSET] -> CMusSettingsContainer::MakeOperatorActivationItemL()" )
       
   238     MUS_LOG1( "Activation item( %d )",
       
   239             iModel.ActivationItem() )
       
   240 	AddItemL( KGSSettIdVSActivation, ( *iActivationItems )[ iModel.ActivationItem() ] );
       
   241 
       
   242     MUS_LOG( "[MUSSET] <- CMusSettingsContainer::MakeOperatorActivationItemL()" )
       
   243     }
       
   244 
       
   245 
       
   246 // ---------------------------------------------------------------------------
       
   247 // Adds SIP profile setting item to settings listbox. Item will contain
       
   248 // indication of [no SIP profile selected], [using default SIP profile] or
       
   249 // [name of SIP profile specified to be used]
       
   250 // ---------------------------------------------------------------------------
       
   251 //
       
   252 void CMusSettingsContainer::MakeSIPProfileItemL()
       
   253     {
       
   254     MUS_LOG( "[MUSSET] -> CMusSettingsContainer::MakeSIPProfileItemL()" )
       
   255 
       
   256     TInt profile = iModel.VSSettingsProfileL();
       
   257 
       
   258     if ( profile != KDefaultSipProfile && profile != KNoSipProfileSelected )
       
   259     	{
       
   260     	// profile id defined, get profile name
       
   261 		HBufC* name = iModel.ProfileNameL( profile );
       
   262 
       
   263 		if ( name )
       
   264 			{
       
   265 			CleanupStack::PushL( name );
       
   266 			AddItemL( KGSSettIdSIPProfile, *name );
       
   267 			CleanupStack::PopAndDestroy( name );
       
   268     		}
       
   269     	else
       
   270     		{
       
   271     		// show profile value not selected
       
   272     		AddItemL( KGSSettIdSIPProfile,
       
   273     			( *iProfileItems )[ CMusSettingsModel::KVsSipProfileSelectNone ] );
       
   274 			}
       
   275 		}
       
   276     else if ( profile == KNoSipProfileSelected )
       
   277     	{
       
   278     	AddItemL( KGSSettIdSIPProfile,
       
   279     		( *iProfileItems )[ CMusSettingsModel::KVsSipProfileSelectNone ] );
       
   280 		}
       
   281     else
       
   282     	{
       
   283 	    AddItemL(
       
   284 	    	KGSSettIdSIPProfile,
       
   285 	    	( *iProfileItems )[ CMusSettingsModel::KVsSipProfileDefault ] );
       
   286 		}
       
   287 
       
   288     MUS_LOG( "[MUSSET] <- CMusSettingsContainer::MakeSIPProfileItemL()" )
       
   289     }
       
   290 
       
   291 
       
   292 // ---------------------------------------------------------------------------
       
   293 // Adds autorecord item to listbox.
       
   294 // ---------------------------------------------------------------------------
       
   295 //
       
   296 void CMusSettingsContainer::MakeAutoRecordItemL()
       
   297     {
       
   298     MUS_LOG( "[MUSSET] -> CMusSettingsContainer::MakeAutoRecordItemL()" )
       
   299     TInt autoRecordMode = iModel.VSSettingsAutoRecordL();
       
   300     
       
   301     MUS_LOG1( "[MUSSET]    autoRecordMode: %d", autoRecordMode  )
       
   302     MUS_LOG1( "[MUSSET]    iAutoRecordItems.Count: %d", iAutoRecordItems->Count() )
       
   303 
       
   304     if ( autoRecordMode > iAutoRecordItems->Count() - 1 )
       
   305         {
       
   306         MUS_LOG2( "[MUSSET] autoRecordMode too big: %d, should be max %d => leave", 
       
   307                 autoRecordMode,  iAutoRecordItems->Count() -1 );
       
   308         User::Leave( KErrOverflow );
       
   309         }
       
   310 
       
   311     AddItemL( KGSSettIdAutoRecord, ( *iAutoRecordItems )[ autoRecordMode ] );
       
   312     
       
   313     MUS_LOG( "[MUSSET] <- CMusSettingsContainer::MakeAutoRecordItemL()" )
       
   314     }
       
   315 
       
   316 
       
   317 // ---------------------------------------------------------------------------
       
   318 // Adds recorded video saving item to listbox.
       
   319 // ---------------------------------------------------------------------------
       
   320 //
       
   321 void CMusSettingsContainer::MakeRecordedVideoSavingItemL()
       
   322     {
       
   323     MUS_LOG(
       
   324     	"[MUSSET] -> CMusSettingsContainer::MakeRecordedVideoSavingItemL()" )
       
   325 
       
   326     TInt savingMode = iModel.VSSettingsRecordedVideoSavingL();
       
   327 
       
   328     CAknMemorySelectionDialogMultiDrive* dlg = 
       
   329                                         iModel.MemorySelectionDialogLC();
       
   330     TDriveNumber driveNumber = ( TDriveNumber )savingMode;
       
   331     TInt index = dlg->FindIndexByDrive( driveNumber );
       
   332     
       
   333     if ( index == KErrNotFound )
       
   334         {
       
   335         MUS_LOG( "[MUSSET] -> preferred drive doesn't exist anymore \
       
   336 (e.g. remote drive deleted), taking system drive..." )
       
   337 
       
   338         driveNumber = RFs::GetSystemDrive();
       
   339         index = dlg->FindIndexByDrive( driveNumber );
       
   340         iModel.SetVSSettingsRecordedVideoSavingL( driveNumber );
       
   341         }
       
   342 
       
   343     TFileName item( KNullDesC );  
       
   344     dlg->GetItem( index, item );
       
   345     MUS_LOG1( "[MUSSET]     Current drive:%d", driveNumber )
       
   346     MUS_LOG_TDESC( "[MUSSET]     pref. mem: " , item ) 
       
   347     
       
   348     AddItemL( KGSSettIdRecordedVideoSaving, item );
       
   349     CleanupStack::PopAndDestroy( dlg );
       
   350 
       
   351     MUS_LOG(
       
   352     	"[MUSSET] <- CMusSettingsContainer::MakeRecordedVideoSavingItemL()" )
       
   353     }
       
   354 
       
   355 
       
   356 // ---------------------------------------------------------------------------
       
   357 // Adds note item to listbox. (Alerts setting). Present only with operator
       
   358 // variant set.
       
   359 // ---------------------------------------------------------------------------
       
   360 //
       
   361 void CMusSettingsContainer::MakeNoteItemL()
       
   362     {
       
   363     MUS_LOG(
       
   364     	"[MUSSET] -> CMusSettingsContainer::MakeNoteItemL()" )
       
   365 
       
   366     TInt savingMode = iModel.VSSettingsNoteL();
       
   367 
       
   368     MUS_LOG1( "[MUSSET] -> CMusSettingsContainer::Mode:%d()", savingMode );
       
   369 
       
   370     // If unset, use and set default value
       
   371     if ( savingMode < 0 || savingMode > 1 )
       
   372 	    {
       
   373 	    MUS_LOG( "[MUSSET] -> SetVSSettingsNoteL" );
       
   374 	    savingMode = 0;
       
   375 	    iModel.SetVSSettingsNoteL(
       
   376 	        MusSettingsKeys::EAuditoryNotificationOff );
       
   377 	    MUS_LOG( "[MUSSET] <- SetVSSettingsNoteL" );
       
   378 	    }
       
   379     MUS_LOG( "[MUSSET] -> AddItemL" );
       
   380 	AddItemL( KGSSettIdNote, ( *iActivationItems )[ savingMode ] );
       
   381 	MUS_LOG( "[MUSSET] <- SetVSSettingsNoteL" );
       
   382     MUS_LOG(
       
   383     	"[MUSSET] <- CMusSettingsContainer::MakeNoteItemL()" )
       
   384     }
       
   385 
       
   386 
       
   387 // ---------------------------------------------------------------------------
       
   388 // Gets help context.
       
   389 // ---------------------------------------------------------------------------
       
   390 //
       
   391 void CMusSettingsContainer::GetHelpContext( TCoeHelpContext& aContext ) const
       
   392     {
       
   393     MUS_LOG( "[MUSSET] -> CMusSettingsContainer::GetHelpContext()" )
       
   394     aContext.iMajor = KUidMUSH;
       
   395     aContext.iContext = KMSH_HLP_SETTINGS;
       
   396     MUS_LOG( "[MUSSET] <- CMusSettingsContainer::GetHelpContext()" )
       
   397     }
       
   398 
       
   399 
       
   400 // ---------------------------------------------------------------------------
       
   401 // Returns currently selected feature (listbox item).
       
   402 // ---------------------------------------------------------------------------
       
   403 //
       
   404 TInt CMusSettingsContainer::CurrentFeatureId() const
       
   405     {
       
   406     MUS_LOG( "[MUSSET] <- CMusSettingsContainer::CurrentFeatureId()" )
       
   407     return iListboxItemArray->CurrentFeature( );
       
   408     }
       
   409 
       
   410 
       
   411 // ----------------------------------------------------------------------------
       
   412 // If call is on, informs user with note that new profile is going to be active
       
   413 // after current call.
       
   414 // ----------------------------------------------------------------------------
       
   415 //
       
   416 void CMusSettingsContainer::ShowNewProfileActiveAfterCallL()
       
   417     {
       
   418     MUS_LOG(
       
   419     	"[MUSSET] -> CMusSettingsContainer::ShowNewProfileActiveAfterCallL()" )
       
   420 	TPSCTsyCallState callState;
       
   421 	User::LeaveIfError( RProperty::Get( KPSUidCtsyCallInformation,
       
   422 			KCTsyCallState,
       
   423 			(TInt&)callState) );
       
   424 	if ( callState == EPSCTsyCallStateAlerting ||
       
   425 		callState ==  EPSCTsyCallStateRinging ||
       
   426 		callState ==  EPSCTsyCallStateDialling ||
       
   427 		callState ==  EPSCTsyCallStateAnswering ||
       
   428 		callState ==  EPSCTsyCallStateDisconnecting ||
       
   429 		callState ==  EPSCTsyCallStateConnected ||
       
   430 		callState ==  EPSCTsyCallStateHold)
       
   431 		{
       
   432 		HBufC* infoTxt = StringLoader::LoadLC( R_QTN_MSH_SET_PROFILE_NOTE );
       
   433 	    CAknInformationNote* note = new ( ELeave ) CAknInformationNote( ETrue );
       
   434 	    note->ExecuteLD( infoTxt->Des() );
       
   435 	    CleanupStack::PopAndDestroy( infoTxt );
       
   436 	    MUS_LOG(
       
   437 	    	"[MUSSET] <- CMusSettingsContainer::ShowNewProfileActiveAfterCallL()" )
       
   438 		}
       
   439     }
       
   440 
       
   441 // ----------------------------------------------------------------------------
       
   442 // void CMusSettingsContainer::HideItemsL(TInt aItemIndex)
       
   443 // Some items are unwanted by operators.Hide those items from listbox item
       
   444 // ----------------------------------------------------------------------------
       
   445 //
       
   446 void CMusSettingsContainer::HideItemsL(TInt aItemIndex)
       
   447     {
       
   448     MUS_LOG1("[MUSSET] -> CMusSettingsContainer::HideItemsL() %d",aItemIndex )    
       
   449     iListboxItemArray->SetItemVisibilityL( aItemIndex,
       
   450             	CGSListBoxItemTextArray::EInvisible );
       
   451 	MUS_LOG("[MUSSET] <- CMusSettingsContainer::HideItemsL()" )	
       
   452     }