Experimenting with adding a new view to list all new shows newlist
authorSebastian Brannstrom <sebastianb@symbian.org>
Sat, 13 Nov 2010 22:05:25 +0000
branchnewlist
changeset 347 b8d687bb7ca1
parent 346 a0eb6aaed052
child 348 bd7f3de17443
Experimenting with adding a new view to list all new shows
application/data/Podcast.rss
application/data/PodcastClient_english.rls
application/data/PodcastQueueView.ra
application/data/PodcastShowsView.ra
application/data/PodcastStrings.ra
application/group/icons.mk
application/inc/Podcast.hrh
application/inc/PodcastAppui.h
application/inc/PodcastQueueView.h
application/inc/PodcastShowsView.h
application/inc/buildno.h
application/sis/buildno.txt
application/sis/podcatcher_udeb.pkg
application/sis/podcatcher_urel.pkg
application/src/PodcastAppui.cpp
application/src/PodcastListView.cpp
application/src/PodcastQueueView.cpp
application/src/PodcastSearchView.cpp
application/src/PodcastSettingsView.cpp
application/src/PodcastShowsView.cpp
engine/inc/PodcastModel.h
engine/src/PodcastModel.cpp
--- a/application/data/Podcast.rss	Sat Nov 13 12:34:20 2010 +0000
+++ b/application/data/Podcast.rss	Sat Nov 13 22:05:25 2010 +0000
@@ -95,16 +95,22 @@
     type = ENaviDecoratorControlTabGroup;
     control = TAB_GROUP
         {
-        tab_width = EAknTabWidthWithTwoTabs;
+        tab_width = EAknTabWidthWithThreeTabs;
         active = 0;
         tabs = {
-            TAB
-                {
-                id = EPodcastTabFeeds;
-                
+			TAB
+				{
+				id = EPodcastTabFeeds;
 				bmpfile = APPICON;
 				bmpid = EMbmPodcastTab_feeds;
 				bmpmask = EMbmPodcastTab_feeds_mask;
+				},
+            TAB
+                {
+                id = EPodcastTabNew;
+				bmpfile = APPICON;
+				bmpid = EMbmPodcastTab_new;
+				bmpmask = EMbmPodcastTab_new_mask;
                 },
             TAB
                 {
--- a/application/data/PodcastClient_english.rls	Sat Nov 13 12:34:20 2010 +0000
+++ b/application/data/PodcastClient_english.rls	Sat Nov 13 22:05:25 2010 +0000
@@ -108,8 +108,8 @@
 rls_string STRING_r_view_delete_feed_cmd "Remove feed"
 rls_string STRING_r_view_delete_feed_cmd_short "Remove"
 rls_string STRING_r_update_feed_cmd "Update feed"
-rls_string STRING_r_update_feed_short_cmd "Update"
-rls_string STRING_r_update_all_feeds_cmd "Update all"
+rls_string STRING_r_update_feed_short_cmd "Update feed"
+rls_string STRING_r_update_all_feeds_cmd "Update all feeds"
 rls_string STRING_r_update_all_feeds_short_cmd "Update"
 rls_string STRING_r_podcast_feeds_is_updating "Updating..."
 
@@ -128,10 +128,10 @@
 
 // Show view
 
-rls_string STRING_r_view_mark_as_played_cmd_short "Mark old"
-rls_string STRING_r_view_mark_as_unplayed_cmd_short "Mark new"
-rls_string STRING_r_view_download_show_cmd "Get"
-rls_string STRING_r_view_delete_show_cmd "Delete"
+rls_string STRING_r_view_mark_as_played_cmd_short "Mark show old"
+rls_string STRING_r_view_mark_as_unplayed_cmd_short "Mark show new"
+rls_string STRING_r_view_download_show_cmd "Download show"
+rls_string STRING_r_view_delete_show_cmd "Delete show"
 rls_string STRING_r_view_show_info_cmd "Info"
 rls_string STRING_r_error_playback_failed "Could not play show"
 
@@ -140,7 +140,7 @@
 rls_string STRING_r_view_resume_short_dls_cmd "Resume"
 rls_string STRING_r_view_stop_downloads_cmd "Suspend downloading"
 rls_string STRING_r_view_resume_downloads_cmd "Resume downloading"
-rls_string STRING_r_view_remove_all_downloads_cmd_short "Remove all"
+rls_string STRING_r_view_remove_all_downloads_cmd_short "Remove all downloads"
 rls_string STRING_r_view_remove_all_downloads_cmd "Remove all"
 rls_string STRING_r_clear_query "Remove all downloads?"
 rls_string STRING_r_view_remove_download_short_cmd "Remove"
@@ -158,3 +158,6 @@
 rls_string STRING_r_add_url "Enter address"
 rls_string STRING_r_add_search "Search for feed"
 rls_string STRING_r_search_feed_prompt "Enter search terms:"
+rls_string STRING_r_new_shows "New shows"
+rls_string STRING_r_download_queue "Download queue"
+
--- a/application/data/PodcastQueueView.ra	Sat Nov 13 12:34:20 2010 +0000
+++ b/application/data/PodcastQueueView.ra	Sat Nov 13 22:05:25 2010 +0000
@@ -149,6 +149,11 @@
 //				},
 			STYLUS_POPUP_MENU_ITEM
 				{
+					txt = STRING_r_view_show_info_cmd;
+					command = EPodcastShowInfo;
+				},
+			STYLUS_POPUP_MENU_ITEM
+				{
 					txt = STRING_r_view_move_up_short_cmd;
 					command = EPodcastMoveDownloadUp;
 				},
--- a/application/data/PodcastShowsView.ra	Sat Nov 13 12:34:20 2010 +0000
+++ b/application/data/PodcastShowsView.ra	Sat Nov 13 22:05:25 2010 +0000
@@ -98,6 +98,25 @@
         TBAR_CTRL
             {
             type = EAknCtButton;
+            id = EPodcastUpdateAllFeeds;
+            control = AVKON_BUTTON
+                {
+                states =
+                    {
+                    AVKON_BUTTON_STATE
+                        {
+                        bmpfile = APPICON;
+                        bmpid = EMbmPodcastReload_all;
+                        bmpmask = EMbmPodcastReload_all_mask;
+                        //txt = STRING_r_update_feed_short_cmd;
+                        helptxt = STRING_r_update_all_feeds_cmd;
+                        }  
+                    };
+                };
+            },
+        TBAR_CTRL
+            {
+            type = EAknCtButton;
             id = EPodcastUpdateFeed;
             control = AVKON_BUTTON
                 {
--- a/application/data/PodcastStrings.ra	Sat Nov 13 12:34:20 2010 +0000
+++ b/application/data/PodcastStrings.ra	Sat Nov 13 22:05:25 2010 +0000
@@ -78,3 +78,5 @@
 RESOURCE TBUF r_about_text {buf = STRING_r_about_text_s60;}
 RESOURCE TBUF r_error_playback_failed {buf = STRING_r_error_playback_failed; }
 RESOURCE TBUF r_podcast_searchfeed_prompt {buf = STRING_r_search_feed_prompt;}
+RESOURCE TBUF r_new_shows {buf = STRING_r_new_shows;}
+RESOURCE TBUF r_download_queue {buf = STRING_r_download_queue;}
--- a/application/group/icons.mk	Sat Nov 13 12:34:20 2010 +0000
+++ b/application/group/icons.mk	Sat Nov 13 22:05:25 2010 +0000
@@ -61,7 +61,8 @@
 		$(DPATH)\tab_queue1.svg\
 		$(DPATH)\tab_queue2.svg\
 		$(DPATH)\tab_queue3.svg\
-
+		$(DPATH)\tab_new.svg\
+		
 FREEZE : do_nothing
 
 SAVESPACE : do_nothing
--- a/application/inc/Podcast.hrh	Sat Nov 13 12:34:20 2010 +0000
+++ b/application/inc/Podcast.hrh	Sat Nov 13 22:05:25 2010 +0000
@@ -70,7 +70,8 @@
 	EPodcastFilterShowsNewAndDownloaded,
 	// Tabs
 	EPodcastTabFeeds,
-	EPodcastTabQueue
+	EPodcastTabQueue,
+	EPodcastTabNew
 	};
 
 enum TPodcastControl
--- a/application/inc/PodcastAppui.h	Sat Nov 13 12:34:20 2010 +0000
+++ b/application/inc/PodcastAppui.h	Sat Nov 13 22:05:25 2010 +0000
@@ -41,8 +41,11 @@
 const TUid KUidPodcastSearchViewID = {0x00000004};
 const TUid KUidPodcastSettingsViewID = {0x00000005};
 
+const TUid KUidShowNewShows = {0x00000001};
+
 const TInt KTabIdFeeds = 0;
-const TInt KTabIdQueue = 1;
+const TInt KTabIdNew = 1;
+const TInt KTabIdQueue = 2;
 
 const TInt KTimeoutPrio = CActive::EPriorityStandard;
 
@@ -121,6 +124,7 @@
        void NaviSetTextL(TInt aResourceId);
        void NaviShowTabGroupL();
        void GetErrorTextL(TDes &aErrorMessage, TInt aErrorCode);
+       void SetTabsDimmed(TBool aDimmed);
 
     private:
         // From MEikMenuObserver
--- a/application/inc/PodcastQueueView.h	Sat Nov 13 12:34:20 2010 +0000
+++ b/application/inc/PodcastQueueView.h	Sat Nov 13 22:05:25 2010 +0000
@@ -80,7 +80,7 @@
 	void DynInitMenuPaneL(TInt aResourceId,CEikMenuPane* aMenuPane);
 	
 	virtual void HandleLongTapEventL( const TPoint& aPenEventLocation, const TPoint& aPenEventScreenLocation);
-	
+	void UpdateViewTitleL();
 private:
 	TBool iDontUpdateList;
 	};
--- a/application/inc/PodcastShowsView.h	Sat Nov 13 12:34:20 2010 +0000
+++ b/application/inc/PodcastShowsView.h	Sat Nov 13 22:05:25 2010 +0000
@@ -116,6 +116,7 @@
 	TBool iProgressAdded;	
 	TInt iLastImageHandlerError;
 	TBool iSetTitlebarImage;
+	TBool iShowNewShows;
 	};
 
 #endif // PODCASTSHOWSVIEWH
--- a/application/inc/buildno.h	Sat Nov 13 12:34:20 2010 +0000
+++ b/application/inc/buildno.h	Sat Nov 13 22:05:25 2010 +0000
@@ -1,2 +1,2 @@
 // Build number generated by increment_buildno.py, do not edit manually
-#define BUILD_NO 32
\ No newline at end of file
+#define BUILD_NO 33
\ No newline at end of file
--- a/application/sis/buildno.txt	Sat Nov 13 12:34:20 2010 +0000
+++ b/application/sis/buildno.txt	Sat Nov 13 22:05:25 2010 +0000
@@ -1,1 +1,1 @@
-32
\ No newline at end of file
+33
\ No newline at end of file
--- a/application/sis/podcatcher_udeb.pkg	Sat Nov 13 12:34:20 2010 +0000
+++ b/application/sis/podcatcher_udeb.pkg	Sat Nov 13 22:05:25 2010 +0000
@@ -1,7 +1,7 @@
 &EN,SP
 :"Symbian Foundation"
 %{"Podcatcher","Podcatcher"}
-#{"Podcatcher","Podcatcher"},(0xA0009D00), 1, 00, 32, TYPE=SA
+#{"Podcatcher","Podcatcher"},(0xA0009D00), 1, 00, 33, TYPE=SA
 
 ;Supports Symbian^1
 [0x1028315F], 0, 0, 0, {"Series60ProductID","Series60ProductID"}
--- a/application/sis/podcatcher_urel.pkg	Sat Nov 13 12:34:20 2010 +0000
+++ b/application/sis/podcatcher_urel.pkg	Sat Nov 13 22:05:25 2010 +0000
@@ -1,7 +1,7 @@
 &EN,SP
 :"Symbian Foundation"
 %{"Podcatcher","Podcatcher"}
-#{"Podcatcher","Podcatcher"},(0xA0009D00), 1, 00, 32, TYPE=SA
+#{"Podcatcher","Podcatcher"},(0xA0009D00), 1, 00, 33, TYPE=SA
 
 ;Supports Symbian^1
 [0x1028315F], 0, 0, 0, {"Series60ProductID","Series60ProductID"}
--- a/application/src/PodcastAppui.cpp	Sat Nov 13 12:34:20 2010 +0000
+++ b/application/src/PodcastAppui.cpp	Sat Nov 13 22:05:25 2010 +0000
@@ -207,10 +207,16 @@
 	{
 	iTabGroup = STATIC_CAST(CAknTabGroup*, iNaviPane->ResourceDecorator()->DecoratedControl());
 	iTabGroup->SetObserver(this); 
+
 	iNaviStyle = ENaviTabGroup;
 	UpdateQueueTabL(iPodcastModel->ShowEngine().GetNumDownloadingShows());
 	}
 
+void CPodcastAppUi::SetTabsDimmed(TBool aDimmed)
+	{
+	iTabGroup->SetDimmed(aDimmed);
+	}
+
 void CPodcastAppUi::TabChangedL (TInt aIndex)
 	{
 	DP("CPodcastListView::TabChangedL ");
@@ -221,15 +227,24 @@
 		TUid messageUid = TUid::Uid(0);
 		if (aIndex == KTabIdFeeds) 
 			{
+			DP("one");
 			if (iFeedView->ViewingShows())
 				{
+				DP("two");
 				newview = KUidPodcastShowsViewID;
+				messageUid = TUid::Uid(2);
 				}
 			else
 				{
+				DP("three");
 				newview = KUidPodcastFeedViewID;
 				}
 			} 
+		else if (aIndex == KTabIdNew)
+			{
+			newview = KUidPodcastShowsViewID;
+			messageUid = KUidShowNewShows;
+			}
 		else if (aIndex == KTabIdQueue)
 			{
 			newview = KUidPodcastQueueViewID;
@@ -241,6 +256,7 @@
 		
 		if(newview.iUid != 0)
 			{			
+			DP("four");
 			ActivateLocalViewL(newview,  messageUid, KNullDesC8());
 			}
 		}
--- a/application/src/PodcastListView.cpp	Sat Nov 13 12:34:20 2010 +0000
+++ b/application/src/PodcastListView.cpp	Sat Nov 13 22:05:25 2010 +0000
@@ -128,14 +128,14 @@
 void CPodcastListContainer::SetLongTapDetectedL(TBool aLongTapDetected)
 	{
 	DP("CPodcastListContainer::SetLongTapDetectedL BEGIN");
-	iLongTapDetected = aLongTapDetected;
-	
-	if (aLongTapDetected == EFalse)
-		{
-		TPointerEvent event;
-		event.iType = TPointerEvent::EButton1Up;
-		//CCoeControl::HandlePointerEventL(event);
-		}
+//	iLongTapDetected = aLongTapDetected;
+//	
+//	if (aLongTapDetected == EFalse)
+//		{
+//		TPointerEvent event;
+//		event.iType = TPointerEvent::EButton1Up;
+//		//CCoeControl::HandlePointerEventL(event);
+//		}
 	DP("CPodcastListContainer::SetLongTapDetectedL END");
 	}
 
@@ -227,10 +227,12 @@
 
 CPodcastListContainer::~CPodcastListContainer()
 {
+	DP("CPodcastListContainer::~CPodcastListContainer BEGIN");
 	iListboxLandscape->ItemDrawer()->ColumnData()->SetIconArray(NULL);
 	delete iListboxPortrait;
 	delete iListboxLandscape;
 	delete iBgContext;
+	DP("CPodcastListContainer::~CPodcastListContainer END");
 }
 
 void CPodcastListContainer::SetEmptyText(const TDesC &aText)
--- a/application/src/PodcastQueueView.cpp	Sat Nov 13 12:34:20 2010 +0000
+++ b/application/src/PodcastQueueView.cpp	Sat Nov 13 22:05:25 2010 +0000
@@ -31,6 +31,7 @@
 #include <barsread.h>
 #include <aknnotedialog.h>
 #include <aknmessagequerydialog.h>
+#include <akntitle.h>
 
 #define KMaxMessageLength 200
 
@@ -125,7 +126,7 @@
 	
 	CPodcastListView::DoActivateL(aPrevViewId, aCustomMessageId, aCustomMessage);
 	iPreviousView = aPrevViewId;
-	
+	UpdateViewTitleL();
 	UpdateFeedUpdateStateL();
 	UpdateToolbar();
 	DP("CPodcastQueueView::DoActivateL END");
@@ -397,3 +398,13 @@
     
 	DP("CPodcastQueueView::HandleLongTapEventL END");
 }
+
+void CPodcastQueueView::UpdateViewTitleL()
+	{
+	 CAknTitlePane* titlePane = static_cast<CAknTitlePane*>
+		      ( StatusPane()->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) );
+		 
+	HBufC *title = iEikonEnv->AllocReadResourceLC(R_DOWNLOAD_QUEUE);
+	titlePane->SetTextL(*title);
+	CleanupStack::PopAndDestroy(title);
+	}
--- a/application/src/PodcastSearchView.cpp	Sat Nov 13 12:34:20 2010 +0000
+++ b/application/src/PodcastSearchView.cpp	Sat Nov 13 22:05:25 2010 +0000
@@ -123,6 +123,7 @@
 	titlePane->SetTextL(*text , ETrue );
 	CleanupStack::PopAndDestroy(text);
 	UpdateListboxItemsL();
+	((CPodcastAppUi*)AppUi())->SetTabsDimmed(ETrue);
 }
 
 void CPodcastSearchView::DoDeactivate()
@@ -133,6 +134,7 @@
 			  ( StatusPane()->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) );
 		
 	titlePane->SetTextToDefaultL();
