--- /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 <Pbk2USimUI.hrh>
+#include <Pbk2USimUIRes.rsg>
+#include <Pbk2Commands.rsg>
+#include <MPbk2ContactUiControl.h>
+#include <MPbk2StartupMonitor.h>
+#include "CPsu2CheckAvailabeSimStore.h"
+
+// Virtual Phonebook
+#include <VPbkSimStoreFactory.h>
+#include <MVPbkSimPhone.h>
+#include <VPbkContactStoreUris.h>
+
+// System includes
+#include <eikmenup.h>
+
+#include <Pbk2Debug.h>
+
+/// 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