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