diff -r 50c53e893c3f -r 1221b68b8a5f commondrm/drmsettingsplugin/src/drmsettingsplugin.cpp --- a/commondrm/drmsettingsplugin/src/drmsettingsplugin.cpp Thu Aug 19 10:12:10 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,750 +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: View for DRMSettinsPlugin -* -*/ - - -// INCLUDE FILES -#include -#include // For HlpLauncher -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "drmsettingsplugin.h" -#include "drmsettingsplugincontainer.h" -#include "drmsettingsplugin.hrh" -#include "drmsettingsmodel.h" -#include "drmsettingsusagecheckbox.h" -#include "drmsettingsusagelist.h" -#include "wmdrmpkclientwrapper.h" - -// CONSTANTS -_LIT( KDRMSettingsPluginResourceFileName, "z:drmsettingspluginrsc.rsc" ); - - -// ============================= LOCAL FUNCTIONS ============================== - -// ========================= MEMBER FUNCTIONS ================================ - -// ---------------------------------------------------------------------------- -// CDRMSettingsPlugin::CDRMSettingsPlugin() -// -// Constructor -// ---------------------------------------------------------------------------- -// -CDRMSettingsPlugin::CDRMSettingsPlugin() - : iResourceLoader( *iCoeEnv ) - { - } - - -// --------------------------------------------------------------------------- -// CDRMSettingsPlugin::NewL() -// -// Symbian OS default constructor -// --------------------------------------------------------------------------- -CDRMSettingsPlugin* CDRMSettingsPlugin::NewL( TAny* /*aInitParams*/ ) - { - CDRMSettingsPlugin* self = new( ELeave ) CDRMSettingsPlugin; - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop(); - return self; - } - - - -// --------------------------------------------------------------------------- -// CDRMSettingsPlugin::ConstructL() -// -// Symbian OS two-phased constructor -// --------------------------------------------------------------------------- -void CDRMSettingsPlugin::ConstructL() - { - FeatureManager::InitializeLibL(); - - if ( FeatureManager::FeatureSupported( KFeatureIdWindowsMediaDrm ) ) - { - iWmdrmSupported = ETrue; - } - - if ( FeatureManager::FeatureSupported( KFeatureIdFfOmadrm2Support ) ) - { - iOmadrm2Supported = ETrue; - } - else - { - iOmadrm2Supported = EFalse; - } - - // Find the resource file - TParse parse; - parse.Set( KDRMSettingsPluginResourceFileName, - &KDC_RESOURCE_FILES_DIR, - NULL ); - TFileName fileName( parse.FullName() ); - - // Get language of resource file - BaflUtils::NearestLanguageFile( iCoeEnv->FsSession(), fileName ); - - // Open resource file - iResourceLoader.OpenL( fileName ); - - BaseConstructL( R_DRM_SETTINGS_VIEW ); - - } - - -// ---------------------------------------------------------------------------- -// CDRMSettingsPlugin::~CDRMSettingsPlugin -// -// Destructor -// ---------------------------------------------------------------------------- -CDRMSettingsPlugin::~CDRMSettingsPlugin() - { - FeatureManager::UnInitializeLib(); - iResourceLoader.Close(); - } - - -// --------------------------------------------------------------------------- -// TUid CDRMSettingsPlugin::Id() -// -// Returns view's ID. -// --------------------------------------------------------------------------- -TUid CDRMSettingsPlugin::Id() const - { - return KDRMSettingsPluginUid; - } - - -// ========================= From CGSPluginInterface ================== - -// ---------------------------------------------------------------------------- -// CDRMSettingsPlugin::GetCaption -// -// Return application/view caption. -// ---------------------------------------------------------------------------- -// -void CDRMSettingsPlugin::GetCaptionL( TDes& aCaption ) const - { - // the resource file is already opened. - HBufC* result( StringLoader::LoadL( R_DRM_SETTINGS_VIEW_CAPTION ) ); - aCaption.Copy( *result ); - delete result; - } - - -// ---------------------------------------------------------------------------- -// CDRMSettingsPlugin::PluginProviderCategory -// -// A means to identify the location of this plug-in in the framework. -// ---------------------------------------------------------------------------- -// -TInt CDRMSettingsPlugin::PluginProviderCategory() const - { - //To identify internal plug-ins. - return KGSPluginProviderInternal; - } - - -// ---------------------------------------------------------------------------- -// CDRMSettingsPlugin::Visible -// -// Provides the visibility status of self to framework. -// ---------------------------------------------------------------------------- -// -TBool CDRMSettingsPlugin::Visible() const - { - TBool visible( EFalse ); - - // The plugin is visible if __DRM_OMA2 or __WINDOWS_MEDIA_DRM are enabled. - if( FeatureManager::FeatureSupported( KFeatureIdDrmOma2 ) || - FeatureManager::FeatureSupported( KFeatureIdWindowsMediaDrm ) ) - { - visible = ETrue; - } - - return visible; - } - - -// --------------------------------------------------------------------------- -// CDRMSettingsPlugin::HandleCommandL(TInt aCommand) -// -// Handles commands directed to this class. -// --------------------------------------------------------------------------- -void CDRMSettingsPlugin::HandleCommandL( TInt aCommand ) - { - switch ( aCommand ) - { - case EDRMSettingsCmdAppChangeMSK: - { - const TInt currentFeatureId( Container()->CurrentFeatureId() ); - - switch ( currentFeatureId ) - { -#ifdef __DRM_OMA2 - case EDRMSettingsIdTransactionTracking: - if ( iOmadrm2Supported ) - { - UpdateTransactionTrackingSettingL( EFalse ); - } - break; - -#ifdef RD_DRM_SILENT_RIGHTS_ACQUISITION - case EDRMSettingsIdAutomaticActivation: - if ( iOmadrm2Supported ) - { - UpdateAutomaticActivationSettingL( EFalse ); - } - break; -#endif // RD_DRM_SILENT_RIGHTS_ACQUISITION - -#ifdef RD_DRM_METERING - case EDRMSettingsIdUsageReporting: - if ( iOmadrm2Supported ) - { - UpdateUsageReportingSettingL(); - } - break; -#endif // RD_DRM_METERING -#endif // __DRM_OMA2 - - case EDRMSettingsIdWMDRMLicenseDeletion: - - if ( iWmdrmSupported ) - { - DoWMDRMLicenseDeletionL(); - } - - break; - - default: - - break; - } - - break; - } - case EDRMSettingsCmdAppChange: - { - const TInt currentFeatureId( Container()->CurrentFeatureId() ); - - switch ( currentFeatureId ) - { -#ifdef __DRM_OMA2 - case EDRMSettingsIdTransactionTracking: - if ( iOmadrm2Supported ) - { - UpdateTransactionTrackingSettingL( ETrue ); - } - break; -#ifdef RD_DRM_SILENT_RIGHTS_ACQUISITION - case EDRMSettingsIdAutomaticActivation: - if ( iOmadrm2Supported ) - { - UpdateAutomaticActivationSettingL( ETrue ); - } - break; -#endif // RD_DRM_SILENT_RIGHTS_ACQUISITION - -#ifdef RD_DRM_METERING - case EDRMSettingsIdUsageReporting: - if ( iOmadrm2Supported ) - { - UpdateUsageReportingSettingL(); - } - break; -#endif // RD_DRM_METERING -#endif // __DRM_OMA2 - - case EDRMSettingsIdWMDRMLicenseDeletion: - - if ( iWmdrmSupported ) - { - DoWMDRMLicenseDeletionL(); - } - - break; - - default: - - break; - } - break; - } - case EAknSoftkeyBack: - - iAppUi->ActivateLocalViewL( KGSSecurityPluginUid ); - - break; - - case EAknCmdHelp: - { - - if( FeatureManager::FeatureSupported( KFeatureIdHelp ) ) - { - HlpLauncher::LaunchHelpApplicationL( - iEikonEnv->WsSession(), - iAppUi->AppHelpContextL() ); - } - - break; - - } - default: - - iAppUi->HandleCommandL( aCommand ); - - break; - } - } - - -// --------------------------------------------------------------------------- -// CDRMSettingsPlugin::UpdateListBoxL -// -// Updates listbox items. -// --------------------------------------------------------------------------- -// -void CDRMSettingsPlugin::UpdateListBoxL( TInt aItemId ) - { - Container()->UpdateListBoxL( aItemId ); - } - - -// ---------------------------------------------------------------------------- -// CDRMSettingsPlugin::Container -// -// Return handle to container class. -// ---------------------------------------------------------------------------- -// -CDRMSettingsPluginContainer* CDRMSettingsPlugin::Container() - { - return static_cast( iContainer ); - } - - -// --------------------------------------------------------------------------- -// CDRMSettingsPlugin::NewContainerL() -// -// Creates new iContainer. -// --------------------------------------------------------------------------- -// -void CDRMSettingsPlugin::NewContainerL() - { - iContainer = new( ELeave ) CDRMSettingsPluginContainer( iWmdrmSupported, - iOmadrm2Supported ); - } - - -// --------------------------------------------------------------------------- -// CDRMSettingsPlugin::HandleListBoxSelectionL() -// -// Handles events raised through a rocker key. Checks the run-time support of -// Oma Drm 2 when needed. -// --------------------------------------------------------------------------- -void CDRMSettingsPlugin::HandleListBoxSelectionL() - { - const TInt currentFeatureId( Container()->CurrentFeatureId() ); - - switch ( currentFeatureId ) - { -#ifdef __DRM_OMA2 - case EDRMSettingsIdTransactionTracking: - if ( iOmadrm2Supported ) - { - UpdateTransactionTrackingSettingL( EFalse ); - } - break; -#ifdef RD_DRM_SILENT_RIGHTS_ACQUISITION - case EDRMSettingsIdAutomaticActivation: - if ( iOmadrm2Supported ) - { - UpdateAutomaticActivationSettingL( EFalse ); - } - break; -#endif // RD_DRM_SILENT_RIGHTS_ACQUISITION - -#ifdef RD_DRM_METERING - case EDRMSettingsIdUsageReporting: - if ( iOmadrm2Supported ) - { - UpdateUsageReportingSettingL(); - } - break; -#endif // RD_DRM_METERING -#endif // __DRM_OMA2 - - case EDRMSettingsIdWMDRMLicenseDeletion: - - if ( iWmdrmSupported ) - { - DoWMDRMLicenseDeletionL(); - } - - break; - - default: - - break; - } - } - - -// --------------------------------------------------------------------------- -// CDRMSettingsPlugin::UpdateTransactionTrackingSettingL -// -// Display Transaction tracking setting page. -// --------------------------------------------------------------------------- -// -void CDRMSettingsPlugin::UpdateTransactionTrackingSettingL( TBool aShowSettingPage ) - { - if( FeatureManager::FeatureSupported( KFeatureIdDrmOma2 ) ) - { - TInt currentValue( Container()->Model()->TransactionTrackingStateL() ); - TBool isValueUpdated( EFalse ); - - if ( aShowSettingPage ) - { - isValueUpdated = ShowTransactionTrackingSettingPageL( currentValue ); - } - else - { - switch ( currentValue ) - { - case KDRMTransactionTrackingDisabled: - - currentValue = KDRMTransactionTrackingEnabled; - - break; - - case KDRMTransactionTrackingEnabled: - - currentValue = KDRMTransactionTrackingDisabled; - - break; - - default: - - break; - } - isValueUpdated = ETrue; - } - // If value is updated, store it to model: - if ( isValueUpdated ) - { - Container()->Model()->SetTransactionTrackingStateL( currentValue ); - UpdateListBoxL( EDRMSettingsIdTransactionTracking ); - } - } - } - - -// --------------------------------------------------------------------------- -// CDRMSettingsPlugin::ShowTransactionTrackingSettingPageL() -// -// Display transaction tracking setting page. Selected listbox item index -// must be mapped to transaction tracking state because index value is -// different from state value. -// --------------------------------------------------------------------------- -// -TBool CDRMSettingsPlugin::ShowTransactionTrackingSettingPageL( - TInt& aTTState ) - { - // in case DRM Phase 2 is not supported, return EFalse. - TBool isValueUpdated( EFalse ); - TInt selectedTTItemIndex( 0 ); - TInt originalTTState( aTTState ); - - // Set selected listbox item to current transaction tracking state: - switch ( aTTState ) - { - case KDRMTransactionTrackingDisabled: - - selectedTTItemIndex = KDRMTTItemIndexDisabled; - - break; - - case KDRMTransactionTrackingEnabled: - - selectedTTItemIndex = KDRMTTItemIndexEnabled; - - break; - } - - CDesCArrayFlat* items( - iCoeEnv->ReadDesC16ArrayResourceL( R_TTRACKING_SETTING_PAGE_LBX ) ); - CleanupStack::PushL( items ); - CAknRadioButtonSettingPage* dlg( - new (ELeave) CAknRadioButtonSettingPage( R_TTRACKING_SETTING_PAGE, - selectedTTItemIndex, - items ) ); - - dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged ); - CleanupStack::PopAndDestroy( items ); - - // Map selected listbox item to correct state: - switch ( selectedTTItemIndex ) - { - case KDRMTTItemIndexDisabled: - - aTTState = KDRMTransactionTrackingDisabled; - - break; - - case KDRMTTItemIndexEnabled: - - aTTState = KDRMTransactionTrackingEnabled; - - break; - } - - // Check is value updated: - if( aTTState != originalTTState ) - { - isValueUpdated = ETrue; - } - - return isValueUpdated; - } - - -// --------------------------------------------------------------------------- -// CDRMSettingsPlugin::UpdateAutomaticActivationSettingL -// -// Display Automatic activation setting page. -// --------------------------------------------------------------------------- -// -void CDRMSettingsPlugin::UpdateAutomaticActivationSettingL( TBool aShowSettingPage ) - { - if( FeatureManager::FeatureSupported( KFeatureIdDrmOma2 ) ) - { - TInt currentValue( Container()->Model()->AutomaticActivationStateL() ); - TBool isValueUpdated( EFalse ); - - if ( aShowSettingPage ) - { - isValueUpdated = ShowAutomaticActivationSettingPageL( currentValue ); - } - else - { - switch ( currentValue ) - { - case KDRMAutomaticActivationNotAllowed: - - currentValue = KDRMAutomaticActivationAllowed; - - break; - - case KDRMAutomaticActivationAllowed: - - currentValue = KDRMAutomaticActivationNotAllowed; - - break; - - default: - - break; - } - isValueUpdated = ETrue; - } - // If value is updated, store it to model: - if ( isValueUpdated ) - { - Container()->Model()->SetAutomaticActivationStateL( currentValue ); - UpdateListBoxL( EDRMSettingsIdAutomaticActivation ); - } - } - } - - -// --------------------------------------------------------------------------- -// CDRMSettingsPlugin::ShowAutomaticActivationSettingPageL() -// -// Display Automatic activation setting page. Selected listbox item index -// must be mapped to automatic activation state because index value is -// different from state value. -// --------------------------------------------------------------------------- -// -TBool CDRMSettingsPlugin::ShowAutomaticActivationSettingPageL( - TInt& aAAState ) - { - // in case DRM Phase 2 is not supported, return EFalse. - TBool isValueUpdated( EFalse ); - TInt selectedAAItemIndex( 0 ); - TInt originalAAState( aAAState ); - - // Set selected listbox item to current state: - switch ( aAAState ) - { - case KDRMAutomaticActivationNotAllowed: - - selectedAAItemIndex = KDRMAAItemIndexDisabled; - - break; - - case KDRMAutomaticActivationAllowed: - - selectedAAItemIndex = KDRMAAItemIndexEnabled; - - break; - } - - CDesCArrayFlat* items( - iCoeEnv->ReadDesC16ArrayResourceL( R_AUTOM_ACTIV_SETTING_PAGE_LBX ) ); - CleanupStack::PushL( items ); - CAknRadioButtonSettingPage* dlg( - new (ELeave) CAknRadioButtonSettingPage( R_AUTOM_ACTIV_SETTING_PAGE, - selectedAAItemIndex, - items ) ); - - dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged ); - CleanupStack::PopAndDestroy( items ); - - // Map selected listbox item to correct state: - switch ( selectedAAItemIndex ) - { - case KDRMAAItemIndexDisabled: - - aAAState = KDRMAutomaticActivationNotAllowed; - - break; - - case KDRMAAItemIndexEnabled: - - aAAState = KDRMAutomaticActivationAllowed; - - break; - - } - - // Check is value updated: - if( aAAState != originalAAState ) - { - isValueUpdated = ETrue; - } - - return isValueUpdated; - } - - -// --------------------------------------------------------------------------- -// CDRMSettingsPlugin::UpdateUsageReportingSettingL -// -// Display Usage Reporting setting page. -// --------------------------------------------------------------------------- -// -void CDRMSettingsPlugin::UpdateUsageReportingSettingL() - { - TBool isValueUpdated( EFalse ); - - if( FeatureManager::FeatureSupported( KFeatureIdDrmOma2 ) ) - { - CDRMSettingsModel* model( this->Container()->Model() ); - - CDRMSettingUsageList* usageList( CDRMSettingUsageList::NewL( model ) ); - CleanupStack::PushL( usageList ); - - CDrmSettingUsageCheckBox* usageCheckBox( - new (ELeave) CDrmSettingUsageCheckBox( - R_DRM_SETTINGS_METERING_CHECKBOX_PAGE, - usageList, - model, - this ) ); - - isValueUpdated = - usageCheckBox->ExecuteLD( CAknSettingPage::EUpdateWhenAccepted ); - - CleanupStack::PopAndDestroy( usageList ); - } - - if ( isValueUpdated ) - { - UpdateListBoxL( EDRMSettingsIdUsageReporting ); - } - } - -// --------------------------------------------------------------------------- -// CDRMSettingsPlugin::DoWMDRMLicenseDeletionL -// -// Display WMDRM license deletion setting page. -// --------------------------------------------------------------------------- -// -void CDRMSettingsPlugin::DoWMDRMLicenseDeletionL() - { - if ( iWmdrmSupported ) - { - TInt r = KErrNone; - RLibrary library; - r = library.Load( KWmdrmPkClientWrapperName ); - if( !r ) - { - CleanupClosePushL( library ); - CWmDrmPkClientWrapper* wrapper = - (CWmDrmPkClientWrapper*)library.Lookup( KWmdrmPkClientNewL )(); - CleanupStack::PushL( wrapper ); - User::LeaveIfError( wrapper->Connect() ); - wrapper->DeleteRights(); - wrapper->Close(); - CleanupStack::PopAndDestroy( 2, &library ); - } - } - } - -// ---------------------------------------------------------------------------- -// CDRMSettingsPlugin::DynInitMenuPaneL() -// -// Display the dynamic menu -// ---------------------------------------------------------------------------- -void CDRMSettingsPlugin::DynInitMenuPaneL( - TInt aResourceId, - CEikMenuPane* aMenuPane ) - { - // show or hide the 'help' menu item when supported - if( aResourceId == R_DRM_SETTINGS_MENU_ITEM_EXIT ) - { - User::LeaveIfNull( aMenuPane ); - - if( FeatureManager::FeatureSupported( KFeatureIdDrmOma2 ) ) - { - if ( FeatureManager::FeatureSupported( KFeatureIdHelp ) ) - { - aMenuPane->SetItemDimmed( EAknCmdHelp, EFalse ); - } - else - { - aMenuPane->SetItemDimmed( EAknCmdHelp, ETrue ); - } - } - else - { - aMenuPane->SetItemDimmed( EAknCmdHelp, ETrue ); - } - } - } - - - -// End of File