vlc | branch: master | David Fuhrmann <[email protected]> | Tue Apr 30 23:11:06 2013 +0200| [f7a9144dc0d0e5449b14b1333ac7f1fcc1673a76] | committer: David Fuhrmann
macosx: add custom numberformatter to goto time field to only allow digits and : This fixes wrong default formatting (with thousand separator) which subsequently failed to parse the value correctly. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=f7a9144dc0d0e5449b14b1333ac7f1fcc1673a76 --- modules/gui/macosx/controls.m | 3 +++ modules/gui/macosx/misc.h | 17 +++++++++++++++++ modules/gui/macosx/misc.m | 35 +++++++++++++++++++++++++++++++++++ 3 files changed, 55 insertions(+) diff --git a/modules/gui/macosx/controls.m b/modules/gui/macosx/controls.m index cab73ba..1a1b4a0 100644 --- a/modules/gui/macosx/controls.m +++ b/modules/gui/macosx/controls.m @@ -37,6 +37,7 @@ #import "playlist.h" #import "MainMenu.h" #import "CoreInteraction.h" +#import "misc.h" #import <vlc_keys.h> #pragma mark - @@ -54,6 +55,8 @@ [o_specificTime_ok_btn setTitle: _NS("OK")]; [o_specificTime_sec_lbl setStringValue: _NS("sec.")]; [o_specificTime_goTo_lbl setStringValue: _NS("Jump to time")]; + + [o_specificTime_enter_fld setFormatter:[[[PositionFormatter alloc] init] autorelease]]; } - (void)dealloc diff --git a/modules/gui/macosx/misc.h b/modules/gui/macosx/misc.h index 6855c05..4859611 100644 --- a/modules/gui/macosx/misc.h +++ b/modules/gui/macosx/misc.h @@ -189,3 +189,20 @@ @interface VLCThreePartDropView : VLCThreePartImageView @end + +/***************************************************************************** + * PositionFormatter interface + * + * Formats a text field to only accept decimals and : + *****************************************************************************/ +@interface PositionFormatter : NSFormatter +{ + NSCharacterSet *o_forbidden_characters; +} +- (NSString*)stringForObjectValue:(id)obj; + +- (BOOL)getObjectValue:(id*)obj forString:(NSString*)string errorDescription:(NSString**)error; + +- (bool)isPartialStringValid:(NSString*)partialString newEditingString:(NSString**)newString errorDescription:(NSString**)error; + +@end diff --git a/modules/gui/macosx/misc.m b/modules/gui/macosx/misc.m index 5fea88d..3a9bfde 100644 --- a/modules/gui/macosx/misc.m +++ b/modules/gui/macosx/misc.m @@ -787,3 +787,38 @@ void _drawFrameInRect(NSRect frameRect) } @end + +@implementation PositionFormatter + +- (id)init +{ + self = [super init]; + NSMutableCharacterSet *nonNumbers = [[[NSCharacterSet decimalDigitCharacterSet] invertedSet] mutableCopy]; + [nonNumbers removeCharactersInString:@":"]; + o_forbidden_characters = [nonNumbers copy]; + + return self; +} + +- (NSString*)stringForObjectValue:(id)obj +{ + return obj; +} + +- (BOOL)getObjectValue:(id*)obj forString:(NSString*)string errorDescription:(NSString**)error +{ + *obj = [[string copy] autorelease]; + return YES; +} + +- (bool)isPartialStringValid:(NSString*)partialString newEditingString:(NSString**)newString errorDescription:(NSString**)error +{ + if ([partialString rangeOfCharacterFromSet:o_forbidden_characters options:NSLiteralSearch].location != NSNotFound) { + return NO; + } else { + return YES; + } +} + + +@end _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
