engine/src/ShowEngine.cpp
changeset 83 a2e43aa1ad11
parent 82 d87e984bd8b8
child 84 3b59b88b089e
equal deleted inserted replaced
82:d87e984bd8b8 83:a2e43aa1ad11
   144 	if (iShowDownloading)
   144 	if (iShowDownloading)
   145 		{
   145 		{
   146 		BaflUtils::DeleteFile(iPodcastModel.FsSession(), iShowDownloading->FileName());
   146 		BaflUtils::DeleteFile(iPodcastModel.FsSession(), iShowDownloading->FileName());
   147 		}
   147 		}
   148 
   148 
   149 	NotifyShowDownloadUpdatedL(-1, -1);
   149 	if (resumeAfterRemove)
   150 	NotifyDownloadQueueUpdatedL();
   150 		{
   151 	
       
   152 	if (resumeAfterRemove) {
       
   153 		ResumeDownloadsL();
   151 		ResumeDownloadsL();
   154 	}
   152 		}
       
   153 	else
       
   154 		{
       
   155 		NotifyShowDownloadUpdatedL(-1, -1);
       
   156 		NotifyDownloadQueueUpdatedL();
       
   157 		}
   155 	
   158 	
   156 	DownloadNextShowL();
   159 	DownloadNextShowL();
   157 	DP("CShowEngine::RemoveDownloadL END");
   160 	DP("CShowEngine::RemoveDownloadL END");
   158 	}
   161 	}
   159 
   162 
   831 
   834 
   832 	if (rc == SQLITE_OK)
   835 	if (rc == SQLITE_OK)
   833 		{
   836 		{
   834 		Cleanup_sqlite3_finalize_PushL(st);
   837 		Cleanup_sqlite3_finalize_PushL(st);
   835 		rc = sqlite3_step(st);
   838 		rc = sqlite3_step(st);
   836 		if (rc =! SQLITE_DONE)
   839 		if (rc != SQLITE_DONE)
   837 			{
   840 			{
   838 			User::Leave(KErrUnknown);
   841 			User::Leave(KErrUnknown);
   839 			}
   842 			}
   840 		CleanupStack::PopAndDestroy(); // st
   843 		CleanupStack::PopAndDestroy(); // st
   841 		}
   844 		}
   879 	if (rc == SQLITE_OK)
   882 	if (rc == SQLITE_OK)
   880 		{
   883 		{
   881 		Cleanup_sqlite3_finalize_PushL(st);
   884 		Cleanup_sqlite3_finalize_PushL(st);
   882 		rc = sqlite3_step(st);		
   885 		rc = sqlite3_step(st);		
   883 
   886 
   884 		if (rc =! SQLITE_DONE)
   887 		if (rc != SQLITE_DONE)
   885 			{
   888 			{
   886 			User::Leave(KErrUnknown);
   889 			User::Leave(KErrUnknown);
   887 			}
   890 			}
   888 		CleanupStack::PopAndDestroy(); // st
   891 		CleanupStack::PopAndDestroy(); // st
   889 		}
   892 		}
   908 	if (rc == SQLITE_OK)
   911 	if (rc == SQLITE_OK)
   909 		{
   912 		{
   910 		Cleanup_sqlite3_finalize_PushL(st);
   913 		Cleanup_sqlite3_finalize_PushL(st);
   911 		rc = sqlite3_step(st);
   914 		rc = sqlite3_step(st);
   912 
   915 
   913 		if (rc =! SQLITE_DONE)
   916 		if (rc != SQLITE_DONE)
   914 			{
   917 			{
   915 			User::Leave(KErrUnknown);
   918 			User::Leave(KErrUnknown);
   916 			}
   919 			}
   917 		CleanupStack::PopAndDestroy(); // st
   920 		CleanupStack::PopAndDestroy(); // st
   918 		}
   921 		}
   937 	if (rc == SQLITE_OK)
   940 	if (rc == SQLITE_OK)
   938 		{
   941 		{
   939 		Cleanup_sqlite3_finalize_PushL(st);
   942 		Cleanup_sqlite3_finalize_PushL(st);
   940 		rc = sqlite3_step(st);
   943 		rc = sqlite3_step(st);
   941 
   944 
   942 		if (rc =! SQLITE_DONE)
   945 		if (rc != SQLITE_DONE)
   943 			{
   946 			{
   944 			User::Leave(KErrUnknown);
   947 			User::Leave(KErrUnknown);
   945 			}
   948 			}
   946 		CleanupStack::PopAndDestroy(); // st
   949 		CleanupStack::PopAndDestroy(); // st
   947 		}
   950 		}
   981 
   984 
   982 	if (rc == SQLITE_OK)
   985 	if (rc == SQLITE_OK)
   983 		{
   986 		{
   984 		Cleanup_sqlite3_finalize_PushL(st);
   987 		Cleanup_sqlite3_finalize_PushL(st);
   985 		rc = sqlite3_step(st);
   988 		rc = sqlite3_step(st);
   986 		if (rc =! SQLITE_DONE)
   989 		if (rc != SQLITE_DONE)
   987 			{
   990 			{
   988 			User::Leave(KErrUnknown);
   991 			User::Leave(KErrUnknown);
   989 			}
   992 			}
   990 		CleanupStack::PopAndDestroy(); // st
   993 		CleanupStack::PopAndDestroy(); // st
   991 		}
   994 		}
  1010 
  1013 
  1011 	if (rc == SQLITE_OK)
  1014 	if (rc == SQLITE_OK)
  1012 		{
  1015 		{
  1013 		Cleanup_sqlite3_finalize_PushL(st);
  1016 		Cleanup_sqlite3_finalize_PushL(st);
  1014 		rc = sqlite3_step(st);
  1017 		rc = sqlite3_step(st);
  1015 		if (rc =! SQLITE_DONE)
  1018 		if (rc != SQLITE_DONE)
  1016 			{
  1019 			{
  1017 			User::Leave(KErrUnknown);
  1020 			User::Leave(KErrUnknown);
  1018 			}
  1021 			}
  1019 		CleanupStack::PopAndDestroy(); // st
  1022 		CleanupStack::PopAndDestroy(); // st
  1020 		}
  1023 		}
  1207 	DBGetAllDownloadsL(aArray);
  1210 	DBGetAllDownloadsL(aArray);
  1208 	}
  1211 	}
  1209 
  1212 
  1210 EXPORT_C TInt CShowEngine::GetNumDownloadingShows()
  1213 EXPORT_C TInt CShowEngine::GetNumDownloadingShows()
  1211 	{
  1214 	{
  1212 	TUint count;
  1215 	TUint count = 0;
  1213 	TRAP_IGNORE(count = DBGetDownloadsCountL());
  1216 	TRAP_IGNORE(count = DBGetDownloadsCountL());
  1214 		
  1217 		
  1215 	return (const TInt) count;
  1218 	return (const TInt) count;
  1216 	}
  1219 	}
  1217 
  1220 
  1246 			NotifyDownloadQueueUpdatedL();
  1249 			NotifyDownloadQueueUpdatedL();
  1247 			return;
  1250 			return;
  1248 			}
  1251 			}
  1249 		else
  1252 		else
  1250 			{
  1253 			{
       
  1254 			if (iShowDownloading) {
       
  1255 				delete iShowDownloading;
       
  1256 			}
       
  1257 			
  1251 			// Start the download
  1258 			// Start the download
  1252 			CShowInfo *info = DBGetNextDownloadL();
  1259 			iShowDownloading = DBGetNextDownloadL();
  1253 			CleanupStack::PushL(info);
  1260 			
  1254 			while(info != NULL)
  1261 			while(iShowDownloading != NULL)
  1255 				{
  1262 				{
  1256 				DP1("CShowEngine::DownloadNextShow\tDownloading: %S", &(info->Title()));
  1263 				DP1("CShowEngine::DownloadNextShow\tDownloading: %S", &(iShowDownloading->Title()));
  1257 				info->SetDownloadState(EDownloading);
  1264 				iShowDownloading->SetDownloadState(EDownloading);
  1258 				info->SetLastError(KErrNone);
  1265 				iShowDownloading->SetLastError(KErrNone);
  1259 				DBUpdateShowL(*info);
  1266 				DBUpdateShowL(*iShowDownloading);
  1260 				iShowDownloading = info;
       
  1261 				// Inform the observers
  1267 				// Inform the observers
  1262 				// important to do this after we change download state
  1268 				// important to do this after we change download state
  1263 				NotifyDownloadQueueUpdatedL();
  1269 				NotifyDownloadQueueUpdatedL();
  1264 
  1270 
  1265 				TRAPD(error,GetShowL(info));
  1271 				TRAPD(error,GetShowL(iShowDownloading));
  1266 				if (error != KErrNone)
  1272 				if (error == KErrNone)
  1267 					{
       
  1268 					info->SetDownloadState(EFailedDownload);
       
  1269 					DBRemoveDownloadL(info->Uid());
       
  1270 					DBUpdateShowL(*info);
       
  1271 					CleanupStack::PopAndDestroy(info);
       
  1272 					info = DBGetNextDownloadL();
       
  1273 					
       
  1274 					if(info == NULL)
       
  1275 						{
       
  1276 						iPodcastModel.SettingsEngine().SetDownloadSuspended(ETrue);
       
  1277 						iShowDownloading = NULL;
       
  1278 						}
       
  1279 					else
       
  1280 						{
       
  1281 						CleanupStack::PushL(info);
       
  1282 						}
       
  1283 					}				
       
  1284 				else
       
  1285 					{
  1273 					{
  1286 					break;
  1274 					break;
  1287 					}
  1275 					}
       
  1276 				else
       
  1277 					{
       
  1278 					iShowDownloading->SetDownloadState(EFailedDownload);
       
  1279 					DBRemoveDownloadL(iShowDownloading->Uid());
       
  1280 					DBUpdateShowL(*iShowDownloading);
       
  1281 					CleanupStack::PopAndDestroy(iShowDownloading);
       
  1282 					
       
  1283 					iShowDownloading = DBGetNextDownloadL();
       
  1284 					if(iShowDownloading == NULL)
       
  1285 						{
       
  1286 						iPodcastModel.SettingsEngine().SetDownloadSuspended(ETrue);
       
  1287 						}
       
  1288 					}				
  1288 				}
  1289 				}
  1289 			CleanupStack::Pop(info); // lives on as iShowDownloading
       
  1290 			}
  1290 			}
  1291 		}
  1291 		}
  1292 	else
  1292 	else
  1293 		{
  1293 		{
  1294 		// Inform the observers
  1294 		// Inform the observers