diff -r 70749e2f572d -r c2f1ea38ec70 engine/src/FeedEngine.cpp --- a/engine/src/FeedEngine.cpp Thu Apr 29 11:55:32 2010 +0100 +++ b/engine/src/FeedEngine.cpp Thu May 13 13:56:05 2010 +0100 @@ -144,6 +144,11 @@ EXPORT_C void CFeedEngine::UpdateAllFeedsL(TBool aAutoUpdate) { + if (iClientState != EIdle) + { + User::Leave(KErrInUse); + } + iAutoUpdatedInitiator = aAutoUpdate; if (iFeedsUpdating.Count() > 0) { @@ -176,6 +181,11 @@ { DP1("UpdateNextFeed. %d feeds left to update", iFeedsUpdating.Count()); + if (iClientState != EIdle) + { + User::Leave(KErrInUse); + } + // reset active feed, will be set again in UpdateFeedL if needed iActiveFeed = NULL; @@ -229,10 +239,11 @@ if (iActiveFeed->LastUpdated() == 0) { - iCatchupMode = ETrue; - iCatchupCounter = 0; + newFeed = ETrue; } + showsAdded = 0; + iActiveFeed->SetLastError(KErrNone); DBUpdateFeedL(*iActiveFeed); @@ -273,10 +284,12 @@ aItem.SetDescriptionL(*description); CleanupStack::PopAndDestroy(description); - if (iCatchupMode) { - // in catchup mode, we let one show be unplayed - if (++iCatchupCounter > 1) { - aItem.SetPlayState(EPlayed); + if (newFeed) { + // for new feeds, set all shows played + aItem.SetPlayState(EPlayed); + // except the first one + if (showsAdded == 0) { + aItem.SetPlayState(ENeverPlayed); } } @@ -286,7 +299,9 @@ iPodcastModel.SettingsEngine().DownloadAutomatically()) { iPodcastModel.ShowEngine().AddDownloadL(aItem); - } + } + + showsAdded++; } void CFeedEngine::GetFeedImageL(CFeedInfo *aFeedInfo) @@ -577,11 +592,7 @@ iActiveFeed->SetLastError(parserErr); DP1("CFeedEngine::Complete()\t Failed to parse feed. Leave with error code=%d", parserErr); } - else - { - iPodcastModel.ShowEngine().DeleteOldShowsByFeedL(iActiveFeed->Uid()); - } - + // delete the downloaded XML file as it is no longer needed BaflUtils::DeleteFile(iPodcastModel.FsSession(),iUpdatingFeedFileName);