diff -r 5b6f26637ad3 -r f4a778e096c2 phonebookui/Phonebook2/USIMThinExtension/src/CPsu2ThinUIExtensionPlugin.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phonebookui/Phonebook2/USIMThinExtension/src/CPsu2ThinUIExtensionPlugin.cpp Wed Sep 01 12:29:52 2010 +0100 @@ -0,0 +1,277 @@ +/* +* Copyright (c) 2005-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: Phonebook 2 USIM Thin UI extension plugin. +* +*/ + + +// INCLUDE FILES +#include "CPsu2ThinUIExtensionPlugin.h" + +// Phonebook 2 +#include "CPsu2CopySimContactsCmd.h" +#include +#include +#include +#include +#include +#include "CPsu2CheckAvailabeSimStore.h" + +// Virtual Phonebook +#include +#include +#include + +// System includes +#include + +#include + +/// Unnamed namespace for local definitions +namespace { + +/// All stores in "SIM Memory" cascade menu +const TUint32 KAllSimStores= + MVPbkSimPhone::KVPbkCapsSDNSupported | + MVPbkSimPhone::KVPbkCapsFDNSupported | + MVPbkSimPhone::KVPbkCapsONSupported; + +/** + * Dims given menu item from given menu pane. + * + * @param aMenuPane Menu pane where menu item resides. + * @param aCommandId Id of the menu item to dim. + */ +void DimMenuItem( CEikMenuPane& aMenuPane, TInt aCommandId ) + { + TInt pos = KErrNotFound; + if ( aMenuPane.MenuItemExists( aCommandId, pos ) ) + { + aMenuPane.SetItemDimmed( aCommandId, ETrue ); + } + } + +} /// namespace + + +// -------------------------------------------------------------------------- +// CPsu2CopySimContactsCmd::CPsu2CopySimContactsCmd +// -------------------------------------------------------------------------- +// +CPsu2ThinUIExtensionPlugin::CPsu2ThinUIExtensionPlugin() + { + } + +// -------------------------------------------------------------------------- +// CPsu2ThinUIExtensionPlugin::~CPsu2ThinUIExtensionPlugin +// -------------------------------------------------------------------------- +// +CPsu2ThinUIExtensionPlugin::~CPsu2ThinUIExtensionPlugin() + { + PBK2_DEBUG_PRINT(PBK2_DEBUG_STRING + ("CPsu2ThinUIExtensionPlugin::~CPsu2ThinUIExtensionPlugin(0x%x)"), this); + + delete iStoreChecker; + delete iCopySimContactsCmd; + delete iPhone; + } + +// -------------------------------------------------------------------------- +// CPsu2ThinUIExtensionPlugin::NewL +// -------------------------------------------------------------------------- +// +CPsu2ThinUIExtensionPlugin* CPsu2ThinUIExtensionPlugin::NewL() + { + CPsu2ThinUIExtensionPlugin* self = + new( ELeave ) CPsu2ThinUIExtensionPlugin; + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + +// -------------------------------------------------------------------------- +// CPsu2ThinUIExtensionPlugin::ConstructL +// -------------------------------------------------------------------------- +// +void CPsu2ThinUIExtensionPlugin::ConstructL() + { + iServiceTable.Reset(); + iPhone = VPbkSimStoreFactory::CreatePhoneL(); + iPhone->OpenL( *this ); + } + +// -------------------------------------------------------------------------- +// CPsu2ThinUIExtensionPlugin::DynInitMenuPaneL +// -------------------------------------------------------------------------- +// +void CPsu2ThinUIExtensionPlugin::DynInitMenuPaneL + ( TInt aResourceId, CEikMenuPane* aMenuPane, + MPbk2ContactUiControl& aControl ) + { + switch (aResourceId) + { + case R_PHONEBOOK2_NAMESLIST_OTHER_MEMORIES_MENU_PLACEHOLDER: + { + if ( iServiceTable.IsOff( KAllSimStores ) || + aControl.ContactsMarked() || + ( iStoreChecker && + !iStoreChecker->IsContactsAvailabe( + VPbkContactStoreUris::SimGlobalOwnNumberUri()) && +//SDN not shown in sim menu anymore (in ECE) +// !iStoreChecker->IsContactsAvailabe( +// VPbkContactStoreUris::SimGlobalSdnUri()) && + iServiceTable.IsOff( MVPbkSimPhone::KVPbkCapsFDNSupported ) + ) + ) + { + // Dim "SIM Memory" cascading menu if there are no + // SIM stores to launch, or there are marked items + DimMenuItem(*aMenuPane, EPsu2CmdCascadingSimMemory); + } + break; + } + + case R_PSU2_CASCADING_SIM_MEMORY_MENU_PANE: + { + // My number dimmed until index bug is corrected in SIM server + if ( iServiceTable.IsOff + ( MVPbkSimPhone::KVPbkCapsONSupported ) || + ( iStoreChecker && + !iStoreChecker->IsContactsAvailabe( + VPbkContactStoreUris::SimGlobalOwnNumberUri() ) ) ) + { + // "My Number" item + DimMenuItem( *aMenuPane, EPsu2CmdLaunchOwnNumberView ); + } +//SDN not shown in sim menu anymore so dim it always (in ECE) +// if ( iServiceTable.IsOff +// ( MVPbkSimPhone::KVPbkCapsSDNSupported ) || +// ( iStoreChecker && +// !iStoreChecker->IsContactsAvailabe( +// VPbkContactStoreUris::SimGlobalSdnUri() ) ) ) + { + // "Service Dialing" item + DimMenuItem( *aMenuPane, EPsu2CmdLaunchServiceDialingView ); + } + if ( iServiceTable.IsOff + ( MVPbkSimPhone::KVPbkCapsFDNSupported ) ) + { + // "Fixed Dialing" item + DimMenuItem( *aMenuPane, EPsu2CmdLaunchFixedDialingView ); + } + if ( iStoreChecker && + !iStoreChecker->IsContactsAvailabe( + VPbkContactStoreUris::SimGlobalAdnUri()) && + !iStoreChecker->IsContactsAvailabe( + VPbkContactStoreUris::SimGlobalSdnUri()) ) + { + DimMenuItem( *aMenuPane, EPsu2CmdCopyToContacts ); + } + break; + } + default: + { + // Do nothing + break; + } + } + } + +// -------------------------------------------------------------------------- +// CPsu2ThinUIExtensionPlugin::ExtensionStartupL +// -------------------------------------------------------------------------- +// +void CPsu2ThinUIExtensionPlugin::ExtensionStartupL + ( MPbk2StartupMonitor& aStartupMonitor) + { + aStartupMonitor.RegisterEventsL( *this ); + } + +// -------------------------------------------------------------------------- +// CPsu2ThinUIExtensionPlugin::PhoneOpened +// -------------------------------------------------------------------------- +// +void CPsu2ThinUIExtensionPlugin::PhoneOpened( MVPbkSimPhone& aPhone ) + { + iServiceTable.SetServiceTable( aPhone.ServiceTable() ); + } + +// -------------------------------------------------------------------------- +// CPsu2ThinUIExtensionPlugin::PhoneError +// -------------------------------------------------------------------------- +// +void CPsu2ThinUIExtensionPlugin::PhoneError + ( MVPbkSimPhone& /*aPhone*/, TErrorIdentifier /*aIdentifier*/, + TInt /*aError*/ ) + { + iServiceTable.Reset(); + } + +// -------------------------------------------------------------------------- +// CPsu2ThinUIExtensionPlugin::ServiceTableUpdated +// -------------------------------------------------------------------------- +// +void CPsu2ThinUIExtensionPlugin::ServiceTableUpdated( TUint32 aServiceTable ) + { + iServiceTable.SetServiceTable( aServiceTable ); + } + +// -------------------------------------------------------------------------- +// CPsu2ThinUIExtensionPlugin::FixedDiallingStatusChanged +// -------------------------------------------------------------------------- +// +void CPsu2ThinUIExtensionPlugin::FixedDiallingStatusChanged + ( TInt /*aFDNStatus*/ ) + { + // Do nothing + } + +// -------------------------------------------------------------------------- +// CPsu2ThinUIExtensionPlugin::ContactUiReadyL +// -------------------------------------------------------------------------- +// +void CPsu2ThinUIExtensionPlugin::ContactUiReadyL + ( MPbk2StartupMonitor& aStartupMonitor ) + { + PBK2_DEBUG_PRINT(PBK2_DEBUG_STRING + ("CPsu2ThinUIExtensionPlugin::ContactUiReadyL(0x%x) (0x%x) (0x%x)"), this, iStoreChecker, iCopySimContactsCmd); + + aStartupMonitor.DeregisterEvents( *this ); + + if ( !iCopySimContactsCmd ) + { + MPbk2Command* cmd = CPsu2CopySimContactsCmd::NewL( aStartupMonitor ); + cmd->ExecuteLD(); + iCopySimContactsCmd = cmd; + iCopySimContactsCmd->AddObserver( *this ); + } + + delete iStoreChecker; //needed when alwaysOn enabled + iStoreChecker = NULL; + iStoreChecker = CPsu2CheckAvailabeSimStore::NewL(); + } + +// -------------------------------------------------------------------------- +// CPsu2ThinUIExtensionPlugin::CommandFinished +// -------------------------------------------------------------------------- +// +void CPsu2ThinUIExtensionPlugin::CommandFinished + ( const MPbk2Command& /*aCommand*/ ) + { + delete iCopySimContactsCmd; + iCopySimContactsCmd = NULL; + } + +// End of File