mmshplugins/mmshsettingsuiplugin/src/mussettingsmodel.cpp
changeset 22 496ad160a278
equal deleted inserted replaced
15:ccd8e69b5392 22:496ad160a278
       
     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:  Document model class for MUSSettingsPlugin.
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 
       
    20 #include    "mmussipprofilehandler.h"
       
    21 #include    "mussettingsmodel.h"
       
    22 #include    "mussipprofilemodel.h"
       
    23 #include    "muslogger.h"
       
    24 #include    <centralrepository.h>
       
    25 #include    <escapeutils.h>
       
    26 
       
    27 #include    <CAknMemorySelectionDialogMultiDrive.h>
       
    28 #include    <AknCommonDialogsDynMem.h>
       
    29 #include    <mussettingsuirsc.rsg> // GUI Resource
       
    30 
       
    31 
       
    32 
       
    33 const TInt CMusSettingsModel::KVsSipProfileDefault      = 0;
       
    34 const TInt CMusSettingsModel::KVsSipProfileSelect       = 1;
       
    35 const TInt CMusSettingsModel::KVsSipProfileSelectNone   = 2;
       
    36 const TInt KSIPGranularity = 5;
       
    37 
       
    38 
       
    39 // ======== MEMBER FUNCTIONS ========
       
    40 
       
    41 
       
    42 CMusSettingsModel* CMusSettingsModel::NewL( MMusSIPProfileHandler& aHandler )
       
    43     {
       
    44     MUS_LOG( "[MUSSET] -> CMusSettingsModel::NewL()" )
       
    45     CMusSettingsModel* self = new( ELeave ) CMusSettingsModel( aHandler );
       
    46     CleanupStack::PushL( self );
       
    47     self->ConstructL();
       
    48 
       
    49     CleanupStack::Pop( self );
       
    50     MUS_LOG( "[MUSSET] <- CMusSettingsModel::NewL()" )
       
    51     return self;
       
    52     }
       
    53 
       
    54 
       
    55 CMusSettingsModel::CMusSettingsModel( MMusSIPProfileHandler& aHandler )
       
    56     : iHandler( aHandler )
       
    57     {
       
    58     MUS_LOG( "[MUSSET] <- CMusSettingsModel::CMusSettingsModel()" )
       
    59     }
       
    60 
       
    61 
       
    62 void CMusSettingsModel::ConstructL()
       
    63     {
       
    64     MUS_LOG( "[MUSSET] -> CMusSettingsModel::ConstructL()" )
       
    65     iMSSettingsKeys = new (ELeave) MultimediaSharingSettings;
       
    66     MUS_LOG( "[MUSSET] <- CMusSettingsModel::ConstructL()" )
       
    67     }
       
    68 
       
    69 
       
    70 CMusSettingsModel::~CMusSettingsModel()
       
    71     {
       
    72     MUS_LOG( "[MUSSET] -> CMusSettingsModel::~CMusSettingsModel()" )
       
    73     delete iMSSettingsKeys;
       
    74     iMSSettingsKeys = NULL;
       
    75     MUS_LOG( "[MUSSET] <- CMusSettingsModel::~CMusSettingsModel()" )
       
    76     }
       
    77 
       
    78 
       
    79 // ----------------------------------------------------------------------------
       
    80 // Returns operator variant mode (normal or operator specific. This is used for
       
    81 // runtime variation of Settings UI.
       
    82 // ----------------------------------------------------------------------------
       
    83 //
       
    84 MusSettingsKeys::TOperatorVariant CMusSettingsModel::VSSettingsOperatorVariantL()
       
    85     {
       
    86     MUS_LOG( "[MUSSET] -> CMusSettingsModel::VSSettingsOperatorVariantL()" )
       
    87 
       
    88     MusSettingsKeys::TOperatorVariant operatorVariant =
       
    89     	iMSSettingsKeys->OperatorVariantSettingL();
       
    90 
       
    91     MUS_LOG1(
       
    92         "[MUSSET] <- CMusSettingsContainer::VSSettingsOperatorVariantL()( %d )",
       
    93         operatorVariant )
       
    94     return operatorVariant;
       
    95     }
       
    96 
       
    97 
       
    98 // ----------------------------------------------------------------------------
       
    99 // Returns VS activation mode.
       
   100 // ----------------------------------------------------------------------------
       
   101 //
       
   102 MusSettingsKeys::TActivation CMusSettingsModel::VSSettingsActivationL()
       
   103     {
       
   104     MUS_LOG( "[MUSSET] -> CMusSettingsModel::VSSettingsActivationL()" )
       
   105     MusSettingsKeys::TActivation activationMode =
       
   106     	iMSSettingsKeys->ActivationSettingL();
       
   107     MUS_LOG1(
       
   108         "[MUSSET] <- CMusSettingsContainer::VSSettingsActivationL()( %d )",
       
   109         activationMode )
       
   110     return activationMode;
       
   111     }
       
   112 
       
   113 
       
   114 // ----------------------------------------------------------------------------
       
   115 // Returns SIP profile mode.
       
   116 // ----------------------------------------------------------------------------
       
   117 //
       
   118 TInt CMusSettingsModel::VSSettingsProfileL()
       
   119     {
       
   120     MUS_LOG( "[MUSSET] -> CMusSettingsModel::VSSettingsProfileL()" )
       
   121     TInt vsProfileMode = iMSSettingsKeys->SipProfileSettingL();
       
   122     MUS_LOG1(
       
   123         "[MUSSET] <- CMusSettingsContainer::VSSettingsProfileL()( %d )",
       
   124         vsProfileMode )
       
   125     return vsProfileMode;
       
   126     }
       
   127 
       
   128 
       
   129 // ----------------------------------------------------------------------------
       
   130 // Returns video autorecord mode.
       
   131 // ----------------------------------------------------------------------------
       
   132 //
       
   133 MusSettingsKeys::TAutoRecord CMusSettingsModel::VSSettingsAutoRecordL()
       
   134     {
       
   135     MUS_LOG( "[MUSSET] -> CMusSettingsModel::VSSettingsAutoRecordL()" )
       
   136     MusSettingsKeys::TAutoRecord vsAutoRecordMode =
       
   137         iMSSettingsKeys->AutoRecordSettingL();
       
   138     MUS_LOG1(
       
   139         "[MUSSET] <- CMusSettingsContainer::VSSettingsAutoRecordL()( %d )",
       
   140         vsAutoRecordMode )
       
   141     return  vsAutoRecordMode;
       
   142     }
       
   143 
       
   144 
       
   145 // ----------------------------------------------------------------------------
       
   146 // Returns recorded video saving mode.
       
   147 // ----------------------------------------------------------------------------
       
   148 //
       
   149 TInt CMusSettingsModel::VSSettingsRecordedVideoSavingL()
       
   150     {
       
   151     MUS_LOG( "[MUSSET] -> CMusSettingsModel::VSSettingsRecordedVideoSavingL()" )
       
   152     TInt vsVideoLocationMode = iMSSettingsKeys->VideoLocationSettingL();
       
   153     MUS_LOG1(
       
   154     "[MUSSET] <- CMusSettingsContainer::VSSettingsRecordedVideoSavingL()( %d )",
       
   155         vsVideoLocationMode )
       
   156     return vsVideoLocationMode;
       
   157     }
       
   158 
       
   159 
       
   160 // ----------------------------------------------------------------------------
       
   161 // Returns mode of audible note.
       
   162 // ----------------------------------------------------------------------------
       
   163 //
       
   164 MusSettingsKeys::TAuditoryNotification CMusSettingsModel::VSSettingsNoteL()
       
   165     {
       
   166     MUS_LOG( "[MUSSET] -> CMusSettingsModel::VSSettingsNoteL()" )
       
   167     MusSettingsKeys::TAuditoryNotification vsNoteMode =
       
   168         iMSSettingsKeys->AuditoryNotificationSettingL();
       
   169     MUS_LOG1(
       
   170     "[MUSSET] <- CMusSettingsContainer::VSSettingsNoteL()( %d )",
       
   171         vsNoteMode )
       
   172     return vsNoteMode;
       
   173     }
       
   174 
       
   175 
       
   176 // ----------------------------------------------------------------------------
       
   177 // Sets VS activation mode.
       
   178 // ----------------------------------------------------------------------------
       
   179 //
       
   180 void CMusSettingsModel::SetVSSettingsActivationL(
       
   181         const MusSettingsKeys::TActivation aActivation)
       
   182     {
       
   183     MUS_LOG1(
       
   184     "[MUSSET] -> CMusSettingsContainer::SetVSSettingsActivationL()( %d )",
       
   185         aActivation )
       
   186     iMSSettingsKeys->SetActivationSettingL( aActivation );
       
   187     MUS_LOG( "[MUSSET] <- CMusSettingsModel::SetVSSettingsActivationL()" )
       
   188     }
       
   189 
       
   190 
       
   191 // ----------------------------------------------------------------------------
       
   192 // Sets SIP Profile mode.
       
   193 // ----------------------------------------------------------------------------
       
   194 //
       
   195 void CMusSettingsModel::SetVSSettingsProfileL( const TInt aProfile )
       
   196     {
       
   197     MUS_LOG1(
       
   198     "[MUSSET] -> CMusSettingsContainer::SetVSSettingsProfileL()( %d )",
       
   199         aProfile )
       
   200     iMSSettingsKeys->SetSipProfileSettingL( aProfile );
       
   201     MUS_LOG( "[MUSSET] <- CMusSettingsModel::SetVSSettingsProfileL()" )
       
   202     }
       
   203 
       
   204 
       
   205 // ----------------------------------------------------------------------------
       
   206 // Sets video autorecord mode.
       
   207 // ----------------------------------------------------------------------------
       
   208 //
       
   209 void CMusSettingsModel::SetVSSettingsAutoRecordL(
       
   210     const MusSettingsKeys::TAutoRecord aAutoRecord )
       
   211     {
       
   212     MUS_LOG1(
       
   213     "[MUSSET] -> CMusSettingsContainer::SetVSSettingsAutoRecordL()( %d )",
       
   214         aAutoRecord )
       
   215     iMSSettingsKeys->SetAutoRecordSettingL( aAutoRecord );
       
   216     MUS_LOG( "[MUSSET] <- CMusSettingsModel::SetVSSettingsAutoRecordL()" )
       
   217     }
       
   218 
       
   219 
       
   220 // ----------------------------------------------------------------------------
       
   221 // Sets video location.
       
   222 // ----------------------------------------------------------------------------
       
   223 //
       
   224 void CMusSettingsModel::SetVSSettingsRecordedVideoSavingL(
       
   225     const TInt  aVideoLocation )
       
   226     {
       
   227     MUS_LOG1(
       
   228     "[MUSSET] -> CMusSettingsContainer::SetVSSettingsRecordedVideoSavingL()( %d )",
       
   229         aVideoLocation )
       
   230     iMSSettingsKeys->SetVideoLocationSettingL( aVideoLocation );
       
   231     MUS_LOG(
       
   232         "[MUSSET] <- CMusSettingsModel::SetVSSettingsRecordedVideoSavingL()" )
       
   233     }
       
   234 
       
   235 
       
   236 // ----------------------------------------------------------------------------
       
   237 // Sets mode of auditory note. In operator specific variants auditory note also
       
   238 // sets mode of popup notification setting.
       
   239 // ----------------------------------------------------------------------------
       
   240 //
       
   241 void CMusSettingsModel::SetVSSettingsNoteL(
       
   242     const MusSettingsKeys::TAuditoryNotification aValue )
       
   243     {
       
   244     MUS_LOG1(
       
   245     "[MUSSET] -> CMusSettingsContainer::SetVSSettingsNoteL()( %d )", aValue )
       
   246     iMSSettingsKeys->SetAuditoryNotificationSettingL( aValue );
       
   247 
       
   248     if ( VSSettingsOperatorVariantL() == MusSettingsKeys::EOperatorSpecific )
       
   249         {
       
   250         if ( MusSettingsKeys::EAuditoryNotificationOn == aValue )
       
   251             {
       
   252             iMSSettingsKeys->SetPopupNotificationSettingL(
       
   253                 MusSettingsKeys::EPopupNotificationOn );
       
   254             }
       
   255         else
       
   256             {
       
   257             iMSSettingsKeys->SetPopupNotificationSettingL(
       
   258                 MusSettingsKeys::EPopupNotificationOff );
       
   259             }
       
   260         }
       
   261     }
       
   262 
       
   263 
       
   264 // -----------------------------------------------------------------------------
       
   265 // Returns the list of profile names
       
   266 // -----------------------------------------------------------------------------
       
   267 CDesCArray* CMusSettingsModel::ListOfProfileNamesL()
       
   268     {
       
   269     MUS_LOG( "[MUSSET] -> CMusSettingsModel::ListOfProfileNamesL()" )
       
   270     CArrayPtr<CSIPManagedProfile>* list = iHandler.ProfileArrayL();
       
   271 
       
   272     CDesCArray* array = new ( ELeave ) CDesCArrayFlat( KSIPGranularity );
       
   273     CleanupStack::PushL( array );
       
   274 
       
   275     for ( TInt i = 0; i < list->Count(); i++ )
       
   276         {
       
   277         const TDesC8* providerName = 0;
       
   278         User::LeaveIfError(
       
   279             list->At(i)->GetParameter( KSIPProviderName, providerName ) );
       
   280 
       
   281         HBufC8* decodedProvider =
       
   282             EscapeUtils::EscapeDecodeL( *providerName );
       
   283         CleanupStack::PushL( decodedProvider );
       
   284 
       
   285         HBufC* providerName16 =
       
   286             EscapeUtils::ConvertToUnicodeFromUtf8L( decodedProvider->Des() );
       
   287         CleanupStack::PushL( providerName16 );
       
   288 
       
   289         array->AppendL( providerName16->Des() );
       
   290 
       
   291         CleanupStack::PopAndDestroy( providerName16 );
       
   292         CleanupStack::PopAndDestroy( decodedProvider );
       
   293         }
       
   294 
       
   295     CleanupStack::Pop( array );
       
   296     MUS_LOG( "[MUSSET] <- CMusSettingsModel::ListOfProfileNamesL()" )
       
   297     return array;
       
   298     }
       
   299 
       
   300 
       
   301 // -----------------------------------------------------------------------------
       
   302 // Returns the SIP profile name. Returns NULL buffer if no profile is found.
       
   303 // -----------------------------------------------------------------------------
       
   304 HBufC* CMusSettingsModel::ProfileNameL( TInt aId )
       
   305     {
       
   306     MUS_LOG1(
       
   307     "[MUSSET] -> CMusSettingsContainer::ProfileNameL()( %d )",
       
   308         aId )
       
   309     const TDesC8* providerName = 0;
       
   310     TInt index = ProfileIndexByIdL( aId );
       
   311     HBufC* buf = NULL;
       
   312 
       
   313     if ( index >= 0 )
       
   314         {
       
   315         if ( KErrNone == iHandler.ProfileArrayL()->At( index )->
       
   316                 GetParameter( KSIPProviderName, providerName ) )
       
   317             {
       
   318             HBufC8* decodedProvider =
       
   319                 EscapeUtils::EscapeDecodeL( *providerName );
       
   320             CleanupStack::PushL( decodedProvider );
       
   321             buf = EscapeUtils::ConvertToUnicodeFromUtf8L( *providerName );
       
   322             CleanupStack::PopAndDestroy( decodedProvider );
       
   323             }
       
   324         }
       
   325 
       
   326     if ( buf )
       
   327         {
       
   328         MUS_LOG_TDESC( "[MUSSET] <- CMusSettingsModel::ProfileNameL(): Profile name: ", buf->Des() )
       
   329         }
       
   330     else
       
   331         {
       
   332         MUS_LOG( "[MUSSET] <- CMusSettingsModel::ProfileNameL(): No profile found! " )
       
   333         }
       
   334     return buf;
       
   335     }
       
   336 
       
   337 
       
   338 // ----------------------------------------------------------------------------
       
   339 // Returns default SIP profile index.
       
   340 // ----------------------------------------------------------------------------
       
   341 TInt CMusSettingsModel::DefaultProfileIndex()
       
   342     {
       
   343     MUS_LOG( "[MUSSET] <- CMusSettingsModel::DefaultProfileIndex()" )
       
   344     return iHandler.DefaultProfileIndex();
       
   345     }
       
   346 
       
   347 
       
   348 // ----------------------------------------------------------------------------
       
   349 // Returns id of default SIP profile.
       
   350 // ----------------------------------------------------------------------------
       
   351 TUint32 CMusSettingsModel::DefaultProfileId()
       
   352     {
       
   353     MUS_LOG( "[MUSSET] <- CMusSettingsModel::DefaultProfileId()" )
       
   354     return iHandler.DefaultProfileId();
       
   355     }
       
   356 
       
   357 
       
   358 // ----------------------------------------------------------------------------
       
   359 // Returns SIP profile index based on the Id of SIP profile.
       
   360 // ----------------------------------------------------------------------------
       
   361 TInt CMusSettingsModel::ProfileIndexByIdL( TUint32 aId )
       
   362     {
       
   363     MUS_LOG( "[MUSSET] <- CMusSettingsModel::ProfileIndexByIdL()" )
       
   364     return iHandler.ProfileIndexByIdL( aId );
       
   365     }
       
   366 
       
   367 
       
   368 // ----------------------------------------------------------------------------
       
   369 // Returns SIP profile Id based on the index of SIP profile.
       
   370 // ----------------------------------------------------------------------------
       
   371 TUint32 CMusSettingsModel::ProfileIdByIndex( TUint aIndex )
       
   372     {
       
   373     MUS_LOG( "[MUSSET] <- CMusSettingsModel::ProfileIdByIndex()" )
       
   374     return iHandler.ProfileIdByIndex( aIndex );
       
   375     }
       
   376 
       
   377 
       
   378 // ----------------------------------------------------------------------------
       
   379 // Returns memory selction dialog pointer.
       
   380 // ----------------------------------------------------------------------------
       
   381 CAknMemorySelectionDialogMultiDrive* CMusSettingsModel::MemorySelectionDialogLC()
       
   382     {
       
   383     MUS_LOG( "[MUSSET] -> CMusSettingsModel::MemorySelectionDialogLC()" )
       
   384     TInt supportedMemTypes( AknCommonDialogsDynMem::EMemoryTypePhone|
       
   385                         AknCommonDialogsDynMem::EMemoryTypeInternalMassStorage|
       
   386                         AknCommonDialogsDynMem::EMemoryTypeMMCExternal|
       
   387                         AknCommonDialogsDynMem::EMemoryTypeRemote );    
       
   388     CAknMemorySelectionDialogMultiDrive* dlg = 
       
   389                                CAknMemorySelectionDialogMultiDrive::NewL(
       
   390                                     ECFDDialogTypeNormal,
       
   391                                     R_VS_RECORDED_VIDEO_SAVING_SETTING_PAGE,
       
   392                                     ETrue,
       
   393                                     supportedMemTypes );
       
   394     CleanupStack::PushL( dlg );
       
   395     MUS_LOG( "[MUSSET] <- CMusSettingsModel::MemorySelectionDialogLC()" )
       
   396     return dlg;
       
   397     }
       
   398