# HG changeset patch # User teknolog # Date 1267740399 0 # Node ID a6046405f1aa059b3604f01c9e02e8597de722c3 # Parent 64ed1227e68da87147b5dd2f057998c3bbc6eab5 Fix for download icons not updating correctly diff -r 64ed1227e68d -r a6046405f1aa application/sis/podcatcher_udeb.sis Binary file application/sis/podcatcher_udeb.sis has changed diff -r 64ed1227e68d -r a6046405f1aa application/sis/podcatcher_udeb_signed.sis Binary file application/sis/podcatcher_udeb_signed.sis has changed diff -r 64ed1227e68d -r a6046405f1aa application/sis/podcatcher_urel.sis Binary file application/sis/podcatcher_urel.sis has changed diff -r 64ed1227e68d -r a6046405f1aa application/sis/podcatcher_urel_signed.sis Binary file application/sis/podcatcher_urel_signed.sis has changed diff -r 64ed1227e68d -r a6046405f1aa application/src/PodcastQueueView.cpp --- a/application/src/PodcastQueueView.cpp Thu Mar 04 19:46:25 2010 +0000 +++ b/application/src/PodcastQueueView.cpp Thu Mar 04 22:06:39 2010 +0000 @@ -305,29 +305,32 @@ void CPodcastQueueView::GetShowIcons(CShowInfo* aShowInfo, TInt& aIconIndex) { TBool dlStop = iPodcastModel.SettingsEngine().DownloadSuspended(); - TUint showDownloadingUid = iPodcastModel.ShowEngine().ShowDownloading() ? iPodcastModel.ShowEngine().ShowDownloading()->Uid() : 0; - - if (showDownloadingUid == aShowInfo->Uid()) - { - aIconIndex = dlStop ? ESuspendedShowIcon : EDownloadingShowIcon; - } - else + + switch (aShowInfo->DownloadState()) { - switch (aShowInfo->DownloadState()) - { - case EQueued: - aIconIndex = dlStop ? ESuspendedShowIcon : EQuedShowIcon; - break; - case EDownloading: - aIconIndex = dlStop ? ESuspendedShowIcon : EDownloadingShowIcon; - break; - case EFailedDownload: - aIconIndex = EFailedShowIcon; - break; - default: - DP("Wrong download state for queue view!"); - break; + case EDownloaded: + if (aShowInfo->PlayState() == ENeverPlayed) { + aIconIndex = EDownloadedNewShowIcon; + } else { + aIconIndex = EDownloadedShowIcon; } + break; + case ENotDownloaded: + if (aShowInfo->PlayState() == ENeverPlayed) { + aIconIndex = ENewShowIcon; + } else { + aIconIndex = EShowIcon; + } + break; + case EQueued: + aIconIndex = dlStop ? ESuspendedShowIcon : EQuedShowIcon; + break; + case EDownloading: + aIconIndex = dlStop ? ESuspendedShowIcon : EDownloadingShowIcon; + break; + case EFailedDownload: + aIconIndex = EFailedShowIcon; + break; } } diff -r 64ed1227e68d -r a6046405f1aa application/src/PodcastShowsView.cpp --- a/application/src/PodcastShowsView.cpp Thu Mar 04 19:46:25 2010 +0000 +++ b/application/src/PodcastShowsView.cpp Thu Mar 04 22:06:39 2010 +0000 @@ -245,9 +245,23 @@ } } -void CPodcastShowsView::ShowDownloadFinishedL(TUint /*aShowUid*/, TInt aError) +void CPodcastShowsView::ShowDownloadFinishedL(TUint aShowUid, TInt aError) { iProgressAdded = EFalse; + CShowInfo *info = NULL; + RShowInfoArray &fItems = iPodcastModel.ActiveShowList(); + + for (TInt i=0;iUid() == aShowUid) + { + info = fItems[i]; + } + } + + if (info == NULL) { + return; + } switch(aError) { @@ -336,40 +350,32 @@ void CPodcastShowsView::GetShowIcons(CShowInfo* aShowInfo, TInt& aIconIndex) { TBool dlStop = iPodcastModel.SettingsEngine().DownloadSuspended(); - TUint showDownloadingUid = iPodcastModel.ShowEngine().ShowDownloading() ? iPodcastModel.ShowEngine().ShowDownloading()->Uid() : 0; - - if (showDownloadingUid == aShowInfo->Uid()) - { - aIconIndex = dlStop ? ESuspendedShowIcon : EDownloadingShowIcon; - } - else + + switch (aShowInfo->DownloadState()) { - switch (aShowInfo->DownloadState()) - { - case EDownloaded: - if (aShowInfo->PlayState() == ENeverPlayed) { - aIconIndex = EDownloadedNewShowIcon; - } else { - aIconIndex = EDownloadedShowIcon; - } - break; - case ENotDownloaded: - if (aShowInfo->PlayState() == ENeverPlayed) { - aIconIndex = ENewShowIcon; - } else { - aIconIndex = EShowIcon; - } - break; - case EQueued: - aIconIndex = dlStop ? ESuspendedShowIcon : EQuedShowIcon; - break; - case EDownloading: - aIconIndex = dlStop ? ESuspendedShowIcon : EDownloadingShowIcon; - break; - case EFailedDownload: - aIconIndex = EFailedShowIcon; - break; + case EDownloaded: + if (aShowInfo->PlayState() == ENeverPlayed) { + aIconIndex = EDownloadedNewShowIcon; + } else { + aIconIndex = EDownloadedShowIcon; } + break; + case ENotDownloaded: + if (aShowInfo->PlayState() == ENeverPlayed) { + aIconIndex = ENewShowIcon; + } else { + aIconIndex = EShowIcon; + } + break; + case EQueued: + aIconIndex = dlStop ? ESuspendedShowIcon : EQuedShowIcon; + break; + case EDownloading: + aIconIndex = dlStop ? ESuspendedShowIcon : EDownloadingShowIcon; + break; + case EFailedDownload: + aIconIndex = EFailedShowIcon; + break; } } @@ -509,7 +515,7 @@ if (allUidsMatch && len > 0) { for (TInt loop = 0; loop< len; loop++) - { + { UpdateShowItemDataL(fItems[loop], loop); } iListContainer->Listbox()->DrawNow(); @@ -814,6 +820,7 @@ void CPodcastShowsView::DownloadQueueUpdatedL(TInt aDownloadingShows, TInt aQueuedShows) { ((CPodcastAppUi*)AppUi())->UpdateQueueTab(aDownloadingShows+aQueuedShows); + UpdateListboxItemsL(); } void CPodcastShowsView::FeedUpdateAllCompleteL(TFeedState /*aState*/) diff -r 64ed1227e68d -r a6046405f1aa engine/src/ShowEngine.cpp --- a/engine/src/ShowEngine.cpp Thu Mar 04 19:46:25 2010 +0000 +++ b/engine/src/ShowEngine.cpp Thu Mar 04 22:06:39 2010 +0000 @@ -1171,19 +1171,20 @@ const TInt count = DBGetDownloadsCount(); DP("CShowEngine::DownloadNextShow\tTrying to start new download");DP1("CShowEngine::DownloadNextShow\tShows in download queue %d", count); - // Inform the observers - NotifyDownloadQueueUpdatedL(); - if (count > 0) { if (iPodcastModel.SettingsEngine().DownloadSuspended()) { DP("CShowEngine::DownloadNextShow\tDownload process is suspended, ABORTING"); + // Inform the observers + NotifyDownloadQueueUpdatedL(); return; } else if (iShowClient->IsActive()) { DP("CShowEngine::DownloadNextShow\tDownload process is already active."); + // Inform the observers + NotifyDownloadQueueUpdatedL(); return; } else @@ -1201,6 +1202,10 @@ info->SetLastError(KErrNone); DBUpdateShow(*info); iShowDownloading = info; + // Inform the observers + // important to do this after we change download state + NotifyDownloadQueueUpdatedL(); + TRAPD(error,getOk = GetShowL(info)); if (error != KErrNone || !getOk) { @@ -1224,6 +1229,8 @@ } else { + // Inform the observers + NotifyDownloadQueueUpdatedL(); iShowDownloading = NULL;DP("CShowEngine::DownloadNextShow\tNothing to download"); } DP("CShowEngine::DownloadNextShowL END");