From: Felix Paul Kühne Date: Sun, 17 Sep 2006 22:32:39 +0000 (+0000) Subject: * implemented the previously committed playmode buttons and fixed the playmode saving X-Git-Tag: 0.9.0-test0~10242 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=0b66060b624b9987ac79993099754c1b0d87d0cf;p=vlc * implemented the previously committed playmode buttons and fixed the playmode saving --- diff --git a/extras/MacOSX/Resources/English.lproj/MainMenu.nib/classes.nib b/extras/MacOSX/Resources/English.lproj/MainMenu.nib/classes.nib index e420b2b50c..8728980030 100644 --- a/extras/MacOSX/Resources/English.lproj/MainMenu.nib/classes.nib +++ b/extras/MacOSX/Resources/English.lproj/MainMenu.nib/classes.nib @@ -22,6 +22,7 @@ prev = id; random = id; repeat = id; + repeatButtonAction = id; slower = id; stop = id; toggleVar = id; @@ -33,6 +34,9 @@ CLASS = VLCControls; LANGUAGE = ObjC; OUTLETS = { + "o_btn_addNode" = id; + "o_btn_repeat" = id; + "o_btn_shuffle" = id; "o_fs_panel" = id; "o_main" = id; "o_specificTime_cancel_btn" = id; @@ -352,7 +356,6 @@ ACTIONS = { addNode = id; deleteItem = id; - handlePopUp = id; playItem = id; preparseItem = id; recursiveExpandNode = id; diff --git a/extras/MacOSX/Resources/English.lproj/MainMenu.nib/info.nib b/extras/MacOSX/Resources/English.lproj/MainMenu.nib/info.nib index 55c60c43af..b5c860c02c 100644 --- a/extras/MacOSX/Resources/English.lproj/MainMenu.nib/info.nib +++ b/extras/MacOSX/Resources/English.lproj/MainMenu.nib/info.nib @@ -26,11 +26,9 @@ IBOpenObjects 21 - 2197 - 2416 2730 + 2197 29 - 2769 IBSystem Version 8J135 diff --git a/extras/MacOSX/Resources/English.lproj/MainMenu.nib/keyedobjects.nib b/extras/MacOSX/Resources/English.lproj/MainMenu.nib/keyedobjects.nib index 9558cf51da..3006014dfc 100644 Binary files a/extras/MacOSX/Resources/English.lproj/MainMenu.nib/keyedobjects.nib and b/extras/MacOSX/Resources/English.lproj/MainMenu.nib/keyedobjects.nib differ diff --git a/modules/gui/macosx/controls.h b/modules/gui/macosx/controls.h index 311645a9d1..a95d5067fd 100644 --- a/modules/gui/macosx/controls.h +++ b/modules/gui/macosx/controls.h @@ -1,7 +1,7 @@ /***************************************************************************** * 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 @@ -34,6 +34,10 @@ 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; @@ -57,6 +61,13 @@ - (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; diff --git a/modules/gui/macosx/controls.m b/modules/gui/macosx/controls.m index 1e1627d60a..d78236a7c4 100644 --- a/modules/gui/macosx/controls.m +++ b/modules/gui/macosx/controls.m @@ -31,10 +31,11 @@ #include /* for MAXPATHLEN */ #include -#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 @@ -173,6 +174,108 @@ 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; diff --git a/modules/gui/macosx/intf.m b/modules/gui/macosx/intf.m index ed4d5cb53f..e89796e2ec 100644 --- a/modules/gui/macosx/intf.m +++ b/modules/gui/macosx/intf.m @@ -477,8 +477,8 @@ static VLCMain *_o_sharedMainInstance = nil; var_AddCallback( p_intf, "interaction", InteractCallback, self ); p_intf->b_interaction = VLC_TRUE; - // First we setup the blue selection box - another window that will be attached as a child window - // to this one, and will be moved by timers as needed. + /* update the playmode stuff */ + p_intf->p_sys->b_playmode_update = VLC_TRUE; nib_main_loaded = TRUE; } @@ -916,7 +916,9 @@ static VLCMain *_o_sharedMainInstance = nil; - (id)getPlaylist { - return o_playlist; + if( o_playlist ) + return o_playlist; + return nil; } - (id)getInfo diff --git a/modules/gui/macosx/playlist.h b/modules/gui/macosx/playlist.h index 31d33e9c59..46e425cdf5 100644 --- a/modules/gui/macosx/playlist.h +++ b/modules/gui/macosx/playlist.h @@ -73,8 +73,6 @@ IBOutlet id o_playlist_view; IBOutlet id o_status_field; IBOutlet id o_search_field; - IBOutlet id o_random_ckb; - IBOutlet id o_loop_popup; IBOutlet id o_mi_save_playlist; IBOutlet id o_ctx_menu; @@ -118,7 +116,6 @@ - (void)searchfieldChanged:(NSNotification *)o_notification; - (NSMenu *)menuForEvent:(NSEvent *)o_event; -- (IBAction)handlePopUp:(id)sender; - (IBAction)searchItem:(id)sender; - (void)playlistUpdated; diff --git a/modules/gui/macosx/playlist.m b/modules/gui/macosx/playlist.m index a7af30c958..a2c99976f0 100644 --- a/modules/gui/macosx/playlist.m +++ b/modules/gui/macosx/playlist.m @@ -42,14 +42,14 @@ #include #include -#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 /***************************************************************************** @@ -204,7 +204,7 @@ NSLog( @"%d children for %s", i_return, p_item->p_input->psz_name ); 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; } @@ -428,14 +428,10 @@ NSLog( @"expandable" ); [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:")]; @@ -492,19 +488,18 @@ NSLog( @"expandable" ); 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 ); } @@ -1072,7 +1067,7 @@ NSLog( @"expandable" ); [self playlistUpdated]; vlc_object_release( p_playlist ); } - +/* FIXME!! - (IBAction)handlePopUp:(id)sender { @@ -1114,7 +1109,7 @@ NSLog( @"expandable" ); vlc_object_release( p_playlist ); [self playlistUpdated]; } - +*/ - (NSMutableArray *)subSearchItem:(playlist_item_t *)p_item { playlist_t *p_playlist = pl_Yield( VLCIntf );