1 /*****************************************************************************
3 *****************************************************************************
4 * Copyright (C) 2003 VideoLAN
5 * $Id: event.h,v 1.9 2003/05/05 16:09:40 gbazin Exp $
7 * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
8 * Emmanuel Puig <karibu@via.ecp.fr>
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.
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.
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,
24 *****************************************************************************/
27 #ifndef VLC_SKIN_EVENT
28 #define VLC_SKIN_EVENT
30 //--- GENERAL ---------------------------------------------------------------
37 //---------------------------------------------------------------------------
38 // VLC specific messages
39 //---------------------------------------------------------------------------
41 #define MAX_EVENT_SIZE 30
42 #define MAX_PARAM_SIZE 20
43 #define EVENT_MAX_BUFFER_SIZE 20
49 #define VLC_MESSAGE (WM_APP)
50 #define VLC_WINDOW (WM_APP + 1000)
51 #define VLC_CONTROL (WM_APP + 2000)
54 #define VLC_NOTHING (VLC_MESSAGE + 1)
55 #define VLC_SHOW (VLC_MESSAGE + 2)
56 #define VLC_HIDE (VLC_MESSAGE + 3)
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)
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)
68 #define VLC_INTF_REFRESH (VLC_MESSAGE + 30)
69 #define VLC_CHANGE_TRAY (VLC_MESSAGE + 31)
70 #define VLC_CHANGE_TASKBAR (VLC_MESSAGE + 32)
72 #define VLC_FULLSCREEN (VLC_MESSAGE + 40)
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)
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)
94 #define VLC_PLAYLIST_ADD_FILE (VLC_MESSAGE + 301)
95 #define VLC_TEST_ALL_CLOSED (VLC_MESSAGE + 600)
98 #define VLC_NET_ADDUDP (VLC_MESSAGE + 701)
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)
111 #define CTRL_ENABLED (VLC_CONTROL + 1)
112 #define CTRL_VISIBLE (VLC_CONTROL + 2)
113 #define CTRL_SYNCHRO (VLC_CONTROL + 3)
115 #define CTRL_SET_SLIDER (VLC_CONTROL + 10)
116 #define CTRL_SET_TEXT (VLC_CONTROL + 11)
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)
123 // Control definition
124 #define CTRL_SLIDER (VLC_CONTROL + 301)
125 #define CTRL_TIME (VLC_CONTROL + 302)
126 #define CTRL_PLAYLIST (VLC_CONTROL + 303)
129 #define PLAYLIST_ID_DEL (VLC_CONTROL + 400)
131 //---------------------------------------------------------------------------
132 struct intf_thread_t;
133 class GenericControl;
139 //---------------------------------------------------------------------------
141 //---------------------------------------------------------------------------
146 unsigned int Message;
149 unsigned int GetMessageType( string desc );
153 intf_thread_t * p_intf;
155 // Transform expr to special boolean :
158 // 2 = change boolean
159 int GetBool( string expr );
163 Event( intf_thread_t *_p_intf, string Desc, string shortcut );
164 Event( intf_thread_t *_p_intf, unsigned int msg, unsigned int par1,
169 void DestructParameters( bool force = false );
171 // General operations on events
172 GenericControl * FindControl( string id );
174 virtual void CreateOSEvent( string para1, string para2,
176 virtual bool IsEqual( Event *evt );
179 virtual bool SendEvent() = 0;
180 void PostTextMessage( string text );
181 void PostSynchroMessage( bool autodelete = false );
184 bool MatchShortcut( int key, int mod );
185 void CreateShortcut();
188 unsigned int GetMessage() { return Message; }
189 unsigned int GetParam1() { return Param1; }
190 long GetParam2() { return Param2; }
193 void SetParam1( unsigned int p1 ) { Param1 = p1; }
194 void SetParam2( unsigned int p2 ) { Param2 = p2; }
196 //---------------------------------------------------------------------------
198 #define ACTION_MATCH_ALL 0
199 #define ACTION_MATCH_FIRST 1
200 #define ACTION_MATCH_ONE 2
202 //---------------------------------------------------------------------------
206 list<Event *> EventList;
207 int GetBool( string expr );
208 intf_thread_t * p_intf;
212 Action::Action( intf_thread_t *_p_intf, string code );
219 bool MatchEvent( Event *evt, int flag = ACTION_MATCH_ALL );
221 //---------------------------------------------------------------------------