application/src/PodcastQueueView.cpp
branchsymbian1
changeset 145 cc0182a5da39
parent 70 0a94e3bc0ef2
child 146 78d1b03a94ff
--- a/application/src/PodcastQueueView.cpp	Sat May 15 11:13:19 2010 +0100
+++ b/application/src/PodcastQueueView.cpp	Fri May 28 17:43:08 2010 +0100
@@ -67,6 +67,13 @@
 	iPodcastModel.FeedEngine().AddObserver(this);
 	iPodcastModel.ShowEngine().AddObserver(this);
 	
+	iStylusPopupMenu = CAknStylusPopUpMenu::NewL( this , TPoint(0,0));
+	TResourceReader reader;
+	iCoeEnv->CreateResourceReaderLC(reader,R_QUEUEVIEW_POPUP_MENU);
+	iStylusPopupMenu->ConstructFromResourceL(reader);
+
+	CleanupStack::PopAndDestroy();
+	
 	SetEmptyTextL(R_PODCAST_EMPTY_QUEUE);
 	}
 
@@ -246,6 +253,26 @@
 				}
 			}
 			break;
+		case EPodcastMoveDownloadUp:
+			{
+			TInt index = iListContainer->Listbox()->CurrentItemIndex();
+			if (index >= 0 && index < iPodcastModel.ActiveShowList().Count())
+				{
+				TRAP_IGNORE(iPodcastModel.ShowEngine().MoveDownloadUpL(iPodcastModel.ActiveShowList()[index]->Uid()));
+				}
+			UpdateListboxItemsL();
+			}
+			break;
+		case EPodcastMoveDownloadDown:
+			{
+			TInt index = iListContainer->Listbox()->CurrentItemIndex();
+			if (index >= 0 && index < iPodcastModel.ActiveShowList().Count())
+				{
+				TRAP_IGNORE(iPodcastModel.ShowEngine().MoveDownloadDownL(iPodcastModel.ActiveShowList()[index]->Uid()));
+				}
+			UpdateListboxItemsL();
+			}
+			break;
 		case EPodcastSuspendDownloads:
 			{
 			iPodcastModel.ShowEngine().SuspendDownloads();
@@ -267,27 +294,56 @@
 	}
 	
 void CPodcastQueueView::DynInitMenuPaneL(TInt aResourceId,CEikMenuPane* aMenuPane)
-{
+	{
 	if(aResourceId == R_PODCAST_SHOWSVIEW_MENU)
 		{
 		aMenuPane->SetItemDimmed(EPodcastMarkAllPlayed, ETrue);
 		}
-}
+	}
 
 void CPodcastQueueView::UpdateToolbar(TBool aVisible)
-{
+	{
 	CAknToolbar* toolbar = Toolbar();
 	
-	if (toolbar) {
+	if (toolbar)
+		{
 		RShowInfoArray &fItems = iPodcastModel.ActiveShowList();
 		TInt itemCnt = fItems.Count();
-		if (iListContainer->IsVisible()) {
+		if (iListContainer->IsVisible()) 
+			{
 			toolbar->SetToolbarVisibility(aVisible);
-		}
+			}
+		
 		toolbar->HideItem(EPodcastRemoveAllDownloads, EFalse, ETrue);
 		toolbar->SetItemDimmed(EPodcastRemoveAllDownloads, itemCnt == 0, ETrue);
 		toolbar->HideItem(EPodcastSuspendDownloads,iPodcastModel.SettingsEngine().DownloadSuspended(), ETrue);
 		toolbar->HideItem(EPodcastResumeDownloads,!iPodcastModel.SettingsEngine().DownloadSuspended(), ETrue);	
 		toolbar->SetItemDimmed(EPodcastRemoveDownload, itemCnt == 0, ETrue);		
+		}
 	}
+
+void CPodcastQueueView::HandleLongTapEventL( const TPoint& aPenEventLocation, const TPoint& /* aPenEventScreenLocation */)
+{
+	DP("CPodcastQueueView::HandleLongTapEventL BEGIN");
+	iListContainer->SetLongTapDetectedL(ETrue);
+	
+	const TInt KListboxDefaultHeight = 19; // for some reason it returns 19 for an empty listbox in S^1
+	TInt lbHeight = iListContainer->Listbox()->CalcHeightBasedOnNumOfItems(
+			iListContainer->Listbox()->Model()->NumberOfItems()) - KListboxDefaultHeight;
+
+    if(iStylusPopupMenu && aPenEventLocation.iY < lbHeight)
+    {
+		TBool dimDown = (iListContainer->Listbox()->CurrentItemIndex() >= iPodcastModel.ActiveShowList().Count() - 1 ?
+				ETrue : EFalse);
+		TBool dimUp = (iListContainer->Listbox()->CurrentItemIndex() <= 0 ?
+				ETrue : EFalse);
+		
+		iStylusPopupMenu->SetItemDimmed(EPodcastMoveDownloadDown, dimDown);
+		iStylusPopupMenu->SetItemDimmed(EPodcastMoveDownloadUp, dimUp);
+		
+		iStylusPopupMenu->ShowMenu();
+		iStylusPopupMenu->SetPosition(aPenEventLocation);
+    }
+    
+	DP("CPodcastQueueView::HandleLongTapEventL END");
 }