eventsui/eventshandlerui/eventshandlerserver/src/evthandlerserver.cpp
branchRCL_3
changeset 17 1fc85118c3ae
parent 16 8173571d354e
child 18 870918037e16
--- a/eventsui/eventshandlerui/eventshandlerserver/src/evthandlerserver.cpp	Thu Aug 19 09:48:36 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,416 +0,0 @@
-/*
-* Copyright (c) 2008 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:  server implementation for Events Handler Server
-*
-*/
-
-
-#include "evthandlerclientserver.h"
-#include "evthandlerserversession.h"
-#include "evthandlerserverconsts.h"
-#include "evtnotifierhandler.h"
-#include "evtmgmtuiengine.h"
-#include "evtevent.h"
-#include "evtdebug.h"
-
-#include "evthandlerserver.h"
-
-#include <AknGlobalNote.h>  // CAknGlobalNote
-#include <w32std.h>
-#include <apgtask.h>
-#include <apgcli.h>
-#include <apacmdln.h>
-#include <bacline.h>
-
-static const TInt KHandlerAppUid = 0x2001E668;
-_LIT(KHandlerEXE, "evthandler.exe");
-_LIT( KDelimiter, ":");
-
-// ---------------------------------------------------------------------------
-// CEvtHandlerServer::CEvtHandlerServer()
-// ---------------------------------------------------------------------------
-//
-inline CEvtHandlerServer::CEvtHandlerServer()
-		:CServer2( 0, ESharableSessions ), 
-		iEventsQueue( KEvtItemArrayGranularity )
-	{}
-
-// ---------------------------------------------------------------------------
-// CEvtHandlerServer::~CEvtHandlerServer()
-// ---------------------------------------------------------------------------
-//
-CEvtHandlerServer::~CEvtHandlerServer()
-	{
-    EVTUIDEBUG( "+ CEvtHandlerServer::~CEvtHandlerServer()" );	
-	if( iEvtSnoozeHandler )
-		{
-		delete iEvtSnoozeHandler;		
-		}
-		
-	if( iEvtNotifierHandler )
-		{
-		delete iEvtNotifierHandler;		
-		}    
-    
-    iEventsQueue.Close();
-    
-    EVTUIDEBUG( "- CEvtHandlerServer::~CEvtHandlerServer()" );
-	}
-
-// ---------------------------------------------------------------------------
-// CEvtHandlerServer::NewLC()
-// ---------------------------------------------------------------------------
-//
-CServer2* CEvtHandlerServer::NewLC()
-	{
-    EVTUIDEBUG( "+ CEvtHandlerServer::NewLC()" );
-	CEvtHandlerServer* self = new ( ELeave ) CEvtHandlerServer;
-	CleanupStack::PushL( self );
-	self->ConstructL();
-	EVTUIDEBUG( "- CEvtHandlerServer::NewLC()" );
-	return self;
-	}
-
-// ---------------------------------------------------------------------------
-// CEvtHandlerServer::ConstructL()
-// ---------------------------------------------------------------------------
-//
-void CEvtHandlerServer::ConstructL()
-/*
- * 2nd phase construction - ensure the timer and server objects are running
- */
-	{
-    EVTUIDEBUG( "+ CEvtHandlerServer::ConstructL()" );
-	StartL( KEvtHandlerServerName );
-	iShutdownTimer.ConstructL();
-	iEvtSnoozeHandler = CEvtSnoozeHandler::NewL( *this );	
-    EVTUIDEBUG( "- CEvtHandlerServer::ConstructL()" );
-	}
-
-// ---------------------------------------------------------------------------
-// CEvtHandlerServer::NewSessionL()
-// ---------------------------------------------------------------------------
-//
-CSession2* CEvtHandlerServer::NewSessionL( const TVersion&, const RMessage2& ) const
-/*
- * Cretae a new client session. This should really check the version number.
- */
-	{
-    EVTUIDEBUG( "+ CEvtHandlerServer::NewSessionL()" );
-	return new ( ELeave ) CEvtHandlerServerSession();
-	}
-
-// ---------------------------------------------------------------------------
-// CEvtHandlerServer::HandleNewEventL()
-// ---------------------------------------------------------------------------
-//
-void CEvtHandlerServer::HandleNewEventL( const TEvtEventId aEventId, const TInt aAccuracy )
-    {
-	EVTUIDEBUG2("+ CEvtHandlerServer::HandleNewEventL() - EventId = %d, Accuracy = %d", aEventId, aAccuracy);
-    iShutdownTimer.Cancel();
-       
-    // Stop any running request
-	delete iEvtNotifierHandler;		
-	iEvtNotifierHandler = NULL;    
-    
-    // Remove if it was present in Snooze Que
-	TTime time;
-	time.HomeTime();
-	TEvtSnoozeItem snoozeItem( aEventId, static_cast<TEvtFireAccuracy>(aAccuracy), time );
-    iEvtSnoozeHandler->RemoveIfPresent( snoozeItem );	
-     
-    // Create an Event Info structure
-    TEvtEventInfo evtInfo( aEventId, static_cast<TEvtFireAccuracy>(aAccuracy), ETrue, ETrue );
-     
-    TIdentityRelation<TEvtEventInfo> matcher(TEvtEventInfo::Match);
-    TInt index = iEventsQueue.Find(evtInfo,matcher);
-
-    // Remove if it was present in Notifier Que
-    if( index != KErrNotFound )
-        {
-        iEventsQueue.Remove( index );
-        }
-        
-    // Append this element to the front of queue
-    iEventsQueue.Insert( evtInfo, 0 );
-    
-    // Restart the request handling process
-    HandleNextEventL();
-	EVTUIDEBUG("- CEvtHandlerServer::HandleNewEventL()");
-    }
-
-// ---------------------------------------------------------------------------
-// CEvtHandlerServer::HandleNextEventL()
-// ---------------------------------------------------------------------------
-//
-void CEvtHandlerServer::HandleNextEventL()
-	{
-	EVTUIDEBUG( "+ CEvtHandlerServer::HandleNextEventL()")
-	TInt evtCount  = iEventsQueue.Count();
-	if( evtCount )
-		{		
-		EVTUIDEBUG1( "EventId = %d", iEventsQueue[ 0 ].iEventId );
-		iEvtNotifierHandler = CEvtNotifierHandler::NewL( *this, iEventsQueue[ 0 ] );
-		
-		// Check if the Event is Launchable - Is it present and Active	
-		if( iEvtNotifierHandler->IsLaunchable() )
-			{
-			iEvtNotifierHandler->StartEvtNotifierL();
-		
-	        // Set the tone play to False So that it does not play tone next time.
-	        if( iEventsQueue[ 0 ].iPlayTone )
-	        	iEventsQueue[ 0 ].iPlayTone = EFalse;
-			}
-		else
-			{
-			delete iEvtNotifierHandler;		
-			iEvtNotifierHandler = NULL;    
-			
-			iEventsQueue.Remove( 0 );
-			evtCount  = iEventsQueue.Count();
-			}
-		}
-    
-	if( !evtCount )
-        {
-        if( iEvtSnoozeHandler->IsSnoozeQueEmpty() )
-            {
-            EVTUIDEBUG( "Handler Server shutdown")
-            iShutdownTimer.Start();    
-            }
-        }
-    EVTUIDEBUG( "- CEvtHandlerServer::HandleNextEventL()" );
-	}
-	
-// ---------------------------------------------------------------------------
-// CEvtHandlerServer::SnoozeCompleteL()
-// 
-// Derived from MEvtSnoozeObserver 
-// ---------------------------------------------------------------------------
-//
-void CEvtHandlerServer::SnoozeCompleteL( 
-    	TEvtSnoozeItem& aSnoozeItem, 
-    	TBool aSnoozeAgain )
-    {
-	EVTUIDEBUG2("+ CEvtHandlerServer::SnoozeCompleteL() - EventId = %d, Snooze = %d", 
-	                    aSnoozeItem.iEventId, aSnoozeAgain);
-       
-    // Stop any running request
-	delete iEvtNotifierHandler;		
-	iEvtNotifierHandler = NULL;    
-     
-    // Create an Event Info structure
-    TEvtEventInfo evtInfo( aSnoozeItem.iEventId, aSnoozeItem.iAccuracy, ETrue, aSnoozeAgain );
-     
-    // Append this element to the front of queue
-    iEventsQueue.Insert( evtInfo, 0 );
-    
-    // Restart the request handling process
-    HandleNextEventL();
-	EVTUIDEBUG("- CEvtHandlerServer::SnoozeCompleteL()");
-    }
-	
-// ---------------------------------------------------------------------------
-// CEvtHandlerServer::HandlerCompleteL()
-// 
-// Derived from MEvtNotifierObserver 
-// ---------------------------------------------------------------------------
-//
-void CEvtHandlerServer::HandlerCompleteL( 
-    	TEvtInfoNoteResult aResult,
-        CEvtEvent* aEvent )
-	{	
-    EVTUIDEBUG2( "+ CEvtHandlerServer::HandlerCompleteL() - EventId = %d, Notifier Action = %d", iEventsQueue[ 0 ].iEventId, aResult );
-	
-	TEvtEventId evtId = aEvent->EventId();
-	TBool repeat = aEvent->Repeat();
-	
-	// Delete the previous running instance of the server
-	delete iEvtNotifierHandler;
-	iEvtNotifierHandler = NULL;
-	
-	switch( aResult )
-		{
-		case EOpenTrigger:
-		case EShowDetails:
-			{
-			EVTUIDEBUG( "Open Event" );
-			
-	        TBuf8< KEvtCommandMessageLength > buffer;
-	        buffer.AppendNum( evtId );
-	        buffer.Append( KDelimiter );
-	        buffer.AppendNum( aResult );
-	        buffer.Append( KDelimiter );
-	        
-	        // Create a session to Windows server to check the running of 
-	        // handler ui
-		    RWsSession  ws;
-		    User::LeaveIfError( ws.Connect() );
-		    CleanupClosePushL( ws ); // pushing to cleanupstack
-		    
-		    // Check if Handler Application is already running. Incase its
-		    // send the command message to the application
-		    TApaTaskList taskList( ws );
-		    TApaTask task = taskList.FindApp( TUid::Uid( KHandlerAppUid ) );
-		    if ( task.Exists() )
-		        {
-		        // Bring the task to the foreground and send a message to it.		        	       
-		        task.BringToForeground();
-		        User::LeaveIfError( task.SendMessage( TUid::Uid( KUidApaMessageSwitchOpenFileValue ), buffer ));		        
-		        }
-		    else
-		    	{
-
-		    	// Start and instance of the new application
-		    	LaunchAppL( TUid::Uid( KHandlerAppUid), buffer );			    
-	            }
-	        CleanupStack::PopAndDestroy();	// ws	
-	        
-	        // Remove if it was present in Snooze Que
-			TTime time;
-			time.HomeTime();
-			TEvtSnoozeItem snoozeItem( iEventsQueue[0].iEventId, iEventsQueue[0].iAccuracy, time );
-            iEvtSnoozeHandler->RemoveIfPresent( snoozeItem );		    		
-	        break;
-			}		
-		case ESnoozeTrigger:
-			{
-			EVTUIDEBUG( "Snooze Event" );		
-			TTime time;
-			time.HomeTime();
-			TEvtSnoozeItem snoozeItem( iEventsQueue[0].iEventId, iEventsQueue[0].iAccuracy, time );
-			iEvtSnoozeHandler->Snooze( snoozeItem );
-            break;			
-			}
-		case ECloseInfoNote:
-			{
-			EVTUIDEBUG( "Closing Note" );	
-            
-            // Update State if needed.
-            if( !repeat )
-                ChangeStateL( evtId );
-            
-	        // Remove if it was present in Snooze Que
-			TTime time;
-			time.HomeTime();
-			TEvtSnoozeItem snoozeItem( iEventsQueue[0].iEventId, iEventsQueue[0].iAccuracy, time );
-            iEvtSnoozeHandler->RemoveIfPresent( snoozeItem );		
-            break;			
-			}
-		default:
-		    {
-	        // Remove if it was present in Snooze Que
-			TTime time;
-			time.HomeTime();
-			TEvtSnoozeItem snoozeItem( iEventsQueue[0].iEventId, iEventsQueue[0].iAccuracy, time );
-            iEvtSnoozeHandler->RemoveIfPresent( snoozeItem );	
-		    break;    
-		    }					
-		}
-			
-    // The note has been handled. Remove the note from the queue		
-	iEventsQueue.Remove( 0 );
-	
-	HandleNextEventL();	
-    EVTUIDEBUG( "- CEvtHandlerServer::HandlerCompleteL()" );
-	}
-
-// ---------------------------------------------------------------------------
-// CEvtHandlerServer::ChangeStateL() 
-// ---------------------------------------------------------------------------
-//
-void CEvtHandlerServer::ChangeStateL( TEvtEventId aEvtId )
-    {  
-    EVTUIDEBUG1( "Change State of %d", aEvtId );
-    TBuf16< KEvtCommandMessageLength > buffer;
-    buffer.AppendNum( EEvtActionChangeState );
-    buffer.Append( KDelimiter );
-    buffer.AppendNum( aEvtId );
-
-    RProcess proc;
-    TInt retVal = proc.Create( KHandlerEXE(), buffer);
-    if(retVal == KErrNone)
-        {
-        proc.Resume();
-        }
-    proc.Close();
-    }
-
-// ---------------------------------------------------------------------------
-// CEvtHandlerServer::LaunchAppL() 
-// ---------------------------------------------------------------------------
-//
-void CEvtHandlerServer::LaunchAppL(
-                                TUid                    aApplicationUid,
-                          const TDesC8&                  aCmdLineArg )
-    {  
-    DEBUG("+ CEvtHandlerServer::LaunchAppL");
-    
-    // Create the Session handle and connect to the Application architecture
-    // server. This is required to obtain the details of the application from
-    // the Application UID.
-    RApaLsSession lsSession;
-    User::LeaveIfError( lsSession.Connect() );
-    CleanupClosePushL( lsSession );
-		            
-    DEBUG("+ CEvtHandlerServer::LaunchAppL - Get the Application Information");
-    // Get the Application Information.
-    TApaAppInfo appInfo;    
-    TInt error = lsSession.GetAppInfo( appInfo, aApplicationUid );
-    if ( error )
-    	{
-    	EVTUIDEBUG1("Get the Application Information Error : %d", error );
-    	User::Leave( error );
-    	}
-    
-    DEBUG("+ CEvtHandlerServer::LaunchAppL - Fill the command line argument structure");
-    // Fill the command line argument structure
-    CApaCommandLine* cmdLine = CApaCommandLine::NewLC();
-    
-    DEBUG("+ CEvtHandlerServer::LaunchAppL - Set the Application name");
-    // Set the Application name.    
-    TFileName appName = appInfo.iFullName;
-    cmdLine->SetExecutableNameL( appName );
-    
-    DEBUG("+ CEvtHandlerServer::LaunchAppL - Set the Command");
-    // Set the Command
-    cmdLine->SetCommandL( EApaCommandRun );
-
-    DEBUG("+ CEvtHandlerServer::LaunchAppL - Set the Command line arguments");
-    // Set the Command line arguments.
-    if ( aCmdLineArg.Length())
-        {
-        // These arguments would be sent as Tail end arguments to the launched
-        // Application. Its left to the application to handle those
-        HBufC8* tailEnd = HBufC8::NewLC( aCmdLineArg.Length());
-        tailEnd->Des().Copy( aCmdLineArg );
-        
-        // The Tail end buffer is copied to the Command line structure. Hence,
-        // can delete this variable after the set operation succeeds.
-        cmdLine->SetTailEndL( tailEnd->Des());
-        
-        CleanupStack::PopAndDestroy( tailEnd );
-        }
-
-    DEBUG("+ CEvtHandlerServer::LaunchAppL - Start the Application");
-	// Start the Application
-	User::LeaveIfError( lsSession.StartApp( *cmdLine ));
-    
-    // Clean up all the allocated heap variables.
-    CleanupStack::PopAndDestroy( cmdLine );
-    CleanupStack::PopAndDestroy(); //lsSession 		         
-    
-    DEBUG("- CEvtHandlerServer::LaunchAppL");
-    }
-// End of File