--- 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++) {