phoneapp/phoneuiutils/src/cphonecallthememonitor.cpp
changeset 0 5f000ab63145
child 24 41a7f70b3818
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneapp/phoneuiutils/src/cphonecallthememonitor.cpp	Mon Jan 18 20:18:27 2010 +0200
@@ -0,0 +1,197 @@
+/*
+* 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:  See class description.
+*
+*/
+
+
+// INCLUDE FILES
+#include <bautils.h>
+#include <data_caging_path_literals.hrh>
+#include <pslninternalcrkeys.h>
+
+#include "phoneconstants.h"
+#include "cphonecallthememonitor.h"
+#include "phonelogger.h"
+#include "cphonecenrepproxy.h"
+#include "mphonecenrepobserver.h"
+#include "phoneui.pan"
+
+// Values for KThemesCallImageSettings CR key
+const TInt KPslnCRUserDefinedCallImage = 1;
+
+ 
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CPhoneCallThemeMonitor::CPhoneCallThemeMonitor
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CPhoneCallThemeMonitor::CPhoneCallThemeMonitor()
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CPhoneCallThemeMonitor::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CPhoneCallThemeMonitor::ConstructL()
+    {
+    __LOGMETHODSTARTEND( EPhoneUIUtils, "CPhoneCallThemeMonitor::ConstructL ()" );    
+
+    // Get all current values
+    TRAP_IGNORE( ReadAllL() );
+    
+    // Start listen changes in setting and image path
+    CPhoneCenRepProxy::Instance()->NotifyChangeL(
+        KCRUidThemes, 
+        KThemesCallImagePath,
+        this );
+    
+    CPhoneCenRepProxy::Instance()->NotifyChangeL(
+        KCRUidThemes, 
+        KThemesCallImageSetting,
+        this );
+    }
+
+// -----------------------------------------------------------------------------
+// CPhoneCallThemeMonitor::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CPhoneCallThemeMonitor* CPhoneCallThemeMonitor::NewL()
+    {
+    CPhoneCallThemeMonitor* self = 
+        new (ELeave) CPhoneCallThemeMonitor();
+
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+
+    return self;
+    }
+    
+// Destructor
+EXPORT_C CPhoneCallThemeMonitor::~CPhoneCallThemeMonitor()
+    {
+    delete iCallerImageThemePath;
+    }
+
+// -----------------------------------------------------------------------------
+// CPhoneCallThemeMonitor::CallImageThemeSettings
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CPhoneCallThemeMonitor::CallImageThemeSettings() const
+    {
+    __LOGMETHODSTARTEND( EPhoneUIUtils, "CPhoneCallThemeMonitor::CallImageThemeSettings ()" );    
+    return iThemeCallImageSettings;
+    }    
+
+// -----------------------------------------------------------------------------
+// CPhoneCallThemeMonitor::CallImageThemeFilePath
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TPtrC CPhoneCallThemeMonitor::CallImageThemeFilePath() const
+    {
+    __LOGMETHODSTARTEND( EPhoneUIUtils, "CPhoneCallThemeMonitor::CallImageThemeFilePath ()" );    
+    if ( iCallerImageThemePath )    
+        {
+        return *iCallerImageThemePath;    
+        }
+    else
+        {
+        return KNullDesC();    
+        }        
+    }
+
+// -----------------------------------------------------------------------------
+// CPhoneCallThemeMonitor::SetCallThemeSettingsObserver
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CPhoneCallThemeMonitor::SetCallThemeSettingsObserver(
+    MPhoneCallThemeSettingsObserver* aObserver )
+    {
+    __ASSERT_DEBUG( iObserver == NULL, Panic( KErrNotSupported ) );
+    iObserver = aObserver;
+    }
+
+// -----------------------------------------------------------
+// CPhoneCallThemeMonitor::HandleCenRepChangeL
+// -----------------------------------------------------------
+//
+void CPhoneCallThemeMonitor::HandleCenRepChangeL( 
+    const TUid& aUid,
+    const TUint aId )
+    {
+    __LOGMETHODSTARTEND(EPhoneControl, "CPhoneCallThemeMonitor::HandleCenRepChangeL( ) ");
+    if ( aUid == KCRUidThemes ) 
+        {
+        if (aId == KThemesCallImagePath || aId == KThemesCallImageSetting )    
+            {
+            ReadAllL();
+            if ( iObserver )
+                {
+                iObserver->CallThemeSettingsChanged();
+                }
+            }
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CPhoneCallThemeMonitor::ReadAllL
+// -----------------------------------------------------------------------------
+//
+void CPhoneCallThemeMonitor::ReadAllL()
+    {
+    __LOGMETHODSTARTEND( EPhoneUIUtils, "CPhoneCallThemeMonitor::ReadAllL ()" );
+
+    // Call image status 
+    TInt value( KErrNone );
+    TInt err( CPhoneCenRepProxy::Instance()->GetInt(
+        KCRUidThemes,
+        KThemesCallImageSetting,
+        value ) );
+    
+    if ( err == KErrNone )
+        {
+        iThemeCallImageSettings = value;    
+        }
+  
+    if ( iThemeCallImageSettings == KPslnCRUserDefinedCallImage )
+        {
+        delete iCallerImageThemePath;
+        iCallerImageThemePath = NULL;
+        iCallerImageThemePath = HBufC::NewL( KMaxFilePathLength );
+        TPtr imagePtr ( iCallerImageThemePath->Des() );
+        
+        // Get image file path
+        CPhoneCenRepProxy::Instance()->GetString(
+            KCRUidThemes,
+            KThemesCallImagePath,
+            imagePtr );
+
+        __PHONELOG1( EBasic, EPhoneUIUtils,
+            "CPhoneCallThemeMonitor::ReadAllL -> image path = %S", &imagePtr );
+        } 
+    else
+        {
+        delete iCallerImageThemePath;
+        iCallerImageThemePath = NULL;
+        }             
+    }
+
+//  End of File