engine/src/FeedEngine.cpp
changeset 126 c2f1ea38ec70
parent 117 3b59b88b089e
child 141 ee650bbb958e
--- 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);