contextframework/cfwplugins/ApplicationStateSourcePlugIn/inc/ApplicationStateSourcePlugin.h
changeset 0 2e3d3ce01487
child 1 0fdb7f6b0309
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contextframework/cfwplugins/ApplicationStateSourcePlugIn/inc/ApplicationStateSourcePlugin.h	Tue Feb 02 10:12:00 2010 +0200
@@ -0,0 +1,168 @@
+/*
+* 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:  ?Description
+*
+*/
+
+
+#ifndef C_APPLICATIONSTATESOURCEPLUGIN_H
+#define C_APPLICATIONSTATESOURCEPLUGIN_H
+
+// INCLUDES
+#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS
+#include <viewcli.h>
+#else
+#include <viewcli.h>
+#include <viewclipartner.h>
+#endif
+#include <cfcontextsourceplugin.h>
+#include <cfcontextobject.h>
+#include <cenrepnotifyhandler.h>
+
+#include "cfapplicationstatesettings.h"
+#include "uidorientationpair.h"
+
+// FORWARD DECLARATIONS
+class CRepository;
+class CCenRepNotifyHandler;
+
+// CLASS DECLARATION
+
+/**
+ * Application state source plugin.
+ * Application state source plugin is responsible for listening view activations
+ * from view server client session and mapping them to foreground application and
+ * view contexts.
+ * 
+ * @lib -
+ * @since S60 4.0
+ */
+NONSHARABLE_CLASS( CApplicationStateSourcePlugIn ): 
+	public CCFContextSourcePlugIn,
+	public MVwsSessionWrapperObserver,
+	public MCenRepNotifyHandlerCallback
+    {
+public: // Constructors and destructor
+
+    // Two phased constructors
+    static CApplicationStateSourcePlugIn* NewL(
+        TContextSourceInitParams* aParams );
+    static CApplicationStateSourcePlugIn* NewLC(
+        TContextSourceInitParams* aParams );
+
+    // Destructor
+    ~CApplicationStateSourcePlugIn();
+
+public: // From CCFContextSourcePlugIn
+
+    // @see CCFContextSourcePlugIn
+    void HandleSettingL( CCFContextSourceSettingArray* aSettingList );
+
+    // @see CCFContextSourcePlugIn
+    void DefineContextsL();
+
+    // @see CCFContextSourcePlugIn
+    void InitializeL();
+
+public: // From MVwsSessionWrapperObserver
+
+    // @see MVwsSessionWrapperObserver
+    void HandleViewEventL( const TVwsViewEvent& aEvent );
+
+public: // From MCenRepNotifyHandlerCallback
+
+    // @see MCenRepNotifyHandlerCallback
+    void HandleNotifyGeneric( TUint32 aId );
+
+private: // Constructors
+
+    // C++ constrcutor
+    CApplicationStateSourcePlugIn( TContextSourceInitParams* aParams );
+
+    // Symbian second-phase constructor
+    void ConstructL();
+
+private: // New functions
+
+    /**
+     * Converts string to hex.
+     *
+     * @since S60 v4.0
+     * @param aString Hexadecimal number as string having "0x" prefix.
+     * @param aValue Storage for the unsigned integer.
+     * @return KErrNone if successful, KErrNotFound otherwise.
+     */
+    TInt ConvertToHex( const TDesC& aString, TUint32& aValue );
+
+    // Initialize application settings from XML
+    void InitializeApplicationsFromXMLL();
+    
+    // Initialize the fg application context
+    void InitializeFgApplicationL();
+    
+    // Handles the view server event
+    void DoHandleViewEventL( const TVwsViewEvent& aEvent );
+    
+    // Resolve fg app orientation
+    TPtrC ResolveFgAppOrientation( const TUid& aUid );
+    
+    // Find app from cache by uid
+    TInt FindByUid( const TUid& aUid ) const;
+
+private: // Data
+
+    // Buffers for default settings.
+    HBufC* iDefaultAppName;
+    HBufC* iDefaultViewName;
+    HBufC* iApplDefaultState;
+    TInt iDefStateSetManyTimes;
+
+    // View server client session for foreground application notifications.
+    CVwsSessionWrapper* iVws;
+
+    // Context instance for all the generated contexts.
+    CCFContextObject* iContext;
+
+    // The name of the previous foreground application used by background
+    // application context publishing when the application was closed.
+    // Additionally, used to control context publishing based on change.
+    TPtrC iPreviousForegroundApplication;
+
+    // The name of the previous foreground view used to control context
+    // publishing based on change.
+    TPtrC iPreviousForegroundView;
+
+    // My settings.
+    CCFContextSourceSettingArray* iSettings;
+
+    // Foreground application setting list
+    RApplicationStateSettingsPointerArray iApplicationSettings;
+    
+    // Previous foreground application orientation
+    TPtrC iPreviousOrientation;
+    
+    // KCRUidDefaultAppOrientation cenrep
+    CRepository* iCRAppOrientation;
+    
+    // Default application orientation
+    TInt iDefaultFgAppOrientation;
+    
+    // Application uid and orientation cache
+    RUidOrientationList iUidOrientationList;
+    
+    // KCRUidDefaultAppOrientation listener
+    CCenRepNotifyHandler* iCRAppOrientationListener;
+    };
+
+#endif // C_APPLICATIONSTATESOURCEPLUGIN_H