diff -r 0efa10d348c0 -r a5a39a295112 menucontentsrv/handlersrc/menutasklist.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/menucontentsrv/handlersrc/menutasklist.cpp Wed Sep 01 12:22:09 2010 +0100 @@ -0,0 +1,91 @@ +/* +* Copyright (c) 2009 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: +* +*/ + +#include + +#include "menutasklist.h" + +CMenuTaskList* CMenuTaskList::NewL(RWsSession& aWsSession) + { + CMenuTaskList* self = NewLC(aWsSession); + CleanupStack::Pop(self); + return self; + } + +CMenuTaskList* CMenuTaskList::NewLC(RWsSession& aWsSession) + { + CMenuTaskList* self = new(ELeave) CMenuTaskList(aWsSession); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +CMenuTaskList::CMenuTaskList(RWsSession& aWsSession) +: iWs(aWsSession) + { + } + +void CMenuTaskList::ConstructL() + { + UpdateListL(); + } + +CMenuTaskList::~CMenuTaskList() + { + iWgs.Close(); + } + +void CMenuTaskList::UpdateListL() + { + User::LeaveIfError(iWs.WindowGroupList(&iWgs)); + } + + +TApaTask CMenuTaskList::FindRootApp(TUid aAppUid) const + { + TApaTask task(iWs); + task.SetWgId(0); // initialise task to non-existant task + // wgId = 0 tells FindAppByUid to start looking for apps + TInt wgId=0; + FOREVER + { + CApaWindowGroupName::FindByAppUid(aAppUid, iWs, wgId); + // KErrNotFound means that no more apps can be found + if (wgId == KErrNotFound) + break; + if (IsRootWindowGroup(wgId)) + { + // Found a root wg with the right app UID, return it. + task.SetWgId(wgId); + break; + } + } + return task; + } + +TBool CMenuTaskList::IsRootWindowGroup(TInt aWgId) const + { + TInt count = iWgs.Count(); + for (TInt ii=0; ii