2 * This file is part of MPlayer.
4 * MPlayer is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
9 * MPlayer is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License along
15 * with MPlayer; if not, write to the Free Software Foundation, Inc.,
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
28 #include "wm/wskeys.h"
29 #include "skin/skin.h"
30 #include "mplayer/gmplayer.h"
31 #include "interface.h"
33 static const evName evNames
[] =
38 { evPause
, "evPause" },
42 { evEqualizer
, "evEqualizer" },
43 { evEqualizer
, "evEqualeaser" },
44 { evPlayList
, "evPlaylist" },
46 { evIconify
, "evIconify" },
47 { evIncBalance
, "evIncBalance" },
48 { evDecBalance
, "evDecBalance" },
49 { evFullScreen
, "evFullScreen" },
50 { evFName
, "evFName" },
51 { evMovieTime
, "evMovieTime" },
52 { evAbout
, "evAbout" },
53 { evLoadPlay
, "evLoadPlay" },
54 { evPreferences
, "evPreferences" },
55 { evSkinBrowser
, "evSkinBrowser" },
56 { evBackward10sec
, "evBackward10sec" },
57 { evForward10sec
, "evForward10sec" },
58 { evBackward1min
, "evBackward1min" },
59 { evForward1min
, "evForward1min" },
60 { evBackward10min
, "evBackward10min" },
61 { evForward10min
, "evForward10min" },
62 { evIncVolume
, "evIncVolume" },
63 { evDecVolume
, "evDecVolume" },
65 { evIncAudioBufDelay
, "evIncAudioBufDelay" },
66 { evDecAudioBufDelay
, "evDecAudioBufDelay" },
67 { evPlaySwitchToPause
, "evPlaySwitchToPause" },
68 { evPauseSwitchToPlay
, "evPauseSwitchToPlay" },
69 { evNormalSize
, "evHalfSize" },
70 { evNormalSize
, "evNormalSize" },
71 { evDoubleSize
, "evDoubleSize" },
72 { evSetMoviePosition
, "evSetMoviePosition" },
73 { evSetVolume
, "evSetVolume" },
74 { evSetBalance
, "evSetBalance" },
76 { evLoadSubtitle
, "evLoadSubtitle" },
77 { evPlayDVD
, "evPlayDVD" },
78 { evPlayVCD
, "evPlayVCD" },
79 { evSetURL
, "evSetURL" },
80 { evLoadAudioFile
, "evLoadAudioFile" },
81 { evDropSubtitle
, "evDropSubtitle" },
82 { evSetAspect
, "evSetAspect" }
85 static const int evBoxs
= sizeof( evNames
) / sizeof( evName
);
91 /* FIXME: Eventually remove the obsolete directory names. */
92 char * skinDirInHome
=NULL
;
93 char * skinDirInHome_obsolete
=NULL
;
94 char * skinMPlayerDir
=NULL
;
95 char * skinMPlayerDir_obsolete
=NULL
;
96 char * skinName
= NULL
;
98 void appClearItem( wItem
* item
)
102 item
->x
=0; item
->y
=0; item
->width
=0; item
->height
=0;
104 item
->px
=0; item
->py
=0; item
->psx
=0; item
->psy
=0;
106 item
->msg
=0; item
->msg2
=0;
107 item
->pressed
=btnReleased
;
109 item
->key
=0; item
->key2
=0;
110 item
->Bitmap
.Width
=0; item
->Bitmap
.Height
=0; item
->Bitmap
.BPP
=0; item
->Bitmap
.ImageSize
=0;
111 if ( item
->Bitmap
.Image
) free( item
->Bitmap
.Image
);
112 item
->Bitmap
.Image
=NULL
;
115 if ( item
->label
) free( item
->label
); item
->label
=NULL
;
119 void appCopy( listItems
* dest
,listItems
* source
)
121 dest
->NumberOfItems
=source
->NumberOfItems
;
122 memcpy( &dest
->Items
,&source
->Items
,128 * sizeof( wItem
) );
124 dest
->NumberOfMenuItems
=source
->NumberOfMenuItems
;
125 memcpy( &dest
->MenuItems
,&source
->MenuItems
,32 * sizeof( wItem
) );
127 memcpy( &dest
->main
,&source
->main
,sizeof( wItem
) );
128 memcpy( &dest
->sub
,&source
->sub
,sizeof( wItem
) );
129 memcpy( &dest
->menuBase
,&source
->menuBase
,sizeof( wItem
) );
130 memcpy( &dest
->menuSelected
,&source
->menuSelected
,sizeof( wItem
) );
133 void appInitStruct( listItems
* item
)
136 for ( i
=0;i
<item
->NumberOfItems
;i
++ )
137 appClearItem( &item
->Items
[i
] );
138 for ( i
=0;i
<item
->NumberOfMenuItems
;i
++ )
139 appClearItem( &item
->MenuItems
[i
] );
140 for ( i
=0;i
<item
->NumberOfBarItems
;i
++ )
141 appClearItem( &item
->barItems
[i
] );
143 item
->NumberOfItems
=-1;
144 memset( item
->Items
,0,256 * sizeof( wItem
) );
145 item
->NumberOfMenuItems
=-1;
146 memset( item
->MenuItems
,0,64 * sizeof( wItem
) );
147 item
->NumberOfBarItems
=-1;
148 memset( item
->barItems
,0,256 * sizeof( wItem
) );
150 appClearItem( &item
->main
);
151 item
->mainDecoration
=0;
152 appClearItem( &item
->sub
);
153 item
->sub
.width
=0; item
->sub
.height
=0;
154 item
->sub
.x
=-1; item
->sub
.y
=-1;
155 appClearItem( &item
->menuBase
);
156 appClearItem( &item
->menuSelected
);
157 item
->sub
.R
=item
->sub
.G
=item
->sub
.B
=0;
158 item
->bar
.R
=item
->bar
.G
=item
->bar
.B
=0;
159 item
->main
.R
=item
->main
.G
=item
->main
.B
=0;
160 item
->barIsPresent
=0;
161 item
->menuIsPresent
=0;
164 int appFindKey( unsigned char * name
)
167 for ( i
=0;i
<wsKeyNumber
;i
++ )
168 if ( !strcmp( wsKeyNames
[i
].name
,name
) ) return wsKeyNames
[i
].code
;
172 int appFindMessage( unsigned char * str
)
175 for ( i
=0;i
<evBoxs
;i
++ )
176 if ( !strcmp( evNames
[i
].name
,str
) ) return evNames
[i
].msg
;
180 void btnModify( int event
,float state
)
183 for ( j
=0;j
< appMPlayer
.NumberOfItems
+ 1;j
++ )
184 if ( appMPlayer
.Items
[j
].msg
== event
)
186 switch ( appMPlayer
.Items
[j
].type
)
189 appMPlayer
.Items
[j
].pressed
=(int)state
;
190 appMPlayer
.Items
[j
].tmp
=(int)state
;
195 if ( state
< 0.0f
) state
=0.0f
;
196 if ( state
> 100.f
) state
=100.0f
;
197 appMPlayer
.Items
[j
].value
=state
;
202 for ( j
=0;j
< appMPlayer
.NumberOfBarItems
+ 1;j
++ )
203 if ( appMPlayer
.barItems
[j
].msg
== event
)
205 switch ( appMPlayer
.barItems
[j
].type
)
208 appMPlayer
.barItems
[j
].pressed
=(int)state
;
209 appMPlayer
.barItems
[j
].tmp
=(int)state
;
214 if ( state
< 0.0f
) state
=0.0f
;
215 if ( state
> 100.f
) state
=100.0f
;
216 appMPlayer
.barItems
[j
].value
=state
;
222 float btnGetValue( int event
)
225 for ( j
=0;j
<appMPlayer
.NumberOfItems
+ 1;j
++ )
226 if ( appMPlayer
.Items
[j
].msg
== event
) return appMPlayer
.Items
[j
].value
;
230 void btnSet( int event
,int set
)
233 for ( j
=0;j
<appMPlayer
.NumberOfItems
+ 1;j
++ )
234 if ( appMPlayer
.Items
[j
].msg
== event
)
235 { appMPlayer
.Items
[j
].pressed
=set
; appMPlayer
.barItems
[j
].tmp
=0; }
236 for ( j
=0;j
<appMPlayer
.NumberOfBarItems
+ 1;j
++ )
237 if ( appMPlayer
.barItems
[j
].msg
== event
)
238 { appMPlayer
.barItems
[j
].pressed
=set
; appMPlayer
.barItems
[j
].tmp
=0; }