localisation/apparchitecture/apparc/apaapp.cpp
author Maciej Seroka <maciejs@symbian.org>
Fri, 15 Oct 2010 11:54:08 +0100
branchSymbian3
changeset 74 08fe4219b8dd
parent 57 b8d18c84f71c
permissions -rw-r--r--
Fixed http smoke test (to use Winsock)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
57
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
     1
// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
     2
// All rights reserved.
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
     3
// This component and the accompanying materials are made available
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
     4
// under the terms of "Eclipse Public License v1.0"
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
     5
// which accompanies this distribution, and is available
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
     7
//
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
     8
// Initial Contributors:
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    10
//
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    11
// Contributors:
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    12
//
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    13
// Description:
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    14
// apaapp.cpp
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    15
//
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    16
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    17
#include <apaapp.h> // stuff everyone will want ie most things
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    18
#include <apacln.h> // CleanupStack protection for CApaDocument
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    19
#include "APASTD.H" // Panics etc.
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    20
#include <ecom/ecom.h>
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    21
#include <ecom/implementationinformation.h>
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    22
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    23
#include "../apparc/TRACE.H"
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    24
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    25
_LIT(KApplicationLocation,"\\sys\\bin\\");
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    26
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    27
//
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    28
// CApaApplication
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    29
//
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    30
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    31
/** Constructor for CApaApplication */
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    32
EXPORT_C CApaApplication::CApaApplication()
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    33
	{
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    34
	}
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    35
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    36
/** Returns the full name and path of the application.
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    37
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    38
The default implementation returns the full path name of the application DLL.
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    39
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    40
An application can provide its own implementation. 
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    41
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    42
@return Full path name of the application.
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    43
@see CApaApplication::DllName() */
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    44
EXPORT_C TFileName CApaApplication::AppFullName()const
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    45
	{
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    46
	return DllName();
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    47
	}
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    48
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    49
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    50
/** Returns the full name and path of the loaded application DLL.
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    51
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    52
@return Full path name of the application DLL. */
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    53
EXPORT_C TFileName CApaApplication::DllName()const
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    54
	{
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    55
	ASSERT(iAppFileNameRef);
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    56
	return *iAppFileNameRef;
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    57
	}
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    58
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    59
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    60
/** Generates a unique filename based on the file name contained within the specified 
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    61
full path name.
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    62
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    63
If necessary, the function creates the directory structure that is defined 
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    64
in the specified full path name.
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    65
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    66
If the file name does not yet exist, then this is the file name chosen. If 
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    67
this file name already exists, then a file name of the form: name(nn) is generated, 
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    68
where nn are decimal digits. The value of nn is incremented until a name is 
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    69
generated that is unique within the directory structure. A minimum of two 
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    70
decimal digits is generated.
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    71
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    72
The function is used by the UI framework.
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    73
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    74
@param aFs Handle to a file server session. 
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    75
@param aRootName The full path name.
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    76
@return KErrNone if successful, otherwise one of the other system-wide error 
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    77
codes. Specifically: KErrBadName if the file name portion of the specified 
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    78
full path name has invalid format; KErrArgument if the drive, path or file 
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    79
name parts are missing from the specified full path name; KErrOverflow if 
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    80
the generated filename becomes too long; KErrNoMemory if there is insufficient 
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    81
memory to perform the operation.
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    82
@see CEikAppUi */
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    83
EXPORT_C TInt CApaApplication::GenerateFileName(RFs& aFs, TFileName& aRootName)
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    84
	{
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    85
	// check that filename is valid
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    86
	if (!aFs.IsValidName(aRootName))
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    87
		return KErrBadName;
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    88
	//
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    89
	// check that a drive, path and root filename have been specified
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    90
	TParsePtr parsePtr(aRootName);
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    91
	if (!parsePtr.DrivePresent() || !parsePtr.PathPresent() || !parsePtr.NamePresent())
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    92
		return KErrArgument;
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    93
	//
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    94
	// create the path if necessary
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    95
	TInt ret=aFs.MkDirAll(parsePtr.DriveAndPath());
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    96
	if (ret!=KErrNone && ret!=KErrAlreadyExists)
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    97
		return ret;
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    98
	//
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    99
	// Create the Rbuf object to hold a filename (return if no mem available)
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   100
	RBuf newName;
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   101
	ret = newName.Create(aRootName, KMaxFileName+8);
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   102
	if (ret!=KErrNone)
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   103
		return KErrNoMemory;
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   104
	//	
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   105
	// generate a valid filename that doesn't already exist...
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   106
	TEntry entry;
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   107
	TInt i = 1;
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   108
	_LIT(KFormatStringOne,"%S%S(%02d)%S");
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   109
	_LIT(KFormatStringTwo,"%S%S(%d)%S");
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   110
	TBuf<16> format(KFormatStringOne);
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   111
	while (aFs.Entry(newName, entry) == KErrNone)		// Continue until DoesNotExist or PathDoesNotExist, etc
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   112
		{ 
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   113
		// If the file does already exist...
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   114
		// ... then create a "/path/filename(nn)" sting and try again.
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   115
		if (i == 100)
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   116
			format = KFormatStringTwo;
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   117
			
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   118
		TPtrC driveAndPath = parsePtr.DriveAndPath();
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   119
		TPtrC name = parsePtr.Name();
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   120
		TPtrC ext = parsePtr.Ext();
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   121
		newName.Format(format, &driveAndPath, &name, i++, &ext);
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   122
		if (newName.Length() > KMaxFileName)
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   123
			{
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   124
			newName.Close();
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   125
			return KErrOverflow;
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   126
			}
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   127
		}
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   128
	
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   129
	// Set the new filename and return
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   130
	aRootName = newName;
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   131
	newName.Close();
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   132
	return KErrNone;
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   133
	}
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   134
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   135
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   136
/** Opens the .ini file associated with the application, constructs the dictionary 
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   137
store object and returns a pointer to it.
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   138
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   139
The implementation of this function is provided by the OpenIniFileLC() function. 
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   140
The function pops the pointer returned by OpenIniFileLC() from the cleanup 
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   141
stack.
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   142
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   143
@param aFs Handle to a file server session. 
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   144
@return A pointer to the dictionary store object representing the application's 
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   145
.ini file. 
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   146
@see CApaApplication::OpenIniFileLC() */
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   147
EXPORT_C CDictionaryStore* CApaApplication::OpenIniFileL(RFs& aFs)const
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   148
	{
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   149
	CDictionaryStore* store = OpenIniFileLC(aFs);
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   150
	CleanupStack::Pop(); // store
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   151
	return store;
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   152
	}
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   153
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   154
EXPORT_C CApaApplication::~CApaApplication()
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   155
	{
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   156
	if (iEComDtorKey != TUid::Null()) 
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   157
		REComSession::DestroyedImplementation(iEComDtorKey);
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   158
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   159
	iAppFileNameRef = NULL;
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   160
	}
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   161
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   162
/** Virtual function called by the framework when the application
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   163
has been launched as a server application.
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   164
Applications that wish to be used as server applications must
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   165
override this function to return their implemetation of the server.
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   166
@param aAppServer The server pointer to be set. */
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   167
EXPORT_C void CApaApplication::NewAppServerL(CApaAppServer*& /*aAppServer*/)
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   168
	{
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   169
	User::Leave(KErrNotSupported);
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   170
	}
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   171
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   172
/** Reserved for future use */
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   173
EXPORT_C void CApaApplication::CApaApplication_Reserved1()
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   174
	{
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   175
	}
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   176
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   177
/** Reserved for future use */
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   178
EXPORT_C void CApaApplication::CApaApplication_Reserved2()
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   179
	{
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   180
	}
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   181
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   182
void CApaApplication::SetAppFileNameRef(const RBuf& aFileName)
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   183
	{
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   184
	iAppFileNameRef = &aFileName;
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   185
	}
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   186
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   187
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   188
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   189
//
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   190
// TApaApplicationFactory
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   191
//
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   192
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   193
/**
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   194
Default constructor
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   195
*/
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   196
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   197
/** Constructor for TApaApplicationFactory */
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   198
EXPORT_C TApaApplicationFactory::TApaApplicationFactory()
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   199
	: iType(ETypeFunction), iData(0), iApplication(NULL)
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   200
	{
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   201
	}
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   202
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   203
/** 
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   204
Constructor.
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   205
@publishedAll
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   206
@released
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   207
@param aFunction The function from which the application is to be created.
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   208
*/
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   209
EXPORT_C TApaApplicationFactory::TApaApplicationFactory(TFunction aFunction)
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   210
	: iType(ETypeFunction), iData(reinterpret_cast<TUint>(aFunction)), iApplication(NULL)
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   211
	{
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   212
	}
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   213
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   214
/** 
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   215
Constructor. Use this constructor in preference to the constructor taking a "TUid" parameter 
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   216
if at all possible as it is much more efficient.
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   217
@publishedAll
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   218
@released
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   219
@param aEmbeddedApplicationInformation The ECOM implementation-information of the embedded application to be created.
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   220
*/
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   221
EXPORT_C TApaApplicationFactory::TApaApplicationFactory(const CImplementationInformation& aEmbeddedApplicationInformation)
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   222
	: iType(ETypeEmbeddedApplicationInformation),
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   223
	 iData(reinterpret_cast<TUint>(&aEmbeddedApplicationInformation)),
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   224
	 iApplication(NULL)
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   225
	{
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   226
	}
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   227
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   228
/** 
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   229
Constructor. Use the constructor taking a "const CImplementationInformation&" parameter in preference 
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   230
to this constructor if at all possible as it is much more efficient.
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   231
@publishedAll
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   232
@released
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   233
@param aEmbeddedApplicationUid The ECOM implementation-UID of the embedded application to be created.
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   234
*/
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   235
EXPORT_C TApaApplicationFactory::TApaApplicationFactory(TUid aEmbeddedApplicationUid)
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   236
	: iType(ETypeEmbeddedApplicationUid), iData(aEmbeddedApplicationUid.iUid), iApplication(NULL)
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   237
	{
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   238
	}
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   239
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   240
CApaApplication* TApaApplicationFactory::CreateApplicationL() const
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   241
	{
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   242
	CApaApplication* application = NULL;
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   243
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   244
	switch (iType)
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   245
		{
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   246
		case ETypeFunction:
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   247
			{
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   248
			__ASSERT_DEBUG(iData, Panic(EPanicNullPointer));
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   249
			application = (*reinterpret_cast<TFunction>(iData))();
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   250
			break;
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   251
			}
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   252
		case ETypeEmbeddedApplicationInformation:
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   253
			{
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   254
			__ASSERT_DEBUG(iData, Panic(EPanicNullPointer));
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   255
			const CImplementationInformation& embeddedApplicationInformation = *reinterpret_cast<const CImplementationInformation*>(iData);
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   256
			TUid uid = embeddedApplicationInformation.ImplementationUid();
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   257
			application = CreateEmbeddedApplicationL(uid);
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   258
			break;
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   259
			}
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   260
		case ETypeEmbeddedApplicationUid:
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   261
			{
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   262
			TUid uid = TUid::Uid(iData);
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   263
			application = CreateEmbeddedApplicationL(uid);
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   264
			break;
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   265
			}
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   266
		default:
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   267
			Panic(EPanicBadApplicationFactoryType);
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   268
		}
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   269
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   270
	return application;
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   271
	}
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   272
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   273
HBufC* TApaApplicationFactory::AppFileNameL() const
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   274
	{
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   275
	HBufC* appFileName = NULL;
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   276
	switch (iType)
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   277
		{
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   278
		case ETypeFunction:
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   279
			{
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   280
			// Assume that if the type is a function pointer then the app is not embedded (so
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   281
			// the filename is the filename of this process).
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   282
			appFileName = RProcess().FileName().AllocL();
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   283
			break;
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   284
			}
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   285
		case ETypeEmbeddedApplicationInformation:
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   286
			{
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   287
			const CImplementationInformation& embeddedApplicationInformation = *reinterpret_cast<const CImplementationInformation*>(iData);
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   288
			appFileName = FullAppFileNameL(embeddedApplicationInformation.DisplayName());
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   289
			break;
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   290
			}
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   291
		case ETypeEmbeddedApplicationUid:
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   292
			{
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   293
			const TUid uid = TUid::Uid(iData);
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   294
			HBufC* displayName = EmbeddedApplicationDisplayNameLC(uid);
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   295
			appFileName = FullAppFileNameL(*displayName);
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   296
			CleanupStack::PopAndDestroy(displayName);
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   297
			break;
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   298
			}
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   299
		default:
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   300
			Panic(EPanicBadApplicationFactoryType);
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   301
		}
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   302
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   303
	return appFileName;
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   304
	}
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   305
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   306
TUid TApaApplicationFactory::AppFileUid() const
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   307
	{
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   308
	TUid uid=KNullUid;
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   309
	switch (iType)
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   310
		{
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   311
		case ETypeFunction:
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   312
			{
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   313
			uid = RProcess().Type()[2];
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   314
			break;
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   315
			}
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   316
		case ETypeEmbeddedApplicationInformation:
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   317
			{
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   318
			const CImplementationInformation& embeddedApplicationInformation=*REINTERPRET_CAST(const CImplementationInformation*,iData);
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   319
			uid = embeddedApplicationInformation.ImplementationUid();
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   320
			break;
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   321
			}
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   322
		case ETypeEmbeddedApplicationUid:
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   323
			{
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   324
			uid = TUid::Uid(iData);
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   325
			break;
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   326
			}
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   327
		default:
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   328
			Panic(EPanicBadApplicationFactoryType);
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   329
		}
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   330
		
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   331
	return uid;
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   332
	}
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   333
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   334
HBufC* TApaApplicationFactory::FullAppFileNameL(const TDesC& aAppName)
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   335
	{
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   336
	// This was appropriately changed for data caging (binaries placed in \sys\bin\)
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   337
	TFileName fileName;
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   338
	Dll::FileName(fileName);
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   339
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   340
	TParse parse;
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   341
	parse.SetNoWild(aAppName, &KApplicationLocation, &fileName);
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   342
	return parse.FullName().AllocL();
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   343
	}
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   344
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   345
CApaApplication* TApaApplicationFactory::CreateEmbeddedApplicationL(TUid aUid)
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   346
	{ // static
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   347
	CApaApplication* const application=static_cast<CApaApplication*>(REComSession::CreateImplementationL(aUid,_FOFF(CApaApplication,iEComDtorKey)));
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   348
	const TUid appUid = application->AppDllUid();
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   349
	__ASSERT_ALWAYS(appUid==aUid, Panic(EPanicUidsDoNotMatch));
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   350
	return application;
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   351
	}
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   352
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   353
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   354
HBufC* TApaApplicationFactory::EmbeddedApplicationDisplayNameLC(TUid aUid)
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   355
	{ // static
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   356
	HBufC* displayName = NULL;
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   357
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   358
	RImplInfoPtrArray implementationArray;
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   359
	CleanupStack::PushL(TCleanupItem(CleanupImplementationArray,&implementationArray));
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   360
	REComSession::ListImplementationsL(KUidFileEmbeddedApplicationInterfaceUid,implementationArray);
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   361
	
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   362
	for (TInt i = implementationArray.Count()-1; i >= 0; --i)
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   363
		{
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   364
		const CImplementationInformation& implementationInformation=*implementationArray[i];
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   365
		if (implementationInformation.ImplementationUid().iUid==aUid.iUid)
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   366
			{
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   367
			displayName=implementationInformation.DisplayName().AllocL();
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   368
			break;
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   369
			}
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   370
		}
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   371
		
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   372
	CleanupStack::PopAndDestroy(&implementationArray);
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   373
	if (!displayName)
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   374
		User::Leave(KErrNotFound);
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   375
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   376
	CleanupStack::PushL(displayName);
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   377
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   378
	return displayName;
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   379
	}
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   380
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   381
void TApaApplicationFactory::CleanupImplementationArray(TAny* aImplementationArray)
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   382
	{ // static
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   383
	__ASSERT_DEBUG(aImplementationArray, Panic(EPanicNullPointer));
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   384
	RImplInfoPtrArray& implementationArray=*static_cast<RImplInfoPtrArray*>(aImplementationArray);
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   385
	implementationArray.ResetAndDestroy();
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   386
	implementationArray.Close();
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   387
	}
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   388
	
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   389
b8d18c84f71c Re-enabled smoke test for Language-setting
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   390