# HG changeset patch # User Sebastian Brannstrom # Date 1289685925 0 # Node ID b8d687bb7ca1f666952cea7a4d1ab6b42f3ac581 # Parent a0eb6aaed0528903eb0b4d186e74d6a144cb7e2b Experimenting with adding a new view to list all new shows diff -r a0eb6aaed052 -r b8d687bb7ca1 application/data/Podcast.rss --- 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 { diff -r a0eb6aaed052 -r b8d687bb7ca1 application/data/PodcastClient_english.rls --- 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" + diff -r a0eb6aaed052 -r b8d687bb7ca1 application/data/PodcastQueueView.ra --- 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; }, diff -r a0eb6aaed052 -r b8d687bb7ca1 application/data/PodcastShowsView.ra --- 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 { diff -r a0eb6aaed052 -r b8d687bb7ca1 application/data/PodcastStrings.ra --- 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;} diff -r a0eb6aaed052 -r b8d687bb7ca1 application/group/icons.mk --- 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 diff -r a0eb6aaed052 -r b8d687bb7ca1 application/inc/Podcast.hrh --- 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 diff -r a0eb6aaed052 -r b8d687bb7ca1 application/inc/PodcastAppui.h --- 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 diff -r a0eb6aaed052 -r b8d687bb7ca1 application/inc/PodcastQueueView.h --- 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; }; diff -r a0eb6aaed052 -r b8d687bb7ca1 application/inc/PodcastShowsView.h --- 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 diff -r a0eb6aaed052 -r b8d687bb7ca1 application/inc/buildno.h --- 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 diff -r a0eb6aaed052 -r b8d687bb7ca1 application/sis/buildno.txt --- 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 diff -r a0eb6aaed052 -r b8d687bb7ca1 application/sis/podcatcher_udeb.pkg --- 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"} diff -r a0eb6aaed052 -r b8d687bb7ca1 application/sis/podcatcher_urel.pkg --- 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"} diff -r a0eb6aaed052 -r b8d687bb7ca1 application/src/PodcastAppui.cpp --- 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()); } } diff -r a0eb6aaed052 -r b8d687bb7ca1 application/src/PodcastListView.cpp --- 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) diff -r a0eb6aaed052 -r b8d687bb7ca1 application/src/PodcastQueueView.cpp --- 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 #include #include +#include #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 + ( StatusPane()->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) ); + + HBufC *title = iEikonEnv->AllocReadResourceLC(R_DOWNLOAD_QUEUE); + titlePane->SetTextL(*title); + CleanupStack::PopAndDestroy(title); + } diff -r a0eb6aaed052 -r b8d687bb7ca1 application/src/PodcastSearchView.cpp --- 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); } diff -r a0eb6aaed052 -r b8d687bb7ca1 application/src/PodcastSettingsView.cpp --- 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 #include #include "SettingsEngine.h" +#include #include #include @@ -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 + ( 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"); } diff -r a0eb6aaed052 -r b8d687bb7ca1 application/src/PodcastShowsView.cpp --- 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 ( 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) { diff -r a0eb6aaed052 -r b8d687bb7ca1 engine/inc/PodcastModel.h --- 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); diff -r a0eb6aaed052 -r b8d687bb7ca1 engine/src/PodcastModel.cpp --- 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