application/src/PodcastFeedView.cpp
changeset 50 e7b10d6d7ba3
parent 49 43e204e6ae2e
parent 45 56d4e0784e5d
child 51 15f885e4eb92
equal deleted inserted replaced
49:43e204e6ae2e 50:e7b10d6d7ba3
   173 void CPodcastFeedView::DoActivateL(const TVwsViewId& aPrevViewId,
   173 void CPodcastFeedView::DoActivateL(const TVwsViewId& aPrevViewId,
   174 	                                  TUid aCustomMessageId,
   174 	                                  TUid aCustomMessageId,
   175 	                                  const TDesC8& aCustomMessage)
   175 	                                  const TDesC8& aCustomMessage)
   176 	{
   176 	{
   177 	CPodcastListView::DoActivateL(aPrevViewId, aCustomMessageId, aCustomMessage);
   177 	CPodcastListView::DoActivateL(aPrevViewId, aCustomMessageId, aCustomMessage);
   178 	if (iFirstActivateAfterLaunch)
       
   179 		{
       
   180 		iFirstActivateAfterLaunch = EFalse;
       
   181 		}
       
   182 	
   178 	
   183 	if (aPrevViewId.iViewUid == KUidPodcastShowsViewID)
   179 	if (aPrevViewId.iViewUid == KUidPodcastShowsViewID)
   184 		{
   180 		{
   185 		// back key from shows view
   181 		// back key from shows view
   186 		iViewingShows = EFalse;
   182 		iViewingShows = EFalse;
   187 		}
   183 		}
   188 	
   184 	
   189 	UpdateListboxItemsL();		
   185 		UpdateListboxItemsL();		
   190 	UpdateToolbar();
   186 		UpdateToolbar();
       
   187 
       
   188 	if (iFirstActivateAfterLaunch)
       
   189 		{
       
   190 		iFirstActivateAfterLaunch = EFalse;
       
   191 		}
   191 	}
   192 	}
   192 
   193 
   193 void CPodcastFeedView::DoDeactivate()
   194 void CPodcastFeedView::DoDeactivate()
   194 	{
   195 	{
   195 	iUpdater->StopUpdate();
   196 	iUpdater->StopUpdate();
   258 			{
   259 			{
   259 			if(aState == MFeedEngineObserver::EFeedManualUpdate)
   260 			if(aState == MFeedEngineObserver::EFeedManualUpdate)
   260 				{
   261 				{
   261 				TBuf<KMaxMessageLength> message;
   262 				TBuf<KMaxMessageLength> message;
   262 				iEikonEnv->ReadResourceL(message, R_PODCAST_CONNECTION_ERROR);
   263 				iEikonEnv->ReadResourceL(message, R_PODCAST_CONNECTION_ERROR);
   263 				ShowErrorMessage(message);
   264 				ShowErrorMessageL(message);
   264 				}
   265 				}
   265 			}
   266 			}
   266 			break;
   267 			break;
   267 		default: // Do nothing
   268 		default: // Do nothing
   268 			break;
   269 			break;
   541 			
   542 			
   542 			if (queueCount > 0 && !iPodcastModel.SettingsEngine().DownloadSuspended())
   543 			if (queueCount > 0 && !iPodcastModel.SettingsEngine().DownloadSuspended())
   543 				{
   544 				{
   544 				TBuf<KMaxMessageLength> message;
   545 				TBuf<KMaxMessageLength> message;
   545 				iEikonEnv->ReadResourceL(message, R_EXIT_SHOWS_DOWNLOADING);
   546 				iEikonEnv->ReadResourceL(message, R_EXIT_SHOWS_DOWNLOADING);
   546 				if(ShowQueryMessage(message))
   547 				if(ShowQueryMessageL(message))
   547 					{
   548 					{
   548 					// pass it on to AppUi, which will exit for us
   549 					// pass it on to AppUi, which will exit for us
   549 					CPodcastListView::HandleCommandL(aCommand);
   550 					CPodcastListView::HandleCommandL(aCommand);
   550 					}
   551 					}
   551 				} 
   552 				} 
   559 		default:
   560 		default:
   560 			CPodcastListView::HandleCommandL(aCommand);
   561 			CPodcastListView::HandleCommandL(aCommand);
   561 			break;
   562 			break;
   562 		}
   563 		}
   563 	
   564 	
   564 	iListContainer->SetLongTapDetected(EFalse); // in case we got here by long tapping
   565 	iListContainer->SetLongTapDetectedL(EFalse); // in case we got here by long tapping
   565 	UpdateToolbar();
   566 	UpdateToolbar();
   566 	}
   567 	}
   567 
   568 
   568 void CPodcastFeedView::UpdateToolbar(TBool aVisible)
   569 void CPodcastFeedView::UpdateToolbar(TBool aVisible)
   569 {
   570 {
   620 				UpdateListboxItemsL();
   621 				UpdateListboxItemsL();
   621 				
   622 				
   622 				// ask if users wants to update it now
   623 				// ask if users wants to update it now
   623 				TBuf<KMaxMessageLength> message;
   624 				TBuf<KMaxMessageLength> message;
   624 				iEikonEnv->ReadResourceL(message, R_ADD_FEED_SUCCESS);
   625 				iEikonEnv->ReadResourceL(message, R_ADD_FEED_SUCCESS);
   625 				if(ShowQueryMessage(message))
   626 				if(ShowQueryMessageL(message))
   626 					{
   627 					{
   627 					CFeedInfo *info = iPodcastModel.FeedEngine().GetFeedInfoByUid(newFeedInfo->Uid());
   628 					CFeedInfo *info = iPodcastModel.FeedEngine().GetFeedInfoByUid(newFeedInfo->Uid());
   628 					
   629 					
   629 					iPodcastModel.ActiveShowList().Reset();
   630 					iPodcastModel.ActiveShowList().Reset();
   630 					iPodcastModel.SetActiveFeedInfo(info);			
   631 					iPodcastModel.SetActiveFeedInfo(info);			
   634 				}
   635 				}
   635 			else
   636 			else
   636 				{
   637 				{
   637 				TBuf<KMaxMessageLength> message;
   638 				TBuf<KMaxMessageLength> message;
   638 				iEikonEnv->ReadResourceL(message, R_ADD_FEED_EXISTS);
   639 				iEikonEnv->ReadResourceL(message, R_ADD_FEED_EXISTS);
   639 				ShowErrorMessage(message);
   640 				ShowErrorMessageL(message);
   640 				}		
   641 				}		
   641 			
   642 			
   642 			CleanupStack::PopAndDestroy(newFeedInfo);
   643 			CleanupStack::PopAndDestroy(newFeedInfo);
   643 			}
   644 			}
   644 		}
   645 		}
   665 				{
   666 				{
   666 				TBuf<KMaxMessageLength> dlgMessage;
   667 				TBuf<KMaxMessageLength> dlgMessage;
   667 				iEikonEnv->ReadResourceL(dlgMessage, R_ADD_FEED_REPLACE);
   668 				iEikonEnv->ReadResourceL(dlgMessage, R_ADD_FEED_REPLACE);
   668 
   669 
   669 				// Ask the user if it is OK to remove all shows
   670 				// Ask the user if it is OK to remove all shows
   670 				if ( ShowQueryMessage(dlgMessage))
   671 				if ( ShowQueryMessageL(dlgMessage))
   671 					{
   672 					{
   672 					PodcastUtils::FixProtocolsL(url);
   673 					PodcastUtils::FixProtocolsL(url);
   673 					
   674 					
   674 					//----- HACK ---- //
   675 					//----- HACK ---- //
   675 					CFeedInfo* temp = CFeedInfo::NewLC();
   676 					CFeedInfo* temp = CFeedInfo::NewLC();
   692 						UpdateListboxItemsL();
   693 						UpdateListboxItemsL();
   693 					} else {
   694 					} else {
   694 						// the feed existed. Object deleted in AddFeed.	
   695 						// the feed existed. Object deleted in AddFeed.	
   695 						TBuf<KMaxMessageLength> dlgMessage;
   696 						TBuf<KMaxMessageLength> dlgMessage;
   696 						iEikonEnv->ReadResourceL(dlgMessage, R_ADD_FEED_EXISTS);
   697 						iEikonEnv->ReadResourceL(dlgMessage, R_ADD_FEED_EXISTS);
   697 						ShowErrorMessage(dlgMessage);
   698 						ShowErrorMessageL(dlgMessage);
   698 					}
   699 					}
   699 					CleanupStack::PopAndDestroy(temp);
   700 					CleanupStack::PopAndDestroy(temp);
   700 				}
   701 				}
   701 			} else { // no url change, maybe title?
   702 			} else { // no url change, maybe title?
   702 				// Update the title
   703 				// Update the title
   703 				if (info->Title().Compare(title) != 0)
   704 				if (info->Title().Compare(title) != 0)
   704 				{
   705 				{
   705 					info->SetTitleL(title);
   706 					info->SetTitleL(title);
   706 					info->SetCustomTitle();	
   707 					info->SetCustomTitle();	
   707 					iPodcastModel.FeedEngine().UpdateFeed(info);
   708 					iPodcastModel.FeedEngine().UpdateFeedL(info);
   708 					UpdateListboxItemsL();
   709 					UpdateListboxItemsL();
   709 				}
   710 				}
   710 			}
   711 			}
   711 		}
   712 		}
   712 		}
   713 		}
   723 			CFeedInfo *info = iPodcastModel.FeedEngine().GetFeedInfoByUid(iItemIdArray[index]);
   724 			CFeedInfo *info = iPodcastModel.FeedEngine().GetFeedInfoByUid(iItemIdArray[index]);
   724 			TBuf<KMaxMessageLength> templ;
   725 			TBuf<KMaxMessageLength> templ;
   725 			TBuf<KMaxMessageLength> message;
   726 			TBuf<KMaxMessageLength> message;
   726 			iEikonEnv->ReadResourceL(templ, R_PODCAST_REMOVE_FEED_PROMPT);
   727 			iEikonEnv->ReadResourceL(templ, R_PODCAST_REMOVE_FEED_PROMPT);
   727 			message.Format(templ, &info->Title());					
   728 			message.Format(templ, &info->Title());					
   728 			if(ShowQueryMessage(message))
   729 			if(ShowQueryMessageL(message))
   729 				{
   730 				{
   730 				iPodcastModel.FeedEngine().RemoveFeedL(iItemIdArray[index]);
   731 				iPodcastModel.FeedEngine().RemoveFeedL(iItemIdArray[index]);
   731 				iItemArray->Delete(index);
   732 				iItemArray->Delete(index);
   732 				iItemIdArray.Remove(index);
   733 				iItemIdArray.Remove(index);
   733 				iListContainer->Listbox()->HandleItemRemovalL();
   734 				iListContainer->Listbox()->HandleItemRemovalL();
   787 				TRAPD(err, iPodcastModel.FeedEngine().ImportFeedsL(importName));
   788 				TRAPD(err, iPodcastModel.FeedEngine().ImportFeedsL(importName));
   788 									
   789 									
   789 				if (err != KErrNone) {
   790 				if (err != KErrNone) {
   790 					TBuf<KMaxMessageLength> message;
   791 					TBuf<KMaxMessageLength> message;
   791 					iEikonEnv->ReadResourceL(message, R_IMPORT_FEED_FAILURE);
   792 					iEikonEnv->ReadResourceL(message, R_IMPORT_FEED_FAILURE);
   792 					ShowErrorMessage(message);
   793 					ShowErrorMessageL(message);
   793 					}
   794 					}
   794 				}
   795 				}
   795 				
   796 				
   796 			}
   797 			}
   797 		CleanupStack::PopAndDestroy(dlg);
   798 		CleanupStack::PopAndDestroy(dlg);
   843 									
   844 									
   844 					TBuf<KMaxMessageLength> message;
   845 					TBuf<KMaxMessageLength> message;
   845 					TBuf<KMaxMessageLength> templ;
   846 					TBuf<KMaxMessageLength> templ;
   846 					iEikonEnv->ReadResourceL(templ, R_EXPORT_FEED_SUCCESS);
   847 					iEikonEnv->ReadResourceL(templ, R_EXPORT_FEED_SUCCESS);
   847 					message.Format(templ, numFeeds);
   848 					message.Format(templ, numFeeds);
   848 					ShowOkMessage(message);
   849 					ShowOkMessageL(message);
   849 					} 
   850 					} 
   850 				else 
   851 				else 
   851 					{
   852 					{
   852 					TBuf<KMaxMessageLength> message;
   853 					TBuf<KMaxMessageLength> message;
   853 					iEikonEnv->ReadResourceL(message, R_EXPORT_FEED_FAILURE);
   854 					iEikonEnv->ReadResourceL(message, R_EXPORT_FEED_FAILURE);
   854 					ShowErrorMessage(message);
   855 					ShowErrorMessageL(message);
   855 					}
   856 					}
   856 				}
   857 				}
   857 			CleanupStack::PopAndDestroy(fileDlg);
   858 			CleanupStack::PopAndDestroy(fileDlg);
   858 			}
   859 			}
   859 		CleanupStack::PopAndDestroy(dlg);
   860 		CleanupStack::PopAndDestroy(dlg);
   860 	}
   861 	}
   861 	CleanupStack::PopAndDestroy(memDlg);									
   862 	CleanupStack::PopAndDestroy(memDlg);									
   862 	}
   863 	}
   863 
   864 
   864 void CPodcastFeedView::CheckResumeDownload()
   865 void CPodcastFeedView::CheckResumeDownloadL()
   865 	{
   866 	{
   866 	// if there are shows queued for downloading, ask if we should resume now
   867 	// if there are shows queued for downloading, ask if we should resume now
   867 	RShowInfoArray showsDownloading;
   868 	RShowInfoArray showsDownloading;
   868 	iPodcastModel.ShowEngine().GetShowsDownloadingL(showsDownloading);
   869 	iPodcastModel.ShowEngine().GetShowsDownloadingL(showsDownloading);
   869 
   870 
   870 	if (showsDownloading.Count() > 0)
   871 	if (showsDownloading.Count() > 0)
   871 		{
   872 		{
   872 		TBuf<KMaxMessageLength> msg;
   873 		TBuf<KMaxMessageLength> msg;
   873 		iEikonEnv->ReadResourceL(msg, R_PODCAST_ENABLE_DOWNLOADS_PROMPT);
   874 		iEikonEnv->ReadResourceL(msg, R_PODCAST_ENABLE_DOWNLOADS_PROMPT);
   874 	
   875 	
   875 		if (ShowQueryMessage(msg))
   876 		if (ShowQueryMessageL(msg))
   876 			{
   877 			{
   877 			// need to suspend downloads before ResumeDownloadL will work :)
   878 			// need to suspend downloads before ResumeDownloadL will work :)
   878 			iPodcastModel.SettingsEngine().SetDownloadSuspended(ETrue);
   879 			iPodcastModel.SettingsEngine().SetDownloadSuspended(ETrue);
   879 			// resume downloading if user says yes
   880 			// resume downloading if user says yes
   880 			iPodcastModel.ShowEngine().ResumeDownloadsL();
   881 			iPodcastModel.ShowEngine().ResumeDownloadsL();
   898 		{
   899 		{
   899 		case KErrCouldNotConnect:
   900 		case KErrCouldNotConnect:
   900 			{
   901 			{
   901 			TBuf<KMaxMessageLength> message;
   902 			TBuf<KMaxMessageLength> message;
   902 			iEikonEnv->ReadResourceL(message, R_PODCAST_CONNECTION_ERROR);
   903 			iEikonEnv->ReadResourceL(message, R_PODCAST_CONNECTION_ERROR);
   903 			ShowErrorMessage(message);
   904 			ShowErrorMessageL(message);
   904 			}
   905 			}
   905 			break;
   906 			break;
   906 		case KErrNone: 
   907 		case KErrNone: 
   907 		default:			// we don't do more error handling here, just show 0 imported feeds
   908 		default:			// we don't do more error handling here, just show 0 imported feeds
   908 		switch (iOpmlState)
   909 		switch (iOpmlState)
   918 				TBuf<KMaxMessageLength> message;
   919 				TBuf<KMaxMessageLength> message;
   919 				TBuf<KMaxMessageLength> templ;
   920 				TBuf<KMaxMessageLength> templ;
   920 				iEikonEnv->ReadResourceL(templ, R_IMPORT_FEED_SUCCESS);
   921 				iEikonEnv->ReadResourceL(templ, R_IMPORT_FEED_SUCCESS);
   921 				message.Format(templ, aNumFeedsImported);
   922 				message.Format(templ, aNumFeedsImported);
   922 				
   923 				
   923 				if(ShowQueryMessage(message))
   924 				if(ShowQueryMessageL(message))
   924 					{
   925 					{
   925 					HandleCommandL(EPodcastUpdateAllFeeds);
   926 					HandleCommandL(EPodcastUpdateAllFeeds);
   926 					}
   927 					}
   927 				}
   928 				}
   928 				break;
   929 				break;
   929 			case EOpmlSearching:
   930 			case EOpmlSearching:
   930 				delete iWaitDialog;
   931 				delete iWaitDialog;
       
   932 				iWaitDialog = NULL;
   931 				if (iPodcastModel.FeedEngine().GetSearchResults().Count() == 0)
   933 				if (iPodcastModel.FeedEngine().GetSearchResults().Count() == 0)
   932 					{
   934 					{
   933 					TBuf<KMaxMessageLength> message;
   935 					TBuf<KMaxMessageLength> message;
   934 					iEikonEnv->ReadResourceL(message, R_SEARCH_NORESULTS);
   936 					iEikonEnv->ReadResourceL(message, R_SEARCH_NORESULTS);
   935 					ShowErrorMessage(message);
   937 					ShowErrorMessageL(message);
   936 					}
   938 					}
   937 				else
   939 				else
   938 					{
   940 					{
   939 					AppUi()->ActivateLocalViewL(KUidPodcastSearchViewID,  TUid::Uid(0), KNullDesC8());
   941 					AppUi()->ActivateLocalViewL(KUidPodcastSearchViewID,  TUid::Uid(0), KNullDesC8());
   940 					}
   942 					}
   964 
   966 
   965 	if (iUpdatingAllRunning) {
   967 	if (iUpdatingAllRunning) {
   966 		return; // we don't allow feed manipulation while update is running
   968 		return; // we don't allow feed manipulation while update is running
   967 	}
   969 	}
   968 
   970 
   969 	iListContainer->SetLongTapDetected(ETrue);
   971 	iListContainer->SetLongTapDetectedL(ETrue);
   970 
   972 
   971 	const TInt KListboxDefaultHeight = 19; // for some reason it returns 19 for an empty listbox in S^1
   973 	const TInt KListboxDefaultHeight = 19; // for some reason it returns 19 for an empty listbox in S^1
   972 	TInt lbHeight = iListContainer->Listbox()->CalcHeightBasedOnNumOfItems(
   974 	TInt lbHeight = iListContainer->Listbox()->CalcHeightBasedOnNumOfItems(
   973 			iListContainer->Listbox()->Model()->NumberOfItems()) - KListboxDefaultHeight;
   975 			iListContainer->Listbox()->Model()->NumberOfItems()) - KListboxDefaultHeight;
   974 
   976