+	((CPodcastAppUi*)AppUi())->SetTabsDimmed(EFalse);
 }
 
 
--- a/application/src/PodcastSettingsView.cpp	Sat Nov 13 12:34:20 2010 +0000
+++ b/application/src/PodcastSettingsView.cpp	Sat Nov 13 22:05:25 2010 +0000
@@ -24,6 +24,7 @@
 #include <aknnavide.h> 
 #include <podcast.rsg>
 #include "SettingsEngine.h"
+#include <akntitle.h>
 
 #include <akncommondialogsdynmem.h> 
 #include <pathinfo.h>
@@ -487,10 +488,13 @@
 	DP("Creating navipane");
 	iNaviPane =( CAknNavigationControlContainer * ) StatusPane()->ControlL( TUid::Uid( EEikStatusPaneUidNavi ) );
 		
-	HBufC *titleBuffer = iEikonEnv->AllocReadResourceL(R_SETTINGS_TITLE);
-	iNaviDecorator  = iNaviPane->CreateNavigationLabelL(*titleBuffer);
-	delete titleBuffer;
-
+	CAknTitlePane* titlePane = static_cast<CAknTitlePane*>
+			  ( StatusPane()->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) );
+		 
+	HBufC *titleBuffer = iEikonEnv->AllocReadResourceLC(R_SETTINGS_TITLE);
+	titlePane->SetTextL(*titleBuffer);
+	CleanupStack::PopAndDestroy(titleBuffer);
+	
 	DP("Updating listbox");
 	AppUi()->AddToStackL(*this, iListbox);
 	iListbox->UpdateSettingVisibility();
