diff -r b31261fd4e04 -r ccd8e69b5392 mmshplugins/mmshsettingsuiplugin/src/mussettingscontainer.cpp --- a/mmshplugins/mmshsettingsuiplugin/src/mussettingscontainer.cpp Tue Feb 02 00:09:07 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,459 +0,0 @@ -/* -* Copyright (c) 2006-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: Container for MUSSettingsPlugin. -* Version : %version: 20 % << Don't touch! Updated by Synergy at check-out. -* -*/ - - - -#include "mussettingscontainer.h" -#include "mussettingsplugin.h" -#include "mussettingsmodel.h" -#include "gslistbox.h" -#include "mussettingsplugin.hrh" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -#ifdef RD_MULTIPLE_DRIVE -#include - -#endif - -/** default SIP profile is selected */ -const TInt KDefaultSipProfile = 0; - -/** No SIP profile is selected */ -const TInt KNoSipProfileSelected = -1; - -// UID of Multimedia Sharing. -// This UID is used for accessing the help IDs controlled by MUSH help files -const TUid KUidMUSH = { 0x10282391 }; - -// ======== MEMBER FUNCTIONS ======== - - -CMusSettingsContainer::CMusSettingsContainer( CMusSettingsModel& aModel ) : - iModel( aModel ) - { - MUS_LOG( "[MUSSET] <- CMusSettingsContainer::CMusSettingsContainer()" ) - } - - -void CMusSettingsContainer::ConstructL( const TRect& aRect ) - { - MUS_LOG( "[MUSSET] -> CMusSettingsContainer::ConstructL()" ) - - iOperatorVariant = MultimediaSharingSettings::OperatorVariantSettingL(); - - iListBox = new( ELeave ) CAknSettingStyleListBox; - - if ( iOperatorVariant == MusSettingsKeys::EStandard ) - { - BaseConstructL( aRect, R_GS_VSSETTINGS_VIEW_TITLE, R_VS_LBX ); - } - else - { - BaseConstructL( aRect, R_GS_VSSETTINGS_VIEW_TITLE, R_VS_LBX_OPERATOR ); - } - - MUS_LOG( "[MUSSET] <- CMusSettingsContainer::ConstructL()" ) - } - - -CMusSettingsContainer::~CMusSettingsContainer() - { - MUS_LOG( "[MUSSET] -> CMusSettingsContainer::~CMusSettingsContainer()" ) - delete iActivationItems; - delete iProfileItems; - delete iAutoRecordItems; - delete iListboxItemArray; - MUS_LOG( "[MUSSET] <- CMusSettingsContainer::~CMusSettingsContainer()" ) - } - - -// ----------------------------------------------------------------------------- -// Constructs a listbox from a specified resource id. -// ----------------------------------------------------------------------------- -// -void CMusSettingsContainer::ConstructListBoxL( TInt aResLbxId ) - { - MUS_LOG( "[MUSSET] -> CMusSettingsContainer::ConstructListBoxL()" ) - iListBox->ConstructL( this, EAknListBoxSelectionList ); - iListboxItemArray = CGSListBoxItemTextArray::NewL( - aResLbxId, *iListBox, *iCoeEnv ); - iListBox->Model()->SetItemTextArray( iListboxItemArray ); - iListBox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray ); - - // OCC: removed "Automatic in home network" choice - iActivationItems = - iCoeEnv->ReadDesC16ArrayResourceL( - R_OPERATOR_ACTIVATION_SETTING_PAGE_LBX ); - - iAutoRecordItems = iCoeEnv->ReadDesC16ArrayResourceL( - R_VS_VIDEO_SAVING_SETTING_PAGE_LBX ); - - iProfileItems = iCoeEnv->ReadDesC16ArrayResourceL( - R_SIP_PROFILE_SETTING_PAGE_LBX ); - - CreateListBoxItemsL(); - - // Operator variant mode needs some item should not be visible to user. - // Hide those items. - if ( iOperatorVariant == MusSettingsKeys::EOperatorSpecific ) - { - // Hide VS Activation Settings. If needed in future it can be made - // visible. - // - //HideItemsL( KGSSettIdVSActivation ); - // Hide SIP Profile choosing option.If needed in future it can be made - // visible. - HideItemsL( KGSSettIdSIPProfile ); - } - MUS_LOG( "[MUSSET] <- CMusSettingsContainer::ConstructListBoxL()" ) - } - - -// ----------------------------------------------------------------------------- -// Populates listbox items. -// ----------------------------------------------------------------------------- -// -void CMusSettingsContainer::CreateListBoxItemsL() - { - MUS_LOG( "[MUSSET] -> CMusSettingsContainer::CreateListBoxItemsL()" ) - if ( iOperatorVariant == MusSettingsKeys::EStandard ) - { - MakeActivationItemL(); - } - else - { - MakeOperatorActivationItemL(); - } - MakeSIPProfileItemL(); - MakeAutoRecordItemL(); - MakeRecordedVideoSavingItemL(); - MakeNoteItemL(); - MUS_LOG( "[MUSSET] <- CMusSettingsContainer::CreateListBoxItemsL()" ) - } - - -// ----------------------------------------------------------------------------- -// Updates a specified feature (item in listbox). -// ----------------------------------------------------------------------------- -// -void CMusSettingsContainer::UpdateListBoxL( TInt aFeatureId ) - { - MUS_LOG1( "[MUSSET] <- CMusSettingsContainer::UpdateListBoxL()( %d )", - aFeatureId ) - switch ( aFeatureId ) - { - case KGSSettIdVSActivation: - if ( iOperatorVariant == MusSettingsKeys::EStandard ) - { - MakeActivationItemL(); - } - else - { - MakeOperatorActivationItemL(); - } - break; - case KGSSettIdSIPProfile: - MakeSIPProfileItemL(); - break; - case KGSSettIdAutoRecord: - MakeAutoRecordItemL(); - break; - case KGSSettIdRecordedVideoSaving: - MakeRecordedVideoSavingItemL(); - break; - case KGSSettIdNote: - MakeNoteItemL(); - break; - default: - break; - } - - iListBox->HandleItemAdditionL(); - MUS_LOG( "[MUSSET] <- CMusSettingsContainer::UpdateListBoxL()" ) - } - - -// ----------------------------------------------------------------------------- -// Generic method to add an item to listbox and make it visible. -// ----------------------------------------------------------------------------- -// -void CMusSettingsContainer::AddItemL( TInt aId, const TPtrC aText ) - { - MUS_LOG( "[MUSSET] -> CMusSettingsContainer::AddItemL()" ) - iListboxItemArray->SetDynamicTextL( aId, aText ); - iListboxItemArray->SetItemVisibilityL( aId, - CGSListBoxItemTextArray::EVisible ); - MUS_LOG( "[MUSSET] <- CMusSettingsContainer::AddItemL()" ) - } - - -// ----------------------------------------------------------------------------- -// Adds activation setting item to listbox. -// ----------------------------------------------------------------------------- -// -void CMusSettingsContainer::MakeActivationItemL() - { - MUS_LOG( "[MUSSET] -> CMusSettingsContainer::MakeActivationItemL()" ) - - MusSettingsKeys::TActivation activation = - MultimediaSharingSettings::ActivationSettingL(); - - if ( activation != MusSettingsKeys::EAlwaysActive ) - { - // We make sure that if someone has written to CenRep value bigger - // than 1 (which after OCC changes means 'Off') we treat it as 'Off'. - activation = MusSettingsKeys::EActiveInHomeNetworks; - } - - AddItemL( KGSSettIdVSActivation, ( *iActivationItems )[ activation ] ); - - MUS_LOG( "[MUSSET] <- CMusSettingsContainer::MakeActivationItemL()" ) - } - - -// ----------------------------------------------------------------------------- -// Adds operator specific activation setting item to listbox. -// ----------------------------------------------------------------------------- -// -void CMusSettingsContainer::MakeOperatorActivationItemL() - { - MUS_LOG( "[MUSSET] -> CMusSettingsContainer::MakeOperatorActivationItemL()" ) - MUS_LOG1( "Activation item( %d )", - iModel.ActivationItem() ) - AddItemL( KGSSettIdVSActivation, ( *iActivationItems )[ iModel.ActivationItem() ] ); - - MUS_LOG( "[MUSSET] <- CMusSettingsContainer::MakeOperatorActivationItemL()" ) - } - - -// ----------------------------------------------------------------------------- -// Adds SIP profile setting item to settings listbox. Item will contain -// indication of [no SIP profile selected], [using default SIP profile] or -// [name of SIP profile specified to be used] -// ----------------------------------------------------------------------------- -// -void CMusSettingsContainer::MakeSIPProfileItemL() - { - MUS_LOG( "[MUSSET] -> CMusSettingsContainer::MakeSIPProfileItemL()" ) - - TInt profile = MultimediaSharingSettings::SipProfileSettingL(); - - if ( profile != KDefaultSipProfile && profile != KNoSipProfileSelected ) - { - // profile id defined, get profile name - HBufC* name = iModel.ProfileNameL( profile ); - - if ( name ) - { - CleanupStack::PushL( name ); - AddItemL( KGSSettIdSIPProfile, *name ); - CleanupStack::PopAndDestroy( name ); - } - else - { - // show profile value not selected - AddItemL( KGSSettIdSIPProfile, - ( *iProfileItems )[ CMusSettingsModel::KVsSipProfileSelectNone ] ); - } - } - else if ( profile == KNoSipProfileSelected ) - { - AddItemL( KGSSettIdSIPProfile, - ( *iProfileItems )[ CMusSettingsModel::KVsSipProfileSelectNone ] ); - } - else - { - AddItemL( - KGSSettIdSIPProfile, - ( *iProfileItems )[ CMusSettingsModel::KVsSipProfileDefault ] ); - } - - MUS_LOG( "[MUSSET] <- CMusSettingsContainer::MakeSIPProfileItemL()" ) - } - - -// ----------------------------------------------------------------------------- -// Adds autorecord item to listbox. -// ----------------------------------------------------------------------------- -// -void CMusSettingsContainer::MakeAutoRecordItemL() - { - MUS_LOG( "[MUSSET] -> CMusSettingsContainer::MakeAutoRecordItemL()" ) - TInt autoRecordMode = MultimediaSharingSettings::AutoRecordSettingL(); - - MUS_LOG1( "[MUSSET] autoRecordMode: %d", autoRecordMode ) - MUS_LOG1( "[MUSSET] iAutoRecordItems.Count: %d", iAutoRecordItems->Count() ) - - if ( autoRecordMode > iAutoRecordItems->Count() - 1 ) - { - MUS_LOG2( "[MUSSET] autoRecordMode too big: %d, should be max %d => leave", - autoRecordMode, iAutoRecordItems->Count() -1 ); - User::Leave( KErrOverflow ); - } - - AddItemL( KGSSettIdAutoRecord, ( *iAutoRecordItems )[ autoRecordMode ] ); - - MUS_LOG( "[MUSSET] <- CMusSettingsContainer::MakeAutoRecordItemL()" ) - } - - -// ----------------------------------------------------------------------------- -// Adds recorded video saving item to listbox. -// ----------------------------------------------------------------------------- -// -void CMusSettingsContainer::MakeRecordedVideoSavingItemL() - { - MUS_LOG( - "[MUSSET] -> CMusSettingsContainer::MakeRecordedVideoSavingItemL()" ) - - TInt savingMode = iModel.VSSettingsRecordedVideoSavingL(); - - CAknMemorySelectionDialogMultiDrive* dlg = - iModel.MemorySelectionDialogLC(); - TDriveNumber driveNumber = ( TDriveNumber )savingMode; - TInt index = dlg->FindIndexByDrive( driveNumber ); - - if ( index == KErrNotFound ) - { - MUS_LOG( "[MUSSET] Preferred drive doesn't exist anymore, " ) - MUS_LOG( "[MUSSET] e.g. remote drive deleted, using system drive" ) - - driveNumber = RFs::GetSystemDrive(); - index = dlg->FindIndexByDrive( driveNumber ); - MultimediaSharingSettings::SetVideoLocationSettingL( driveNumber ); - } - - TFileName item( KNullDesC ); - dlg->GetItem( index, item ); - MUS_LOG1( "[MUSSET] Current drive:%d", driveNumber ) - MUS_LOG_TDESC( "[MUSSET] pref. mem: " , item ) - - AddItemL( KGSSettIdRecordedVideoSaving, item ); - CleanupStack::PopAndDestroy( dlg ); - - MUS_LOG( - "[MUSSET] <- CMusSettingsContainer::MakeRecordedVideoSavingItemL()" ) - } - - -// ----------------------------------------------------------------------------- -// Adds note item to listbox. (Alerts setting). Present only with operator -// variant set. -// ----------------------------------------------------------------------------- -// -void CMusSettingsContainer::MakeNoteItemL() - { - MUS_LOG( "[MUSSET] -> CMusSettingsContainer::MakeNoteItemL()" ) - - MusSettingsKeys::TAuditoryNotification auditoryNotification = - MultimediaSharingSettings::AuditoryNotificationSettingL(); - - MUS_LOG1( "[MUSSET] -> CMusSettingsContainer::Mode:%d()", - auditoryNotification ) - - // If unset, use and set default value - if ( auditoryNotification < 0 || auditoryNotification > 1 ) - { - auditoryNotification = MusSettingsKeys::EAuditoryNotificationOff; - MultimediaSharingSettings::SetAuditoryNotificationSettingL( - MusSettingsKeys::EAuditoryNotificationOff ); - } - - AddItemL( KGSSettIdNote, ( *iActivationItems )[ auditoryNotification ] ); - - MUS_LOG( "[MUSSET] <- CMusSettingsContainer::MakeNoteItemL()" ) - } - - -// ----------------------------------------------------------------------------- -// Gets help context. -// ----------------------------------------------------------------------------- -// -void CMusSettingsContainer::GetHelpContext( TCoeHelpContext& aContext ) const - { - MUS_LOG( "[MUSSET] -> CMusSettingsContainer::GetHelpContext()" ) - aContext.iMajor = KUidMUSH; - aContext.iContext = KMSH_HLP_SETTINGS; - MUS_LOG( "[MUSSET] <- CMusSettingsContainer::GetHelpContext()" ) - } - - -// ----------------------------------------------------------------------------- -// Returns currently selected feature (listbox item). -// ----------------------------------------------------------------------------- -// -TInt CMusSettingsContainer::CurrentFeatureId() const - { - MUS_LOG( "[MUSSET] <- CMusSettingsContainer::CurrentFeatureId()" ) - return iListboxItemArray->CurrentFeature( ); - } - - -// ----------------------------------------------------------------------------- -// If call is on, informs user with note that new profile is going to be active -// after current call. -// ----------------------------------------------------------------------------- -// -void CMusSettingsContainer::ShowNewProfileActiveAfterCallL() - { - MUS_LOG( - "[MUSSET] -> CMusSettingsContainer::ShowNewProfileActiveAfterCallL()" ) - TPSCTsyCallState callState; - User::LeaveIfError( RProperty::Get( KPSUidCtsyCallInformation, - KCTsyCallState, - (TInt&)callState) ); - if ( callState == EPSCTsyCallStateAlerting || - callState == EPSCTsyCallStateRinging || - callState == EPSCTsyCallStateDialling || - callState == EPSCTsyCallStateAnswering || - callState == EPSCTsyCallStateDisconnecting || - callState == EPSCTsyCallStateConnected || - callState == EPSCTsyCallStateHold) - { - HBufC* infoTxt = StringLoader::LoadLC( R_QTN_MSH_SET_PROFILE_NOTE ); - CAknInformationNote* note = new ( ELeave ) CAknInformationNote( ETrue ); - note->ExecuteLD( infoTxt->Des() ); - CleanupStack::PopAndDestroy( infoTxt ); - MUS_LOG( - "[MUSSET] <- CMusSettingsContainer::ShowNewProfileActiveAfterCallL()" ) - } - } - -// ----------------------------------------------------------------------------- -// void CMusSettingsContainer::HideItemsL(TInt aItemIndex) -// Some items are unwanted by operators.Hide those items from listbox item -// ----------------------------------------------------------------------------- -// -void CMusSettingsContainer::HideItemsL(TInt aItemIndex) - { - MUS_LOG1("[MUSSET] -> CMusSettingsContainer::HideItemsL() %d",aItemIndex ) - iListboxItemArray->SetItemVisibilityL( aItemIndex, - CGSListBoxItemTextArray::EInvisible ); - MUS_LOG("[MUSSET] <- CMusSettingsContainer::HideItemsL()" ) - }