📄 prefs.m
字号:
if( p_item->i_type & CONFIG_ITEM ) i_options ++; if( i_options > 0 && i_category >= 0 && i_subcategory >= 0 ) break; } while( p_item->i_type != CONFIG_HINT_END && p_item++ ); if( !i_options ) continue; /* Find the right category item */ long cookie; vlc_bool_t b_found = VLC_FALSE; unsigned int i; VLCTreeItem* p_category_item, * p_subcategory_item; for (i = 0 ; i < [o_children count] ; i++) { p_category_item = [o_children objectAtIndex: i]; if( p_category_item->i_object_id == i_category ) { b_found = VLC_TRUE; break; } } if( !b_found ) continue; /* Find subcategory item */ b_found = VLC_FALSE; cookie = -1; for (i = 0 ; i < [p_category_item->o_children count] ; i++) { p_subcategory_item = [p_category_item->o_children objectAtIndex: i]; if( p_subcategory_item->i_object_id == i_subcategory ) { b_found = VLC_TRUE; break; } } if( !b_found ) p_subcategory_item = p_category_item; [p_subcategory_item->o_children addObject:[[VLCTreeItem alloc] initWithName:[[VLCMain sharedInstance] localizedString: p_module->psz_object_name ] ID: p_module->i_object_id parent:p_subcategory_item children:IsALeafNode whithCategory: -1]]; } } vlc_list_release( p_list ); } return o_children;}- (int)getObjectID{ return i_object_id;}- (NSString *)getName{ return o_name;}- (VLCTreeItem *)childAtIndex:(int)i_index{ return [[self children] objectAtIndex:i_index];}- (int)numberOfChildren { id i_tmp = [self children]; return (i_tmp == IsALeafNode) ? (-1) : (int)[i_tmp count];}- (BOOL)hasPrefs:(NSString *)o_module_name{ intf_thread_t *p_intf = VLCIntf; module_t *p_parser; vlc_list_t *p_list; char *psz_module_name; int i_index; psz_module_name = (char *)[o_module_name UTF8String]; /* look for module */ p_list = vlc_list_find( p_intf, VLC_OBJECT_MODULE, FIND_ANYWHERE ); for( i_index = 0; i_index < p_list->i_count; i_index++ ) { p_parser = (module_t *)p_list->p_values[i_index].p_object ; if( !strcmp( p_parser->psz_object_name, psz_module_name ) ) { BOOL b_has_prefs = p_parser->i_config_items != 0; vlc_list_release( p_list ); return( b_has_prefs ); } } vlc_list_release( p_list ); return( NO );}- (NSView *)showView:(NSScrollView *)o_prefs_view advancedView:(vlc_bool_t) b_advanced{ NSRect s_vrc; NSView *o_view; s_vrc = [[o_prefs_view contentView] bounds]; s_vrc.size.height -= 4; o_view = [[VLCFlippedView alloc] initWithFrame: s_vrc]; [o_view setAutoresizingMask: NSViewWidthSizable | NSViewMinYMargin | NSViewMaxYMargin];/* Create all subviews if it isn't already done because we cannot use *//* setHiden for MacOS < 10.3*/ if( o_subviews == nil ) { intf_thread_t *p_intf = VLCIntf; vlc_list_t *p_list; module_t *p_parser = NULL; module_config_t *p_item; o_subviews = [[NSMutableArray alloc] initWithCapacity:10]; /* Get a pointer to the module */ if( i_object_category == -1 ) { p_parser = (module_t *) vlc_object_get( p_intf, i_object_id ); if( !p_parser || p_parser->i_object_type != VLC_OBJECT_MODULE ) { /* 0OOoo something went really bad */ return nil; } p_item = p_parser->p_config; int i = 0; p_item = p_parser->p_config + 1; do { if( !p_item ) { msg_Err( p_intf, "null item found" ); break; } switch(p_item->i_type) { case CONFIG_SUBCATEGORY: break; case CONFIG_SECTION: break; case CONFIG_CATEGORY: break; case CONFIG_HINT_END: break; case CONFIG_HINT_USAGE: break; default: { VLCConfigControl *o_control = nil; o_control = [VLCConfigControl newControl:p_item withView:o_view]; if( o_control != nil ) { [o_control setAutoresizingMask: NSViewMaxYMargin | NSViewWidthSizable]; [o_subviews addObject: o_control]; } } break; } } while( p_item++->i_type != CONFIG_HINT_END ); vlc_object_release( p_parser ); } else { int i = 0; int i_index; p_list = vlc_list_find( p_intf, VLC_OBJECT_MODULE, FIND_ANYWHERE ); if( !p_list ) return o_view; /* * Find the main module */ for( i_index = 0; i_index < p_list->i_count; i_index++ ) { p_parser = (module_t *)p_list->p_values[i_index].p_object; if( !strcmp( p_parser->psz_object_name, "main" ) ) break; } if( p_parser == NULL ) { msg_Err( p_intf, "could not find the main module in our " "preferences" ); return o_view; } p_item = (p_parser->p_config + i_object_category); if( ( p_item->i_type == CONFIG_CATEGORY ) && ( ( p_item->i_value == CAT_PLAYLIST ) || ( p_item->i_value == CAT_AUDIO ) || ( p_item->i_value == CAT_VIDEO ) ) ) p_item++; do { p_item++; if( !p_item ) { msg_Err( p_intf, "null item found" ); break; } switch(p_item->i_type) { case CONFIG_SUBCATEGORY: break; case CONFIG_SECTION: break; case CONFIG_CATEGORY: break; case CONFIG_HINT_END: break; case CONFIG_HINT_USAGE: break; default: { VLCConfigControl *o_control = nil; o_control = [VLCConfigControl newControl:p_item withView:o_view]; if( o_control != nil ) { [o_control setAutoresizingMask: NSViewMaxYMargin | NSViewWidthSizable]; [o_subviews addObject: o_control]; } break; } } } while ( ( p_item->i_type != CONFIG_HINT_END ) && ( p_item->i_type != CONFIG_SUBCATEGORY ) ); vlc_list_release( p_list ); } } if( o_view != nil ) { int i_lastItem = 0; int i_yPos = -2; int i_max_label = 0; int i_show_advanced = 0; NSEnumerator *enumerator = [o_subviews objectEnumerator]; VLCConfigControl *o_widget; NSRect o_frame; while( ( o_widget = [enumerator nextObject] ) ) if( ( [o_widget isAdvanced] ) && (! b_advanced) ) continue; else if( i_max_label < [o_widget getLabelSize] ) i_max_label = [o_widget getLabelSize]; enumerator = [o_subviews objectEnumerator]; while( ( o_widget = [enumerator nextObject] ) ) { int i_widget; if( ( [o_widget isAdvanced] ) && (! b_advanced) ) { i_show_advanced++; continue; } i_widget = [o_widget getViewType]; i_yPos += [VLCConfigControl calcVerticalMargin:i_widget lastItem:i_lastItem]; [o_widget setYPos:i_yPos]; o_frame = [o_widget frame]; o_frame.size.width = [o_view frame].size.width - LEFTMARGIN - RIGHTMARGIN; [o_widget setFrame:o_frame]; [o_widget alignWithXPosition: i_max_label]; i_yPos += [o_widget frame].size.height; i_lastItem = i_widget; [o_view addSubview:o_widget]; } if( i_show_advanced != 0 ) { /* We add the advanced notice... */ NSRect s_rc = [o_view frame]; NSTextField *o_label; s_rc.size.height = 17; s_rc.origin.x = LEFTMARGIN; s_rc.origin.y = i_yPos += [VLCConfigControl calcVerticalMargin:CONFIG_ITEM_STRING lastItem:i_lastItem]; o_label = [[[NSTextField alloc] initWithFrame: s_rc] retain]; [o_label setDrawsBackground: NO]; [o_label setBordered: NO]; [o_label setEditable: NO]; [o_label setSelectable: NO]; [o_label setStringValue: _NS("Some options are available but " \ "hidden. Check \"Advanced\" to see them.")]; [o_label setFont:[NSFont systemFontOfSize:10]]; [o_label sizeToFit]; [o_view addSubview:o_label]; i_yPos += [o_label frame].size.height; } o_frame = [o_view frame]; o_frame.size.height = i_yPos; [o_view setFrame:o_frame]; [o_prefs_view setDocumentView:o_view]; } return o_view;}- (void)applyChanges{ unsigned int i; if( o_subviews != nil ) //Item has been shown for( i = 0 ; i < [o_subviews count] ; i++ ) [[o_subviews objectAtIndex:i] applyChanges]; if( o_children != IsALeafNode ) for( i = 0 ; i < [o_children count] ; i++ ) [[o_children objectAtIndex:i] applyChanges];}- (void)resetView{ unsigned int i; if( o_subviews != nil ) { //Item has been shown [o_subviews release]; o_subviews = nil; } if( o_children != IsALeafNode ) for( i = 0 ; i < [o_children count] ; i++ ) [[o_children objectAtIndex:i] resetView];}@end@implementation VLCFlippedView- (BOOL)isFlipped{ return( YES );}@end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -