]> git.sesse.net Git - vlc/blob - modules/gui/beos/InterfaceWindow.h
beos/*: update the playlist properly
[vlc] / modules / gui / beos / InterfaceWindow.h
1 /*****************************************************************************
2  * InterfaceWindow.h: BeOS interface window class prototype
3  *****************************************************************************
4  * Copyright (C) 1999, 2000, 2001 the VideoLAN team
5  * $Id$
6  *
7  * Authors: Jean-Marc Dressler <polux@via.ecp.fr>
8  *          Tony Castley <tcastley@mail.powerup.com.au>
9  *          Richard Shepherd <richard@rshepherd.demon.co.uk>
10  *          Stephan Aßmus <stippi@yellowbites.com>
11  *
12  * This program is free software; you can redistribute it and/or modify
13  * it under the terms of the GNU General Public License as published by
14  * the Free Software Foundation; either version 2 of the License, or
15  * (at your option) any later version.
16  *
17  * This program is distributed in the hope that it will be useful,
18  * but WITHOUT ANY WARRANTY; without even the implied warranty of
19  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20  * GNU General Public License for more details.
21  *
22  * You should have received a copy of the GNU General Public License
23  * along with this program; if not, write to the Free Software
24  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
25  *****************************************************************************/
26
27 #ifndef BEOS_INTERFACE_WINDOW_H
28 #define BEOS_INTERFACE_WINDOW_H
29
30 #include <Menu.h>
31 #include <Window.h>
32
33 class BMenuBar;
34 class MediaControlView;
35 class PlayListWindow;
36 class BFilePanel;
37 class PreferencesWindow;
38 class MessagesWindow;
39
40 class CDMenu : public BMenu
41 {
42  public:
43                             CDMenu( const char* name );
44     virtual                 ~CDMenu();
45
46     virtual void            AttachedToWindow();
47
48  private:
49     int                     GetCD( const char* directory );
50 };
51
52 class LanguageMenu : public BMenu
53 {
54  public:
55                             LanguageMenu( intf_thread_t * p_intf,
56                                           const char * psz_name,
57                                           char * psz_variable );
58     virtual                 ~LanguageMenu();
59
60     virtual void            AttachedToWindow();
61
62  private:
63     intf_thread_t         * p_intf;
64     char                  * psz_variable;
65 };
66
67 class TitleMenu : public BMenu
68 {
69  public:
70                             TitleMenu( const char* name, intf_thread_t  *p_interface );
71     virtual                 ~TitleMenu();
72
73     virtual void            AttachedToWindow();
74
75     intf_thread_t  *p_intf;
76 };
77
78 class ChapterMenu : public BMenu
79 {
80  public:
81                             ChapterMenu( const char* name, intf_thread_t  *p_interface );
82     virtual                 ~ChapterMenu();
83
84     virtual void            AttachedToWindow();
85
86     intf_thread_t  *p_intf;
87 };
88
89
90 class InterfaceWindow : public BWindow
91 {
92  public:
93                             InterfaceWindow( intf_thread_t * p_intf,
94                                              BRect frame,
95                                              const char * name );
96     virtual                 ~InterfaceWindow();
97
98                             // BWindow
99     virtual void            FrameResized( float width, float height );
100     virtual void            MessageReceived( BMessage* message );
101     virtual bool            QuitRequested();
102
103                             // InterfaceWindow
104             void            UpdateInterface();
105             void            UpdatePlaylist();
106
107             bool            IsStopped() const;
108         
109     MediaControlView*        p_mediaControl;
110     MessagesWindow*         fMessagesWindow;
111
112  private:    
113             void            _SetMenusEnabled( bool hasFile,
114                                               bool hasChapters = false,
115                                               bool hasTitles = false );
116             void            _UpdateSpeedMenu( int rate );
117             void            _ShowFilePanel( uint32 command,
118                                             const char* windowTitle );
119             void            _RestoreSettings();
120             void            _StoreSettings();
121
122     intf_thread_t         * p_intf;
123     input_thread_t        * p_input;
124     playlist_t            * p_playlist;
125     es_descriptor_t       * p_spu_es;
126     bool                    b_playlist_update;
127
128     BFilePanel*             fFilePanel;
129     PlayListWindow*         fPlaylistWindow;
130     PreferencesWindow*      fPreferencesWindow;
131     BMenuBar*               fMenuBar;
132     BMenuItem*              fGotoMenuMI;
133     BMenuItem*              fNextTitleMI;
134     BMenuItem*              fPrevTitleMI;
135     BMenuItem*              fNextChapterMI;
136     BMenuItem*              fPrevChapterMI;
137     BMenuItem*              fOnTopMI;
138     BMenuItem*              fHeighthMI;
139     BMenuItem*              fQuarterMI;
140     BMenuItem*              fHalfMI;
141     BMenuItem*              fNormalMI;
142     BMenuItem*              fTwiceMI;
143     BMenuItem*              fFourMI;
144     BMenuItem*              fHeightMI;
145     BMenu*                  fAudioMenu;
146     BMenu*                  fNavigationMenu;
147     BMenu*                  fTitleMenu;
148     BMenu*                  fChapterMenu;
149     BMenu*                  fLanguageMenu;
150     BMenu*                  fSubtitlesMenu;
151     BMenu*                  fSpeedMenu;
152     BMenu*                  fShowMenu;
153     bigtime_t               fLastUpdateTime;
154     BMessage*               fSettings;  // we keep the message arround
155                                         // for forward compatibility
156 };
157
158
159 // some global support functions
160 status_t load_settings( BMessage* message,
161                         const char* fileName,
162                         const char* folder = NULL );
163
164 status_t save_settings( BMessage* message,
165                         const char* fileName,
166                         const char* folder = NULL );
167
168
169 #endif    // BEOS_INTERFACE_WINDOW_H