@@ -501,8 +505,9 @@
 	if(iNaviDecorator && iNaviPane)
 		{
 		iNaviPane->PushL(*iNaviDecorator);
-		}
+	}
 
+	((CPodcastAppUi*)AppUi())->SetTabsDimmed(ETrue);
 	DP("CPodcastSettingsView::DoActivateL END");
 }
 
@@ -522,6 +527,8 @@
 		delete iNaviDecorator;
 		iNaviDecorator = NULL;
 		}
+	
+	((CPodcastAppUi*)AppUi())->SetTabsDimmed(EFalse);
 	DP("CPodcastSettingsView::DoDeactivate END");
 	}
 
--- a/application/src/PodcastShowsView.cpp	Sat Nov 13 12:34:20 2010 +0000
+++ b/application/src/PodcastShowsView.cpp	Sat Nov 13 22:05:25 2010 +0000
@@ -217,6 +217,21 @@
 	
 	iPreviousView = TVwsViewId(KUidPodcast, KUidPodcastFeedViewID);
 	
+	iShowNewShows = (aCustomMessageId.iUid == 1);
+	
+	if (iShowNewShows)
+		{
+		CEikButtonGroupContainer* cba = CEikButtonGroupContainer::Current();
+		cba->SetCommandSetL(R_PODCAST_CBA);
+		cba->DrawDeferred();
+		}
+	else
+		{
+		CEikButtonGroupContainer* cba = CEikButtonGroupContainer::Current();
+		cba->SetCommandSetL(R_AVKON_SOFTKEYS_OPTIONS_BACK);
+		cba->DrawDeferred();		
+		}
+	
 	UpdateViewTitleL();
 	UpdateFeedUpdateStateL();
 	DP("CPodcastShowsView::DoActivateL END");
