/*****************************************************************************
* controls.h: MacOS X interface module
*****************************************************************************
- * Copyright (C) 2002-2005 the VideoLAN team
+ * Copyright (C) 2002-2006 the VideoLAN team
* $Id$
*
* Authors: Jon Lech Johansen <jon-vl@nanocrew.net>
IBOutlet id o_btn_fullscreen;
IBOutlet id o_volumeslider;
+
+ IBOutlet id o_btn_shuffle;
+ IBOutlet id o_btn_addNode;
+ IBOutlet id o_btn_repeat;
IBOutlet id o_specificTime_cancel_btn;
IBOutlet id o_specificTime_enter_fld;
- (IBAction)random:(id)sender;
- (IBAction)repeat:(id)sender;
- (IBAction)loop:(id)sender;
+- (IBAction)repeatButtonAction:(id)sender;
+
+/* the three ugly helpers again */
+- (void)repeatOne;
+- (void)repeatAll;
+- (void)repeatOff;
+- (void)shuffle;
- (IBAction)forward:(id)sender;
- (IBAction)backward:(id)sender;
#include <sys/param.h> /* for MAXPATHLEN */
#include <string.h>
-#include "intf.h"
-#include "vout.h"
-#include "open.h"
-#include "controls.h"
+#import "intf.h"
+#import "vout.h"
+#import "open.h"
+#import "controls.h"
+#import "playlist.h"
#include <vlc_osd.h>
vlc_object_release( p_playlist );
}
+/* three little ugly helpers */
+- (void)repeatOne
+{
+ [o_btn_repeat setImage: [[NSImage alloc] initWithContentsOfFile:
+ [[NSBundle mainBundle] pathForImageResource:@"repeat_single_embedded_blue.png"]]];
+ [o_btn_repeat setAlternateImage: [[NSImage alloc] initWithContentsOfFile:
+ [[NSBundle mainBundle] pathForImageResource:@"repeat_embedded_blue.png"]]];
+}
+- (void)repeatAll
+{
+ [o_btn_repeat setImage: [[NSImage alloc] initWithContentsOfFile:
+ [[NSBundle mainBundle] pathForImageResource:@"repeat_embedded_blue.png"]]];
+ [o_btn_repeat setAlternateImage: [[NSImage alloc] initWithContentsOfFile:
+ [[NSBundle mainBundle] pathForImageResource:@"repeat_embedded.png"]]];
+}
+- (void)repeatOff
+{
+ [o_btn_repeat setImage: [[NSImage alloc] initWithContentsOfFile:
+ [[NSBundle mainBundle] pathForImageResource:@"repeat_embedded.png"]]];
+ [o_btn_repeat setAlternateImage: [[NSImage alloc] initWithContentsOfFile:
+ [[NSBundle mainBundle] pathForImageResource:@"repeat_single_embedded_blue.png"]]];
+}
+- (void)shuffle
+{
+ vlc_value_t val;
+ playlist_t *p_playlist = pl_Yield( VLCIntf );
+ var_Get( p_playlist, "random", &val );
+ [o_btn_shuffle setState: val.b_bool];
+ vlc_object_release( p_playlist );
+}
+
+- (IBAction)repeatButtonAction:(id)sender
+{
+ vlc_value_t looping,repeating;
+ intf_thread_t * p_intf = VLCIntf;
+ playlist_t * p_playlist = pl_Yield( p_intf );
+
+ var_Get( p_playlist, "repeat", &repeating );
+ var_Get( p_playlist, "loop", &looping );
+
+ [[o_btn_repeat image] release];
+ [[o_btn_repeat alternateImage] release];
+
+ if( !repeating.b_bool && !looping.b_bool )
+ {
+ /* was: no repeating at all, switching to Repeat One */
+
+ /* set our button's look */
+ [self repeatOne];
+
+ /* prepare core communication */
+ repeating.b_bool = VLC_TRUE;
+ looping.b_bool = VLC_FALSE;
+ config_PutInt( p_playlist, "repeat", 1 );
+ config_PutInt( p_playlist, "loop", 0 );
+
+ /* show the change */
+ vout_OSDMessage( p_intf, DEFAULT_CHAN, _( "Repeat One" ) );
+ }
+ else if( repeating.b_bool && !looping.b_bool )
+ {
+ /* was: Repeat One, switching to Repeat All */
+
+ /* set our button's look */
+ [self repeatAll];
+
+ /* prepare core communication */
+ repeating.b_bool = VLC_FALSE;
+ looping.b_bool = VLC_TRUE;
+ config_PutInt( p_playlist, "repeat", 0 );
+ config_PutInt( p_playlist, "loop", 1 );
+
+ /* show the change */
+ vout_OSDMessage( p_intf, DEFAULT_CHAN, _( "Repeat All" ) );
+ }
+ else
+ {
+ /* was: Repeat All or bug in VLC, switching to Repeat Off */
+
+ /* set our button's look */
+ [self repeatOff];
+
+ /* prepare core communication */
+ repeating.b_bool = VLC_FALSE;
+ looping.b_bool = VLC_FALSE;
+ config_PutInt( p_playlist, "repeat", 0 );
+ config_PutInt( p_playlist, "loop", 0 );
+
+ /* show the change */
+ vout_OSDMessage( p_intf, DEFAULT_CHAN, _( "Repeat Off" ) );
+ }
+
+ /* communicate with core and the main intf loop */
+ var_Set( p_playlist, "repeat", repeating );
+ var_Set( p_playlist, "loop", looping );
+ p_intf->p_sys->b_playmode_update = VLC_TRUE;
+ p_intf->p_sys->b_intf_update = VLC_TRUE;
+
+ vlc_object_release( p_playlist );
+}
+
+
- (IBAction)repeat:(id)sender
{
vlc_value_t val;
#include <sys/mount.h>
#include <vlc_keys.h>
-#include "intf.h"
+#import "intf.h"
#import "wizard.h"
#import "bookmarks.h"
#import "playlistinfo.h"
-#include "playlist.h"
-#include "controls.h"
-#include "vlc_osd.h"
-#include "misc.h"
+#import "playlist.h"
+#import "controls.h"
+#import "vlc_osd.h"
+#import "misc.h"
#import <vlc_interaction.h>
/*****************************************************************************
if( o_value == nil )
{
o_value = [[NSValue valueWithPointer: p_return] retain];
- msg_Err( VLCIntf, @"missing playlist item's pointer value" );
+ msg_Err( VLCIntf, "missing playlist item's pointer value" );
}
return o_value;
}
[o_status_field setStringValue: [NSString stringWithFormat:
_NS("No items in the playlist")]];
- [o_random_ckb setTitle: _NS("Random")];
#if 0
[o_search_button setTitle: _NS("Search")];
#endif
[o_search_field setToolTip: _NS("Search in Playlist")];
- [[o_loop_popup itemAtIndex:0] setTitle: _NS("Standard Play")];
- [[o_loop_popup itemAtIndex:1] setTitle: _NS("Repeat One")];
- [[o_loop_popup itemAtIndex:2] setTitle: _NS("Repeat All")];
[o_mi_addNode setTitle: _NS("Add Folder to Playlist")];
[o_save_accessory_text setStringValue: _NS("File Format:")];
var_Get( p_playlist, "repeat", &val );
if( val.b_bool == VLC_TRUE )
{
- [o_loop_popup selectItemAtIndex: 1];
+ [[[VLCMain sharedInstance] getControls] repeatOne];
}
else if( val2.b_bool == VLC_TRUE )
{
- [o_loop_popup selectItemAtIndex: 2];
+ [[[VLCMain sharedInstance] getControls] repeatAll];
}
else
{
- [o_loop_popup selectItemAtIndex: 0];
+ [[[VLCMain sharedInstance] getControls] repeatOff];
}
- var_Get( p_playlist, "random", &val );
- [o_random_ckb setState: val.b_bool];
+ [[[VLCMain sharedInstance] getControls] shuffle];
vlc_object_release( p_playlist );
}
[self playlistUpdated];
vlc_object_release( p_playlist );
}
-
+/* FIXME!!
- (IBAction)handlePopUp:(id)sender
{
vlc_object_release( p_playlist );
[self playlistUpdated];
}
-
+*/
- (NSMutableArray *)subSearchItem:(playlist_item_t *)p_item
{
playlist_t *p_playlist = pl_Yield( VLCIntf );