--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmshplugins/mmshsettingsuiplugin/src/mussettingscontainer.cpp Thu Dec 17 08:44:37 2009 +0200
@@ -0,0 +1,452 @@
+/*
+* 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: 15.2.4.1.7 % << 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 <mussettingsuirsc.rsg>
+#include <aknlists.h>
+#include <akntitle.h>
+#include <aknnotewrappers.h>
+#include <csxhelp/msh.hlp.hrh>
+#include <gsfwviewuids.h>
+#include <StringLoader.h>
+#include <sipmanagedprofile.h>
+#include <ctsydomainpskeys.h>
+#include <e32property.h>
+#include <pathinfo.h>
+
+
+#ifdef RD_MULTIPLE_DRIVE
+#include <CAknMemorySelectionDialogMultiDrive.h>
+
+#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 = iModel.VSSettingsOperatorVariantL();
+
+ 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()" )
+
+ iVSActication = iModel.VSSettingsActivationL();
+ AddItemL( KGSSettIdVSActivation, ( *iActivationItems )[ iVSActication ] );
+
+ 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 = iModel.VSSettingsProfileL();
+
+ 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 = iModel.VSSettingsAutoRecordL();
+
+ 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 \
+(e.g. remote drive deleted), taking system drive..." )
+
+ driveNumber = RFs::GetSystemDrive();
+ index = dlg->FindIndexByDrive( driveNumber );
+ iModel.SetVSSettingsRecordedVideoSavingL( 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()" )
+
+ TInt savingMode = iModel.VSSettingsNoteL();
+
+ MUS_LOG1( "[MUSSET] -> CMusSettingsContainer::Mode:%d()", savingMode );
+
+ // If unset, use and set default value
+ if ( savingMode < 0 || savingMode > 1 )
+ {
+ MUS_LOG( "[MUSSET] -> SetVSSettingsNoteL" );
+ savingMode = 0;
+ iModel.SetVSSettingsNoteL(
+ MusSettingsKeys::EAuditoryNotificationOff );
+ MUS_LOG( "[MUSSET] <- SetVSSettingsNoteL" );
+ }
+ MUS_LOG( "[MUSSET] -> AddItemL" );
+ AddItemL( KGSSettIdNote, ( *iActivationItems )[ savingMode ] );
+ MUS_LOG( "[MUSSET] <- SetVSSettingsNoteL" );
+ 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()" )
+ }