@@ -509,8 +524,15 @@
 		TListItemProperties itemProps;
 		TInt len = 0;
 
-		iPodcastModel.GetShowsByFeedL(iPodcastModel.ActiveFeedInfo()->Uid());
-
+		if (iShowNewShows)
+			{
+			iPodcastModel.GetNewShowsL();
+			}
+		else
+			{
+			iPodcastModel.GetShowsByFeedL(iPodcastModel.ActiveFeedInfo()->Uid());
+			}
+		
 		RShowInfoArray &fItems = iPodcastModel.ActiveShowList();
 		len = fItems.Count();
 
@@ -588,9 +610,11 @@
 		{
 		case EPodcastMarkAsPlayed:
 			HandleSetShowPlayedL(ETrue);
+			if (iShowNewShows) UpdateListboxItemsL();
 			break;
 		case EPodcastMarkAsUnplayed:
 			HandleSetShowPlayedL(EFalse);
+			if (iShowNewShows) UpdateListboxItemsL();
 			break;
 		case EPodcastMarkAllPlayed:
 			iPodcastModel.MarkSelectionPlayedL();
@@ -627,6 +651,11 @@
 				}
 			}
 			break;
+		case EPodcastUpdateAllFeeds:
+			{
+			iPodcastModel.FeedEngine().UpdateAllFeedsL();
+			UpdateToolbar();
+			}break;
 		case EPodcastCancelUpdateAllFeeds:
 			iPodcastModel.FeedEngine().CancelUpdateAllFeeds();
 			break;
