uifw/AvKon/aknphysics/src/aknphysicsparameterprovider.cpp
changeset 0 2f259fa3e83a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uifw/AvKon/aknphysics/src/aknphysicsparameterprovider.cpp	Tue Feb 02 01:00:49 2010 +0200
@@ -0,0 +1,392 @@
+/*
+* Copyright (c) 2009 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:  ODE parameter provider
+*
+*/
+
+
+#include <centralrepository.h>
+#include <e32debug.h>
+#include <AknUtils.h>
+
+#include "aknphysicsparameterprovider.h"
+#include <aknphysicscrkeys.h>
+
+const TInt KParamNotSet( -1 );
+const TInt KDefaultMass( 10 );
+const TInt KDefaultGravity( 10 );
+const TInt KDefaultSurfaceErp( 20 );
+const TInt KDefaultSurfaceCfm( 20 );
+const TInt KDefaultHighlightTimeout( 20 );
+const TInt KDefaultDragThreshold( 200 );
+const TInt KDefaultFrameDelay( 17 );
+const TInt KDefaultMinFrameInterval( 60 );
+const TBool KDefaultFeatureEnabled( ETrue );
+const TInt KDefaultShortListEmptySpace( 33 );
+const TInt KDefaultLongListEmptySpace( 33 );
+const TBool KDefaultFpsLoggingEnabled( EFalse );
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CAknPhysicsParameterProvider::NewL
+// ---------------------------------------------------------------------------
+//
+CAknPhysicsParameterProvider* CAknPhysicsParameterProvider::NewL()
+    {
+    CAknPhysicsParameterProvider* self = CAknPhysicsParameterProvider::NewLC();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CAknPhysicsParameterProvider::NewLC
+// ---------------------------------------------------------------------------
+//
+CAknPhysicsParameterProvider* CAknPhysicsParameterProvider::NewLC()
+    {
+    CAknPhysicsParameterProvider* self 
+        = new ( ELeave ) CAknPhysicsParameterProvider();
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    return self;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CAknPhysicsParameterProvider::~CAknPhysicsParameterProvider
+// ---------------------------------------------------------------------------
+//
+CAknPhysicsParameterProvider::~CAknPhysicsParameterProvider()
+    {
+    delete iListener;
+    delete iCenRep;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CAknPhysicsParameterProvider::ViewMass
+// ---------------------------------------------------------------------------
+//
+TInt CAknPhysicsParameterProvider::ViewMass() const
+    {
+    return iViewMass;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CAknPhysicsParameterProvider::Gravity
+// ---------------------------------------------------------------------------
+//
+TInt CAknPhysicsParameterProvider::Gravity() const
+    {
+    return iGravity;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CAknPhysicsParameterProvider::SurfaceErp
+// ---------------------------------------------------------------------------
+//
+TInt CAknPhysicsParameterProvider::SurfaceErp() const
+    {
+    return iSurfaceErp;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CAknPhysicsParameterProvider::SurfaceCfm
+// ---------------------------------------------------------------------------
+//
+TInt CAknPhysicsParameterProvider::SurfaceCfm() const
+    {
+    return iSurfaceCfm;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CAknPhysicsParameterProvider::HighlightTimeout
+// ---------------------------------------------------------------------------
+//
+TInt CAknPhysicsParameterProvider::HighlightTimeout() const
+    {
+    return iHighlightTimeout;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CAknPhysicsParameterProvider::DragTreshold
+// ---------------------------------------------------------------------------
+//
+TInt CAknPhysicsParameterProvider::DragThreshold() const
+    {
+    return iDragThreshold;
+    }
+
+// ---------------------------------------------------------------------------
+// CAknPhysicsParameterProvider::FrameDelay
+// ---------------------------------------------------------------------------
+//
+TInt CAknPhysicsParameterProvider::FrameDelay() const
+    {
+    return iFrameDelay;
+    }
+
+// ---------------------------------------------------------------------------
+// CAknPhysicsParameterProvider::MinFrameInterval
+// ---------------------------------------------------------------------------
+//
+TInt CAknPhysicsParameterProvider::MinFrameInterval() const
+    {
+    return iMinFrameInterval;
+    }
+
+// ---------------------------------------------------------------------------
+// CAknPhysicsParameterProvider::FeatureEnabled
+// ---------------------------------------------------------------------------
+//
+TBool CAknPhysicsParameterProvider::FeatureEnabled()
+    {
+	if ( AknLayoutUtils::PenEnabled() )
+		{
+	    CRepository* cenRep = NULL;
+    	TRAPD( err, cenRep = CRepository::NewL( KCRUidAknPhysicsSettings ) )
+	    if( err || !cenRep )
+    	    {
+        	return KDefaultFeatureEnabled;
+	        }
+    	TBool featureEnabled( KDefaultFeatureEnabled );
+    	cenRep->Get( KFeatureEnabled, featureEnabled );
+    	delete cenRep;
+    	return featureEnabled;
+		}
+	else
+		{
+		return EFalse;
+		}
+    }
+
+
+// ---------------------------------------------------------------------------
+// CAknPhysicsParameterProvider::ShortListEmptySpace
+// ---------------------------------------------------------------------------
+//
+TInt CAknPhysicsParameterProvider::ShortListEmptySpace() const
+    {
+    return iShortListEmptySpace;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CAknPhysicsParameterProvider::LongListEmptySpace
+// ---------------------------------------------------------------------------
+//
+TInt CAknPhysicsParameterProvider::LongListEmptySpace() const
+    {
+    return iLongListEmptySpace;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CAknPhysicsParameterProvider::FpsLoggingEnabled
+// ---------------------------------------------------------------------------
+//
+TBool CAknPhysicsParameterProvider::FpsLoggingEnabled() const
+    {
+    return iFpsLoggingEnabled;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CAknPhysicsParameterProvider::CenRepValueChanged
+// ---------------------------------------------------------------------------
+//
+void CAknPhysicsParameterProvider::CenRepValueChanged( const TInt& aKey )
+    {
+    if ( !iCenRep )
+        {
+        return;
+        }
+    switch ( aKey )
+        {
+        case KViewMass:
+            iCenRep->Get( KViewMass, iViewMass );
+            break;
+        case KGravity:
+            iCenRep->Get( KGravity, iGravity );
+            break;
+        case KSurfaceErp:
+            iCenRep->Get( KSurfaceErp, iSurfaceErp );
+            break;
+        case KSurfaceCfm:
+            iCenRep->Get( KSurfaceCfm, iSurfaceCfm );
+            break;
+        case KHighlightTimeout:
+            iCenRep->Get( KHighlightTimeout, iHighlightTimeout );
+            break;
+        case KDragTreshold:
+            iCenRep->Get( KDragTreshold, iDragThreshold );
+            break;
+        case KFrameDelay:
+            iCenRep->Get( KFrameDelay, iFrameDelay );
+            break;    
+		case KMinFrameInterval:
+            iCenRep->Get( KMinFrameInterval, iMinFrameInterval );
+            break;	
+        case KShortListEmptySpace:
+            iCenRep->Get( KShortListEmptySpace, iShortListEmptySpace );
+            break;
+        case KLongListEmptySpace:
+            iCenRep->Get( KLongListEmptySpace, iLongListEmptySpace );
+            break;
+        case KFpsLoggingEnabled:
+            iCenRep->Get( KFpsLoggingEnabled, iFpsLoggingEnabled );
+            break;
+        default:
+            break;
+        }
+    }
+
+
+// ---------------------------------------------------------------------------
+// CAknPhysicsParameterProvider::CAknPhysicsParameterProvider
+// ---------------------------------------------------------------------------
+//
+CAknPhysicsParameterProvider::CAknPhysicsParameterProvider()
+    : 
+    iViewMass( KParamNotSet ),
+    iGravity( KParamNotSet ),
+    iSurfaceErp( KParamNotSet ),
+    iSurfaceCfm( KParamNotSet ),
+    iHighlightTimeout( KParamNotSet ),
+    iDragThreshold( KParamNotSet ),
+    iFrameDelay( KParamNotSet ),
+	iMinFrameInterval( KParamNotSet ),
+    iShortListEmptySpace( KParamNotSet ),
+    iLongListEmptySpace( KParamNotSet ),
+    iFpsLoggingEnabled( EFalse ),
+    iListener( NULL )
+    {
+    }
+
+
+// ---------------------------------------------------------------------------
+// CAknPhysicsParameterProvider::ConstructL
+// ---------------------------------------------------------------------------
+//
+void CAknPhysicsParameterProvider::ConstructL()
+    {
+    if ( !iCenRep )
+        {
+        TRAPD( err, iCenRep = CRepository::NewL( KCRUidAknPhysicsSettings ) );
+        if( err )
+            {
+            SetDefaultValues( EFalse );
+            return;
+            }
+        }
+    iListener = CAknPhysicsCenRepListener::NewL( iCenRep, this );
+    ReadValuesFromCenRepL();
+    if ( !ValuesAreSet() )
+        {
+        SetDefaultValues( ETrue );
+        }
+    }
+
+
+// ---------------------------------------------------------------------------
+// CAknPhysicsParameterProvider::ReadValuesFromCenRepL
+// ---------------------------------------------------------------------------
+//
+void CAknPhysicsParameterProvider::ReadValuesFromCenRepL()
+    {
+    iCenRep->Get( KViewMass, iViewMass );
+    iCenRep->Get( KGravity, iGravity );
+    iCenRep->Get( KSurfaceErp, iSurfaceErp );
+    iCenRep->Get( KSurfaceCfm, iSurfaceCfm );
+    iCenRep->Get( KHighlightTimeout, iHighlightTimeout );
+    iCenRep->Get( KDragTreshold, iDragThreshold );
+    iCenRep->Get( KFrameDelay, iFrameDelay );
+	iCenRep->Get( KMinFrameInterval, iMinFrameInterval );
+    iCenRep->Get( KShortListEmptySpace, iShortListEmptySpace );
+    iCenRep->Get( KLongListEmptySpace, iLongListEmptySpace );
+    iCenRep->Get( KFpsLoggingEnabled, iFpsLoggingEnabled );
+    }
+
+
+// ---------------------------------------------------------------------------
+// CAknPhysicsParameterProvider::SetDefaultValues
+// ---------------------------------------------------------------------------
+//
+void CAknPhysicsParameterProvider::SetDefaultValues( TBool aWriteToCenRep )
+    {
+    iViewMass = KDefaultMass;
+    iGravity = KDefaultGravity;
+    iSurfaceErp = KDefaultSurfaceErp;
+    iSurfaceCfm = KDefaultSurfaceCfm;
+    iHighlightTimeout = KDefaultHighlightTimeout;
+    iDragThreshold = KDefaultDragThreshold;
+    iFrameDelay = KDefaultFrameDelay; 
+	iMinFrameInterval = KDefaultMinFrameInterval;
+	iFpsLoggingEnabled = EFalse;
+	
+    if ( aWriteToCenRep )
+        {
+        if ( !iCenRep )
+            {
+            TRAPD( err, 
+                iCenRep = CRepository::NewL( KCRUidAknPhysicsSettings ) );
+            if ( err )
+                {
+                return;
+                }
+            }
+        iCenRep->Set( KViewMass, KDefaultMass );
+        iCenRep->Set( KGravity, KDefaultGravity );
+        iCenRep->Set( KSurfaceErp, KDefaultSurfaceErp );
+        iCenRep->Set( KSurfaceCfm, KDefaultSurfaceCfm );
+        iCenRep->Set( KHighlightTimeout, KDefaultHighlightTimeout );
+        iCenRep->Set( KDragTreshold, KDefaultDragThreshold );
+        iCenRep->Set( KFrameDelay, KDefaultFrameDelay );
+		iCenRep->Set( KMinFrameInterval, KDefaultMinFrameInterval );
+        iCenRep->Set( KFeatureEnabled, KDefaultFeatureEnabled );
+        iCenRep->Set( KShortListEmptySpace, KDefaultShortListEmptySpace );
+        iCenRep->Set( KLongListEmptySpace, KDefaultLongListEmptySpace );
+        iCenRep->Set( KFpsLoggingEnabled, KDefaultFpsLoggingEnabled );
+        }
+    }
+
+
+// ---------------------------------------------------------------------------
+// CAknPhysicsParameterProvider::ValuesAreSet
+// ---------------------------------------------------------------------------
+//
+TBool CAknPhysicsParameterProvider::ValuesAreSet()
+    {
+    if ( iViewMass == KParamNotSet
+        || iGravity == KParamNotSet
+        || iSurfaceErp == KParamNotSet
+        || iSurfaceCfm == KParamNotSet
+        || iHighlightTimeout == KParamNotSet
+        || iDragThreshold == KParamNotSet
+        || iShortListEmptySpace == KParamNotSet
+        || iLongListEmptySpace == KParamNotSet
+		|| iFrameDelay == KParamNotSet 
+        || iMinFrameInterval == KParamNotSet )
+        {
+        return EFalse;
+        }
+    return ETrue;
+    }