taskswitcher/contextengine/hgfswpreviewprovider/src/previewprovider.cpp
changeset 4 4d54b72983ae
parent 3 fb3763350a08
child 5 c743ef5928ba
--- a/taskswitcher/contextengine/hgfswpreviewprovider/src/previewprovider.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,586 +0,0 @@
-/*
-* ==============================================================================
-*  Name        : %name: previewprovider.cpp %
-*  Part of     : Hg fast swap preview provider plugin
-*  Description : Preview provider API
-*  Version     : %version: sa1spcx1#3 %
-*
-*  Copyright (c) 2008 Nokia Corporation.
-*  This material, including documentation and any related
-*  computer programs, is protected by copyright controlled by
-*  Nokia Corporation. All rights are reserved. Copying,
-*  including reproducing, storing, adapting or translating, any
-*  or all of this material requires the prior written consent of
-*  Nokia Corporation. This material also contains confidential
-*  information which may not be disclosed to others without the
-*  prior written consent of Nokia Corporation.
-* ==============================================================================
-*/
-
-#include "hgpreviewprovider.h"
-#include "hgpreviewobserver.h"
-#include "previewmsg.h"
-#include "previewproviderlogging.h"
-#include <w32std.h>
-#include <s32mem.h>
-#include <e32property.h>
-
-#define SZ( x ) ( sizeof( x ) / sizeof( TInt ) )
-
-// CONSTANTS
-
-// Publish & subscribe UID (akncapserver.exe SID so that it can define the keys)
-const TUid KPSUidPreviewProvider = { 0x10207218 };
-
-// P&S keys
-const TUint32 KPSKeyWgId = 0x20016BE1;
-const TUint32 KPSKeyFbsBitmapId = 0x20016BE2;
-const TUint32 KPSKeyOperation = 0x20016BE3;
-
-/**
- * Operation which will be done after P&S keys have changed.
- */
-enum TPreviewOperation
-    {
-    EOperationNone,
-    EOperationUnregister,
-    EOperationBitmapUpdated
-    };
-
-/**
- * CPropertyListener
- */
-NONSHARABLE_CLASS( CPropertyListener ) : public CActive
-    {
-public:
-    static CPropertyListener* NewL( MHgFastSwapPreviewObserver& aObs );
-    virtual ~CPropertyListener();
-    
-protected:
-    CPropertyListener( MHgFastSwapPreviewObserver& aObs );
-    void ConstructL();  
-
-private: // From CActive
-    void RunL();
-    void DoCancel();
-    
-private:    
-    void ReadPropertiesL();
-    void DefinePropertyL( TInt aPSKey ); 
-    void Subscribe();
-
-private:
-    MHgFastSwapPreviewObserver& iObs;
-    RProperty iProperty;
-   
-    TInt iWgId;
-    TInt iFbsBitmapId;
-    
-    TPreviewOperation iOperation;
-    };
-
-// --------------------------------------------------------------------------
-// CPropertyListener::~CPropertyListener
-// --------------------------------------------------------------------------
-//
-CPropertyListener::~CPropertyListener()
-    {
-    Cancel();
-    iProperty.Close();
-    }
-
-// --------------------------------------------------------------------------
-// CPropertyListener::CPropertyListener
-// --------------------------------------------------------------------------
-//
-CPropertyListener::CPropertyListener( MHgFastSwapPreviewObserver& aObs ) : 
-    CActive( CActive::EPriorityHigh ), iObs( aObs )
-    {
-    }
-
-// --------------------------------------------------------------------------
-// CPropertyListener::NewL
-// --------------------------------------------------------------------------
-//
-CPropertyListener* CPropertyListener::NewL( MHgFastSwapPreviewObserver& aObs )
-    {
-    CPropertyListener* self = new ( ELeave ) CPropertyListener( aObs );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;    
-    }
-
-// --------------------------------------------------------------------------
-// CPropertyListener::RunL
-// --------------------------------------------------------------------------
-//
-void CPropertyListener::RunL()
-    {
-    // Resubscribe before processing new value to prevent missing updates
-    Subscribe();
-    
-    // Read all properties to member variables
-    ReadPropertiesL();
-    
-    // Do the callback
-    switch( iOperation )
-        {
-        case EOperationUnregister:
-            {
-            iObs.HandleFswPpApplicationUnregistered( iWgId );
-            break;            
-            }        
-        case EOperationBitmapUpdated:
-            {
-            iObs.HandleFswPpApplicationChange( iWgId, iFbsBitmapId );
-            break;
-            }
-        default:
-            break;
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CPropertyListener::DoCancel
-// --------------------------------------------------------------------------
-//
-void CPropertyListener::DoCancel()
-    {
-    iProperty.Cancel();
-    }
-
-// --------------------------------------------------------------------------
-// CPropertyListener::ReadProperties
-// --------------------------------------------------------------------------
-//
-void CPropertyListener::ReadPropertiesL()
-    {
-    // Read all properties
-    User::LeaveIfError( iProperty.Get( KPSUidPreviewProvider, KPSKeyWgId, iWgId ) );
-    User::LeaveIfError( iProperty.Get( KPSUidPreviewProvider, KPSKeyFbsBitmapId, iFbsBitmapId ) );
-    TInt operation( 0 );
-    User::LeaveIfError( iProperty.Get( KPSUidPreviewProvider, KPSKeyOperation, operation ) );
-    iOperation = static_cast<TPreviewOperation>( operation );    
-    }
-
-// --------------------------------------------------------------------------
-// CPropertyListener::DefinePropertyL
-// --------------------------------------------------------------------------
-//
-void CPropertyListener::DefinePropertyL( TInt aPSKey )
-    {
-    TInt err = RProperty::Define( KPSUidPreviewProvider, aPSKey, RProperty::EInt );
-    // Don't mind the already exists error
-    if ( err != KErrAlreadyExists && err != KErrPermissionDenied )
-        {
-        User::LeaveIfError( err );
-        }    
-    }
-
-// --------------------------------------------------------------------------
-// CPropertyListener::Subscribe
-// --------------------------------------------------------------------------
-//
-void CPropertyListener::Subscribe()
-    {
-    iProperty.Subscribe( iStatus );
-    SetActive();  
-    }
-
-// --------------------------------------------------------------------------
-// CPropertyListener::ConstructL
-// --------------------------------------------------------------------------
-//
-void CPropertyListener::ConstructL()
-    {
-    HGLOG_CONTEXT( ConstructL, HGLOG_LOCAL );
-    HGLOG_IN();
-    
-    DefinePropertyL( KPSKeyWgId );
-    DefinePropertyL( KPSKeyFbsBitmapId );
-    DefinePropertyL( KPSKeyOperation );
-    
-    User::LeaveIfError( iProperty.Attach( KPSUidPreviewProvider, KPSKeyWgId ) );
-    CActiveScheduler::Add( this );
-    
-    // initial subscription
-    Subscribe();
-    
-    HGLOG_OUT();    
-    }
-
-/**
- * CHgFastSwapPreviewProviderClient
- */
-NONSHARABLE_CLASS( CHgFastSwapPreviewProviderClient ) : public CWsGraphic
-    {
-public:
-    CHgFastSwapPreviewProviderClient( MHgFastSwapPreviewObserver& aObs );
-    void ConstructL();
-    void Register( TInt aWgId );
-    void Unregister( TInt aWgId );
-    void ChangeScreen( TInt aScreenNo );
-    void SetPreviewParam( const TSize& aSize, TDisplayMode aMode );
-    void TakePreview();
-    void AckPreview( TInt aPreviewId );
-    virtual ~CHgFastSwapPreviewProviderClient();
-private:
-    void HandleMessage( const TDesC8& aData );
-    void OnReplace();
-private:
-    void DoHandleMessageL( const TDesC8& aData );
-    void SetProperties( TInt aHandle, TInt aWgId, TInt aOp );    
-private:
-    MHgFastSwapPreviewObserver& iObs;
-    CPropertyListener* iListener;
-    };
-
-
-// --------------------------------------------------------------------------
-// CHgFastSwapPreviewProviderClient::CHgFastSwapPreviewProviderClient
-// --------------------------------------------------------------------------
-//
-CHgFastSwapPreviewProviderClient::CHgFastSwapPreviewProviderClient(
-        MHgFastSwapPreviewObserver& aObs ) : iObs( aObs )
-    {
-    }
-
-// --------------------------------------------------------------------------
-// CHgFastSwapPreviewProviderClient::~CHgFastSwapPreviewProviderClient
-// --------------------------------------------------------------------------
-//
-CHgFastSwapPreviewProviderClient::~CHgFastSwapPreviewProviderClient()
-    {
-    delete iListener;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFastSwapPreviewProviderClient::ConstructL
-// --------------------------------------------------------------------------
-//
-void CHgFastSwapPreviewProviderClient::ConstructL()
-    {
-    HGLOG_CONTEXT( ConstructL, HGLOG_LOCAL );
-    HGLOG_IN();
-
-    const TUid id = { 0x20016BEC };
-    BaseConstructL( id, KNullDesC8 );
-    iListener = CPropertyListener::NewL( iObs );
-    
-    HGLOG_OUT();        
-    }    
-
-// --------------------------------------------------------------------------
-// CHgFastSwapPreviewProviderClient::Register
-// --------------------------------------------------------------------------
-//    
-void CHgFastSwapPreviewProviderClient::Register( TInt aWgId )
-    {
-    HGLOG_CONTEXT( Register, HGLOG_LOCAL );
-    HGLOG_IN();
-    
-    const TInt msg[] = {
-        NPreviewMsg::ERegister,
-        aWgId
-        };
-    TPckgC<TInt[SZ(msg)]> buf(msg);
-    SendMessage(buf);
-    Flush();
-
-    HGLOG_OUT();
-    }
-
-// --------------------------------------------------------------------------
-// CHgFastSwapPreviewProviderClient::Unregister
-// --------------------------------------------------------------------------
-//    
-void CHgFastSwapPreviewProviderClient::Unregister( TInt aWgId )
-    {
-    HGLOG_CONTEXT( Unregister, HGLOG_LOCAL );
-    HGLOG_IN();
-
-    const TInt msg[] = {
-        NPreviewMsg::EUnregister,
-        aWgId
-        };
-    TPckgC<TInt[SZ(msg)]> buf(msg);
-    SendMessage(buf);
-    Flush();
-    
-    HGLOG_OUT();
-    }
-
-// --------------------------------------------------------------------------
-// CHgFastSwapPreviewProviderClient::ChangeScreen
-// --------------------------------------------------------------------------
-//    
-void CHgFastSwapPreviewProviderClient::ChangeScreen( TInt aScreenNo )
-    {
-    HGLOG_CONTEXT( ChangeScreen, HGLOG_LOCAL );
-    HGLOG_IN();
-    
-    const TInt msg[] = {
-        NPreviewMsg::EChangeScreen,
-        aScreenNo
-        };
-    TPckgC<TInt[SZ(msg)]> buf(msg);
-    SendMessage(buf);
-    Flush();
-    
-    HGLOG_OUT();     
-    }
-
-// --------------------------------------------------------------------------
-// CHgFastSwapPreviewProviderClient::SetPreviewParam
-// --------------------------------------------------------------------------
-//    
-void CHgFastSwapPreviewProviderClient::SetPreviewParam(const TSize& aSize,
-        TDisplayMode aMode)
-    {
-    HGLOG_CONTEXT( SetPreviewParam, HGLOG_LOCAL );
-    HGLOG_IN();
-    
-    const TInt msg[] = {
-        NPreviewMsg::ESetPreviewParam,
-        aSize.iWidth,
-        aSize.iHeight,
-        static_cast<TInt>(aMode)
-        };
-    TPckgC<TInt[SZ(msg)]> buf(msg);
-    SendMessage(buf);
-    Flush();
-
-    HGLOG_OUT();
-    }
-
-// --------------------------------------------------------------------------
-// CHgFastSwapPreviewProviderClient::TakePreview 
-// --------------------------------------------------------------------------
-//    
-void CHgFastSwapPreviewProviderClient::TakePreview()
-    {
-    HGLOG_CONTEXT( TakePreview, HGLOG_LOCAL );
-    HGLOG_IN();
-    
-    TPckgC<TInt> buf(NPreviewMsg::ETakePreview);
-    SendMessage(buf);
-    Flush();
-    
-    HGLOG_OUT();      
-    }
-
-// --------------------------------------------------------------------------
-// CHgFastSwapPreviewProviderClient::AckPreview 
-// --------------------------------------------------------------------------
-//
-void CHgFastSwapPreviewProviderClient::AckPreview( TInt aPreviwId )
-    {
-    HGLOG_CONTEXT( TakePreview, HGLOG_LOCAL );
-    HGLOG_IN();
-    
-    const TInt msg[] = { NPreviewMsg::EAckPreviewReady,
-                         aPreviwId };
-    TPckgC<TInt[SZ(msg)]> buf(msg);
-    SendMessage(buf);
-    Flush();
-    
-    HGLOG_OUT();
-    }
-
-// --------------------------------------------------------------------------
-// CHgFastSwapPreviewProviderClient::HandleMessage
-// --------------------------------------------------------------------------
-//    
-void CHgFastSwapPreviewProviderClient::HandleMessage( const TDesC8& aData )
-    {
-    TRAP_IGNORE(DoHandleMessageL(aData));
-    }
-
-// --------------------------------------------------------------------------
-// CHgFastSwapPreviewProviderClient::DoHandleMessageL
-// --------------------------------------------------------------------------
-//
-void CHgFastSwapPreviewProviderClient::DoHandleMessageL( const TDesC8& aData )
-    {
-    HGLOG_CONTEXT( DoHandleMessageL, HGLOG_LOCAL );
-    HGLOG_IN();
-    
-    RDesReadStream in( aData );
-    TInt message = in.ReadInt32L();
-    switch ( message )
-        {
-        case NPreviewMsg::EPreviewReady:
-            {
-            const TInt id = in.ReadInt32L();
-            const TInt handle = in.ReadInt32L();    
-            SetProperties( handle, id, EOperationBitmapUpdated );
-            }
-            break;
-        case NPreviewMsg::EUnregisterReady:
-            {
-            const TInt id = in.ReadInt32L();
-            const TInt handle = in.ReadInt32L();
-            SetProperties( handle, id, EOperationUnregister );
-            }
-            break;
-        }
-
-    HGLOG_OUT();
-    }
-
-// --------------------------------------------------------------------------
-// CHgFastSwapPreviewProviderClient::SetProperties
-// --------------------------------------------------------------------------
-//
-void CHgFastSwapPreviewProviderClient::SetProperties(TInt aHandle, TInt aWgId,
-        TInt aOp)
-    {
-    // Notify CPropertyListener via P&S
-    RProperty::Set( KPSUidPreviewProvider, KPSKeyFbsBitmapId, aHandle );
-    RProperty::Set( KPSUidPreviewProvider, KPSKeyOperation, aOp );
-    // KPSKeyWgId should be notified first since that is being listened 
-    // by CPropertyListener 
-    RProperty::Set( KPSUidPreviewProvider, KPSKeyWgId, aWgId );    
-    }
-
-// --------------------------------------------------------------------------
-// CHgFastSwapPreviewProviderClient::OnReplace
-// --------------------------------------------------------------------------
-//
-void CHgFastSwapPreviewProviderClient::OnReplace()
-    {
-    }
-    
-/////////////////////////////////////////////////////////////////////////////
-
-
-// --------------------------------------------------------------------------
-// CHgFastSwapPreviewProvider::NewL
-// --------------------------------------------------------------------------
-//
-EXPORT_C CHgFastSwapPreviewProvider* CHgFastSwapPreviewProvider::NewL(
-        MHgFastSwapPreviewObserver& aObs)
-    {
-    CHgFastSwapPreviewProvider* p = new (ELeave) CHgFastSwapPreviewProvider();
-    CleanupStack::PushL( p );
-    p->ConstructL( aObs );
-    CleanupStack::Pop( p );
-    return p;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFastSwapPreviewProvider::~CHgFastSwapPreviewProvider
-// --------------------------------------------------------------------------
-//    
-EXPORT_C CHgFastSwapPreviewProvider::~CHgFastSwapPreviewProvider()
-    {
-    if ( iClient )
-        {
-        iClient->Destroy();
-        }
-    delete iClient;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFastSwapPreviewProvider::Register
-// --------------------------------------------------------------------------
-//    
-EXPORT_C TInt CHgFastSwapPreviewProvider::Register( TInt aWgId )
-    {
-    iClient->Register( aWgId );
-    return KErrNone;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFastSwapPreviewProvider::Unregister
-// --------------------------------------------------------------------------
-//    
-EXPORT_C TInt CHgFastSwapPreviewProvider::Unregister( TInt aWgId )    
-    {
-    iClient->Unregister( aWgId );
-    return KErrNone;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFastSwapPreviewProvider::ChangeScreen
-// --------------------------------------------------------------------------
-//    
-EXPORT_C TInt CHgFastSwapPreviewProvider::ChangeScreen( TInt aScreenId )
-    {
-    iClient->ChangeScreen( aScreenId );
-    return KErrNone;
-    }    
-
-// --------------------------------------------------------------------------
-// CHgFastSwapPreviewProvider::SetPreviewParam
-// --------------------------------------------------------------------------
-//
-EXPORT_C TInt CHgFastSwapPreviewProvider::SetPreviewParam(const TSize& aSize,
-        TDisplayMode aMode)
-    {
-    HGLOG_CONTEXT( SetPreviewParam, HGLOG_LOCAL );
-    HGLOG_IN();
-    
-    TInt error( KErrNone );
-    
-    if ( aMode == ENone || aMode == EColor64K )
-        {
-        iClient->SetPreviewParam( aSize, aMode );        
-        }
-    else
-        {
-        error = KErrNotSupported;
-        }
-   
-    HGLOG_OUT();
-    return error;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFastSwapPreviewProvider::TakePreview
-// --------------------------------------------------------------------------
-//    
-EXPORT_C TInt CHgFastSwapPreviewProvider::TakePreview()
-    {
-    // Reset timer for screensaver (dismiss screensaver)
-    User::ResetInactivityTime(); 
-           
-    iClient->TakePreview();
-    return KErrNone;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFastSwapPreviewProvider::AckPreview
-// --------------------------------------------------------------------------
-//
-EXPORT_C void CHgFastSwapPreviewProvider::AckPreview( TInt aPreviewId )
-    {
-    iClient->AckPreview( aPreviewId );
-    }
-
-// --------------------------------------------------------------------------
-// CHgFastSwapPreviewProvider::CHgFastSwapPreviewProvider
-// --------------------------------------------------------------------------
-//    
-CHgFastSwapPreviewProvider::CHgFastSwapPreviewProvider()
-    {
-    }
-
-// --------------------------------------------------------------------------
-// CHgFastSwapPreviewProvider::ConstructL
-// --------------------------------------------------------------------------
-//    
-void CHgFastSwapPreviewProvider::ConstructL( MHgFastSwapPreviewObserver& aObs )
-    {
-    HGLOG_CONTEXT( ConstructL, HGLOG_LOCAL );
-    HGLOG_IN();
-    
-    iClient = new ( ELeave ) CHgFastSwapPreviewProviderClient( aObs );
-    iClient->ConstructL();
-    
-    HGLOG_OUT();
-    }
-
-// End of file
-