diff -r cf4b850bbffb -r ca50ea154990 application/src/PodcastAppui.cpp --- a/application/src/PodcastAppui.cpp Sun Feb 28 12:06:30 2010 +0000 +++ b/application/src/PodcastAppui.cpp Sun Feb 28 19:35:33 2010 +0000 @@ -79,11 +79,21 @@ CPodcastAppUi::~CPodcastAppUi() { - if(iNaviDecorator) + if (iNaviStyle != ENaviEmpty) + { + iNaviPane->Pop(); + } + + if(iNaviTabGroup) { - iNaviPane->Pop(iNaviDecorator); - delete iNaviDecorator; + delete iNaviTabGroup; } + + if (iNaviText) + { + delete iNaviText; + } + delete iStartTimer; } @@ -149,11 +159,32 @@ return array; } +void CPodcastAppUi::NaviSetTextL(TInt aResourceId) + { + + if (iNaviStyle != ENaviEmpty) { + iNaviPane->Pop(); + } + + HBufC* naviText = iEikonEnv->AllocReadResourceLC(aResourceId); + iNaviText = iNaviPane->CreateNavigationLabelL(*naviText); + + iNaviPane->PushL(*iNaviText); + + CleanupStack::PopAndDestroy(naviText); + + iNaviStyle = ENaviText; + } + void CPodcastAppUi::NaviShowTabGroupL() { - iNaviDecorator = iNaviPane->CreateTabGroupL(); + if (iNaviStyle != ENaviEmpty) { + iNaviPane->Pop(); + } - iTabGroup = STATIC_CAST(CAknTabGroup*, iNaviDecorator->DecoratedControl()); + iNaviTabGroup = iNaviPane->CreateTabGroupL(); + + iTabGroup = STATIC_CAST(CAknTabGroup*, iNaviTabGroup->DecoratedControl()); iTabGroup->SetTabFixedWidthL(EAknTabWidthWithTwoTabs); HBufC *label1 = iEikonEnv->AllocReadResourceLC(R_TABGROUP_FEEDS); @@ -168,9 +199,9 @@ iTabGroup->SetActiveTabByIndex(0); iTabGroup->SetObserver(this); - iNaviPane->Pop(); - SetTabsVisibleL(ETrue); - + iNaviPane->PushL(*iNaviTabGroup); + iNaviStyle = ENaviTabGroup; + UpdateQueueTab(iPodcastModel->ShowEngine().GetNumDownloadingShows()); } @@ -178,30 +209,31 @@ { DP("CPodcastListView::TabChangedL "); - if (!iTabsVisible) + if (iNaviStyle == ENaviTabGroup) { - return; + TUid newview = TUid::Uid(0); + TUid messageUid = TUid::Uid(0); + + if (aIndex == KTabIdFeeds) { + newview = KUidPodcastFeedViewID; + } else if (aIndex == KTabIdQueue) { + newview = KUidPodcastQueueViewID; + } else { + User::Leave(KErrTooBig); } - - TUid newview = TUid::Uid(0); - TUid messageUid = TUid::Uid(0); - - if (aIndex == KTabIdFeeds) { - newview = KUidPodcastFeedViewID; - } else if (aIndex == KTabIdQueue) { - newview = KUidPodcastQueueViewID; - } else { - User::Leave(KErrTooBig); - } - - if(newview.iUid != 0) - { - ActivateLocalViewL(newview, messageUid, KNullDesC8()); + + if(newview.iUid != 0) + { + ActivateLocalViewL(newview, messageUid, KNullDesC8()); + } } } void CPodcastAppUi::SetActiveTab(TInt aIndex) { - iTabGroup->SetActiveTabByIndex(aIndex); + if (iNaviStyle == ENaviTabGroup) + { + iTabGroup->SetActiveTabByIndex(aIndex); + } } void CPodcastAppUi::HandleTimeout(const CTimeout& /*aId*/, TInt /*aError*/) @@ -211,66 +243,51 @@ void CPodcastAppUi::UpdateQueueTab(TInt aQueueLength) { - if (aQueueLength == 0) - { - HBufC *queue = iEikonEnv->AllocReadResourceLC(R_TABGROUP_QUEUE); - iTabGroup->ReplaceTabL(KTabIdQueue, *queue); - CleanupStack::PopAndDestroy(queue); - } - else + if (iNaviStyle == ENaviTabGroup) { - HBufC *queueTemplate = iEikonEnv->AllocReadResourceLC(R_TABGROUP_QUEUE_COUNTER); - HBufC *queueCounter = HBufC::NewLC(queueTemplate->Length()+2); - queueCounter->Des().Format(*queueTemplate, aQueueLength); - - iTabGroup->ReplaceTabL(KTabIdQueue, *queueCounter); - CleanupStack::PopAndDestroy(queueCounter); - CleanupStack::PopAndDestroy(queueTemplate); + if (aQueueLength == 0) + { + HBufC *queue = iEikonEnv->AllocReadResourceLC(R_TABGROUP_QUEUE); + iTabGroup->ReplaceTabL(KTabIdQueue, *queue); + CleanupStack::PopAndDestroy(queue); + } + else + { + HBufC *queueTemplate = iEikonEnv->AllocReadResourceLC(R_TABGROUP_QUEUE_COUNTER); + HBufC *queueCounter = HBufC::NewLC(queueTemplate->Length()+2); + queueCounter->Des().Format(*queueTemplate, aQueueLength); + + iTabGroup->ReplaceTabL(KTabIdQueue, *queueCounter); + CleanupStack::PopAndDestroy(queueCounter); + CleanupStack::PopAndDestroy(queueTemplate); + } } } void CPodcastAppUi::TabLeft() { - if (!iTabsVisible) + if (iNaviStyle == ENaviTabGroup) { - return; + TInt ati = iTabGroup->ActiveTabIndex(); + if(ati > 0) + { + SetActiveTab(ati-1); + TabChangedL(ati-1); + } } - - TInt ati = iTabGroup->ActiveTabIndex(); - if(ati > 0) { - SetActiveTab(ati-1); - TabChangedL(ati-1); - } } void CPodcastAppUi::TabRight() { - if (!iTabsVisible) + if (iNaviStyle == ENaviTabGroup) { - return; - } - - TInt ati = iTabGroup->ActiveTabIndex(); - if(ati < iTabGroup->TabCount()-1) { - SetActiveTab(ati+1); - TabChangedL(ati+1); - } - } - -void CPodcastAppUi::SetTabsVisibleL(TBool aVisible) - { - if (aVisible) - { - if(!iTabsVisible && iNaviDecorator) + TInt ati = iTabGroup->ActiveTabIndex(); + if(ati < iTabGroup->TabCount()-1) { - iNaviPane->PushL(*iNaviDecorator); + SetActiveTab(ati+1); + TabChangedL(ati+1); } } - else if (iTabsVisible) { - iNaviPane->Pop(iNaviDecorator); - } - - iTabsVisible=aVisible; } void CPodcastAppUi::ConnectionSelectionStart()