@@ -711,8 +740,20 @@
 		TBool updatingState = iPodcastModel.FeedEngine().ClientState() != EIdle && iPodcastModel.ActiveFeedInfo() && 
 				iPodcastModel.FeedEngine().ActiveClientUid() == iPodcastModel.ActiveFeedInfo()->Uid();
 	
-		toolbar->HideItem(EPodcastUpdateFeed, updatingState, ETrue ); 
+		if (iShowNewShows)
+			{
+			updatingState = iPodcastModel.FeedEngine().ClientState();
+			toolbar->HideItem(EPodcastUpdateFeed, ETrue, ETrue ); 
+			toolbar->HideItem(EPodcastUpdateAllFeeds, updatingState, ETrue ); 
+			}
+		else
+			{
+			toolbar->HideItem(EPodcastUpdateFeed, updatingState, ETrue ); 
+			toolbar->HideItem(EPodcastUpdateAllFeeds, ETrue, ETrue ); 
+			}
+
 		toolbar->HideItem(EPodcastCancelUpdateAllFeeds, !updatingState, ETrue );
+
 		RShowInfoArray &fItems = iPodcastModel.ActiveShowList();
 		TInt itemCnt = fItems.Count();
 	
@@ -864,7 +905,7 @@
 	 CAknTitlePane* titlePane = static_cast<CAknTitlePane*>
 		      ( StatusPane()->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) );
 		 
