modules/gui/beos/PreferenceWindow.h/.cpp
[vlc.git] / modules / gui / beos / InterfaceWindow.h
1 /*****************************************************************************
2  * InterfaceWindow.h: BeOS interface window class prototype
3  *****************************************************************************
4  * Copyright (C) 1999, 2000, 2001 VideoLAN
5  * $Id: InterfaceWindow.h,v 1.12 2003/02/09 17:10:52 stippi Exp $
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 class VlcWrapper;
40
41 class CDMenu : public BMenu
42 {
43  public:
44                             CDMenu( const char* name );
45     virtual                 ~CDMenu();
46
47     virtual void            AttachedToWindow();
48
49  private:
50     int                     GetCD( const char* directory );
51 };
52
53 class LanguageMenu : public BMenu
54 {
55  public:
56                             LanguageMenu( const char* name,
57                                           int menu_kind,
58                                           VlcWrapper *p_wrapper );
59     virtual                 ~LanguageMenu();
60
61     virtual void            AttachedToWindow();
62
63  private:
64     VlcWrapper *            p_wrapper;
65     int                     kind;
66 };
67
68 class TitleMenu : public BMenu
69 {
70  public:
71                             TitleMenu( const char* name, intf_thread_t  *p_interface );
72     virtual                 ~TitleMenu();
73
74     virtual void            AttachedToWindow();
75     
76     intf_thread_t  *p_intf;
77 };
78
79 class ChapterMenu : public BMenu
80 {
81  public:
82                             ChapterMenu( const char* name, intf_thread_t  *p_interface );
83     virtual                 ~ChapterMenu();
84
85     virtual void            AttachedToWindow();
86
87     intf_thread_t  *p_intf;
88 };
89
90
91 class InterfaceWindow : public BWindow
92 {
93  public:
94                             InterfaceWindow( BRect frame,
95                                              const char* name,
96                                              intf_thread_t* p_interface );
97     virtual                 ~InterfaceWindow();
98
99                             // BWindow
100     virtual void            FrameResized( float width, float height );
101     virtual void            MessageReceived( BMessage* message );
102     virtual bool            QuitRequested();
103
104                             // InterfaceWindow
105             void            UpdateInterface();
106             bool            IsStopped() const;
107         
108     MediaControlView*        p_mediaControl;
109
110  private:    
111             void            _UpdatePlaylist();
112             void            _SetMenusEnabled( bool hasFile,
113                                               bool hasChapters = false,
114                                               bool hasTitles = false );
115             void            _UpdateSpeedMenu( int rate );
116             void            _InputStreamChanged();
117             void                        _ShowFilePanel( uint32 command,
118                                                                         const char* windowTitle );
119                         void                    _RestoreSettings();
120                         void                    _StoreSettings();
121
122     intf_thread_t*          p_intf;
123     es_descriptor_t*        p_spu_es;
124
125     bool                    fPlaylistIsEmpty;
126     BFilePanel*             fFilePanel;
127     PlayListWindow*         fPlaylistWindow;
128     PreferencesWindow*      fPreferencesWindow;
129     MessagesWindow*         fMessagesWindow;
130     BMenuBar*               fMenuBar;
131     BMenuItem*                          fGotoMenuMI;
132     BMenuItem*              fNextTitleMI;
133     BMenuItem*              fPrevTitleMI;
134     BMenuItem*              fNextChapterMI;
135     BMenuItem*              fPrevChapterMI;
136     BMenuItem*              fOnTopMI;
137     BMenuItem*              fSlowerMI;
138     BMenuItem*              fNormalMI;
139     BMenuItem*              fFasterMI;
140     BMenu*                  fAudioMenu;
141     BMenu*                  fNavigationMenu;
142     BMenu*                  fTitleMenu;
143     BMenu*                  fChapterMenu;
144     BMenu*                  fLanguageMenu;
145     BMenu*                  fSubtitlesMenu;
146     BMenu*                  fSpeedMenu;
147     BMenu*                  fShowMenu;
148     bigtime_t               fLastUpdateTime;
149         BMessage*                               fSettings;      // we keep the message arround
150                                                                                 // for forward compatibility
151     VlcWrapper*                         p_wrapper;
152 };
153
154
155 // some global support functions
156 status_t load_settings( BMessage* message,
157                                                 const char* fileName,
158                                                 const char* folder = NULL );
159
160 status_t save_settings( BMessage* message,
161                                                 const char* fileName,
162                                                 const char* folder = NULL );
163
164
165 #endif    // BEOS_INTERFACE_WINDOW_H