]> git.sesse.net Git - vlc/commitdiff
macosx: add custom numberformatter to goto time field to only allow digits and :
authorDavid Fuhrmann <david.fuhrmann@googlemail.com>
Tue, 30 Apr 2013 21:11:06 +0000 (23:11 +0200)
committerDavid Fuhrmann <david.fuhrmann@googlemail.com>
Tue, 30 Apr 2013 21:11:06 +0000 (23:11 +0200)
This fixes wrong default formatting (with thousand separator) which
subsequently failed to parse the value correctly.

modules/gui/macosx/controls.m
modules/gui/macosx/misc.h
modules/gui/macosx/misc.m

index cab73ba172c5686b7a5bcb31820c12695fa4bd55..1a1b4a0afced8e27d426c3b24dfc1a6f46fd3a2a 100644 (file)
@@ -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
index 6855c056156c4d85df94342c494684cbd204ed89..4859611f8443d747321c28d08f5168934aecee68 100644 (file)
 @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
index 5fea88dd517280064716974c60c3292e4ac90492..3a9bfde095b2b23958c68bdcf8bda67ea299cb24 100644 (file)
@@ -786,4 +786,39 @@ void _drawFrameInRect(NSRect frameRect)
     [self setNeedsDisplay:YES];
 }
 
+@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