-		TBool updatingState = iPodcastModel.FeedEngine().ClientState() != EIdle && 
+		TBool updatingState = iPodcastModel.FeedEngine().ClientState() != EIdle && iPodcastModel.ActiveFeedInfo() &&
 				iPodcastModel.FeedEngine().ActiveClientUid() == iPodcastModel.ActiveFeedInfo()->Uid();
 
 		if (updatingState) {
@@ -873,7 +914,13 @@
 			SetEmptyTextL(R_PODCAST_EMPTY_LIST);
 		}
 		
-		if(iPodcastModel.ActiveFeedInfo())
+		if(iShowNewShows)
+			{
+			HBufC *title = iEikonEnv->AllocReadResourceLC(R_NEW_SHOWS);
+			titlePane->SetTextL(*title);
+			CleanupStack::PopAndDestroy(title);
+			}
+		else if(iPodcastModel.ActiveFeedInfo())
 			{
 			if (iPodcastModel.ActiveFeedInfo()->Title() != KNullDesC)
 				{
--- a/engine/inc/PodcastModel.h	Sat Nov 13 12:34:20 2010 +0000
+++ b/engine/inc/PodcastModel.h	Sat Nov 13 22:05:25 2010 +0000
@@ -91,6 +91,7 @@
 	
 	IMPORT_C void GetShowsDownloadingL();
 	IMPORT_C void GetShowsByFeedL(TUint aFeedUid);
+	IMPORT_C void GetNewShowsL();
 	IMPORT_C void MarkSelectionPlayedL();
 	
 	TInt FindActiveShowByUid(TUint aUid);
--- a/engine/src/PodcastModel.cpp	Sat Nov 13 12:34:20 2010 +0000
+++ b/engine/src/PodcastModel.cpp	Sat Nov 13 22:05:25 2010 +0000
@@ -477,6 +477,12 @@
 	iShowEngine->GetShowsByFeedL(iActiveShowList, aFeedUid);
 	}
 
+EXPORT_C void CPodcastModel::GetNewShowsL()
+	{
+	iActiveShowList.ResetAndDestroy();
+	iShowEngine->GetNewShowsL(iActiveShowList);
+	}
+
 EXPORT_C void CPodcastModel::MarkSelectionPlayedL()
 	{
 	for (int i=0;i<iActiveShowList.Count();i++) {