]> git.sesse.net Git - vlc/blob - modules/gui/skins/src/event.h
20d3b4d55e27390aa5b811ed080b0d022339e344
[vlc] / modules / gui / skins / src / event.h
1 /*****************************************************************************
2  * event.h: Event class
3  *****************************************************************************
4  * Copyright (C) 2003 VideoLAN
5  * $Id: event.h,v 1.9 2003/05/05 16:09:40 gbazin Exp $
6  *
7  * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
8  *          Emmanuel Puig    <karibu@via.ecp.fr>
9  *
10  * This program is free software; you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License as published by
12  * the Free Software Foundation; either version 2 of the License, or
13  * (at your option) any later version.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU General Public License for more details.
19  *
20  * You should have received a copy of the GNU General Public License
21  * along with this program; if not, write to the Free Software
22  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
23  * USA.
24  *****************************************************************************/
25
26
27 #ifndef VLC_SKIN_EVENT
28 #define VLC_SKIN_EVENT
29
30 //--- GENERAL ---------------------------------------------------------------
31 #include <string>
32 #include <list>
33 using namespace std;
34
35
36
37 //---------------------------------------------------------------------------
38 // VLC specific messages
39 //---------------------------------------------------------------------------
40
41 #define MAX_EVENT_SIZE 30
42 #define MAX_PARAM_SIZE 20
43 #define EVENT_MAX_BUFFER_SIZE 20
44
45 #if !defined _WIN32
46 #define WM_APP 0x8000
47 #endif
48
49 #define VLC_MESSAGE         (WM_APP)
50 #define VLC_WINDOW          (WM_APP + 1000)
51 #define VLC_CONTROL         (WM_APP + 2000)
52
53 // VLC messages
54 #define VLC_NOTHING         (VLC_MESSAGE + 1)
55 #define VLC_SHOW            (VLC_MESSAGE + 2)
56 #define VLC_HIDE            (VLC_MESSAGE + 3)
57
58 #define VLC_QUIT            (VLC_MESSAGE + 4)
59 #define VLC_OPEN            (VLC_MESSAGE + 5)
60 #define VLC_LOAD_SKIN       (VLC_MESSAGE + 6)
61 #define VLC_DROP            (VLC_MESSAGE + 7)
62
63 #define VLC_LOG_SHOW        (VLC_MESSAGE + 20)
64 #define VLC_LOG_CLEAR       (VLC_MESSAGE + 22)
65 #define VLC_PREFS_SHOW      (VLC_MESSAGE + 23)
66 #define VLC_INFO_SHOW       (VLC_MESSAGE + 24)
67
68 #define VLC_INTF_REFRESH    (VLC_MESSAGE + 30)
69 #define VLC_CHANGE_TRAY     (VLC_MESSAGE + 31)
70 #define VLC_CHANGE_TASKBAR  (VLC_MESSAGE + 32)
71
72 #define VLC_FULLSCREEN      (VLC_MESSAGE + 40)
73
74 // Stream control
75 #define VLC_PLAY            (VLC_MESSAGE + 101)
76 #define VLC_STOP            (VLC_MESSAGE + 102)
77 #define VLC_PAUSE           (VLC_MESSAGE + 103)
78 #define VLC_NEXT            (VLC_MESSAGE + 104)
79 #define VLC_PREV            (VLC_MESSAGE + 105)
80 #define VLC_STREAMPOS       (VLC_MESSAGE + 106)
81 #define VLC_ENDSTREAMPOS    (VLC_MESSAGE + 107)
82 #define VLC_TOTALSTREAMPOS  (VLC_MESSAGE + 108)
83 #define VLC_STREAMNAME      (VLC_MESSAGE + 109)
84 #define VLC_HELP_TEXT       (VLC_MESSAGE + 110)
85
86 // Volume control
87 #define VLC_VOLUME_CHANGE   (VLC_MESSAGE + 201)
88 #define VLC_VOLUME_MUTE     (VLC_MESSAGE + 202)
89 #define VLC_VOLUME_UP       (VLC_MESSAGE + 203)
90 #define VLC_VOLUME_DOWN     (VLC_MESSAGE + 204)
91 #define VLC_VOLUME_SET      (VLC_MESSAGE + 205)
92
93 // Playlist events
94 #define VLC_PLAYLIST_ADD_FILE (VLC_MESSAGE + 301)
95 #define VLC_TEST_ALL_CLOSED (VLC_MESSAGE + 600)
96
97 // Network events
98 #define VLC_NET_ADDUDP      (VLC_MESSAGE + 701)
99
100 // Window event
101 #define WINDOW_MOVE         (VLC_WINDOW + 1)
102 #define WINDOW_OPEN         (VLC_WINDOW + 2)
103 #define WINDOW_CLOSE        (VLC_WINDOW + 3)
104 #define WINDOW_SHOW         (VLC_WINDOW + 4)
105 #define WINDOW_HIDE         (VLC_WINDOW + 5)
106 #define WINDOW_FADE         (VLC_WINDOW + 6)
107 #define WINDOW_LEAVE        (VLC_WINDOW + 7)
108 #define WINDOW_REFRESH      (VLC_WINDOW + 8)
109
110 // Control event
111 #define CTRL_ENABLED        (VLC_CONTROL + 1)
112 #define CTRL_VISIBLE        (VLC_CONTROL + 2)
113 #define CTRL_SYNCHRO        (VLC_CONTROL + 3)
114
115 #define CTRL_SET_SLIDER     (VLC_CONTROL + 10)
116 #define CTRL_SET_TEXT       (VLC_CONTROL + 11)
117
118 // Control event by ID
119 #define CTRL_ID_VISIBLE     (VLC_CONTROL + 100)
120 #define CTRL_ID_ENABLED     (VLC_CONTROL + 101)
121 #define CTRL_ID_MOVE        (VLC_CONTROL + 102)
122
123 // Control definition
124 #define CTRL_SLIDER         (VLC_CONTROL + 301)
125 #define CTRL_TIME           (VLC_CONTROL + 302)
126 #define CTRL_PLAYLIST       (VLC_CONTROL + 303)
127
128 // Playlist
129 #define PLAYLIST_ID_DEL     (VLC_CONTROL + 400)
130
131 //---------------------------------------------------------------------------
132 struct intf_thread_t;
133 class GenericControl;
134 class SkinWindow;
135 class Event;
136
137
138
139 //---------------------------------------------------------------------------
140 // EVENT CLASS
141 //---------------------------------------------------------------------------
142 class Event
143 {
144     protected:
145         string          EventDesc;
146         unsigned int    Message;
147         unsigned int    Param1;
148         long            Param2;
149         unsigned int    GetMessageType( string desc );
150         string          Shortcut;
151         int             KeyModifier;
152         int             Key;
153         intf_thread_t * p_intf;
154
155         // Transform expr to special boolean :
156         //   0 = false
157         //   1 = true
158         //   2 = change boolean
159         int GetBool( string expr );
160
161     public:
162         // Constructor
163         Event( intf_thread_t *_p_intf, string Desc, string shortcut );
164         Event( intf_thread_t *_p_intf, unsigned int msg, unsigned int par1,
165                long par2 );
166
167         // Destructor
168         virtual ~Event();
169         void DestructParameters( bool force = false );
170
171         // General operations on events
172         GenericControl * FindControl( string id );
173         void CreateEvent();
174         virtual void CreateOSEvent( string para1, string para2,
175                                     string para3 ) = 0;
176         virtual bool IsEqual( Event *evt );
177
178         // Event sending
179         virtual bool SendEvent() = 0;
180         void PostTextMessage( string text );
181         void PostSynchroMessage( bool autodelete = false );
182
183         // Shortcuts methods
184         bool MatchShortcut( int key, int mod );
185         void CreateShortcut();
186
187         // Getters
188         unsigned int GetMessage()   { return Message; }
189         unsigned int GetParam1()    { return Param1; }
190         long         GetParam2()    { return Param2; }
191
192         // Setters
193         void SetParam1( unsigned int p1 )    { Param1 = p1; }
194         void SetParam2( unsigned int p2 )    { Param2 = p2; }
195 };
196 //---------------------------------------------------------------------------
197
198 #define ACTION_MATCH_ALL    0
199 #define ACTION_MATCH_FIRST  1
200 #define ACTION_MATCH_ONE    2
201
202 //---------------------------------------------------------------------------
203 class Action
204 {
205     private:
206         list<Event *> EventList;
207         int GetBool( string expr );
208         intf_thread_t * p_intf;
209
210     public:
211         // Constructor
212         Action::Action( intf_thread_t *_p_intf, string code );
213
214         // Destructor
215         Action::~Action();
216
217         // Send event
218         bool SendEvent();
219         bool MatchEvent( Event *evt, int flag = ACTION_MATCH_ALL );
220 };
221 //---------------------------------------------------------------------------
222
223 #endif