coreapplicationuis/SysAp/Inc/SysApTaskList.h
author hgs
Tue, 29 Jun 2010 10:40:11 +0300
changeset 46 eea20ed08f4b
permissions -rw-r--r--
201025_02
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
46
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
     1
/*
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
     2
* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies).
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
     3
* All rights reserved.
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
     8
*
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
     9
* Initial Contributors:
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    11
*
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    12
* Contributors:
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    13
*
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    14
* Description: 
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    15
*
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    16
*
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    17
*/
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    18
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    19
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    20
#ifndef SYSAPTASKLIST_H
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    21
#define SYSAPTASKLIST_H
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    22
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    23
// INCLUDES
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    24
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    25
#include <w32std.h>
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    26
#include <apgtask.h>
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    27
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    28
// CLASS DECLARATION
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    29
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    30
/**
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    31
*  Class for finding out about running applications.
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    32
*  This class specialises in locating and identifying root applications,
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    33
*  those applications who do not have any parent window group.
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    34
*  It can be used along-side TApaTaskList.
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    35
*
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    36
*  @since Series 60 3.0
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    37
*/
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    38
class CSysApTaskList : public CBase
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    39
	{
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    40
public:
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    41
    /**
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    42
    * Factory function
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    43
    * @param aWsSession an open session to the window server, often from CEikonEnv::WsSession()
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    44
    * @return a new fully constructed instance of CSysApTaskList
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    45
    */
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    46
	static CSysApTaskList* NewL(RWsSession& aWsSession);
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    47
    /**
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    48
    * Factory function
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    49
    * @param aWsSession an open session to the window server, often from CEikonEnv::WsSession()
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    50
    * @return a new fully constructed instance of CSysApTaskList, which is on the cleanup stack
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    51
    */
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    52
	static CSysApTaskList* NewLC(RWsSession& aWsSession);
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    53
    /**
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    54
    * Destructor.
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    55
    */
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    56
	~CSysApTaskList();
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    57
	
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    58
	/**
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    59
	* Refresh the window group array
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    60
	*/
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    61
	void UpdateListL();
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    62
	/**
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    63
	* Accessor for the window group array
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    64
	* @return an array containing the window groups of running applications.
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    65
	*/
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    66
	const RArray<RWsSession::TWindowGroupChainInfo>& WgArray() const;
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    67
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    68
	/**
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    69
	* Find an application with the requested UID 3, which is running as a root application
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    70
	* @param aAppUid the UID 3 of the target application.
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    71
	* @return a TApaTask which refers to the running instance of the application.
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    72
	* if the application is not running, the TApaTask's Exists() function will return EFalse.
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    73
	*/	
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    74
	TApaTask FindRootApp(TUid aAppUid) const;
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    75
	/**
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    76
	* Query whether an application's window group is running as a root application.
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    77
	* @param aWgId the window group identifier of the target application.
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    78
	* @return ETrue if this window group is running as a root window group.
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    79
	*/
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    80
	TBool IsRootWindowGroup(TInt aWgId) const;
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    81
	
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    82
	/**
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    83
	* Find the parent window group. If there is no parent, 0 is returned.
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    84
	* @param aWgId the window group id that you want to find the parent of.
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    85
	* @return The window group id of the parent, or 0 if there is no parent.
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    86
	*/
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    87
	TInt FindParentWgId(TInt aWgId) const;
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    88
	/**
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    89
	* Find the child window group. If there is no child, 0 is returned.
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    90
	* @param aWgId the window group id that you want to find the child of.
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    91
	* @return The window group id of the child, or 0 if there is no child.
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    92
	*/
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    93
	TInt FindChildWgId(TInt aWgId) const;
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    94
	
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    95
private:
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    96
	CSysApTaskList(RWsSession& aWsSession);
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    97
	void ConstructL();
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    98
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    99
private:
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   100
	RWsSession& iWs;
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   101
	RArray<RWsSession::TWindowGroupChainInfo> iWgs;
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   102
	};
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   103
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   104
#endif