comparison src/lirc/lirc.c @ 1034:b0cb6f8d4339 trunk

[svn] - lirc: works again with auddrct
author giacomo
date Sat, 12 May 2007 05:21:09 -0700
parents d124034ebea3
children 2649ba83333b
comparison
equal deleted inserted replaced
1033:34b998b6e3b2 1034:b0cb6f8d4339
39 #include <gtk/gtk.h> 39 #include <gtk/gtk.h>
40 40
41 #include <glib.h> 41 #include <glib.h>
42 #include <audacious/i18n.h> 42 #include <audacious/i18n.h>
43 43
44 #include "audacious/plugin.h" 44 #include <audacious/plugin.h>
45 #include "audacious/beepctrl.h" 45 #include <audacious/auddrct.h>
46 46
47 #include <lirc/lirc_client.h> 47 #include <lirc/lirc_client.h>
48 48
49 #include "lirc.h" 49 #include "lirc.h"
50 50
122 { 122 {
123 while((ret=lirc_code2char(config,code,&c))==0 && c!=NULL) 123 while((ret=lirc_code2char(config,code,&c))==0 && c!=NULL)
124 { 124 {
125 if(strcasecmp("PLAY",c)==0) 125 if(strcasecmp("PLAY",c)==0)
126 { 126 {
127 xmms_remote_play(lirc_plugin.xmms_session); 127 audacious_drct_play();
128 } 128 }
129 else if(strcasecmp("STOP",c)==0) 129 else if(strcasecmp("STOP",c)==0)
130 { 130 {
131 xmms_remote_stop(lirc_plugin.xmms_session); 131 audacious_drct_stop();
132 } 132 }
133 else if(strcasecmp("PAUSE",c)==0) 133 else if(strcasecmp("PAUSE",c)==0)
134 { 134 {
135 xmms_remote_pause(lirc_plugin.xmms_session); 135 audacious_drct_pause();
136 } 136 }
137 else if(strcasecmp("PLAYPAUSE",c) == 0) 137 else if(strcasecmp("PLAYPAUSE",c) == 0)
138 { 138 {
139 if(xmms_remote_is_playing(lirc_plugin. 139 if(audacious_drct_get_playing())
140 xmms_session)) 140 audacious_drct_pause();
141 xmms_remote_pause
142 (lirc_plugin.xmms_session);
143 else 141 else
144 xmms_remote_play 142 audacious_drct_play();
145 (lirc_plugin.xmms_session);
146 } 143 }
147 else if(strncasecmp("NEXT",c,4)==0) 144 else if(strncasecmp("NEXT",c,4)==0)
148 { 145 {
149 ptr=c+4; 146 ptr=c+4;
150 while(isspace(*ptr)) ptr++; 147 while(isspace(*ptr)) ptr++;
151 n=atoi(ptr); 148 n=atoi(ptr);
152 149
153 if(n<=0) n=1; 150 if(n<=0) n=1;
154 for(;n>0;n--) 151 for(;n>0;n--)
155 { 152 {
156 xmms_remote_playlist_next 153 audacious_drct_pl_next();
157 (lirc_plugin.xmms_session);
158 } 154 }
159 } 155 }
160 else if(strncasecmp("PREV",c,4)==0) 156 else if(strncasecmp("PREV",c,4)==0)
161 { 157 {
162 ptr=c+4; 158 ptr=c+4;
164 n=atoi(ptr); 160 n=atoi(ptr);
165 161
166 if(n<=0) n=1; 162 if(n<=0) n=1;
167 for(;n>0;n--) 163 for(;n>0;n--)
168 { 164 {
169 xmms_remote_playlist_prev 165 audacious_drct_pl_prev();
170 (lirc_plugin.xmms_session);
171 } 166 }
172 } 167 }
173 else if(strcasecmp("SHUFFLE",c)==0) 168 else if(strcasecmp("SHUFFLE",c)==0)
174 { 169 {
175 xmms_remote_toggle_shuffle(lirc_plugin.xmms_session); 170 audacious_drct_pl_shuffle_toggle();
176 } 171 }
177 else if(strcasecmp("REPEAT",c)==0) 172 else if(strcasecmp("REPEAT",c)==0)
178 { 173 {
179 xmms_remote_toggle_repeat(lirc_plugin.xmms_session); 174 audacious_drct_pl_repeat_toggle();
180 } 175 }
181 else if(strncasecmp("FWD",c,3)==0) 176 else if(strncasecmp("FWD",c,3)==0)
182 { 177 {
183 ptr=c+3; 178 ptr=c+3;
184 while(isspace(*ptr)) ptr++; 179 while(isspace(*ptr)) ptr++;
185 n=atoi(ptr)*1000; 180 n=atoi(ptr)*1000;
186 181
187 if(n<=0) n=5000; 182 if(n<=0) n=5000;
188 output_time=xmms_remote_get_output_time 183 output_time=audacious_drct_get_time();
189 (lirc_plugin.xmms_session); 184 playlist_pos=audacious_drct_pl_get_pos();
190 playlist_pos=xmms_remote_get_playlist_pos 185 playlist_time=audacious_drct_pl_get_time(playlist_pos);
191 (lirc_plugin.xmms_session);
192 playlist_time=xmms_remote_get_playlist_time
193 (lirc_plugin.xmms_session,
194 playlist_pos);
195 if(playlist_time-output_time<n) 186 if(playlist_time-output_time<n)
196 output_time=playlist_time-n; 187 output_time=playlist_time-n;
197 xmms_remote_jump_to_time 188 audacious_drct_seek(output_time+n);
198 (lirc_plugin.xmms_session,
199 output_time+n);
200 } 189 }
201 else if(strncasecmp("BWD",c,3)==0) 190 else if(strncasecmp("BWD",c,3)==0)
202 { 191 {
203 ptr=c+3; 192 ptr=c+3;
204 while(isspace(*ptr)) ptr++; 193 while(isspace(*ptr)) ptr++;
205 n=atoi(ptr)*1000; 194 n=atoi(ptr)*1000;
206 195
207 if(n<=0) n=5000; 196 if(n<=0) n=5000;
208 output_time=xmms_remote_get_output_time 197 output_time=audacious_drct_get_time();
209 (lirc_plugin.xmms_session);
210 if(output_time<n) 198 if(output_time<n)
211 output_time=n; 199 output_time=n;
212 xmms_remote_jump_to_time 200 audacious_drct_seek(output_time-n);
213 (lirc_plugin.xmms_session,
214 output_time-n);
215 } 201 }
216 else if(strncasecmp("VOL_UP",c,6)==0) 202 else if(strncasecmp("VOL_UP",c,6)==0)
217 { 203 {
218 ptr=c+6; 204 ptr=c+6;
219 while(isspace(*ptr)) ptr++; 205 while(isspace(*ptr)) ptr++;
220 n=atoi(ptr); 206 n=atoi(ptr);
221 if(n<=0) n=5; 207 if(n<=0) n=5;
222 208
223 v = xmms_remote_get_main_volume 209 audacious_drct_get_volume_main(&v);
224 (lirc_plugin.xmms_session);
225 if(v > (100-n)) v=100-n; 210 if(v > (100-n)) v=100-n;
226 xmms_remote_set_main_volume 211 audacious_drct_set_volume_main(v+n);
227 (lirc_plugin.xmms_session,v+n);
228 } 212 }
229 else if(strncasecmp("VOL_DOWN",c,8)==0) 213 else if(strncasecmp("VOL_DOWN",c,8)==0)
230 { 214 {
231 ptr=c+8; 215 ptr=c+8;
232 while (isspace(*ptr)) ptr++; 216 while (isspace(*ptr)) ptr++;
233 n=atoi(ptr); 217 n=atoi(ptr);
234 if(n<=0) n=5; 218 if(n<=0) n=5;
235 219
236 v = xmms_remote_get_main_volume 220 audacious_drct_get_volume_main(&v);
237 (lirc_plugin.xmms_session);
238 if(v<n) v=n; 221 if(v<n) v=n;
239 xmms_remote_set_main_volume 222 audacious_drct_set_volume_main(v-n);
240 (lirc_plugin.xmms_session,v-n);
241 } 223 }
242 else if(strcasecmp("QUIT",c)==0) 224 else if(strcasecmp("QUIT",c)==0)
243 { 225 {
244 xmms_remote_quit(lirc_plugin.xmms_session); 226 audacious_drct_quit();
245 } 227 }
246 else if(strcasecmp("MUTE",c)==0) 228 else if(strcasecmp("MUTE",c)==0)
247 { 229 {
248 if(mute==0) 230 if(mute==0)
249 { 231 {
250 mute=1; 232 mute=1;
251 /* store the master volume so 233 /* store the master volume so
252 we can restore it on unmute. */ 234 we can restore it on unmute. */
253 mute_vol = xmms_remote_get_main_volume 235 audacious_drct_get_volume_main(&mute_vol);
254 (lirc_plugin.xmms_session); 236 audacious_drct_set_volume_main(0);
255 xmms_remote_set_main_volume
256 (lirc_plugin.xmms_session, 0);
257 } 237 }
258 else 238 else
259 { 239 {
260 mute=0; 240 mute=0;
261 xmms_remote_set_main_volume 241 audacious_drct_set_volume_main(mute_vol);
262 (lirc_plugin.xmms_session,
263 mute_vol);
264 } 242 }
265 } 243 }
266 else if(strncasecmp("BAL_LEFT",c,8)==0) 244 else if(strncasecmp("BAL_LEFT",c,8)==0)
267 { 245 {
268 ptr=c+8; 246 ptr=c+8;
269 while(isspace(*ptr)) ptr++; 247 while(isspace(*ptr)) ptr++;
270 n=atoi(ptr); 248 n=atoi(ptr);
271 if(n<=0) n=5; 249 if(n<=0) n=5;
272 250
273 balance=xmms_remote_get_balance 251 audacious_drct_get_volume_balance(&balance);
274 (lirc_plugin.xmms_session);
275 balance-=n; 252 balance-=n;
276 if(balance<-100) balance=-100; 253 if(balance<-100) balance=-100;
277 xmms_remote_set_balance 254 audacious_drct_set_volume_balance(balance);
278 (lirc_plugin.xmms_session,balance);
279 } 255 }
280 else if(strncasecmp("BAL_RIGHT",c,9)==0) 256 else if(strncasecmp("BAL_RIGHT",c,9)==0)
281 { 257 {
282 ptr=c+9; 258 ptr=c+9;
283 while(isspace(*ptr)) ptr++; 259 while(isspace(*ptr)) ptr++;
284 n=atoi(ptr); 260 n=atoi(ptr);
285 if(n<=0) n=5; 261 if(n<=0) n=5;
286 262
287 balance=xmms_remote_get_balance 263 audacious_drct_get_volume_balance(&balance);
288 (lirc_plugin.xmms_session);
289 balance+=n; 264 balance+=n;
290 if(balance>100) balance=100; 265 if(balance>100) balance=100;
291 xmms_remote_set_balance 266 audacious_drct_set_volume_balance(balance);
292 (lirc_plugin.xmms_session,balance);
293 } 267 }
294 else if(strcasecmp("BAL_CENTER",c)==0) 268 else if(strcasecmp("BAL_CENTER",c)==0)
295 { 269 {
296 balance=0; 270 balance=0;
297 xmms_remote_set_balance 271 audacious_drct_set_volume_balance(balance);
298 (lirc_plugin.xmms_session,balance);
299 } 272 }
300 else if(strcasecmp("LIST",c)==0) 273 else if(strcasecmp("LIST",c)==0)
301 { 274 {
302 show_pl=xmms_remote_is_pl_win 275 show_pl=audacious_drct_pl_win_is_visible();
303 (lirc_plugin.xmms_session);
304 show_pl=(show_pl) ? 0:1; 276 show_pl=(show_pl) ? 0:1;
305 xmms_remote_pl_win_toggle 277 audacious_drct_pl_win_toggle(show_pl);
306 (lirc_plugin.xmms_session,show_pl);
307 } 278 }
308 else if(strcasecmp("PLAYLIST_CLEAR",c)==0) 279 else if(strcasecmp("PLAYLIST_CLEAR",c)==0)
309 { 280 {
310 gboolean pl_visible; 281 gboolean pl_visible;
311 282
312 pl_visible=xmms_remote_is_pl_win 283 pl_visible=audacious_drct_pl_win_is_visible();
313 (lirc_plugin.xmms_session); 284 audacious_drct_stop();
314 xmms_remote_stop(lirc_plugin.xmms_session); 285 audacious_drct_pl_clear();
315 xmms_remote_playlist_clear
316 (lirc_plugin.xmms_session);
317 /* This is to refresh window content */ 286 /* This is to refresh window content */
318 xmms_remote_pl_win_toggle 287 audacious_drct_pl_win_toggle(pl_visible);
319 (lirc_plugin.xmms_session,pl_visible);
320 } 288 }
321 else if(strncasecmp("PLAYLIST_ADD ",c,13)==0) 289 else if(strncasecmp("PLAYLIST_ADD ",c,13)==0)
322 { 290 {
323 gboolean pl_visible; 291 gboolean pl_visible;
324 GList list; 292 GList list;
325 293
326 pl_visible=xmms_remote_is_pl_win 294 pl_visible=audacious_drct_pl_win_is_visible();
327 (lirc_plugin.xmms_session);
328 list.prev=list.next=NULL; 295 list.prev=list.next=NULL;
329 list.data=c+13; 296 list.data=c+13;
330 xmms_remote_playlist_add 297 audacious_drct_pl_add(&list);
331 (lirc_plugin.xmms_session,&list);
332 /* This is to refresh window content */ 298 /* This is to refresh window content */
333 xmms_remote_pl_win_toggle 299 audacious_drct_pl_win_toggle(pl_visible);
334 (lirc_plugin.xmms_session,pl_visible);
335 } 300 }
336 else 301 else
337 { 302 {
338 fprintf(stderr,_("%s: unknown command \"%s\"\n"), 303 fprintf(stderr,_("%s: unknown command \"%s\"\n"),
339 plugin_name,c); 304 plugin_name,c);