-/* xscreensaver, Copyright (c) 2006-2012 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 2006-2013 Jamie Zawinski <jwz@jwz.org>
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
if ([active_text_field canResignFirstResponder])
[active_text_field resignFirstResponder];
NSString *pref_key = [pref_keys objectAtIndex: [sender tag]];
- double v = [sender value];
+
+ // Hacky API. See comment in InvertedSlider.m.
+ double v = ([sender isKindOfClass: [InvertedSlider class]]
+ ? [(InvertedSlider *) sender transformedValue]
+ : [sender value]);
+
if (v == (int) v)
[userDefaultsController setInteger:v forKey:pref_key];
else
if ([control isKindOfClass:[UISlider class]]) {
sel = @selector(sliderAction:);
- [(UISlider *) control setValue: dval];
+ // Hacky API. See comment in InvertedSlider.m.
+ if ([control isKindOfClass:[InvertedSlider class]])
+ [(InvertedSlider *) control setTransformedValue: dval];
+ else
+ [(UISlider *) control setValue: dval];
} else if ([control isKindOfClass:[UISwitch class]]) {
sel = @selector(switchAction:);
[(UISwitch *) control setOn: ((int) dval != 0)];
controls on itself that are hooked up to the appropriate preferences.
The default size of the view is just big enough to hold them all.
*/
-- (id)initWithXMLFile: (NSString *) xml_file
- options: (const XrmOptionDescRec *) _opts
- controller: (NSUserDefaultsController *) _prefs
- defaults: (NSDictionary *) _defs
+- (id)initWithXML: (NSData *) xml_data
+ options: (const XrmOptionDescRec *) _opts
+ controller: (NSUserDefaultsController *) _prefs
+ defaults: (NSDictionary *) _defs
{
# ifndef USE_IPHONE
self = [super init];
userDefaultsController = _prefs;
[userDefaultsController retain];
- NSURL *furl = [NSURL fileURLWithPath:xml_file];
-
- if (!furl) {
- NSAssert1 (0, @"can't URLify \"%@\"", xml_file);
- return nil;
- }
-
-#if 0 // -- the old way
- NSError *err = nil;
- NSXMLDocument *xmlDoc = [[NSXMLDocument alloc]
- initWithContentsOfURL:furl
- options:(NSXMLNodePreserveWhitespace |
- NSXMLNodePreserveCDATA)
- error:&err];
- if (!xmlDoc || err) {
- if (err)
- NSAssert2 (0, @"XML Error: %@: %@",
- xml_file, [err localizedDescription]);
- return nil;
- }
-
- traverse_tree (prefs, self, opts, [xmlDoc rootElement]);
-#endif /* 0 */
-
+ NSXMLParser *xmlDoc = [[NSXMLParser alloc] initWithData:xml_data];
- NSXMLParser *xmlDoc = [[NSXMLParser alloc] initWithContentsOfURL:furl];
if (!xmlDoc) {
- NSAssert1 (0, @"XML Error: %@", xml_file);
+ NSAssert1 (0, @"XML Error: %@", xml_data);
return nil;
}
[xmlDoc setDelegate:self];
if (! [xmlDoc parse]) {
NSError *err = [xmlDoc parserError];
- NSAssert2 (0, @"XML Error: %@: %@", xml_file, err);
+ NSAssert2 (0, @"XML Error: %@: %@", xml_data, err);
return nil;
}