mmshplugins/mmshsettingsuiplugin/src/mussettingsmodel.cpp
changeset 22 496ad160a278
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmshplugins/mmshsettingsuiplugin/src/mussettingsmodel.cpp	Fri Jun 11 13:36:18 2010 +0300
@@ -0,0 +1,398 @@
+/*
+* 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:  Document model class for MUSSettingsPlugin.
+*
+*/
+
+
+
+#include    "mmussipprofilehandler.h"
+#include    "mussettingsmodel.h"
+#include    "mussipprofilemodel.h"
+#include    "muslogger.h"
+#include    <centralrepository.h>
+#include    <escapeutils.h>
+
+#include    <CAknMemorySelectionDialogMultiDrive.h>
+#include    <AknCommonDialogsDynMem.h>
+#include    <mussettingsuirsc.rsg> // GUI Resource
+
+
+
+const TInt CMusSettingsModel::KVsSipProfileDefault      = 0;
+const TInt CMusSettingsModel::KVsSipProfileSelect       = 1;
+const TInt CMusSettingsModel::KVsSipProfileSelectNone   = 2;
+const TInt KSIPGranularity = 5;
+
+
+// ======== MEMBER FUNCTIONS ========
+
+
+CMusSettingsModel* CMusSettingsModel::NewL( MMusSIPProfileHandler& aHandler )
+    {
+    MUS_LOG( "[MUSSET] -> CMusSettingsModel::NewL()" )
+    CMusSettingsModel* self = new( ELeave ) CMusSettingsModel( aHandler );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+
+    CleanupStack::Pop( self );
+    MUS_LOG( "[MUSSET] <- CMusSettingsModel::NewL()" )
+    return self;
+    }
+
+
+CMusSettingsModel::CMusSettingsModel( MMusSIPProfileHandler& aHandler )
+    : iHandler( aHandler )
+    {
+    MUS_LOG( "[MUSSET] <- CMusSettingsModel::CMusSettingsModel()" )
+    }
+
+
+void CMusSettingsModel::ConstructL()
+    {
+    MUS_LOG( "[MUSSET] -> CMusSettingsModel::ConstructL()" )
+    iMSSettingsKeys = new (ELeave) MultimediaSharingSettings;
+    MUS_LOG( "[MUSSET] <- CMusSettingsModel::ConstructL()" )
+    }
+
+
+CMusSettingsModel::~CMusSettingsModel()
+    {
+    MUS_LOG( "[MUSSET] -> CMusSettingsModel::~CMusSettingsModel()" )
+    delete iMSSettingsKeys;
+    iMSSettingsKeys = NULL;
+    MUS_LOG( "[MUSSET] <- CMusSettingsModel::~CMusSettingsModel()" )
+    }
+
+
+// ----------------------------------------------------------------------------
+// Returns operator variant mode (normal or operator specific. This is used for
+// runtime variation of Settings UI.
+// ----------------------------------------------------------------------------
+//
+MusSettingsKeys::TOperatorVariant CMusSettingsModel::VSSettingsOperatorVariantL()
+    {
+    MUS_LOG( "[MUSSET] -> CMusSettingsModel::VSSettingsOperatorVariantL()" )
+
+    MusSettingsKeys::TOperatorVariant operatorVariant =
+    	iMSSettingsKeys->OperatorVariantSettingL();
+
+    MUS_LOG1(
+        "[MUSSET] <- CMusSettingsContainer::VSSettingsOperatorVariantL()( %d )",
+        operatorVariant )
+    return operatorVariant;
+    }
+
+
+// ----------------------------------------------------------------------------
+// Returns VS activation mode.
+// ----------------------------------------------------------------------------
+//
+MusSettingsKeys::TActivation CMusSettingsModel::VSSettingsActivationL()
+    {
+    MUS_LOG( "[MUSSET] -> CMusSettingsModel::VSSettingsActivationL()" )
+    MusSettingsKeys::TActivation activationMode =
+    	iMSSettingsKeys->ActivationSettingL();
+    MUS_LOG1(
+        "[MUSSET] <- CMusSettingsContainer::VSSettingsActivationL()( %d )",
+        activationMode )
+    return activationMode;
+    }
+
+
+// ----------------------------------------------------------------------------
+// Returns SIP profile mode.
+// ----------------------------------------------------------------------------
+//
+TInt CMusSettingsModel::VSSettingsProfileL()
+    {
+    MUS_LOG( "[MUSSET] -> CMusSettingsModel::VSSettingsProfileL()" )
+    TInt vsProfileMode = iMSSettingsKeys->SipProfileSettingL();
+    MUS_LOG1(
+        "[MUSSET] <- CMusSettingsContainer::VSSettingsProfileL()( %d )",
+        vsProfileMode )
+    return vsProfileMode;
+    }
+
+
+// ----------------------------------------------------------------------------
+// Returns video autorecord mode.
+// ----------------------------------------------------------------------------
+//
+MusSettingsKeys::TAutoRecord CMusSettingsModel::VSSettingsAutoRecordL()
+    {
+    MUS_LOG( "[MUSSET] -> CMusSettingsModel::VSSettingsAutoRecordL()" )
+    MusSettingsKeys::TAutoRecord vsAutoRecordMode =
+        iMSSettingsKeys->AutoRecordSettingL();
+    MUS_LOG1(
+        "[MUSSET] <- CMusSettingsContainer::VSSettingsAutoRecordL()( %d )",
+        vsAutoRecordMode )
+    return  vsAutoRecordMode;
+    }
+
+
+// ----------------------------------------------------------------------------
+// Returns recorded video saving mode.
+// ----------------------------------------------------------------------------
+//
+TInt CMusSettingsModel::VSSettingsRecordedVideoSavingL()
+    {
+    MUS_LOG( "[MUSSET] -> CMusSettingsModel::VSSettingsRecordedVideoSavingL()" )
+    TInt vsVideoLocationMode = iMSSettingsKeys->VideoLocationSettingL();
+    MUS_LOG1(
+    "[MUSSET] <- CMusSettingsContainer::VSSettingsRecordedVideoSavingL()( %d )",
+        vsVideoLocationMode )
+    return vsVideoLocationMode;
+    }
+
+
+// ----------------------------------------------------------------------------
+// Returns mode of audible note.
+// ----------------------------------------------------------------------------
+//
+MusSettingsKeys::TAuditoryNotification CMusSettingsModel::VSSettingsNoteL()
+    {
+    MUS_LOG( "[MUSSET] -> CMusSettingsModel::VSSettingsNoteL()" )
+    MusSettingsKeys::TAuditoryNotification vsNoteMode =
+        iMSSettingsKeys->AuditoryNotificationSettingL();
+    MUS_LOG1(
+    "[MUSSET] <- CMusSettingsContainer::VSSettingsNoteL()( %d )",
+        vsNoteMode )
+    return vsNoteMode;
+    }
+
+
+// ----------------------------------------------------------------------------
+// Sets VS activation mode.
+// ----------------------------------------------------------------------------
+//
+void CMusSettingsModel::SetVSSettingsActivationL(
+        const MusSettingsKeys::TActivation aActivation)
+    {
+    MUS_LOG1(
+    "[MUSSET] -> CMusSettingsContainer::SetVSSettingsActivationL()( %d )",
+        aActivation )
+    iMSSettingsKeys->SetActivationSettingL( aActivation );
+    MUS_LOG( "[MUSSET] <- CMusSettingsModel::SetVSSettingsActivationL()" )
+    }
+
+
+// ----------------------------------------------------------------------------
+// Sets SIP Profile mode.
+// ----------------------------------------------------------------------------
+//
+void CMusSettingsModel::SetVSSettingsProfileL( const TInt aProfile )
+    {
+    MUS_LOG1(
+    "[MUSSET] -> CMusSettingsContainer::SetVSSettingsProfileL()( %d )",
+        aProfile )
+    iMSSettingsKeys->SetSipProfileSettingL( aProfile );
+    MUS_LOG( "[MUSSET] <- CMusSettingsModel::SetVSSettingsProfileL()" )
+    }
+
+
+// ----------------------------------------------------------------------------
+// Sets video autorecord mode.
+// ----------------------------------------------------------------------------
+//
+void CMusSettingsModel::SetVSSettingsAutoRecordL(
+    const MusSettingsKeys::TAutoRecord aAutoRecord )
+    {
+    MUS_LOG1(
+    "[MUSSET] -> CMusSettingsContainer::SetVSSettingsAutoRecordL()( %d )",
+        aAutoRecord )
+    iMSSettingsKeys->SetAutoRecordSettingL( aAutoRecord );
+    MUS_LOG( "[MUSSET] <- CMusSettingsModel::SetVSSettingsAutoRecordL()" )
+    }
+
+
+// ----------------------------------------------------------------------------
+// Sets video location.
+// ----------------------------------------------------------------------------
+//
+void CMusSettingsModel::SetVSSettingsRecordedVideoSavingL(
+    const TInt  aVideoLocation )
+    {
+    MUS_LOG1(
+    "[MUSSET] -> CMusSettingsContainer::SetVSSettingsRecordedVideoSavingL()( %d )",
+        aVideoLocation )
+    iMSSettingsKeys->SetVideoLocationSettingL( aVideoLocation );
+    MUS_LOG(
+        "[MUSSET] <- CMusSettingsModel::SetVSSettingsRecordedVideoSavingL()" )
+    }
+
+
+// ----------------------------------------------------------------------------
+// Sets mode of auditory note. In operator specific variants auditory note also
+// sets mode of popup notification setting.
+// ----------------------------------------------------------------------------
+//
+void CMusSettingsModel::SetVSSettingsNoteL(
+    const MusSettingsKeys::TAuditoryNotification aValue )
+    {
+    MUS_LOG1(
+    "[MUSSET] -> CMusSettingsContainer::SetVSSettingsNoteL()( %d )", aValue )
+    iMSSettingsKeys->SetAuditoryNotificationSettingL( aValue );
+
+    if ( VSSettingsOperatorVariantL() == MusSettingsKeys::EOperatorSpecific )
+        {
+        if ( MusSettingsKeys::EAuditoryNotificationOn == aValue )
+            {
+            iMSSettingsKeys->SetPopupNotificationSettingL(
+                MusSettingsKeys::EPopupNotificationOn );
+            }
+        else
+            {
+            iMSSettingsKeys->SetPopupNotificationSettingL(
+                MusSettingsKeys::EPopupNotificationOff );
+            }
+        }
+    }
+
+
+// -----------------------------------------------------------------------------
+// Returns the list of profile names
+// -----------------------------------------------------------------------------
+CDesCArray* CMusSettingsModel::ListOfProfileNamesL()
+    {
+    MUS_LOG( "[MUSSET] -> CMusSettingsModel::ListOfProfileNamesL()" )
+    CArrayPtr<CSIPManagedProfile>* list = iHandler.ProfileArrayL();
+
+    CDesCArray* array = new ( ELeave ) CDesCArrayFlat( KSIPGranularity );
+    CleanupStack::PushL( array );
+
+    for ( TInt i = 0; i < list->Count(); i++ )
+        {
+        const TDesC8* providerName = 0;
+        User::LeaveIfError(
+            list->At(i)->GetParameter( KSIPProviderName, providerName ) );
+
+        HBufC8* decodedProvider =
+            EscapeUtils::EscapeDecodeL( *providerName );
+        CleanupStack::PushL( decodedProvider );
+
+        HBufC* providerName16 =
+            EscapeUtils::ConvertToUnicodeFromUtf8L( decodedProvider->Des() );
+        CleanupStack::PushL( providerName16 );
+
+        array->AppendL( providerName16->Des() );
+
+        CleanupStack::PopAndDestroy( providerName16 );
+        CleanupStack::PopAndDestroy( decodedProvider );
+        }
+
+    CleanupStack::Pop( array );
+    MUS_LOG( "[MUSSET] <- CMusSettingsModel::ListOfProfileNamesL()" )
+    return array;
+    }
+
+
+// -----------------------------------------------------------------------------
+// Returns the SIP profile name. Returns NULL buffer if no profile is found.
+// -----------------------------------------------------------------------------
+HBufC* CMusSettingsModel::ProfileNameL( TInt aId )
+    {
+    MUS_LOG1(
+    "[MUSSET] -> CMusSettingsContainer::ProfileNameL()( %d )",
+        aId )
+    const TDesC8* providerName = 0;
+    TInt index = ProfileIndexByIdL( aId );
+    HBufC* buf = NULL;
+
+    if ( index >= 0 )
+        {
+        if ( KErrNone == iHandler.ProfileArrayL()->At( index )->
+                GetParameter( KSIPProviderName, providerName ) )
+            {
+            HBufC8* decodedProvider =
+                EscapeUtils::EscapeDecodeL( *providerName );
+            CleanupStack::PushL( decodedProvider );
+            buf = EscapeUtils::ConvertToUnicodeFromUtf8L( *providerName );
+            CleanupStack::PopAndDestroy( decodedProvider );
+            }
+        }
+
+    if ( buf )
+        {
+        MUS_LOG_TDESC( "[MUSSET] <- CMusSettingsModel::ProfileNameL(): Profile name: ", buf->Des() )
+        }
+    else
+        {
+        MUS_LOG( "[MUSSET] <- CMusSettingsModel::ProfileNameL(): No profile found! " )
+        }
+    return buf;
+    }
+
+
+// ----------------------------------------------------------------------------
+// Returns default SIP profile index.
+// ----------------------------------------------------------------------------
+TInt CMusSettingsModel::DefaultProfileIndex()
+    {
+    MUS_LOG( "[MUSSET] <- CMusSettingsModel::DefaultProfileIndex()" )
+    return iHandler.DefaultProfileIndex();
+    }
+
+
+// ----------------------------------------------------------------------------
+// Returns id of default SIP profile.
+// ----------------------------------------------------------------------------
+TUint32 CMusSettingsModel::DefaultProfileId()
+    {
+    MUS_LOG( "[MUSSET] <- CMusSettingsModel::DefaultProfileId()" )
+    return iHandler.DefaultProfileId();
+    }
+
+
+// ----------------------------------------------------------------------------
+// Returns SIP profile index based on the Id of SIP profile.
+// ----------------------------------------------------------------------------
+TInt CMusSettingsModel::ProfileIndexByIdL( TUint32 aId )
+    {
+    MUS_LOG( "[MUSSET] <- CMusSettingsModel::ProfileIndexByIdL()" )
+    return iHandler.ProfileIndexByIdL( aId );
+    }
+
+
+// ----------------------------------------------------------------------------
+// Returns SIP profile Id based on the index of SIP profile.
+// ----------------------------------------------------------------------------
+TUint32 CMusSettingsModel::ProfileIdByIndex( TUint aIndex )
+    {
+    MUS_LOG( "[MUSSET] <- CMusSettingsModel::ProfileIdByIndex()" )
+    return iHandler.ProfileIdByIndex( aIndex );
+    }
+
+
+// ----------------------------------------------------------------------------
+// Returns memory selction dialog pointer.
+// ----------------------------------------------------------------------------
+CAknMemorySelectionDialogMultiDrive* CMusSettingsModel::MemorySelectionDialogLC()
+    {
+    MUS_LOG( "[MUSSET] -> CMusSettingsModel::MemorySelectionDialogLC()" )
+    TInt supportedMemTypes( AknCommonDialogsDynMem::EMemoryTypePhone|
+                        AknCommonDialogsDynMem::EMemoryTypeInternalMassStorage|
+                        AknCommonDialogsDynMem::EMemoryTypeMMCExternal|
+                        AknCommonDialogsDynMem::EMemoryTypeRemote );    
+    CAknMemorySelectionDialogMultiDrive* dlg = 
+                               CAknMemorySelectionDialogMultiDrive::NewL(
+                                    ECFDDialogTypeNormal,
+                                    R_VS_RECORDED_VIDEO_SAVING_SETTING_PAGE,
+                                    ETrue,
+                                    supportedMemTypes );
+    CleanupStack::PushL( dlg );
+    MUS_LOG( "[MUSSET] <- CMusSettingsModel::MemorySelectionDialogLC()" )
+    return dlg;
+    }
+