X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fgui%2Fmacosx%2Fbookmarks.m;h=4a2c15c994f76878e2a3ea93fa8332d2de0647cf;hb=bfdbb36ff8b2e79e7654bc656738ee1b07d83e70;hp=86d13adfa007ed8689d2bb4f1760d764121a3527;hpb=dc723a84d4d51c3db68193966c46be82dd0f7e15;p=vlc diff --git a/modules/gui/macosx/bookmarks.m b/modules/gui/macosx/bookmarks.m index 86d13adfa0..4a2c15c994 100644 --- a/modules/gui/macosx/bookmarks.m +++ b/modules/gui/macosx/bookmarks.m @@ -1,7 +1,7 @@ /***************************************************************************** * bookmarks.m: MacOS X Bookmarks window ***************************************************************************** - * Copyright (C) 2005, 2006 the VideoLAN team + * Copyright (C) 2005 - 2007 the VideoLAN team * $Id$ * * Authors: Felix Kühne @@ -23,10 +23,10 @@ /***************************************************************************** - * Note: - * the code used to bind with VLC's modules is heavily based upon - * ../wxwidgets/bookmarks.cpp, written by Gildas Bazin. - * (he is a member of the VideoLAN team) + * Note: + * the code used to bind with VLC's modules is heavily based upon + * ../wxwidgets/bookmarks.cpp, written by Gildas Bazin. + * (he is a member of the VideoLAN team) *****************************************************************************/ @@ -35,9 +35,8 @@ *****************************************************************************/ #import "bookmarks.h" -#import "intf.h" #import "wizard.h" -#import +#import /***************************************************************************** * VLCExtended implementation @@ -78,16 +77,14 @@ static VLCBookmarks *_o_sharedInstance = nil; - (void)dealloc { if( p_old_input ) - { vlc_object_release( p_old_input ); - } [super dealloc]; } - (void)initStrings { /* localise the items */ - + /* main window */ [o_bookmarks_window setTitle: _NS("Bookmarks")]; [o_btn_add setTitle: _NS("Add")]; @@ -101,7 +98,7 @@ static VLCBookmarks *_o_sharedInstance = nil; setStringValue: _NS("Position")]; [[[o_tbl_dataTable tableColumnWithIdentifier:@"time_offset"] headerCell] setStringValue: _NS("Time")]; - + /* edit window */ [o_edit_btn_ok setTitle: _NS("OK")]; [o_edit_btn_cancel setTitle: _NS("Cancel")]; @@ -125,22 +122,22 @@ static VLCBookmarks *_o_sharedInstance = nil; VLC_OBJECT_INPUT, FIND_ANYWHERE ); if( !p_input ) return; - + seekpoint_t bookmark; vlc_value_t pos; bookmark.psz_name = NULL; bookmark.i_byte_offset = 0; bookmark.i_time_offset = 0; - + var_Get(p_intf, "position", &pos); bookmark.psz_name = _("Untitled"); input_Control( p_input, INPUT_GET_BYTE_POSITION, &bookmark.i_byte_offset ); var_Get( p_input, "time", &pos ); bookmark.i_time_offset = pos.i_time; input_Control( p_input, INPUT_ADD_BOOKMARK, &bookmark ); - + vlc_object_release( p_input ); - + [o_tbl_dataTable reloadData]; } @@ -150,14 +147,14 @@ static VLCBookmarks *_o_sharedInstance = nil; intf_thread_t * p_intf = VLCIntf; input_thread_t *p_input = (input_thread_t *)vlc_object_find( p_intf, VLC_OBJECT_INPUT, FIND_ANYWHERE ); - + if( !p_input ) return; input_Control( p_input, INPUT_CLEAR_BOOKMARKS ); vlc_object_release( p_input ); - + [o_tbl_dataTable reloadData]; } @@ -171,23 +168,19 @@ static VLCBookmarks *_o_sharedInstance = nil; VLC_OBJECT_INPUT, FIND_ANYWHERE ); seekpoint_t **pp_bookmarks; int i_bookmarks; - char * toBeReturned; - toBeReturned = ""; - int i_toBeReturned; - i_toBeReturned = 0; int row; row = [o_tbl_dataTable selectedRow]; - + if( !p_input ) { return; - } + } else if( input_Control( p_input, INPUT_GET_BOOKMARKS, &pp_bookmarks, &i_bookmarks ) != VLC_SUCCESS ) { vlc_object_release( p_input ); return; - } + } else if(row < 0) { vlc_object_release( p_input ); @@ -200,7 +193,7 @@ static VLCBookmarks *_o_sharedInstance = nil; [o_edit_fld_bytes setStringValue: [[NSNumber numberWithInt: pp_bookmarks[row]->i_byte_offset] stringValue]]; } - + p_old_input = p_input; vlc_object_release( p_input ); @@ -221,13 +214,13 @@ static VLCBookmarks *_o_sharedInstance = nil; - (IBAction)edit_ok:(id)sender { /* save field contents and close sheet */ - + intf_thread_t * p_intf = VLCIntf; seekpoint_t **pp_bookmarks; int i_bookmarks, i; input_thread_t *p_input = (input_thread_t *)vlc_object_find( p_intf, VLC_OBJECT_INPUT, FIND_ANYWHERE ); - + if( !p_input ) { NSBeginCriticalAlertSheet(_NS("No input"), _NS("OK"), @@ -246,25 +239,23 @@ static VLCBookmarks *_o_sharedInstance = nil; vlc_object_release( p_input ); return; } - + if( input_Control( p_input, INPUT_GET_BOOKMARKS, &pp_bookmarks, &i_bookmarks ) != VLC_SUCCESS ) { vlc_object_release( p_input ); return; - } + } i = [o_tbl_dataTable selectedRow]; - - if( pp_bookmarks[i]->psz_name ) - { + + if( pp_bookmarks[i]->psz_name ) free( pp_bookmarks[i]->psz_name ); - } - pp_bookmarks[i]->psz_name = strdup([[o_edit_fld_name stringValue] UTF8String]); + pp_bookmarks[i]->psz_name = strdup([[o_edit_fld_name stringValue] UTF8String]); pp_bookmarks[i]->i_byte_offset = [[o_edit_fld_bytes stringValue] intValue]; pp_bookmarks[i]->i_time_offset = ([[o_edit_fld_time stringValue] intValue] * 1000000); - + if( input_Control( p_input, INPUT_CHANGE_BOOKMARK, pp_bookmarks[i], i ) != VLC_SUCCESS ) { @@ -272,11 +263,11 @@ static VLCBookmarks *_o_sharedInstance = nil; vlc_object_release( p_input ); return; } - + [o_tbl_dataTable reloadData]; vlc_object_release( p_input ); - - + + [NSApp endSheet: o_edit_window]; [o_edit_window close]; } @@ -284,13 +275,13 @@ static VLCBookmarks *_o_sharedInstance = nil; - (IBAction)extract:(id)sender { /* extract */ - + intf_thread_t * p_intf = VLCIntf; - + if( [o_tbl_dataTable numberOfSelectedRows] < 2 ) { NSBeginAlertSheet(_NS("Invalid selection"), _NS("OK"), - @"", @"", o_bookmarks_window, nil, nil, nil, nil, + @"", @"", o_bookmarks_window, nil, nil, nil, nil, _NS("Two bookmarks have to be selected.")); return; } @@ -300,11 +291,11 @@ static VLCBookmarks *_o_sharedInstance = nil; if( !p_input ) { NSBeginCriticalAlertSheet(_NS("No input found"), _NS("OK"), - @"", @"", o_bookmarks_window, nil, nil, nil, nil, + @"", @"", o_bookmarks_window, nil, nil, nil, nil, _NS("The stream must be playing or paused for bookmarks to work.")); return; } - + seekpoint_t **pp_bookmarks; int i_bookmarks ; int i_first = -1; @@ -319,7 +310,7 @@ static VLCBookmarks *_o_sharedInstance = nil; { i_first = x; c = 1; - } + } else if (i_second == -1) { i_second = x; @@ -328,9 +319,9 @@ static VLCBookmarks *_o_sharedInstance = nil; } x = (x + 1); } - + msg_Dbg(p_intf, "got the bookmark-indexes"); - + if( input_Control( p_input, INPUT_GET_BOOKMARKS, &pp_bookmarks, &i_bookmarks ) != VLC_SUCCESS ) { @@ -340,13 +331,14 @@ static VLCBookmarks *_o_sharedInstance = nil; } msg_Dbg(p_intf, "calling wizard"); + char *psz_uri = input_item_GetURI( input_GetItem( p_input ) ); [[[VLCMain sharedInstance] getWizard] initWithExtractValuesFrom: [[NSNumber numberWithInt: (pp_bookmarks[i_first]->i_time_offset/1000000)] stringValue] to: [[NSNumber numberWithInt: (pp_bookmarks[i_second]->i_time_offset/1000000)] stringValue] - ofItem: [NSString stringWithUTF8String: - p_input->input.p_item->psz_uri]]; + ofItem: [NSString stringWithUTF8String: psz_uri]]; + free( psz_uri ); vlc_object_release( p_input ); msg_Dbg(p_intf, "released input"); } @@ -355,13 +347,10 @@ static VLCBookmarks *_o_sharedInstance = nil; { intf_thread_t * p_intf = VLCIntf; input_thread_t *p_input = - (input_thread_t *)vlc_object_find( p_intf, VLC_OBJECT_INPUT, + (input_thread_t *)vlc_object_find( p_intf, VLC_OBJECT_INPUT, FIND_ANYWHERE ); - - if( !p_input ) - { - return; - } + + if( !p_input ) return; input_Control( p_input, INPUT_SET_BOOKMARK, [o_tbl_dataTable selectedRow] ); @@ -373,19 +362,18 @@ static VLCBookmarks *_o_sharedInstance = nil; /* remove selected item */ intf_thread_t * p_intf = VLCIntf; input_thread_t *p_input = - (input_thread_t *)vlc_object_find( p_intf, VLC_OBJECT_INPUT, + (input_thread_t *)vlc_object_find( p_intf, VLC_OBJECT_INPUT, FIND_ANYWHERE ); - + if( !p_input ) return; int i_focused = [o_tbl_dataTable selectedRow]; + if( i_focused >= 0 ) - { input_Control( p_input, INPUT_DEL_BOOKMARK, i_focused ); - } vlc_object_release( p_input ); - + [o_tbl_dataTable reloadData]; } @@ -410,11 +398,8 @@ static VLCBookmarks *_o_sharedInstance = nil; VLC_OBJECT_INPUT, FIND_ANYWHERE ); seekpoint_t **pp_bookmarks; int i_bookmarks; - - if( !p_input ) - { - return 0; - } + + if( !p_input ) return 0; else if( input_Control( p_input, INPUT_GET_BOOKMARKS, &pp_bookmarks, &i_bookmarks ) != VLC_SUCCESS ) { @@ -436,15 +421,10 @@ static VLCBookmarks *_o_sharedInstance = nil; VLC_OBJECT_INPUT, FIND_ANYWHERE ); seekpoint_t **pp_bookmarks; int i_bookmarks; - char * toBeReturned; - toBeReturned = ""; - int i_toBeReturned; - i_toBeReturned = 0; - - if( !p_input ) - { - return @""; - } + char *toBeReturned; + int i_toBeReturned = 0; + + if( !p_input ) return @""; else if( input_Control( p_input, INPUT_GET_BOOKMARKS, &pp_bookmarks, &i_bookmarks ) != VLC_SUCCESS ) { @@ -458,7 +438,7 @@ static VLCBookmarks *_o_sharedInstance = nil; toBeReturned = pp_bookmarks[row]->psz_name; vlc_object_release( p_input ); return [NSString stringWithUTF8String: toBeReturned]; - } + } else if ([[theTableColumn identifier] isEqualToString: @"size_offset"]) { i_toBeReturned = pp_bookmarks[row]->i_byte_offset; @@ -474,11 +454,10 @@ static VLCBookmarks *_o_sharedInstance = nil; } else { - /* may not happen, but just in case */ + /* may not happen, just in case */ vlc_object_release( p_input ); msg_Err(p_intf, "unknown table column identifier (%s) while " "updating the bookmark table", [[theTableColumn identifier] - UTF8String] ); return @"unknown identifier"; }