diff -r 8bda91a87a00 -r 8ee96d21d9bf gssettingsuis/Gs/GSCallBarringPlugin/Src/GSCallBarringPlugin.cpp --- a/gssettingsuis/Gs/GSCallBarringPlugin/Src/GSCallBarringPlugin.cpp Thu Aug 19 10:12:30 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,543 +0,0 @@ -/* -* Copyright (c) 2006 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 the Barring folder -* -*/ - - -// INCLUDE FILES -#include "GSCallBarringPlugin.h" -#include "GSCallBarringPluginContainer.h" -#include "GSPhoneSettingConstants.h" -#include "GSInternetBarringView.h" -#include "GSCellularCallBarringView.h" -#include "GSMainBarringView.h" -#include "CallBarringPlugin.hrh" -#include "LocalViewIds.h" -#include "GsLogger.h" - -#include -#include // For HlpLauncher -#include -#include -#include //for extended error codes -#include //for StringLoader -#include //for CPsetContainer -#include //for CPsuiContainer -#include //for menu bar -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#if defined(__VOIP) && defined(RD_VOIP_REL_2_2) -#include -#endif // __VOIP && RD_VOIP_REL_2_2 -// LOCAL CONSTANTS -_LIT( KGSCallBarringPluginResourceFileName, "z:GSCallBarringPluginRsc.rsc" ); -_LIT( KGSNameOfClass, "CGSCallBarringPlugin" ); - -enum - { - EGSCallBarringPluginPanicNullPtr - }; - - -// ========================= MEMBER FUNCTIONS ================================ -// --------------------------------------------------------------------------- -// -// C++ constructor. -// -// --------------------------------------------------------------------------- -CGSCallBarringPlugin::CGSCallBarringPlugin() - { - } - -// --------------------------------------------------------------------------- -// -// Symbian OS two-phased constructor (second phase) -// -// --------------------------------------------------------------------------- -void CGSCallBarringPlugin::ConstructL() - { - __GSLOGSTRING("[GS]--> CGSCallBarringPlugin::ConstructL"); - FeatureManager::InitializeLibL(); - OpenLocalizedResourceFileL( KGSCallBarringPluginResourceFileName, - iResourceLoader ); - //PS listener initialization - iBtSapListener = CGSPubSubsListener::NewL( - KPSUidBluetoothSapConnectionState, - KBTSapConnectionState, this ); - SetCSPActiveL( ETrue ); - iBarringView = NULL; -#if defined(__VOIP) && defined(RD_VOIP_REL_2_2) - iVoipSupported = EFalse; - CSPSettings* spSettings = CSPSettings::NewL(); - if ( spSettings->IsFeatureSupported( ESupportVoIPFeature ) && - spSettings->IsFeatureSupported( ESupportVoIPSSFeature ) ) - { - iVoipSupported = ETrue; - } - delete spSettings; -#else // __VOIP && RD_VOIP_REL_2_2 - if ( FeatureManager::FeatureSupported( KFeatureIdCommonVoip ) ) - { - TInt supported( KGSSettingOff ); - CRepository* telephonyrep = - CRepository::NewL( KCRUidTelephonySettings ); - telephonyrep->Get( KDynamicVoIP, supported ); - iVoipSupported = KGSSettingOff != supported; - delete telephonyrep; - } -#endif // __VOIP && RD_VOIP_REL_2_2 - BaseConstructL( R_GS_BARRING_MAIN_VIEW ); - // VoIP feature supported - __GSLOGSTRING("[GS] <--CGSCallBarringPlugin::ConstructL"); - } - - -// --------------------------------------------------------------------------- -// CGSCallBarringPlugin::NewL() -// -// Symbian OS default constructor -// --------------------------------------------------------------------------- -CGSCallBarringPlugin* CGSCallBarringPlugin::NewL( TAny* /*aInitParams*/ ) - { - CGSCallBarringPlugin* self = new( ELeave ) CGSCallBarringPlugin(); - - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop(); - - return self; - } - - -// --------------------------------------------------------------------------- -// -// Symbian OS two-phased constructor (first phase) -// -// --------------------------------------------------------------------------- -CGSCallBarringPlugin* CGSCallBarringPlugin::NewLC() - { - __GSLOGSTRING("[GS]--> CGSCallBarringPlugin::NewLC"); - CGSCallBarringPlugin* self = new ( ELeave ) CGSCallBarringPlugin; - CleanupStack::PushL( self ); - self->ConstructL(); - - __GSLOGSTRING("[GS] <--CGSCallBarringPlugin::NewLC"); - return self; - } - -// --------------------------------------------------------------------------- -// -// C++ destructor -// -// --------------------------------------------------------------------------- -CGSCallBarringPlugin::~CGSCallBarringPlugin() - { - FeatureManager::UnInitializeLib(); - TRAP_IGNORE( SetCSPActiveL( EFalse ) ); - if ( iBtSapListener ) - { - delete iBtSapListener; - } - } - -// --------------------------------------------------------------------------- -// -// Returns Id of the Barring view. -// -// --------------------------------------------------------------------------- -TUid CGSCallBarringPlugin::Id() const - { - return KCallBarringPluginId; - } - -// --------------------------------------------------------------------------- -// -// Handles other than list box events. -// -// --------------------------------------------------------------------------- -void CGSCallBarringPlugin::HandleCommandL( TInt aCommand ) - { - __GSLOGSTRING("[GS]--> CGSCallBarringPlugin::HandleCommandL"); - switch ( aCommand ) - { - case EAknSoftkeyBack: - RemoveLocalViews(); - iAppUi->ActivateLocalViewL( KGSMainViewUid ); - break; - case EAknCmdHelp: - { - if( FeatureManager::FeatureSupported( KFeatureIdHelp ) ) - { - HlpLauncher::LaunchHelpApplicationL( - iEikonEnv->WsSession(), iAppUi->AppHelpContextL() ); - } - break; - } - default: - iAppUi->HandleCommandL( aCommand ); - break; - } - __GSLOGSTRING("[GS] <--CGSCallBarringPlugin::HandleCommandL"); - } - -// --------------------------------------------------------------------------- -// -// Activates view. -// -// --------------------------------------------------------------------------- -void CGSCallBarringPlugin::DoActivateL( const TVwsViewId& aPrevViewId, - TUid aCustomMessageId, - const TDesC8& aCustomMessage ) - { - __GSLOGSTRING("[GS]--> CGSCallBarringPlugin::DoActivateL"); - CGSBaseView::DoActivateL( aPrevViewId, aCustomMessageId, aCustomMessage ); - ActivateInternalViewL(); - __GSLOGSTRING("[GS] <--CGSCallBarringPlugin::DoActivateL"); - } - -// --------------------------------------------------------------------------- -// -// Deactivates view. -// -// --------------------------------------------------------------------------- -void CGSCallBarringPlugin::DoDeactivate() - { - __GSLOGSTRING("[GS]--> CGSCallBarringPlugin::DoDeactivate"); - CGSBaseView::DoDeactivate(); - __GSLOGSTRING("[GS] <--CGSCallBarringPlugin::DoDeactivate"); - } - - -// --------------------------------------------------------------------------- -// -// Creates new iContainer. -// -// --------------------------------------------------------------------------- -void CGSCallBarringPlugin::NewContainerL() - { - iContainer = new (ELeave) CGSCallBarringPluginContainer(); - } - -// --------------------------------------------------------------------------- -// CGSCallBarringPlugin::Container -// -// Returns call container item -// --------------------------------------------------------------------------- -// -CGSCallBarringPluginContainer* CGSCallBarringPlugin::Container() - { - return static_cast ( iContainer ); - } - -// ========================= from CGSPluginInterface ================== - -// ---------------------------------------------------------------------------- -// CGSCallBarringPlugin::GetCaption -// -// Return application/view caption. -// ---------------------------------------------------------------------------- -// -void CGSCallBarringPlugin::GetCaptionL( TDes& aCaption ) const - { - // the resource file is already opened. - HBufC* result = StringLoader::LoadL( R_GS_CALL_BARRING_CAPTION ); - - aCaption.Copy( *result ); - delete result; - } - - -// ---------------------------------------------------------------------------- -// CGSCallBarringPlugin::PluginProviderCategory -// -// A means to identify the location of this plug-in in the framework. -// ---------------------------------------------------------------------------- -// -TInt CGSCallBarringPlugin::PluginProviderCategory() const - { - //To identify internal plug-ins. - return KGSPluginProviderInternal; - } - - -// ---------------------------------------------------------------------------- -// CGSCallBarringPlugin::Visible -// -// Provides the visibility status of self to framework. -// ---------------------------------------------------------------------------- -// -TBool CGSCallBarringPlugin::Visible() const - { - TBool result( ETrue ); - TInt value = 0; - RProperty::Get( KPSUidBluetoothSapConnectionState, - KBTSapConnectionState, value ); - if ( value == EBTSapNotConnected || value == EBTSapConnecting ) - { - //Now checking also for CSP support - __ASSERT_ALWAYS( iCSP != NULL, User::Panic( KGSNameOfClass, - EGSCallBarringPluginPanicNullPtr ) ); - TInt err = KErrNone; - err = iCSP->IsCBSupported( result ); - //CSP modifies result value even if something goes wrong - //CSP will return KErrNotSupported (-5) in cases when - //it is not possible to read CSP values from SIM card - //Call Barring should be still displayed in this case - if ( err != KErrNone ) - { - result = ETrue; - } - } - else - { - result = EFalse; - } - return result; - } - -// ----------------------------------------------------------------------------- -// CGSCallBarringPlugin::CreateIconL() -// -// -// ----------------------------------------------------------------------------- -// -CGulIcon* CGSCallBarringPlugin::CreateIconL( const TUid aIconType ) - { - //EMbm - CGulIcon* icon; - TParse* fp = new( ELeave ) TParse(); - CleanupStack::PushL( fp ); - fp->Set( KGSCallBarringPluginIconDirAndName, &KDC_BITMAP_DIR, NULL ); - - if( aIconType == KGSIconTypeLbxItem ) - { - icon = AknsUtils::CreateGulIconL( - AknsUtils::SkinInstance(), - KAknsIIDQgnPropSetBarrSub, - fp->FullName(), - EMbmGscallbarringpluginQgn_prop_set_barr_sub, - EMbmGscallbarringpluginQgn_prop_set_barr_sub_mask ); - } - else - { - icon = CGSPluginInterface::CreateIconL( aIconType ); - } - - CleanupStack::PopAndDestroy( fp ); - - return icon; - } - - -// --------------------------------------------------------------------------- -// CGSCallBarringPlugin::HandleNotifyPSL -// -// Handling PS keys change -// --------------------------------------------------------------------------- -// -void CGSCallBarringPlugin::HandleNotifyPSL( const TUid aUid, const TInt& aKey, - const TRequestStatus& /* aStatus */ ) - { - if ( aUid == KPSUidBluetoothSapConnectionState && - aKey == KBTSapConnectionState ) - { - Visible(); - } - } - -// ---------------------------------------------------------------------------- -// CGSCallBarringPlugin::SetCSPActiveL -// -// Set Customer Service Profile active -// ---------------------------------------------------------------------------- -// -void CGSCallBarringPlugin::SetCSPActiveL( TBool aValue ) - { - if ( aValue ) - { - iCSP = CPsetCustomerServiceProfile::NewL(); - User::LeaveIfError( iCSP->OpenCSProfileL() ); - } - else - { - delete iCSP; - iCSP = NULL; - } - } - -// --------------------------------------------------------------------------- -// CGSCallBarringPlugin::HandleClientRectChange -// -// Handle changes to rect(). -// --------------------------------------------------------------------------- -// -void CGSCallBarringPlugin::HandleClientRectChange() - { - if ( iContainer ) - { - iContainer->SetRect( ClientRect() ); - } - } - -// --------------------------------------------------------------------------- -// CGSCallBarringPlugin::ActivateInternalViewL -// -// Activate local views within this plug-in. -// --------------------------------------------------------------------------- -void CGSCallBarringPlugin::ActivateInternalViewL() - { - TInt btSapState = 0; - RProperty::Get( KPSUidBluetoothSapConnectionState, - KBTSapConnectionState, - btSapState ); - - if ( iVoipSupported ) - { - CreateLocalViewL( KCallMainBarringViewId ); - } - else - { - if ( btSapState == EBTSapNotConnected ) - { - CreateLocalViewL( KCallBarringViewId ); - } - } - - } - -// --------------------------------------------------------------------------- -// CGSCallBarringPlugin::CreateLocalViewL -// -// Initializes local views within this plug-in based on the view ID. -// --------------------------------------------------------------------------- -void CGSCallBarringPlugin::CreateLocalViewL( TUid aLocalViewId ) - { - CGSLocalBaseView* view; - - // Check if the view exists. If view does not exist: - // 1. Create the view - // 2. Add view to cleanupstack (NewLC) - // 3. Add view to iAppUi -> iAppUi takes the view ownership. - // 4. Remove view from cleanupstack - // 5. Assign pointer of created view to member variable - // - if ( aLocalViewId == KCallBarringViewId ) - { - //Check if BarringView already exists - if ( !iBarringView ) - { - view = CGSSettListBarringView::NewLC(); - iAppUi->AddViewL( view ); - CleanupStack::Pop( view ); - iBarringView = view; - } - iAppUi->ActivateLocalViewL( aLocalViewId ); - } - else if ( aLocalViewId == KCallMainBarringViewId ) - { - TUid viewId = aLocalViewId; - if ( !iBarringView ) - { - if ( FeatureManager::FeatureSupported( KFeatureIdRestrictedCallBarring ) ) - { - // create the barring view directly if it's in restricted - // call barring - view = CGSSettListBarringView::NewLC(); - viewId = view->Id(); - } - else - { - view = CGSSettListMainBarringView::NewLC(); - } - iAppUi->AddViewL( view ); - CleanupStack::Pop( view ); - iBarringView = view; - } - // Activate the correct view in case restricted call barring is - // active - iAppUi->ActivateLocalViewL( viewId ); - } - - } - - -// --------------------------------------------------------------------------- -// CGSCallBarringPlugin::RemoveLocalViews -// -// -// --------------------------------------------------------------------------- -// -void CGSCallBarringPlugin::RemoveLocalViews() - { - // Remove view from iAppUi -> View is deleted by iAppUi automatically. - if ( iBarringView ) - { - if ( iVoipSupported ) - { - iAppUi->RemoveView( KCallMainBarringViewId );// Also deletes view. - } - else - { - iAppUi->RemoveView( KCallBarringViewId );// Also deletes view. - } - iBarringView = NULL; - } - } - -// --------------------------------------------------------------------------- -// CGSCallBarringPlugin::HandleListBoxSelectionL -// -// Handle any user actions while in the list view. -// --------------------------------------------------------------------------- -void CGSCallBarringPlugin::HandleListBoxSelectionL() - { - } - -// --------------------------------------------------------------------------- -// CGSCallBarringPlugin::VoIPSupported -// -// Is VoIP feature supported. -// --------------------------------------------------------------------------- - -TBool CGSCallBarringPlugin::VoipSupported() const - { - return iVoipSupported; - } - -TGSListboxItemTypes CGSCallBarringPlugin::ItemType() - { - __GSLOGSTRING1( "[CGSCallBarringPlugin::ItemType] type %d", EGSItemTypeSettingDialog ); - return EGSItemTypeSettingDialog; - } - -void CGSCallBarringPlugin::HandleSelection( - const TGSSelectionTypes /*aSelectionType*/ ) - { - __GSLOGSTRING( "[CGSCallBarringPlugin::HandleSelection] Start" ); - ActivateInternalViewL(); - __GSLOGSTRING( "[CGSCallBarringPlugin::HandleSelection] End" ); - } - // End of file