1 /*****************************************************************************
3 *****************************************************************************
4 * Copyright (C) 2003 VideoLAN
5 * $Id: event.h,v 1.15 2003/10/17 18:17:28 ipkiss 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)
62 #define VLC_ON_TOP (VLC_MESSAGE + 8)
63 #define VLC_NET (VLC_MESSAGE + 9)
65 #define VLC_LOG_SHOW (VLC_MESSAGE + 20)
66 #define VLC_PREFS_SHOW (VLC_MESSAGE + 23)
67 #define VLC_INFO_SHOW (VLC_MESSAGE + 24)
69 #define VLC_INTF_REFRESH (VLC_MESSAGE + 30)
70 #define VLC_CHANGE_TRAY (VLC_MESSAGE + 31)
71 #define VLC_CHANGE_TASKBAR (VLC_MESSAGE + 32)
73 #define VLC_FULLSCREEN (VLC_MESSAGE + 40)
76 #define VLC_PLAY (VLC_MESSAGE + 101)
77 #define VLC_STOP (VLC_MESSAGE + 102)
78 #define VLC_PAUSE (VLC_MESSAGE + 103)
79 #define VLC_NEXT (VLC_MESSAGE + 104)
80 #define VLC_PREV (VLC_MESSAGE + 105)
81 #define VLC_STREAMPOS (VLC_MESSAGE + 106)
82 #define VLC_ENDSTREAMPOS (VLC_MESSAGE + 107)
83 #define VLC_TOTALSTREAMPOS (VLC_MESSAGE + 108)
84 #define VLC_STREAM_NAME (VLC_MESSAGE + 109)
85 #define VLC_STREAM_TITLE (VLC_MESSAGE + 110)
86 #define VLC_HELP_TEXT (VLC_MESSAGE + 111)
89 #define VLC_VOLUME_CHANGE (VLC_MESSAGE + 201)
90 #define VLC_VOLUME_MUTE (VLC_MESSAGE + 202)
91 #define VLC_VOLUME_UP (VLC_MESSAGE + 203)
92 #define VLC_VOLUME_DOWN (VLC_MESSAGE + 204)
93 #define VLC_VOLUME_SET (VLC_MESSAGE + 205)
96 #define VLC_PLAYLIST_ADD_FILE (VLC_MESSAGE + 301)
97 #define VLC_TEST_ALL_CLOSED (VLC_MESSAGE + 600)
100 #define WINDOW_MOVE (VLC_WINDOW + 1)
101 #define WINDOW_OPEN (VLC_WINDOW + 2)
102 #define WINDOW_CLOSE (VLC_WINDOW + 3)
103 #define WINDOW_SHOW (VLC_WINDOW + 4)
104 #define WINDOW_HIDE (VLC_WINDOW + 5)
105 #define WINDOW_FADE (VLC_WINDOW + 6)
106 #define WINDOW_LEAVE (VLC_WINDOW + 7)
107 #define WINDOW_REFRESH (VLC_WINDOW + 8)
110 #define CTRL_ENABLED (VLC_CONTROL + 1)
111 #define CTRL_VISIBLE (VLC_CONTROL + 2)
112 #define CTRL_SYNCHRO (VLC_CONTROL + 3)
114 #define CTRL_SET_SLIDER (VLC_CONTROL + 10)
115 #define CTRL_SET_TEXT (VLC_CONTROL + 11)
117 // Control event by ID
118 #define CTRL_ID_VISIBLE (VLC_CONTROL + 100)
119 #define CTRL_ID_ENABLED (VLC_CONTROL + 101)
120 #define CTRL_ID_MOVE (VLC_CONTROL + 102)
122 // Control definition
123 #define CTRL_SLIDER (VLC_CONTROL + 301)
124 #define CTRL_TIME (VLC_CONTROL + 302)
125 #define CTRL_PLAYLIST (VLC_CONTROL + 303)
128 #define PLAYLIST_ID_DEL (VLC_CONTROL + 400)
130 //---------------------------------------------------------------------------
131 struct intf_thread_t;
132 class GenericControl;
138 //---------------------------------------------------------------------------
140 //---------------------------------------------------------------------------
145 unsigned int Message;
148 unsigned int GetMessageType( string desc );
152 intf_thread_t * p_intf;
154 // Transform expr to special boolean :
157 // 2 = change boolean
158 int GetBool( string expr );
162 Event( intf_thread_t *_p_intf, string Desc, string shortcut );
163 Event( intf_thread_t *_p_intf, unsigned int msg, unsigned int par1,
168 void DestructParameters( bool force = false );
170 // General operations on events
171 GenericControl * FindControl( string id );
173 virtual void CreateOSEvent( string para1, string para2,
175 virtual bool IsEqual( Event *evt );
178 virtual bool SendEvent() = 0;
179 void PostTextMessage( string text );
180 void PostSynchroMessage( bool autodelete = false );
183 bool MatchShortcut( int key, int mod );
184 void CreateShortcut();
187 unsigned int GetMessage() { return Message; }
188 unsigned int GetParam1() { return Param1; }
189 long GetParam2() { return Param2; }
192 void SetParam1( unsigned int p1 ) { Param1 = p1; }
193 void SetParam2( unsigned int p2 ) { Param2 = p2; }
195 //---------------------------------------------------------------------------
197 #define ACTION_MATCH_ALL 0
198 #define ACTION_MATCH_FIRST 1
199 #define ACTION_MATCH_ONE 2
201 //---------------------------------------------------------------------------
205 list<Event *> EventList;
206 int GetBool( string expr );
207 intf_thread_t * p_intf;
211 Action::Action( intf_thread_t *_p_intf, string code );
218 bool MatchEvent( Event *evt, int flag = ACTION_MATCH_ALL );
220 //---------------------------------------------------------------------------