diff -r 0b3699f6c654 -r e36b2f4799c0 taskswitcher/server/src/tsdatalist.cpp --- a/taskswitcher/server/src/tsdatalist.cpp Fri Sep 17 08:32:18 2010 +0300 +++ b/taskswitcher/server/src/tsdatalist.cpp Mon Oct 04 00:38:31 2010 +0300 @@ -49,11 +49,13 @@ */ CTsDataList* CTsDataList::NewL( MTsResourceManager& aResources, MTsWindowGroupsMonitor& aMonitor, - MTsDataObserver& aObserver ) + MTsDataObserver& aObserver, + TsEnv& aEnv ) { CTsDataList* self = new (ELeave) CTsDataList( aResources, aMonitor, - aObserver ); + aObserver, + aEnv); CleanupStack::PushL( self ); self->ConstructL(); CleanupStack::Pop( self ); @@ -66,11 +68,13 @@ */ CTsDataList::CTsDataList(MTsResourceManager& aResources, MTsWindowGroupsMonitor &aMonitor, - MTsDataObserver& aObserver ) + MTsDataObserver& aObserver, + TsEnv& aEnv) : CTsWindowGroupsObserver( aMonitor ), iResources( aResources ), - iObserver( aObserver ) + iObserver( aObserver ), + iEnv( aEnv ) { } @@ -120,13 +124,13 @@ * @see MTsWindowGroupsObserver HandleWindowGroupChanged */ void CTsDataList::HandleWindowGroupChanged( - MTsResourceManager &, - const TArray& aWgList) + MTsResourceManager &/*aResources*/, + const MTsRunningApplicationStorage& aStorage) { TRAP_IGNORE(RDebug::Print(_L("[TaskSwitcher] processing started")); RTsFswArray newAppsList; CleanupResetAndDestroyPushL(newAppsList); - CollectAppsL(newAppsList, aWgList); + CollectAppsL(newAppsList, aStorage); RDebug::Print(_L("[TaskSwitcher] gathered app info")); FitDataToListL(newAppsList); CleanupStack::PopAndDestroy(&newAppsList); @@ -140,39 +144,33 @@ * @param aAppsList array to add to */ void CTsDataList::CollectAppsL(RTsFswArray& aAppsList, - const TArray &aWgList) + const MTsRunningApplicationStorage& aStorage) { - for( TInt i(0); i < aWgList.Count(); ++i ) + for( TInt i(0); i < aStorage.Count(); ++i ) { TTsEntryKey key; - TInt err = TsEntryKeyGeneraror::Generate(key, aWgList[i].iId, aWgList); + TInt err = TsEntryKeyGeneraror::Generate( key, + aStorage[i].WindowGroupId(), + aStorage ); //skip this entry if it is already on list or generate key failed if( err!=KErrNone || FindEntry( aAppsList, key ) >= 0 ) { continue; } - // get window group name - CApaWindowGroupName* windowName = - CApaWindowGroupName::NewLC( iResources.WsSession(), - key.WindowGroupId() ); - TUid appUid = windowName->AppUid(); - - // get screen number (-1=console, 0=main screen, 1=cover ui) + // get screen number (-1=console, 0=main screen, 1=cover ui) TInt appScreen = 0; TInt scrNumErr = iResources.ApaSession().GetDefaultScreenNumber( appScreen, - appUid ); + aStorage[i].UidL() ); - if( appUid.iUid && - !windowName->Hidden() && + if( aStorage[i].UidL().iUid && + !aStorage[i].IsHiddenL() && (appScreen == 0 || appScreen == -1) && scrNumErr == KErrNone ) { - AddEntryL( key, appUid, windowName, aAppsList ); + AddEntryL( key, aStorage[i], aAppsList ); } - - CleanupStack::PopAndDestroy( windowName ); } } @@ -180,33 +178,28 @@ /** * Called from CollectTasksL for each entry in the task list. * @param aKey entry key - * @param aAppUid application uid - * @param aWgName window group name or NULL + * @param aRunningApp running application entry * @param aNewList list to add to */ void CTsDataList::AddEntryL( const TTsEntryKey& aKey, - const TUid& aAppUid, - CApaWindowGroupName* aWgName, + const MTsRunningApplication& aRunningApp, RTsFswArray& aNewList ) { - CTsEntry* entry = CTsEntry::NewLC( aKey, iObserver ); + CTsEntry* entry = CTsEntry::NewLC( aKey, iObserver, &iEnv ); // check if present in old list and if yes then take some of the old data TBool found = ConsiderOldDataL( aKey ); // if not present previously then find out app name // and check if screenshot is already available if( !found ) { - entry->SetAppUid(aAppUid); - HBufC* name = FindAppNameLC( aWgName, aAppUid, aKey.WindowGroupId() ); + entry->SetAppUid(aRunningApp.UidL()); + HBufC* name = FindAppNameLC( aRunningApp ); entry->SetAppNameL(*name); CleanupStack::PopAndDestroy( name ); //transfer ownership to entry - entry->SetAppIcon( GetAppIconL( aAppUid ) ); + entry->SetAppIcon( GetAppIconL( aRunningApp.UidL() ) ); } - if(aWgName) - { - entry->SetCloseableApp( !aWgName->IsSystem() ); - } + entry->SetCloseableApp( !aRunningApp.IsSystemL()); // add to new list, ownership is transferred aNewList.AppendL( entry ); CleanupStack::Pop( entry ); @@ -240,26 +233,24 @@ * @param aWgId window group id * @return application name, ownership transferred to caller */ -HBufC* CTsDataList::FindAppNameLC( CApaWindowGroupName* aWindowName, - const TUid& aAppUid, - TInt aWgId ) +HBufC* CTsDataList::FindAppNameLC( const MTsRunningApplication& aRunningApp ) { //Retrieve the app name TApaAppInfo info; - iResources.ApaSession().GetAppInfo( info, aAppUid ); + iResources.ApaSession().GetAppInfo( info, aRunningApp.UidL() ); TPtrC caption = info.iShortCaption; HBufC* tempName( 0 ); - if (!caption.Length() && aWindowName) // if not set - use thread name instead + if (!caption.Length() ) // if not set - use thread name instead { - if (aWindowName->Caption().Length()) + if( aRunningApp.CaptionL().Length() ) { - tempName = aWindowName->Caption().AllocLC(); + tempName = aRunningApp.CaptionL().AllocLC(); } else { TThreadId threadId; - if(KErrNone == iResources.WsSession().GetWindowGroupClientThreadId( aWgId, threadId ) ) + if(KErrNone == iResources.WsSession().GetWindowGroupClientThreadId( aRunningApp.WindowGroupId(), threadId ) ) { RThread thread; CleanupClosePushL( thread );