customization/UISettingsSrv/client/src/UISettingsSrvClient.cpp
changeset 0 3ce708148e4d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/customization/UISettingsSrv/client/src/UISettingsSrvClient.cpp	Thu Dec 17 08:40:12 2009 +0200
@@ -0,0 +1,323 @@
+/*
+* Copyright (c) 2002-2004 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: Implementation of customization components
+*
+*/
+
+
+
+// INCLUDE FILES
+#include "UISettingsSrvConstants.h"
+#include "UISettingsSrvClient.h"
+
+#include "UISettingsSrv.h"
+#include "debug.h"
+
+#include <eikdll.h>
+#include <apacmdln.h>
+
+#include <apgcli.h> // apgrfx.lib
+
+
+// Create the server thread
+// This function is exported from the DLL and called from the client 
+LOCAL_C TInt StartServerL()
+    {
+	RDEBUG("UISettingsSrv: Starting server...");
+
+	const TUidType serverUid(KNullUid,KNullUid,KUISettingsSrvUid);
+
+	// EPOC and EKA 2 is easy, we just create a new server process. Simultaneous
+	// launching of two such processes should be detected when the second one
+	// attempts to create the server object, failing with KErrAlreadyExists.
+	RProcess server;
+	//TInt r=server.Create(KHelloWorldServerImg,KNullDesC,serverUid);
+	TInt r = 0;
+//sf	TInt r=server.Create( KUISettingsSrvImg, KNullDesC );
+
+	CApaCommandLine * cmd = CApaCommandLine::NewLC();
+#if (defined(SYMBIAN_SUPPORT_UI_FRAMEWORKS_V1) || !defined(SYMBIAN_HIDE_UI_FRAMEWORKS_V1)) && !defined(SYMBIAN_REMOVE_UI_FRAMEWORKS_V1)
+	// cmd->SetLibraryNameL( KUISettingsSrvImg ); // kpo not available in w20
+#else
+	cmd->SetExecutableNameL( KUISettingsSrvImg );
+#endif
+	cmd->SetDocumentNameL( KNullDesC );
+//sf-	cmd->SetCommandL( EApaCommandRun );
+	cmd->SetCommandL( EApaCommandBackground );
+
+#if (defined(SYMBIAN_SUPPORT_UI_FRAMEWORKS_V1) || !defined(SYMBIAN_HIDE_UI_FRAMEWORKS_V1)) && !defined(SYMBIAN_REMOVE_UI_FRAMEWORKS_V1)
+	r = server.Create( KUISettingsSrvImg, cmd->FullCommandLine() );  // kpo not available in w20
+#else
+	r = server.Create( KUISettingsSrvImg, KNullDesC() );
+#endif
+
+
+	cmd->SetProcessEnvironmentL( server );
+
+
+
+	CleanupStack::PopAndDestroy( cmd );
+
+
+	if ( r != KErrNone )
+		{
+		RDEBUG_2( "UISettingsSrv: server start failed %d",r);
+		return r;
+		}
+	TRequestStatus stat;
+	server.Rendezvous( stat );
+	if (stat!=KRequestPending)
+		{
+		server.Kill(0);		// abort startup
+		}
+	else
+		{
+		server.Resume();	// logon OK - start the server
+		}
+	RDEBUG("UISettingsSrv: Started");
+
+	User::WaitForRequest( stat );		// wait for start or death
+	// we can't use the 'exit reason' if the server panicked as this
+	// is the panic 'reason' and may be '0' which cannot be distinguished
+	// from KErrNone
+	r = (server.ExitType() == EExitPanic) ? KErrGeneral : stat.Int();
+	server.Close();
+	return r;
+    }
+
+
+
+
+	
+
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+//**********************************
+//RUISettingsSrv
+//**********************************
+
+EXPORT_C RUISettingsSrv::RUISettingsSrv()
+	{
+	}
+
+
+// This is the standard retry pattern for server connection
+EXPORT_C TInt RUISettingsSrv::Connect()
+	{
+	TInt retry=2;
+	for (;;)
+		{
+		TInt r=CreateSession( KUISettingsSrvName, TVersion(0,0,0), 1 );
+		if ( r != KErrNotFound && r != KErrServerTerminated )
+			{
+			return r;
+			}
+		if ( --retry == 0 )
+			{
+			return r;
+			}
+		TRAPD( err, r = StartServerL() );
+		if( err != KErrNone )
+			{
+			return err;
+			}
+		if ( r != KErrNone && r != KErrAlreadyExists )
+			{
+			return r;
+			}
+		}
+	}
+
+// Return the client side version number.
+EXPORT_C TVersion RUISettingsSrv::Version(void) const
+	{
+	return(TVersion(KUISettingsSrvMajorVersionNumber,KUISettingsSrvMinorVersionNumber,KUISettingsSrvBuildVersionNumber));
+	}
+
+EXPORT_C TInt RUISettingsSrv::SetStartupImage( const TDesC& aImagePath )
+	{
+	TIpcArgs args( &aImagePath );
+	return SendReceive( EUISettingsSrvSetStartupImage, args );
+	}
+
+EXPORT_C TInt RUISettingsSrv::GetStartupImagePath( TDes& aImagePath )
+	{
+	TIpcArgs args( &aImagePath );
+	return SendReceive( EUISettingsSrvGetStartupImagePath, args );
+	}
+
+EXPORT_C TInt RUISettingsSrv::SetStartupText( const TDesC& aText )
+    {
+	TIpcArgs args( &aText );
+	return SendReceive( EUISettingsSrvSetStartupText, args );
+    }
+
+EXPORT_C HBufC* RUISettingsSrv::GetStartupTextL( )
+    {
+	TInt len = 0;
+	TPckg<TInt> lenp( len );
+	TIpcArgs args1( &lenp );
+	
+	User::LeaveIfError( SendReceive( EUISettingsSrvGetStartupTextSize, args1 ) );
+	
+	HBufC* buf = HBufC::NewLC( len );
+	TPtr ptr( buf->Des() );
+	TIpcArgs args2( &ptr );
+	User::LeaveIfError( SendReceive( EUISettingsSrvGetStartupText, args2 ) );
+	CleanupStack::Pop( buf );
+
+	return buf;
+    }
+
+EXPORT_C TInt RUISettingsSrv::SetStartupNoteType( TInt aType )
+    {
+	TIpcArgs args( aType );
+	return SendReceive( EUISettingsSrvSetStartupNoteType, args );
+    }
+
+EXPORT_C TInt RUISettingsSrv::GetStartupNoteType( TInt &aType )
+    {
+	TPckg<TInt> typep( aType );
+	TIpcArgs args( &typep );
+	return SendReceive( EUISettingsSrvGetStartupNoteType, args );
+    }
+
+/* EXPORT_C TInt RUISettingsSrv::UpdateShortcutTargetList()
+    {
+    return SendReceive( EUISettingsSrvUpdateShortcutList );
+    }
+
+EXPORT_C TInt RUISettingsSrv::GetShortcutTargetCount( TInt aRtMask, TInt &aCount )
+    {
+	TPckg<TInt> countp( aCount );
+	TIpcArgs args( aRtMask, &countp );
+	return SendReceive( EUISettingsSrvGetShortcutCount, args );
+    }
+
+EXPORT_C TInt RUISettingsSrv::GetShortcutTargetType( TInt aRtMask, TInt aIndex, TInt& aType )
+    {
+	TPckg<TInt> typep( aType );
+	TIpcArgs args( aRtMask, aIndex, &typep );
+	return SendReceive( EUISettingsSrvGetShortcutType, args );
+    }
+
+EXPORT_C TInt RUISettingsSrv::GetShortcutTargetCaption( TInt aRtMask, TInt aIndex, TDes& aCaption )
+    {
+	TIpcArgs args( aRtMask, aIndex, &aCaption );
+	return SendReceive( EUISettingsSrvGetShortcutTargetCaption, args );
+    }
+
+EXPORT_C TInt RUISettingsSrv::GetShortcutTargetAppUid( TInt aRtMask, TInt aIndex, TInt& aUid )
+    {
+    TPckg<TInt> uidp( aUid );
+	TIpcArgs args( aRtMask, aIndex, &uidp );
+	return SendReceive( EUISettingsSrvGetShortcutAppUid, args );
+    }
+
+EXPORT_C TInt RUISettingsSrv::GetShortcutTargetIndex( TInt aRtMask, TScActionType aActionType, TInt& aIndex )
+    {
+    TPckg<TInt> indexp( aIndex );
+	TIpcArgs args( aRtMask, aActionType.iUid, &indexp );
+	return SendReceive( EUISettingsSrvGetShortcutIndexFromAT, args );
+    }
+
+EXPORT_C TInt RUISettingsSrv::GetShortcutTargetIndex( TInt aRtMask, TInt aUid, TInt& aIndex )
+    {
+    TPckg<TInt> indexp( aIndex );
+	TIpcArgs args( aRtMask, aUid, &indexp );
+	return SendReceive( EUISettingsSrvGetShortcutIndex, args );
+    }
+
+EXPORT_C TInt RUISettingsSrv::SetShortcutTargetAppIndex( TInt aActionType, TInt aRtType, TInt aIndex )
+    {
+	TIpcArgs args( aRtType, aActionType, aIndex );
+	return SendReceive( EUISettingsSrvSetShortcutTargetAppIndex, args );
+    }
+
+EXPORT_C TInt RUISettingsSrv::GetShortcutRtType( TInt aActionType, TInt &aRtType )
+    {
+    TPckg<TInt> rttypep( aRtType );
+	TIpcArgs args( aActionType, &rttypep );
+	return SendReceive( EUISettingsSrvGetShortcutRtType, args );
+    }
+
+EXPORT_C TInt RUISettingsSrv::SetShortcutTargetCaption( TInt aRtMask, TInt aIndex, const TDesC& aCaption)
+    {
+	TIpcArgs args( aRtMask, aIndex, &aCaption );
+	return SendReceive( EUISettingsSrvSetShortcutTargetCaption, args );	
+    }
+
+EXPORT_C TInt RUISettingsSrv::SetShortcutTargetBitmap( TInt aRtMask, TInt aIndex, const TDesC& aFileName, const TDesC8& aMimeType )
+    {
+	TIpcArgs args( aRtMask, aIndex, &aFileName, &aMimeType );
+	return SendReceive( EUISettingsSrvSetShortcutTargetBitmap, args );
+    }
+
+EXPORT_C TInt RUISettingsSrv::SetShortcutTargetMask( TInt aRtMask, TInt aIndex, const TDesC& aFileName, const TDesC8& aMimeType )
+    {
+	TIpcArgs args( aRtMask, aIndex, &aFileName, &aMimeType );
+	return SendReceive( EUISettingsSrvSetShortcutTargetMask, args );
+    }
+
+EXPORT_C TInt RUISettingsSrv::GetShortcutTargetBitmap( TInt aRtMask, TInt aIndex, TDes& aFileName, TDes8& aMimeType )
+    {
+	TIpcArgs args( aRtMask, aIndex, &aFileName, &aMimeType );
+	return SendReceive( EUISettingsSrvGetShortcutTargetBitmap, args );
+    }
+
+EXPORT_C TInt RUISettingsSrv::GetShortcutTargetMask( TInt aRtMask, TInt aIndex, TDes& aFileName, TDes8& aMimeType )
+    {
+	TIpcArgs args( aRtMask, aIndex, &aFileName, &aMimeType );
+	return SendReceive( EUISettingsSrvGetShortcutTargetMask, args );
+    }
+*/
+EXPORT_C TInt RUISettingsSrv::GetSoftkeyBitmap( TInt aSoftkeyId,
+                                                TDes& aFileName,
+                                                TDes8& aMimeType )
+    {
+	TIpcArgs args( aSoftkeyId, &aFileName, &aMimeType );
+	return SendReceive( EUISettingsSrvGetSoftkeyBitmap, args );
+    }
+
+EXPORT_C TInt RUISettingsSrv::GetSoftkeyMask( TInt aSoftkeyId,
+                                              TDes& aFileName,
+                                              TDes8& aMimeType )
+    {
+	TIpcArgs args( aSoftkeyId, &aFileName, &aMimeType );
+	return SendReceive( EUISettingsSrvGetSoftkeyMask, args );
+    }
+
+EXPORT_C TInt RUISettingsSrv::SetSoftkeyBitmap (
+                                          TInt aSoftkeyId,
+                                          const TDesC& aFileName,
+                                          const TDesC8& aMimeType )
+    {
+	TIpcArgs args( aSoftkeyId, &aFileName, &aMimeType );
+	return SendReceive( EUISettingsSrvSetSoftkeyBitmap, args );
+    }
+
+EXPORT_C TInt RUISettingsSrv::SetSoftkeyMask (
+                                          TInt aSoftkeyId,
+                                          const TDesC& aFileName,
+                                          const TDesC8& aMimeType )
+    {
+	TIpcArgs args( aSoftkeyId, &aFileName, &aMimeType );
+	return SendReceive( EUISettingsSrvSetSoftkeyMask, args );
+    }
+
+
+
+//  End of File