phonebookui/Phonebook2/USIMThinExtension/src/CPsu2ThinUIExtensionPlugin.cpp
changeset 0 e686773b3f54
child 3 04ab22b956c2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookui/Phonebook2/USIMThinExtension/src/CPsu2ThinUIExtensionPlugin.cpp	Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,269 @@
+/*
+* 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 );
+                }
+            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