From 2b78a774864846373c70d97332a0969dcb7ec8d3 Mon Sep 17 00:00:00 2001 From: Derk-Jan Hartman Date: Sat, 20 Sep 2003 19:37:54 +0000 Subject: [PATCH] * include/vlc/vlc.h: - removed the defines for i_mode concerning random and loop. We use config variables for all of these. * src/libvlc.h: - removed the enqueue playlist config option. It's no longer used. - added a repeat option. vlc will keep playing the same playlist_item, until the option is unset. * src/playlist/playlist.c: - added a repeat, random and loop variable. - wxwindows should use these as well I think. * modules/gui/macosx: - added the INTF_ABOUT_MSG to the about dialog. - implemented the about and repeat items. --- .../English.lproj/MainMenu.nib/classes.nib | 4 + .../English.lproj/MainMenu.nib/info.nib | 2 +- .../English.lproj/MainMenu.nib/objects.nib | Bin 50594 -> 50875 bytes include/vlc/vlc.h | 11 +-- modules/gui/macosx/about.m | 4 +- modules/gui/macosx/controls.h | 4 +- modules/gui/macosx/controls.m | 73 +++++++++++++++--- modules/gui/macosx/intf.h | 4 +- modules/gui/macosx/intf.m | 6 +- modules/gui/macosx/vout.m | 4 +- src/libvlc.h | 14 ++-- src/playlist/playlist.c | 22 ++++-- 12 files changed, 106 insertions(+), 42 deletions(-) diff --git a/extras/MacOSX/Resources/English.lproj/MainMenu.nib/classes.nib b/extras/MacOSX/Resources/English.lproj/MainMenu.nib/classes.nib index 6116211b84..b6e5d083c2 100644 --- a/extras/MacOSX/Resources/English.lproj/MainMenu.nib/classes.nib +++ b/extras/MacOSX/Resources/English.lproj/MainMenu.nib/classes.nib @@ -27,6 +27,8 @@ pause = id; play = id; prev = id; + random = id; + repeat = id; slower = id; stop = id; toggleVar = id; @@ -130,7 +132,9 @@ "o_mi_previous" = id; "o_mi_program" = id; "o_mi_quit" = id; + "o_mi_random" = id; "o_mi_readme" = id; + "o_mi_repeat" = id; "o_mi_reportabug" = id; "o_mi_screen" = id; "o_mi_select_all" = id; diff --git a/extras/MacOSX/Resources/English.lproj/MainMenu.nib/info.nib b/extras/MacOSX/Resources/English.lproj/MainMenu.nib/info.nib index 24dd17e8e8..e79f79e539 100644 --- a/extras/MacOSX/Resources/English.lproj/MainMenu.nib/info.nib +++ b/extras/MacOSX/Resources/English.lproj/MainMenu.nib/info.nib @@ -23,7 +23,7 @@ IBOpenObjects - 636 + 29 IBSystem Version 6L60 diff --git a/extras/MacOSX/Resources/English.lproj/MainMenu.nib/objects.nib b/extras/MacOSX/Resources/English.lproj/MainMenu.nib/objects.nib index f5fbdb2aa597ff8d6c5c4c3ac1d73c516a14341c..f8113dae160c10952424f6259268960cf30d1aa3 100644 GIT binary patch literal 50875 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 GVE-QwTM#w? diff --git a/include/vlc/vlc.h b/include/vlc/vlc.h index e823b028ca..46b26d1a89 100644 --- a/include/vlc/vlc.h +++ b/include/vlc/vlc.h @@ -2,7 +2,7 @@ * vlc.h: global header for vlc ***************************************************************************** * Copyright (C) 1998, 1999, 2000 VideoLAN - * $Id: vlc.h,v 1.26 2003/09/07 22:45:16 fenrir Exp $ + * $Id: vlc.h,v 1.27 2003/09/20 19:37:53 hartman Exp $ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -97,15 +97,6 @@ struct vlc_list_t #define PLAYLIST_END -666 -/* Playlist parsing mode */ -#define PLAYLIST_REPEAT_CURRENT 0 /* Keep playing current item */ -#define PLAYLIST_FORWARD 1 /* Parse playlist until end */ -#define PLAYLIST_BACKWARD -1 /* Parse backwards */ -#define PLAYLIST_FORWARD_LOOP 2 /* Parse playlist and loop */ -#define PLAYLIST_BACKWARD_LOOP -2 /* Parse backwards and loop */ -#define PLAYLIST_RANDOM 3 /* Shuffle play */ -#define PLAYLIST_REVERSE_RANDOM -3 /* Reverse shuffle play */ - /** Playlist commands */ typedef enum { PLAYLIST_PLAY, /**< Starts playing. No arg. */ diff --git a/modules/gui/macosx/about.m b/modules/gui/macosx/about.m index b5ddbda99b..cf3af32fcb 100644 --- a/modules/gui/macosx/about.m +++ b/modules/gui/macosx/about.m @@ -2,7 +2,7 @@ * about.m: MacOS X About Panel ***************************************************************************** * Copyright (C) 2001-2003 VideoLAN - * $Id: about.m,v 1.2 2003/05/11 23:17:30 hartman Exp $ + * $Id: about.m,v 1.3 2003/09/20 19:37:53 hartman Exp $ * * Authors: Derk-Jan Hartman * @@ -84,7 +84,7 @@ static VLAboutBox *_o_sharedInstance = nil; o_credits = [[NSString alloc] initWithData: [NSData dataWithContentsOfFile: o_credits_path ] encoding:NSWindowsCP1252StringEncoding]; /* Parse the authors string */ - NSMutableString *o_outString = [NSMutableString string]; + NSMutableString *o_outString = [NSMutableString stringWithFormat: @"%@\n\n", _NS(INTF_ABOUT_MSG)]; NSScanner *o_scan_credits = [NSScanner scannerWithString: o_credits]; NSCharacterSet *o_stopSet = [NSCharacterSet characterSetWithCharactersInString:@"\n\r"]; diff --git a/modules/gui/macosx/controls.h b/modules/gui/macosx/controls.h index fa4e0fcd64..8e767a54a3 100644 --- a/modules/gui/macosx/controls.h +++ b/modules/gui/macosx/controls.h @@ -2,7 +2,7 @@ * controls.h: MacOS X interface plugin ***************************************************************************** * Copyright (C) 2002-2003 VideoLAN - * $Id: controls.h,v 1.6 2003/06/03 22:21:46 hartman Exp $ + * $Id: controls.h,v 1.7 2003/09/20 19:37:53 hartman Exp $ * * Authors: Jon Lech Johansen * Christophe Massiot @@ -41,6 +41,8 @@ - (IBAction)prev:(id)sender; - (IBAction)next:(id)sender; +- (IBAction)random:(id)sender; +- (IBAction)repeat:(id)sender; - (IBAction)loop:(id)sender; - (IBAction)forward:(id)sender; diff --git a/modules/gui/macosx/controls.m b/modules/gui/macosx/controls.m index 7e55915b89..1229bd5cc9 100644 --- a/modules/gui/macosx/controls.m +++ b/modules/gui/macosx/controls.m @@ -2,7 +2,7 @@ * controls.m: MacOS X interface plugin ***************************************************************************** * Copyright (C) 2002-2003 VideoLAN - * $Id: controls.m,v 1.48 2003/09/20 13:46:00 hartman Exp $ + * $Id: controls.m,v 1.49 2003/09/20 19:37:53 hartman Exp $ * * Authors: Jon Lech Johansen * Christophe Massiot @@ -207,10 +207,46 @@ vlc_object_release( p_playlist ); } -- (IBAction)loop:(id)sender +- (IBAction)random:(id)sender +{ + intf_thread_t * p_intf = [NSApp getIntf]; + vlc_value_t val; + playlist_t * p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, + FIND_ANYWHERE ); + if( p_playlist == NULL ) + { + return; + } + + var_Get( p_playlist, "random", &val ); + val.b_bool = !val.b_bool; + var_Set( p_playlist, "random", val ); + + vlc_object_release( p_playlist ); +} + +- (IBAction)repeat:(id)sender { intf_thread_t * p_intf = [NSApp getIntf]; + vlc_value_t val; + playlist_t * p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, + FIND_ANYWHERE ); + if( p_playlist == NULL ) + { + return; + } + + var_Get( p_playlist, "repeat", &val ); + val.b_bool = !val.b_bool; + var_Set( p_playlist, "repeat", val ); + + vlc_object_release( p_playlist ); +} +- (IBAction)loop:(id)sender +{ + intf_thread_t * p_intf = [NSApp getIntf]; + vlc_value_t val; playlist_t * p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, FIND_ANYWHERE ); if( p_playlist == NULL ) @@ -218,8 +254,9 @@ return; } - config_PutInt( p_playlist, "loop", - !config_GetInt( p_playlist, "loop" ) ); + var_Get( p_playlist, "loop", &val ); + val.b_bool = !val.b_bool; + var_Set( p_playlist, "loop", val ); vlc_object_release( p_playlist ); } @@ -232,7 +269,7 @@ if( p_input != NULL ) { vlc_value_t time; - time.f_float = 5; + time.i_time = 5 * 1000000; var_Set( p_input, "time-offset", time ); vlc_object_release( p_input ); } @@ -246,7 +283,7 @@ if( p_input != NULL ) { vlc_value_t time; - time.f_float = -5; + time.i_time = -5 * 1000000; var_Set( p_input, "time-offset", time ); vlc_object_release( p_input ); } @@ -589,8 +626,8 @@ - (BOOL)validateMenuItem:(NSMenuItem *)o_mi { BOOL bEnabled = TRUE; + vlc_value_t val; intf_thread_t * p_intf = [NSApp getIntf]; - playlist_t * p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, FIND_ANYWHERE ); @@ -641,11 +678,25 @@ } } } - else if( [[o_mi title] isEqualToString: _NS("Loop")] ) + else if( [[o_mi title] isEqualToString: _NS("Shuffle")] ) { - int i_state = config_GetInt( p_playlist, "loop" ) ? - NSOnState : NSOffState; - + int i_state; + var_Get( p_playlist, "random", &val ); + i_state = val.b_bool ? NSOnState : NSOffState; + [o_mi setState: i_state]; + } + else if( [[o_mi title] isEqualToString: _NS("Repeat Item")] ) + { + int i_state; + var_Get( p_playlist, "repeat", &val ); + i_state = val.b_bool ? NSOnState : NSOffState; + [o_mi setState: i_state]; + } + else if( [[o_mi title] isEqualToString: _NS("Repeat Playlist")] ) + { + int i_state; + var_Get( p_playlist, "loop", &val ); + i_state = val.b_bool ? NSOnState : NSOffState; [o_mi setState: i_state]; } else if( [[o_mi title] isEqualToString: _NS("Step Forward")] || diff --git a/modules/gui/macosx/intf.h b/modules/gui/macosx/intf.h index 47bbc004af..ae256bbb43 100644 --- a/modules/gui/macosx/intf.h +++ b/modules/gui/macosx/intf.h @@ -2,7 +2,7 @@ * intf.h: MacOS X interface plugin ***************************************************************************** * Copyright (C) 2002-2003 VideoLAN - * $Id: intf.h,v 1.44 2003/09/20 13:46:00 hartman Exp $ + * $Id: intf.h,v 1.45 2003/09/20 19:37:53 hartman Exp $ * * Authors: Jon Lech Johansen * Christophe Massiot @@ -160,6 +160,8 @@ struct intf_sys_t IBOutlet id o_mi_slower; IBOutlet id o_mi_previous; IBOutlet id o_mi_next; + IBOutlet id o_mi_random; + IBOutlet id o_mi_repeat; IBOutlet id o_mi_loop; IBOutlet id o_mi_fwd; IBOutlet id o_mi_bwd; diff --git a/modules/gui/macosx/intf.m b/modules/gui/macosx/intf.m index bec07f92c5..443a0696e9 100644 --- a/modules/gui/macosx/intf.m +++ b/modules/gui/macosx/intf.m @@ -2,7 +2,7 @@ * intf.m: MacOS X interface plugin ***************************************************************************** * Copyright (C) 2002-2003 VideoLAN - * $Id: intf.m,v 1.95 2003/09/20 13:46:00 hartman Exp $ + * $Id: intf.m,v 1.96 2003/09/20 19:37:53 hartman Exp $ * * Authors: Jon Lech Johansen * Christophe Massiot @@ -347,7 +347,9 @@ int PlaylistChanged( vlc_object_t *p_this, const char *psz_variable, [o_mi_slower setTitle: _NS("Slower")]; [o_mi_previous setTitle: _NS("Previous")]; [o_mi_next setTitle: _NS("Next")]; - [o_mi_loop setTitle: _NS("Loop")]; + [o_mi_random setTitle: _NS("Shuffle")]; + [o_mi_repeat setTitle: _NS("Repeat Item")]; + [o_mi_loop setTitle: _NS("Repeat Playlist")]; [o_mi_fwd setTitle: _NS("Step Forward")]; [o_mi_bwd setTitle: _NS("Step Backward")]; [o_mi_program setTitle: _NS("Program")]; diff --git a/modules/gui/macosx/vout.m b/modules/gui/macosx/vout.m index 2ef183fe3c..2d0a058e74 100644 --- a/modules/gui/macosx/vout.m +++ b/modules/gui/macosx/vout.m @@ -3,7 +3,7 @@ * vout.m: MacOS X video output plugin ***************************************************************************** * Copyright (C) 2001-2003 VideoLAN - * $Id: vout.m,v 1.56 2003/09/20 13:46:00 hartman Exp $ + * $Id: vout.m,v 1.57 2003/09/20 19:37:53 hartman Exp $ * * Authors: Colin Delacroix * Florian G. Pflug @@ -1412,7 +1412,7 @@ static void QTFreePicture( vout_thread_t *p_vout, picture_t *p_pic ) backing: NSBackingStoreBuffered defer: NO screen: o_screen]; - [p_vout->p_sys->o_window setLevel: NSPopUpMenuWindowLevel - 1]; + //[p_vout->p_sys->o_window setLevel: NSPopUpMenuWindowLevel - 1]; p_vout->p_sys->b_mouse_moved = YES; p_vout->p_sys->i_time_mouse_last_moved = mdate(); } diff --git a/src/libvlc.h b/src/libvlc.h index 335ecdbdd3..734a589980 100644 --- a/src/libvlc.h +++ b/src/libvlc.h @@ -2,7 +2,7 @@ * libvlc.h: main libvlc header ***************************************************************************** * Copyright (C) 1998-2002 VideoLAN - * $Id: libvlc.h,v 1.85 2003/09/20 02:47:41 hartman Exp $ + * $Id: libvlc.h,v 1.86 2003/09/20 19:37:54 hartman Exp $ * * Authors: Vincent Seguin * Samuel Hocevar @@ -374,15 +374,15 @@ static char *ppsz_language[] = { "auto", "en", "en_GB", "es", "de", "fr", "it", "When selected, VLC will randomly play files in the playlist until " \ "interrupted.") -#define ENQUEUE_TEXT N_("Enqueue items in playlist") -#define ENQUEUE_LONGTEXT N_( \ - "If you want VLC to add items to the playlist as you open them, then " \ - "enable this option.") - #define LOOP_TEXT N_("Loop playlist on end") #define LOOP_LONGTEXT N_( \ "If you want VLC to keep playing the playlist indefinitely then enable " \ "this option.") + +#define REPEAT_TEXT N_("Repeat the current playlistitem") +#define REPEAT_LONGTEXT N_( \ + "When this is active VLC will keep playing the current playlistitem " \ + "over and over again.") #define MEMCPY_TEXT N_("Memory copy module") #define MEMCPY_LONGTEXT N_( \ @@ -606,8 +606,8 @@ vlc_module_begin(); /* Playlist options */ add_category_hint( N_("Playlist"), NULL, VLC_FALSE ); add_bool_with_short( "random", 'Z', 0, NULL, RANDOM_TEXT, RANDOM_LONGTEXT, VLC_FALSE ); - add_bool( "enqueue", 0, NULL, ENQUEUE_TEXT, ENQUEUE_LONGTEXT, VLC_FALSE ); add_bool( "loop", 0, NULL, LOOP_TEXT, LOOP_LONGTEXT, VLC_FALSE ); + add_bool( "repeat", 0, NULL, REPEAT_TEXT, REPEAT_LONGTEXT, VLC_TRUE ); /* Misc options */ add_category_hint( N_("Miscellaneous"), NULL, VLC_TRUE ); diff --git a/src/playlist/playlist.c b/src/playlist/playlist.c index c36aa79f28..ccff3f762c 100644 --- a/src/playlist/playlist.c +++ b/src/playlist/playlist.c @@ -2,7 +2,7 @@ * playlist.c : Playlist management functions ***************************************************************************** * Copyright (C) 1999-2001 VideoLAN - * $Id: playlist.c,v 1.53 2003/09/19 21:53:48 fenrir Exp $ + * $Id: playlist.c,v 1.54 2003/09/20 19:37:54 hartman Exp $ * * Authors: Samuel Hocevar * @@ -73,6 +73,10 @@ playlist_t * __playlist_Create ( vlc_object_t *p_parent ) var_Create( p_playlist, "intf-show", VLC_VAR_BOOL ); val.b_bool = VLC_TRUE; var_Set( p_playlist, "intf-show", val ); + + var_Create( p_playlist, "random", VLC_VAR_BOOL | VLC_VAR_DOINHERIT ); + var_Create( p_playlist, "repeat", VLC_VAR_BOOL | VLC_VAR_DOINHERIT ); + var_Create( p_playlist, "loop", VLC_VAR_BOOL | VLC_VAR_DOINHERIT ); p_playlist->p_input = NULL; p_playlist->i_status = PLAYLIST_STOPPED; @@ -784,7 +788,7 @@ static void RunThread ( playlist_t *p_playlist ) static void SkipItem( playlist_t *p_playlist, int i_arg ) { int i_oldindex = p_playlist->i_index; - vlc_bool_t b_random; + vlc_bool_t b_random, b_repeat, b_loop; vlc_value_t val; /* If the playlist is empty, there is no current item */ @@ -794,7 +798,12 @@ static void SkipItem( playlist_t *p_playlist, int i_arg ) return; } - b_random = config_GetInt( p_playlist, "random" ); + var_Get( p_playlist, "random", &val ); + b_random = val.b_bool; + var_Get( p_playlist, "repeat", &val ); + b_repeat = val.b_bool; + var_Get( p_playlist, "loop", &val ); + b_loop = val.b_bool; /* Increment */ if( b_random ) @@ -809,7 +818,10 @@ static void SkipItem( playlist_t *p_playlist, int i_arg ) i_arg = (int)((float)p_playlist->i_size * rand() / (RAND_MAX+1.0)); } } - + if( b_repeat ) + { + i_arg = 0; + } p_playlist->i_index += i_arg; /* Boundary check */ @@ -817,7 +829,7 @@ static void SkipItem( playlist_t *p_playlist, int i_arg ) { if( p_playlist->i_status == PLAYLIST_STOPPED || b_random - || config_GetInt( p_playlist, "loop" ) ) + || b_loop ) { p_playlist->i_index -= p_playlist->i_size * ( p_playlist->i_index / p_playlist->i_size ); -- 2.39.5