summaryrefslogtreecommitdiff
path: root/vdr_menu.h
blob: 5ff7f3430a04d029a65a23072f28dd9d32c38dc3 (plain)
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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
/*! 
 * \file   vdr_menu.h
 * \brief  Implements menu handling for broswing media libraries within VDR
 *
 * \version $Revision: 1.13 $
 * \date    $Date: 2004/07/25 21:33:35 $
 * \author  Ralf Klueber, Lars von Wedel, Andreas Kellner
 * \author  Responsible author: $Author: lvw $
 *
 *  $Id: vdr_menu.h,v 1.13 2004/07/25 21:33:35 lvw Exp $
 */

#ifndef _VDR_MENU_H
#define _VDR_MENU_H

#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:
  void Play(mgPlaylist *plist);

  // content stuff
  mgMedia *m_media;
  mgSelectionTreeNode *m_root;
  mgSelectionTreeNode *m_node;
  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

/************************************************************
 *
 * $Log: vdr_menu.h,v $
 * Revision 1.13  2004/07/25 21:33:35  lvw
 * Removed bugs in finding track files and playlist indexing.
 *
 * Revision 1.12  2004/07/09 12:22:00  LarsAC
 * Untested extensions for exporting plalists
 *
 * Revision 1.11  2004/07/06 00:20:51  MountainMan
 * loading and saving playlists
 *
 * Revision 1.10  2004/05/28 15:29:19  lvw
 * Merged player branch back on HEAD branch.
 *
 * Revision 1.9  2004/02/23 15:41:21  RaK
 * - first i18n attempt
 *
 * Revision 1.8.2.7  2004/05/27 07:58:38  lvw
 * Removed bugs in moving and removing tracks from playlists
 *
 * Revision 1.8.2.6  2004/05/26 14:31:04  lvw
 * Added submenu for playlist view
 *
 * Revision 1.8.2.5  2004/05/25 21:58:54  lvw
 * Handle submenus for views
 *
 * Revision 1.8.2.4  2004/03/14 12:30:56  lvw
 * Menu now calls player
 *
 * Revision 1.8.2.3  2004/03/11 07:22:32  lvw
 * Added setup menu
 *
 * Revision 1.8.2.2  2004/03/08 22:28:40  lvw
 * Added documentation headers.
 *
 * Revision 1.8.2.1  2004/03/02 07:07:27  lvw
 * Initial adaptations from MP3 plugin added (untested)
 *
 * Revision 1.8  2004/02/08 10:48:44  LarsAC
 * Made major revisions in OSD behavior
 *
 * Revision 1.7  2004/02/03 19:28:46  LarsAC
 * Playlist now created in plugin instead of in menu.
 *
 * Revision 1.6  2004/02/03 19:15:08  LarsAC
 * OSD selection now jumps back to parent when collapsing.
 *
 * Revision 1.5  2004/02/03 00:13:24  LarsAC
 * Improved OSD handling of collapse/back
 *
 */