xref: /haiku/src/apps/mediaplayer/playlist/PlaylistListView.h (revision 1deede7388b04dbeec5af85cae7164735ea9e70d)
1 /*
2  * Copyright 2007-2009, Haiku. All rights reserved.
3  * Distributed under the terms of the MIT License.
4  *
5  * Authors:
6  *		Stephan Aßmus <superstippi@gmx.de>
7  */
8 #ifndef PLAYLIST_LIST_VIEW_H
9 #define PLAYLIST_LIST_VIEW_H
10 
11 #include <PopUpMenu.h>
12 
13 #include "ListViews.h"
14 
15 class CommandStack;
16 class Controller;
17 class ControllerObserver;
18 class Playlist;
19 class PlaylistItem;
20 class PlaylistObserver;
21 
22 class PlaylistListView : public SimpleListView {
23 public:
24 								PlaylistListView(BRect frame,
25 									Playlist* playlist,
26 									Controller* controller,
27 									CommandStack* stack);
28 	virtual						~PlaylistListView();
29 
30 	// BView interface
31 	virtual	void				AttachedToWindow();
32 	virtual	void				MessageReceived(BMessage* message);
33 
34 	virtual	void				MouseDown(BPoint where);
35 	virtual	void				KeyDown(const char* bytes, int32 numBytes);
36 
37 	// SimpleListView interface
38 	virtual	void				MoveItems(const BList& indices, int32 toIndex);
39 	virtual	void				CopyItems(const BList& indices, int32 toIndex);
40 	virtual	void				RemoveItemList(const BList& indices);
41 
42 	virtual	void				DrawListItem(BView* owner, int32 index,
43 									BRect frame) const;
44 
45 	// PlaylistListView
46 			void				ItemsReceived(const BMessage* message,
47 									int32 appendIndex);
48 
49 			void				Randomize();
50 			void				RemoveSelectionToTrash();
51 			void				RemoveToTrash(int32 index);
52 			void				RemoveItemList(const BList& indices,
53 									bool intoTrash);
54 	virtual	void				SkipBackward();
55 	virtual	void				SkipForward();
56 
57 private:
58 	class Item;
59 
60 			void				_Wind(bigtime_t howMuch, int64 frames);
61 			void				_FullSync();
62 			void				_AddItem(PlaylistItem* item, int32 index);
63 			void				_RemoveItem(int32 index);
64 
65 			void				_SetCurrentPlaylistIndex(int32 index);
66 			void				_SetPlaybackState(uint32 state);
67 
68 			void				_AddDropContextMenu();
69 			uint32				_ShowDropContextMenu(BPoint loc);
70 
71 			Playlist*			fPlaylist;
72 			PlaylistObserver*	fPlaylistObserver;
73 
74 			Controller*			fController;
75 			ControllerObserver*	fControllerObserver;
76 
77 			CommandStack*		fCommandStack;
78 
79 			int32				fCurrentPlaylistIndex;
80 			uint32				fPlaybackState;
81 
82 			font_height			fFontHeight;
83 			Item*				fLastClickedItem;
84 
85 			BPopUpMenu*			fDropContextMenu;
86 };
87 
88 #endif // PLAYLIST_LIST_VIEW_H
89