260951e8979b7ad9ea5ed7bfd491ccfe70431a6e
[vlc.git] / plugins / 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.10 2001/06/03 12:47:21 sam 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  *
11  * This program is free software; you can redistribute it and/or modify
12  * it under the terms of the GNU General Public License as published by
13  * the Free Software Foundation; either version 2 of the License, or
14  * (at your option) any later version.
15  * 
16  * This program is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19  * GNU General Public License for more details.
20  *
21  * You should have received a copy of the GNU General Public License
22  * along with this program; if not, write to the Free Software
23  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
24  *****************************************************************************/
25
26 class SeekSlider;
27 class MediaSlider;
28
29 class CDMenu : public BMenu
30 {
31 public:
32         CDMenu(const char *name);
33         ~CDMenu();
34         void AttachedToWindow(void);
35 private:
36         int GetCD(const char *directory);
37 };
38
39 class LanguageMenu : public BMenu
40 {
41 public:
42         LanguageMenu(const char *name, int menu_kind, intf_thread_t  *p_interface);
43         ~LanguageMenu();
44         void AttachedToWindow(void);
45 private:
46         intf_thread_t  *p_intf;
47         int kind;
48         int GetChannels();
49 };
50
51 class InterfaceWindow : public BWindow
52 {
53 public:
54     InterfaceWindow( BRect frame, const char *name, intf_thread_t  *p_intf );
55     ~InterfaceWindow();
56
57     // standard window member
58     virtual bool    QuitRequested();
59     virtual void    MessageReceived(BMessage *message);
60         void                    updateInterface();
61             
62         SeekSlider * p_seek;
63         sem_id  fScrubSem;
64         bool    fSeeking;
65
66 private:        
67     intf_thread_t  *p_intf;
68         MediaSlider * p_vol;
69         BCheckBox * p_mute;
70         BFilePanel *file_panel;
71         es_descriptor_t *  p_audio_es;
72     es_descriptor_t *  p_spu_es;
73
74 };
75
76 class InterfaceView : public BView
77 {
78 public:
79     InterfaceView();
80     ~InterfaceView();
81
82     virtual void    MessageReceived(BMessage *message);
83 };
84
85
86 class MediaSlider : public BSlider
87 {
88 public:
89         MediaSlider(BRect frame,
90                                 BMessage *message,
91                                 int32 minValue,
92                                 int32 maxValue);
93         ~MediaSlider();
94         virtual void DrawThumb(void);
95 };
96                                 
97
98 class SeekSlider : public MediaSlider
99 {
100 public:
101         SeekSlider(BRect frame,
102                                 InterfaceWindow *owner,
103                                 int32 minValue,
104                                 int32 maxValue,
105                                 thumb_style thumbType = B_TRIANGLE_THUMB);
106
107         ~SeekSlider();
108         
109         virtual void MouseDown(BPoint);
110         virtual void MouseUp(BPoint pt);
111         virtual void MouseMoved(BPoint pt, uint32 c, const BMessage *m);
112 private:
113         InterfaceWindow*        fOwner; 
114         bool fMouseDown;
115 };