application/src/PodcastFeedView.cpp
changeset 35 66c5303f3610
parent 26 71493655568a
child 36 e010fc411ddc
equal deleted inserted replaced
30:7bca37ba5fa9 35:66c5303f3610
   266 			{
   266 			{
   267 			if(aState == MFeedEngineObserver::EFeedManualUpdate)
   267 			if(aState == MFeedEngineObserver::EFeedManualUpdate)
   268 				{
   268 				{
   269 				TBuf<KMaxMessageLength> message;
   269 				TBuf<KMaxMessageLength> message;
   270 				iEikonEnv->ReadResourceL(message, R_PODCAST_CONNECTION_ERROR);
   270 				iEikonEnv->ReadResourceL(message, R_PODCAST_CONNECTION_ERROR);
   271 				ShowErrorMessage(message);
   271 				ShowErrorMessageL(message);
   272 				}
   272 				}
   273 			}
   273 			}
   274 			break;
   274 			break;
   275 		default: // Do nothing
   275 		default: // Do nothing
   276 			break;
   276 			break;
   549 			
   549 			
   550 			if (queueCount > 0 && !iPodcastModel.SettingsEngine().DownloadSuspended())
   550 			if (queueCount > 0 && !iPodcastModel.SettingsEngine().DownloadSuspended())
   551 				{
   551 				{
   552 				TBuf<KMaxMessageLength> message;
   552 				TBuf<KMaxMessageLength> message;
   553 				iEikonEnv->ReadResourceL(message, R_EXIT_SHOWS_DOWNLOADING);
   553 				iEikonEnv->ReadResourceL(message, R_EXIT_SHOWS_DOWNLOADING);
   554 				if(ShowQueryMessage(message))
   554 				if(ShowQueryMessageL(message))
   555 					{
   555 					{
   556 					// pass it on to AppUi, which will exit for us
   556 					// pass it on to AppUi, which will exit for us
   557 					CPodcastListView::HandleCommandL(aCommand);
   557 					CPodcastListView::HandleCommandL(aCommand);
   558 					}
   558 					}
   559 				} 
   559 				} 
   567 		default:
   567 		default:
   568 			CPodcastListView::HandleCommandL(aCommand);
   568 			CPodcastListView::HandleCommandL(aCommand);
   569 			break;
   569 			break;
   570 		}
   570 		}
   571 	
   571 	
   572 	iListContainer->SetLongTapDetected(EFalse); // in case we got here by long tapping
   572 	iListContainer->SetLongTapDetectedL(EFalse); // in case we got here by long tapping
   573 	UpdateToolbar();
   573 	UpdateToolbar();
   574 	}
   574 	}
   575 
   575 
   576 void CPodcastFeedView::UpdateToolbar(TBool aVisible)
   576 void CPodcastFeedView::UpdateToolbar(TBool aVisible)
   577 {
   577 {
   628 				UpdateListboxItemsL();
   628 				UpdateListboxItemsL();
   629 				
   629 				
   630 				// ask if users wants to update it now
   630 				// ask if users wants to update it now
   631 				TBuf<KMaxMessageLength> message;
   631 				TBuf<KMaxMessageLength> message;
   632 				iEikonEnv->ReadResourceL(message, R_ADD_FEED_SUCCESS);
   632 				iEikonEnv->ReadResourceL(message, R_ADD_FEED_SUCCESS);
   633 				if(ShowQueryMessage(message))
   633 				if(ShowQueryMessageL(message))
   634 					{
   634 					{
   635 					CFeedInfo *info = iPodcastModel.FeedEngine().GetFeedInfoByUid(newFeedInfo->Uid());
   635 					CFeedInfo *info = iPodcastModel.FeedEngine().GetFeedInfoByUid(newFeedInfo->Uid());
   636 					
   636 					
   637 					iPodcastModel.ActiveShowList().Reset();
   637 					iPodcastModel.ActiveShowList().Reset();
   638 					iPodcastModel.SetActiveFeedInfo(info);			
   638 					iPodcastModel.SetActiveFeedInfo(info);			
   642 				}
   642 				}
   643 			else
   643 			else
   644 				{
   644 				{
   645 				TBuf<KMaxMessageLength> message;
   645 				TBuf<KMaxMessageLength> message;
   646 				iEikonEnv->ReadResourceL(message, R_ADD_FEED_EXISTS);
   646 				iEikonEnv->ReadResourceL(message, R_ADD_FEED_EXISTS);
   647 				ShowErrorMessage(message);
   647 				ShowErrorMessageL(message);
   648 				}		
   648 				}		
   649 			
   649 			
   650 			CleanupStack::PopAndDestroy(newFeedInfo);
   650 			CleanupStack::PopAndDestroy(newFeedInfo);
   651 			}
   651 			}
   652 		}
   652 		}
   673 				{
   673 				{
   674 				TBuf<KMaxMessageLength> dlgMessage;
   674 				TBuf<KMaxMessageLength> dlgMessage;
   675 				iEikonEnv->ReadResourceL(dlgMessage, R_ADD_FEED_REPLACE);
   675 				iEikonEnv->ReadResourceL(dlgMessage, R_ADD_FEED_REPLACE);
   676 
   676 
   677 				// Ask the user if it is OK to remove all shows
   677 				// Ask the user if it is OK to remove all shows
   678 				if ( ShowQueryMessage(dlgMessage))
   678 				if ( ShowQueryMessageL(dlgMessage))
   679 					{
   679 					{
   680 					PodcastUtils::FixProtocolsL(url);
   680 					PodcastUtils::FixProtocolsL(url);
   681 					
   681 					
   682 					//----- HACK ---- //
   682 					//----- HACK ---- //
   683 					CFeedInfo* temp = CFeedInfo::NewLC();
   683 					CFeedInfo* temp = CFeedInfo::NewLC();
   700 						UpdateListboxItemsL();
   700 						UpdateListboxItemsL();
   701 					} else {
   701 					} else {
   702 						// the feed existed. Object deleted in AddFeed.	
   702 						// the feed existed. Object deleted in AddFeed.	
   703 						TBuf<KMaxMessageLength> dlgMessage;
   703 						TBuf<KMaxMessageLength> dlgMessage;
   704 						iEikonEnv->ReadResourceL(dlgMessage, R_ADD_FEED_EXISTS);
   704 						iEikonEnv->ReadResourceL(dlgMessage, R_ADD_FEED_EXISTS);
   705 						ShowErrorMessage(dlgMessage);
   705 						ShowErrorMessageL(dlgMessage);
   706 					}
   706 					}
   707 					CleanupStack::PopAndDestroy(temp);
   707 					CleanupStack::PopAndDestroy(temp);
   708 				}
   708 				}
   709 			} else { // no url change, maybe title?
   709 			} else { // no url change, maybe title?
   710 				// Update the title
   710 				// Update the title
   711 				if (info->Title().Compare(title) != 0)
   711 				if (info->Title().Compare(title) != 0)
   712 				{
   712 				{
   713 					info->SetTitleL(title);
   713 					info->SetTitleL(title);
   714 					info->SetCustomTitle();	
   714 					info->SetCustomTitle();	
   715 					iPodcastModel.FeedEngine().UpdateFeed(info);
   715 					iPodcastModel.FeedEngine().UpdateFeedL(info);
   716 					UpdateListboxItemsL();
   716 					UpdateListboxItemsL();
   717 				}
   717 				}
   718 			}
   718 			}
   719 		}
   719 		}
   720 		}
   720 		}
   731 			CFeedInfo *info = iPodcastModel.FeedEngine().GetFeedInfoByUid(iItemIdArray[index]);
   731 			CFeedInfo *info = iPodcastModel.FeedEngine().GetFeedInfoByUid(iItemIdArray[index]);
   732 			TBuf<KMaxMessageLength> templ;
   732 			TBuf<KMaxMessageLength> templ;
   733 			TBuf<KMaxMessageLength> message;
   733 			TBuf<KMaxMessageLength> message;
   734 			iEikonEnv->ReadResourceL(templ, R_PODCAST_REMOVE_FEED_PROMPT);
   734 			iEikonEnv->ReadResourceL(templ, R_PODCAST_REMOVE_FEED_PROMPT);
   735 			message.Format(templ, &info->Title());					
   735 			message.Format(templ, &info->Title());					
   736 			if(ShowQueryMessage(message))
   736 			if(ShowQueryMessageL(message))
   737 				{
   737 				{
   738 				iPodcastModel.FeedEngine().RemoveFeedL(iItemIdArray[index]);
   738 				iPodcastModel.FeedEngine().RemoveFeedL(iItemIdArray[index]);
   739 				iItemArray->Delete(index);
   739 				iItemArray->Delete(index);
   740 				iItemIdArray.Remove(index);
   740 				iItemIdArray.Remove(index);
   741 				iListContainer->Listbox()->HandleItemRemovalL();
   741 				iListContainer->Listbox()->HandleItemRemovalL();
   795 				TRAPD(err, iPodcastModel.FeedEngine().ImportFeedsL(importName));
   795 				TRAPD(err, iPodcastModel.FeedEngine().ImportFeedsL(importName));
   796 									
   796 									
   797 				if (err != KErrNone) {
   797 				if (err != KErrNone) {
   798 					TBuf<KMaxMessageLength> message;
   798 					TBuf<KMaxMessageLength> message;
   799 					iEikonEnv->ReadResourceL(message, R_IMPORT_FEED_FAILURE);
   799 					iEikonEnv->ReadResourceL(message, R_IMPORT_FEED_FAILURE);
   800 					ShowErrorMessage(message);
   800 					ShowErrorMessageL(message);
   801 					}
   801 					}
   802 				}
   802 				}
   803 				
   803 				
   804 			}
   804 			}
   805 		CleanupStack::PopAndDestroy(dlg);
   805 		CleanupStack::PopAndDestroy(dlg);
   851 									
   851 									
   852 					TBuf<KMaxMessageLength> message;
   852 					TBuf<KMaxMessageLength> message;
   853 					TBuf<KMaxMessageLength> templ;
   853 					TBuf<KMaxMessageLength> templ;
   854 					iEikonEnv->ReadResourceL(templ, R_EXPORT_FEED_SUCCESS);
   854 					iEikonEnv->ReadResourceL(templ, R_EXPORT_FEED_SUCCESS);
   855 					message.Format(templ, numFeeds);
   855 					message.Format(templ, numFeeds);
   856 					ShowOkMessage(message);
   856 					ShowOkMessageL(message);
   857 					} 
   857 					} 
   858 				else 
   858 				else 
   859 					{
   859 					{
   860 					TBuf<KMaxMessageLength> message;
   860 					TBuf<KMaxMessageLength> message;
   861 					iEikonEnv->ReadResourceL(message, R_EXPORT_FEED_FAILURE);
   861 					iEikonEnv->ReadResourceL(message, R_EXPORT_FEED_FAILURE);
   862 					ShowErrorMessage(message);
   862 					ShowErrorMessageL(message);
   863 					}
   863 					}
   864 				}
   864 				}
   865 			CleanupStack::PopAndDestroy(fileDlg);
   865 			CleanupStack::PopAndDestroy(fileDlg);
   866 			}
   866 			}
   867 		CleanupStack::PopAndDestroy(dlg);
   867 		CleanupStack::PopAndDestroy(dlg);
   868 	}
   868 	}
   869 	CleanupStack::PopAndDestroy(memDlg);									
   869 	CleanupStack::PopAndDestroy(memDlg);									
   870 	}
   870 	}
   871 
   871 
   872 void CPodcastFeedView::CheckResumeDownload()
   872 void CPodcastFeedView::CheckResumeDownloadL()
   873 	{
   873 	{
   874 	// if there are shows queued for downloading, ask if we should resume now
   874 	// if there are shows queued for downloading, ask if we should resume now
   875 	RShowInfoArray showsDownloading;
   875 	RShowInfoArray showsDownloading;
   876 	iPodcastModel.ShowEngine().GetShowsDownloadingL(showsDownloading);
   876 	iPodcastModel.ShowEngine().GetShowsDownloadingL(showsDownloading);
   877 
   877 
   878 	if (showsDownloading.Count() > 0)
   878 	if (showsDownloading.Count() > 0)
   879 		{
   879 		{
   880 		TBuf<KMaxMessageLength> msg;
   880 		TBuf<KMaxMessageLength> msg;
   881 		iEikonEnv->ReadResourceL(msg, R_PODCAST_ENABLE_DOWNLOADS_PROMPT);
   881 		iEikonEnv->ReadResourceL(msg, R_PODCAST_ENABLE_DOWNLOADS_PROMPT);
   882 	
   882 	
   883 		if (ShowQueryMessage(msg))
   883 		if (ShowQueryMessageL(msg))
   884 			{
   884 			{
   885 			// need to suspend downloads before ResumeDownloadL will work :)
   885 			// need to suspend downloads before ResumeDownloadL will work :)
   886 			iPodcastModel.SettingsEngine().SetDownloadSuspended(ETrue);
   886 			iPodcastModel.SettingsEngine().SetDownloadSuspended(ETrue);
   887 			// resume downloading if user says yes
   887 			// resume downloading if user says yes
   888 			iPodcastModel.ShowEngine().ResumeDownloadsL();
   888 			iPodcastModel.ShowEngine().ResumeDownloadsL();
   906 		{
   906 		{
   907 		case KErrCouldNotConnect:
   907 		case KErrCouldNotConnect:
   908 			{
   908 			{
   909 			TBuf<KMaxMessageLength> message;
   909 			TBuf<KMaxMessageLength> message;
   910 			iEikonEnv->ReadResourceL(message, R_PODCAST_CONNECTION_ERROR);
   910 			iEikonEnv->ReadResourceL(message, R_PODCAST_CONNECTION_ERROR);
   911 			ShowErrorMessage(message);
   911 			ShowErrorMessageL(message);
   912 			}
   912 			}
   913 			break;
   913 			break;
   914 		case KErrNone: 
   914 		case KErrNone: 
   915 		default:			// we don't do more error handling here, just show 0 imported feeds
   915 		default:			// we don't do more error handling here, just show 0 imported feeds
   916 		switch (iOpmlState)
   916 		switch (iOpmlState)
   926 				TBuf<KMaxMessageLength> message;
   926 				TBuf<KMaxMessageLength> message;
   927 				TBuf<KMaxMessageLength> templ;
   927 				TBuf<KMaxMessageLength> templ;
   928 				iEikonEnv->ReadResourceL(templ, R_IMPORT_FEED_SUCCESS);
   928 				iEikonEnv->ReadResourceL(templ, R_IMPORT_FEED_SUCCESS);
   929 				message.Format(templ, aNumFeedsImported);
   929 				message.Format(templ, aNumFeedsImported);
   930 				
   930 				
   931 				if(ShowQueryMessage(message))
   931 				if(ShowQueryMessageL(message))
   932 					{
   932 					{
   933 					HandleCommandL(EPodcastUpdateAllFeeds);
   933 					HandleCommandL(EPodcastUpdateAllFeeds);
   934 					}
   934 					}
   935 				}
   935 				}
   936 				break;
   936 				break;
   937 			case EOpmlSearching:
   937 			case EOpmlSearching:
   938 				delete iWaitDialog;
   938 				delete iWaitDialog;
       
   939 				iWaitDialog = NULL;
   939 				if (iPodcastModel.FeedEngine().GetSearchResults().Count() == 0)
   940 				if (iPodcastModel.FeedEngine().GetSearchResults().Count() == 0)
   940 					{
   941 					{
   941 					TBuf<KMaxMessageLength> message;
   942 					TBuf<KMaxMessageLength> message;
   942 					iEikonEnv->ReadResourceL(message, R_SEARCH_NORESULTS);
   943 					iEikonEnv->ReadResourceL(message, R_SEARCH_NORESULTS);
   943 					ShowErrorMessage(message);
   944 					ShowErrorMessageL(message);
   944 					}
   945 					}
   945 				else
   946 				else
   946 					{
   947 					{
   947 					AppUi()->ActivateLocalViewL(KUidPodcastSearchViewID,  TUid::Uid(0), KNullDesC8());
   948 					AppUi()->ActivateLocalViewL(KUidPodcastSearchViewID,  TUid::Uid(0), KNullDesC8());
   948 					}
   949 					}
   972 
   973 
   973 	if (iUpdatingAllRunning) {
   974 	if (iUpdatingAllRunning) {
   974 		return; // we don't allow feed manipulation while update is running
   975 		return; // we don't allow feed manipulation while update is running
   975 	}
   976 	}
   976 
   977 
   977 	iListContainer->SetLongTapDetected(ETrue);
   978 	iListContainer->SetLongTapDetectedL(ETrue);
   978 
   979 
   979 	const TInt KListboxDefaultHeight = 19; // for some reason it returns 19 for an empty listbox in S^1
   980 	const TInt KListboxDefaultHeight = 19; // for some reason it returns 19 for an empty listbox in S^1
   980 	TInt lbHeight = iListContainer->Listbox()->CalcHeightBasedOnNumOfItems(
   981 	TInt lbHeight = iListContainer->Listbox()->CalcHeightBasedOnNumOfItems(
   981 			iListContainer->Listbox()->Model()->NumberOfItems()) - KListboxDefaultHeight;
   982 			iListContainer->Listbox()->Model()->NumberOfItems()) - KListboxDefaultHeight;
   982 
   983