uiacceltk/hitchcock/plugins/alftranseffect/alftfxserverplugin/src/alftransitionservercontroller.cpp
changeset 0 15bf7259bb7c
equal deleted inserted replaced
-1:000000000000 0:15bf7259bb7c
       
     1 /*
       
     2 * Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:   This is the implementation of the API used by theme server
       
    15 *                to control transition appearance.
       
    16 *
       
    17 */
       
    18 
       
    19 
       
    20 
       
    21 #include "alftransitionservercontroller.h"
       
    22 #include "alftransitionserver.h"
       
    23 #include "alftfxserverdef.h"
       
    24 #include "alfpsobserver.h"
       
    25 
       
    26 #include <e32property.h>
       
    27 #include <avkondomainpskeys.h>
       
    28 #include <pslninternalcrkeys.h>
       
    29 #include <centralrepository.h>
       
    30 
       
    31 #include <alf/alfclientbase.h>
       
    32 #include <alflogger.h>
       
    33 // ---------------------------------------------------------------------------
       
    34 // ---------------------------------------------------------------------------
       
    35 //
       
    36 CAlfTransitionServerController* CAlfTransitionServerController::NewL(RWsSession& /*aWsSession*/)
       
    37     {
       
    38     __ALFFXLOGSTRING("CAlfTransitionServerController::NewL >>");
       
    39     CAlfTransitionServerController* self = new (ELeave) CAlfTransitionServerController();
       
    40     CleanupStack::PushL(self);
       
    41     self->ConstructL();
       
    42     CleanupStack::Pop();
       
    43     __ALFFXLOGSTRING("CAlfTransitionServerController::NewL <<");
       
    44     return self;
       
    45     }
       
    46     
       
    47 CAlfTransitionServerController::~CAlfTransitionServerController()
       
    48     {
       
    49     __ALFFXLOGSTRING("CAlfTransitionServerController::~CAlfTransitionServerController >>");
       
    50     delete iTimer;
       
    51 	delete iPsObserver;
       
    52 	
       
    53     if(ServerRunning()) 
       
    54         {
       
    55         StopTransitionServer();
       
    56         }
       
    57             
       
    58 	delete iRepository;
       
    59     __ALFFXLOGSTRING("CAlfTransitionServerController::~CAlfTransitionServerController <<");
       
    60     }
       
    61 
       
    62 CAlfTransitionServerController::CAlfTransitionServerController()
       
    63     {
       
    64     }
       
    65 
       
    66 // ---------------------------------------------------------------------------
       
    67 // ---------------------------------------------------------------------------
       
    68 //
       
    69 void CAlfTransitionServerController::ConstructL()
       
    70     {
       
    71     __ALFFXLOGSTRING("CAlfTransitionServerController::ConstructL >>");
       
    72     iRepository = CRepository::NewL( KCRUidThemes );
       
    73     TInt err = iRepository->Get( KThemesTransitionEffects, iEffectValue );
       
    74     if ( err != 0 )
       
    75         {
       
    76         // Clean the value just to be sure it did not get messed up
       
    77         iEffectValue = 0;
       
    78         }
       
    79     __ALFFXLOGSTRING("CAlfTransitionServerController::ConstructL <<");
       
    80     }
       
    81     
       
    82 
       
    83 // ---------------------------------------------------------------------------
       
    84 // ---------------------------------------------------------------------------
       
    85 //
       
    86 TInt CAlfTransitionServerController::StartTransitionServer()
       
    87     {
       
    88 	return StartTransitionServer(KDefaultMaxBytesOngoing, KDefaultMaxBytesBetween);
       
    89     }
       
    90     
       
    91 // ---------------------------------------------------------------------------
       
    92 // ---------------------------------------------------------------------------
       
    93 //
       
    94 TInt CAlfTransitionServerController::StopTransitionServer()
       
    95     {
       
    96     __ALFFXLOGSTRING("CAlfTransitionServerController::StopTransitionServer >>");
       
    97     //Shutting down.
       
    98 	//Set property to "server not running"
       
    99     TInt val = 0;
       
   100     
       
   101     RProperty::Get(KPSUidAvkonDomain, KAknTfxServerStatus, val);
       
   102     iTransitionControlValue = val & ~ETfxSrvRunning;
       
   103 	RProperty::Set(KPSUidAvkonDomain, KAknTfxServerStatus, iTransitionControlValue);
       
   104 	__ALFFXLOGSTRING("CAlfTransitionServerController::StopTransitionServer <<");
       
   105     return KErrNone;
       
   106     }
       
   107     
       
   108 // ---------------------------------------------------------------------------
       
   109 // ---------------------------------------------------------------------------
       
   110 //
       
   111 TBool CAlfTransitionServerController::ServerRunning()
       
   112     {
       
   113     __ALFFXLOGSTRING("CAlfTransitionServerController::ServerRunning >>");
       
   114     TInt value = 0;
       
   115     RProperty::Get(KPSUidAvkonDomain, KAknTfxServerStatus, value);
       
   116     __ALFFXLOGSTRING1("CAlfTransitionServerController::ServerRunning - return: %d <<", value & ETfxSrvRunning);
       
   117     return (value & ETfxSrvRunning);
       
   118     }
       
   119 
       
   120 // ---------------------------------------------------------------------------
       
   121 // ---------------------------------------------------------------------------
       
   122 //   
       
   123 TInt CAlfTransitionServerController::StartTransitionServer(TInt32 /*aMaxBytesOngoing*/, 
       
   124 																 TInt32 /*aMaxBytesBetween*/)
       
   125 	{
       
   126 	__ALFFXLOGSTRING("CAlfTransitionServerController::StartTransitionServer >>");
       
   127 	if( ServerRunning() )
       
   128 		{
       
   129 		__ALFFXLOGSTRING("CAlfTransitionServerController::StartTransitionServer - return KErrAlreadyExists <<");
       
   130 		return KErrAlreadyExists;
       
   131 		}
       
   132 		
       
   133 	TInt val = 0;
       
   134 	TInt err = KErrNone;
       
   135 	
       
   136 
       
   137     err = RProperty::Get(KPSUidAvkonDomain, KAknTfxServerStatus, val );
       
   138     if ( err != KErrNone )
       
   139         {
       
   140     	err = RProperty::Define(KPSUidAvkonDomain, KAknTfxServerStatus, RProperty::EInt, TSecurityPolicy(TSecurityPolicy::EAlwaysPass),TSecurityPolicy(TSecurityPolicy::EAlwaysPass));
       
   141     	// make sure the value is cleared if this is the first time the property is defined
       
   142     	val = 0;
       
   143         }
       
   144 	
       
   145 	if ( err == KErrAlreadyExists )
       
   146 	    {
       
   147 	    // if our publish/subscribe variable already exists, all is well
       
   148 	    err = KErrNone;
       
   149 	    }
       
   150 	
       
   151 	if( err != KErrNone )
       
   152 		{
       
   153 		__ALFFXLOGSTRING1("CAlfTransitionServerController::StartTransitionServer - return: %d <<", err);
       
   154 		return err;
       
   155 		}
       
   156 		
       
   157 	//Set property to "server running"
       
   158     iTransitionControlValue = val | ETfxSrvRunning;
       
   159     // if the plugin has already been loaded, don't mess up with the value
       
   160 	RProperty::Set( KPSUidAvkonDomain, KAknTfxServerStatus,  val | ETfxSrvRunning );
       
   161     	
       
   162     if ( !iPsObserver )
       
   163         {
       
   164        	iPsObserver = CAlfPsObserver::New( this, KPSUidAvkonDomain, KAknTfxServerStatus );
       
   165     	if( !iPsObserver )
       
   166     		{
       
   167     		__ALFFXLOGSTRING("CAlfTransitionServerController::StartTransitionServer - return KErrNoMemory<<");
       
   168     		return KErrNoMemory;
       
   169     		}
       
   170         }
       
   171     
       
   172     if ( !iIsConnected )
       
   173         {
       
   174         err = iTfxServer.Open();
       
   175         }
       
   176         
       
   177     if ( err == KErrNone )
       
   178         {
       
   179         iIsConnected = ETrue;        
       
   180         // We don't need the server, we only want to know if it is running.
       
   181         iTfxServer.Close();
       
   182         }
       
   183     else
       
   184         {
       
   185         err = KErrNone;
       
   186         // start timer
       
   187         if ( !iTimer )
       
   188             {
       
   189             iTimer = CPeriodic::New( CActive::EPriorityStandard );
       
   190             if ( iTimer )
       
   191                 {
       
   192                 iTimer->Start( 1000000, 1000000,
       
   193                     TCallBack(CAlfTransitionServerController::ConnectionCallback, this ) );
       
   194                 }
       
   195             }
       
   196         }
       
   197     __ALFFXLOGSTRING1("CAlfTransitionServerController::StartTransitionServer - return: %d <<", err);
       
   198     return err;
       
   199 	}
       
   200 	
       
   201 // ---------------------------------------------------------------------------
       
   202 // ---------------------------------------------------------------------------
       
   203 //
       
   204 TInt CAlfTransitionServerController::ConnectionCallback( TAny* aParameter )
       
   205     {
       
   206     __ALFFXLOGSTRING("CAlfTransitionServerController::ConnectionCallback");
       
   207     CAlfTransitionServerController* me = ((CAlfTransitionServerController*)(aParameter));
       
   208     return me->ConnectionAttempt();
       
   209     }
       
   210     
       
   211 // ---------------------------------------------------------------------------
       
   212 // ---------------------------------------------------------------------------
       
   213 //
       
   214 TInt CAlfTransitionServerController::ConnectionAttempt()
       
   215     {
       
   216     __ALFFXLOGSTRING("CAlfTransitionServerController::ConnectionAttempt >>");
       
   217     TInt err = iTfxServer.Open();
       
   218     if ( err == KErrNone )
       
   219         {
       
   220         iIsConnected = ETrue;        
       
   221         __ALFFXLOGSTRING("CAlfTransitionServerController::ConnectionAttempt - Connected");
       
   222         // We don't need the server, we only want to know if it is running.
       
   223         iTfxServer.Close();
       
   224         delete iTimer;
       
   225         iTimer = NULL;
       
   226         err = iRepository->Get( KThemesTransitionEffects, iEffectValue );
       
   227         if ( err != 0 )
       
   228             {
       
   229             // Clean the value just to be sure it did not get messed up
       
   230             iEffectValue = 0;
       
   231             }
       
   232         iRepository->Set( KThemesTransitionEffects, KMaxTInt ); 
       
   233         iRepository->Set( KThemesTransitionEffects, iEffectValue );   
       
   234         }
       
   235     __ALFFXLOGSTRING1("CAlfTransitionServerController::ConnectionAttempt - state: %d, but returning KErrNone <<", err);
       
   236     return KErrNone;    
       
   237     }
       
   238 
       
   239 // ---------------------------------------------------------------------------
       
   240 // ---------------------------------------------------------------------------
       
   241 //
       
   242 void CAlfTransitionServerController::PsValueUpdated( const TUid /*aCategory*/, const TUint /*aKey*/, const TInt /*aVal*/ )
       
   243 	{
       
   244 	// This may not be needed as we poll the starting of alf.
       
   245 	}
       
   246 
       
   247 
       
   248     
       
   249 
       
   250