1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
|
/*!
* \file vdr_menu.h
* \brief Implements menu handling for broswing media libraries within VDR
*
* \version $Revision: 1.13 $
* \date $Date$
* \author Ralf Klueber, Lars von Wedel, Andreas Kellner
* \author Responsible author: $Author$
*
* $Id$
*/
#ifndef _VDR_MENU_H
#define _VDR_MENU_H
#include <string>
#include <list>
#include <vector>
#include <osd.h>
#include "i18n.h"
class cCommands;
class mgMedia;
class mgSelectionTreeNode;
class mgPlaylist;
class mgTracklist;
/*!
* \brief a special menu item
*/
class mgMenuTreeItem : public cOsdItem
{
public:
mgMenuTreeItem( mgSelectionTreeNode *node );
mgSelectionTreeNode *Node();
void Set();
private:
mgSelectionTreeNode *m_node;
};
/*!
* \brief the muggle main OSD
*/
class mgMainMenu : public cOsdMenu
{
public:
mgMainMenu(mgMedia *media, mgSelectionTreeNode *root,
mgPlaylist *playlist, cCommands *playlist_commands );
mgSelectionTreeNode *CurrentNode();
mgMenuTreeItem *CurrentItem();
eOSState ProcessKey(eKeys Key);
protected:
enum MuggleStatus
{
TREE, TREE_SUBMENU,
PLAYLIST, LOAD_PLAYLIST, SAVE_PLAYLIST,
PLAYLIST_SUBMENU, PLAYLIST_COMMANDS,
FILTER, FILTER_SUBMENU
};
void SetButtons();
void Move( int from, int to );
// Tree view handling
void DisplayTree( mgSelectionTreeNode *node, int select = 0 );
void DisplayTreeViewSelector();
void DisplayTreeSubmenu();
eOSState TreeSubmenuAction( int n );
// Playlist view handling
void DisplayPlaylist( int index_current = -1 );
void DisplayTrackInfo();
void DisplayAlbumInfo();
void LoadPlaylist();
void SavePlaylist();
void RenamePlaylist();
void DisplayPlaylistSubmenu();
eOSState PlaylistSubmenuAction( int n );
void DisplayPlaylistCommands();
eOSState ExecutePlaylistCommand( int current );
// Filter view handling
void DisplayFilter();
void DisplayFilterSelector();
private:
//! \brief launch the actual player
void Play( mgPlaylist *plist, int first = -1 );
// content stuff
mgMedia *m_media;
mgSelectionTreeNode *m_root;
mgSelectionTreeNode *m_node;
mgSelectionTreeNode *m_menu_item;
mgPlaylist *m_current_playlist;
std::vector< std::string > *m_plists;
MuggleStatus m_state;
std::list< int > m_history;
cCommands *m_playlist_commands;
int m_last_osd_index;
};
#endif
|