diff options
-rw-r--r-- | macosx/HBAddPresetController.m | 26 | ||||
-rw-r--r-- | macosx/HBAudio.m | 4 | ||||
-rw-r--r-- | macosx/HBAudioDefaults.m | 4 | ||||
-rw-r--r-- | macosx/HBController.m | 22 | ||||
-rw-r--r-- | macosx/HBFilters.m | 4 | ||||
-rw-r--r-- | macosx/HBJob.h | 6 | ||||
-rw-r--r-- | macosx/HBJob.m | 29 | ||||
-rw-r--r-- | macosx/HBMutablePreset.h | 29 | ||||
-rw-r--r-- | macosx/HBMutablePreset.m | 35 | ||||
-rw-r--r-- | macosx/HBPicture.m | 4 | ||||
-rw-r--r-- | macosx/HBPreset.h | 21 | ||||
-rw-r--r-- | macosx/HBPreset.m | 55 | ||||
-rw-r--r-- | macosx/HBPresetCoding.h | 8 | ||||
-rw-r--r-- | macosx/HBSubtitles.m | 4 | ||||
-rw-r--r-- | macosx/HBSubtitlesDefaults.m | 4 | ||||
-rw-r--r-- | macosx/HBVideo.m | 4 | ||||
-rw-r--r-- | macosx/HandBrake Tests/HBJobTests.m | 2 | ||||
-rw-r--r-- | macosx/HandBrake.xcodeproj/project.pbxproj | 6 |
18 files changed, 166 insertions, 101 deletions
diff --git a/macosx/HBAddPresetController.m b/macosx/HBAddPresetController.m index 61483a675..10165ecb5 100644 --- a/macosx/HBAddPresetController.m +++ b/macosx/HBAddPresetController.m @@ -8,8 +8,7 @@ #import "HBAddPresetController.h" #import "HBPreset.h" - -#include "hb.h" +#import "HBMutablePreset.h" @interface HBAddPresetController () @@ -53,7 +52,7 @@ [self.picSettingsPopUp addItemWithTitle:NSLocalizedString(@"None", @"")]; [[self.picSettingsPopUp lastItem] setTag: 0]; - if ([self.preset.content[@"PicturePAR"] integerValue] != HB_ANAMORPHIC_STRICT) + if (![self.preset[@"PicturePAR"] isEqualToString:@"strict"]) { // not Strict, Custom is applicable [self.picSettingsPopUp addItemWithTitle:NSLocalizedString(@"Custom", @"")]; @@ -94,27 +93,24 @@ } else { - self.preset.name = self.name.stringValue; - self.preset.presetDescription = self.desc.stringValue; - - NSMutableDictionary *dict = [self.preset.content mutableCopy]; + HBMutablePreset *newPreset = [self.preset mutableCopy]; - dict[@"PresetName"] = self.name.stringValue; - dict[@"PresetDescription"] = self.desc.stringValue; + newPreset.name = self.name.stringValue; + newPreset.presetDescription = self.desc.stringValue; // Get the picture size - dict[@"PictureWidth"] = @(self.picWidth.integerValue); - dict[@"PictureHeight"] = @(self.picHeight.integerValue); + newPreset[@"PictureWidth"] = @(self.picWidth.integerValue); + newPreset[@"PictureHeight"] = @(self.picHeight.integerValue); //Get the whether or not to apply pic Size and Cropping (includes Anamorphic) - dict[@"UsesPictureSettings"] = @(self.picSettingsPopUp.selectedItem.tag); + newPreset[@"UsesPictureSettings"] = @(self.picSettingsPopUp.selectedItem.tag); // Always use Picture Filter settings for the preset - dict[@"UsesPictureFilters"] = @YES; + newPreset[@"UsesPictureFilters"] = @YES; - self.preset.content = [dict copy]; + [newPreset cleanUp]; - [self.preset cleanUp]; + self.preset = [newPreset copy]; [[self window] orderOut:nil]; [NSApp endSheet:[self window] returnCode:NSModalResponseContinue]; diff --git a/macosx/HBAudio.m b/macosx/HBAudio.m index cb3a6ff99..5e66ef21b 100644 --- a/macosx/HBAudio.m +++ b/macosx/HBAudio.m @@ -415,12 +415,12 @@ NSString *HBAudioChangedNotification = @"HBAudioChangedNotification"; #pragma mark - Presets -- (void)writeToPreset:(NSMutableDictionary *)preset +- (void)writeToPreset:(HBMutablePreset *)preset { [self.defaults writeToPreset:preset]; } -- (void)applyPreset:(NSDictionary *)preset +- (void)applyPreset:(HBPreset *)preset { [self.defaults applyPreset:preset]; [self addTracksFromDefaults:NO]; diff --git a/macosx/HBAudioDefaults.m b/macosx/HBAudioDefaults.m index 4f13bae01..2772b58f5 100644 --- a/macosx/HBAudioDefaults.m +++ b/macosx/HBAudioDefaults.m @@ -69,7 +69,7 @@ return nil; } -- (void)applyPreset:(NSDictionary *)preset +- (void)applyPreset:(HBPreset *)preset { // Track selection behavior if ([preset[@"AudioTrackSelectionBehavior"] isEqualToString:@"first"]) @@ -203,7 +203,7 @@ } } -- (void)writeToPreset:(NSMutableDictionary *)preset +- (void)writeToPreset:(HBMutablePreset *)preset { // Track selection behavior if (self.trackSelectionBehavior == HBAudioTrackSelectionBehaviorFirst) diff --git a/macosx/HBController.m b/macosx/HBController.m index 6b651ddbd..9b8a68883 100644 --- a/macosx/HBController.m +++ b/macosx/HBController.m @@ -11,6 +11,7 @@ #import "HBPresetsManager.h" #import "HBPreset.h" +#import "HBMutablePreset.h" #import "HBUtilities.h" #import "HBPictureViewController.h" @@ -1376,30 +1377,15 @@ - (HBPreset *)createPresetFromCurrentSettings { - NSMutableDictionary *preset = [NSMutableDictionary dictionary]; - NSDictionary *currentPreset = self.currentPreset.content; - - preset[@"PresetBuildNumber"] = [NSString stringWithFormat: @"%d", [[[NSBundle mainBundle] infoDictionary][@"CFBundleVersion"] intValue]]; - preset[@"PresetName"] = self.job.presetName; - preset[@"Folder"] = @NO; + HBMutablePreset *preset = [self.currentPreset mutableCopy]; // Set whether or not this is a user preset or factory 0 is factory, 1 is user preset[@"Type"] = @1; preset[@"Default"] = @NO; - // Get the whether or not to apply pic Size and Cropping (includes Anamorphic) - preset[@"UsesPictureSettings"] = currentPreset[@"UsesPictureSettings"]; - // Get whether or not to use the current Picture Filter settings for the preset - preset[@"UsesPictureFilters"] = currentPreset[@"UsesPictureFilters"]; - - preset[@"PictureWidth"] = currentPreset[@"PictureWidth"]; - preset[@"PictureHeight"] = currentPreset[@"PictureHeight"]; - - preset[@"PresetDescription"] = currentPreset[@"PresetDescription"]; - - [self.job applyCurrentSettingsToPreset:preset]; + [self.job writeToPreset:preset]; - return [[HBPreset alloc] initWithName:preset[@"PresetName"] content:preset builtIn:NO]; + return [preset copy]; } #pragma mark - diff --git a/macosx/HBFilters.m b/macosx/HBFilters.m index ec2e89895..ecdf0f7ad 100644 --- a/macosx/HBFilters.m +++ b/macosx/HBFilters.m @@ -323,7 +323,7 @@ NSString * const HBFiltersChangedNotification = @"HBFiltersChangedNotification"; #pragma mark - Presets and queue -- (void)writeToPreset:(NSMutableDictionary *)preset +- (void)writeToPreset:(HBMutablePreset *)preset { preset[@"PictureDeinterlaceFilter"] = self.deinterlace; preset[@"PictureDeinterlacePreset"] = self.deinterlacePreset; @@ -341,7 +341,7 @@ NSString * const HBFiltersChangedNotification = @"HBFiltersChangedNotification"; preset[@"VideoGrayScale"] = @(self.grayscale); } -- (void)applyPreset:(NSDictionary *)preset +- (void)applyPreset:(HBPreset *)preset { self.notificationsEnabled = NO; diff --git a/macosx/HBJob.h b/macosx/HBJob.h index 3dda3f27e..27075215c 100644 --- a/macosx/HBJob.h +++ b/macosx/HBJob.h @@ -7,6 +7,7 @@ #import <Foundation/Foundation.h> @class HBPreset; +@class HBMutablePreset; @class HBTitle; #import "HBRange.h" @@ -37,13 +38,10 @@ typedef NS_ENUM(NSUInteger, HBJobState){ /** * HBJob */ -@interface HBJob : NSObject <NSSecureCoding, NSCopying, HBUniqueObject> +@interface HBJob : NSObject <NSSecureCoding, NSCopying, HBPresetCoding, HBUniqueObject> - (instancetype)initWithTitle:(HBTitle *)title andPreset:(HBPreset *)preset; -- (void)applyPreset:(HBPreset *)preset; -- (void)applyCurrentSettingsToPreset:(NSMutableDictionary *)dict; - /// Current state of the job. @property (nonatomic, readwrite) HBJobState state; diff --git a/macosx/HBJob.m b/macosx/HBJob.m index d3b51b3be..b8df8e2cd 100644 --- a/macosx/HBJob.m +++ b/macosx/HBJob.m @@ -6,7 +6,6 @@ #import "HBJob.h" #import "HBTitle.h" -#import "HBPreset.h" #import "HBAudioDefaults.h" #import "HBSubtitlesDefaults.h" @@ -60,35 +59,37 @@ NSString *HBChaptersChangedNotification = @"HBChaptersChangedNotification"; return self; } +#pragma mark - HBPresetCoding + - (void)applyPreset:(HBPreset *)preset { self.presetName = preset.name; - NSDictionary *content = preset.content; - - self.container = hb_container_get_from_name([content[@"FileFormat"] UTF8String]); + self.container = hb_container_get_from_name([preset[@"FileFormat"] UTF8String]); // MP4 specifics options. - self.mp4HttpOptimize = [content[@"Mp4HttpOptimize"] boolValue]; - self.mp4iPodCompatible = [content[@"Mp4iPodCompatible"] boolValue]; + self.mp4HttpOptimize = [preset[@"Mp4HttpOptimize"] boolValue]; + self.mp4iPodCompatible = [preset[@"Mp4iPodCompatible"] boolValue]; // Chapter Markers - self.chaptersEnabled = [content[@"ChapterMarkers"] boolValue]; + self.chaptersEnabled = [preset[@"ChapterMarkers"] boolValue]; [@[self.audio, self.subtitles, self.filters, self.picture, self.video] makeObjectsPerformSelector:@selector(applyPreset:) - withObject:content]; + withObject:preset]; } -- (void)applyCurrentSettingsToPreset:(NSMutableDictionary *)dict +- (void)writeToPreset:(HBMutablePreset *)preset { - dict[@"FileFormat"] = @(hb_container_get_short_name(self.container)); - dict[@"ChapterMarkers"] = @(self.chaptersEnabled); + preset.name = self.presetName; + + preset[@"FileFormat"] = @(hb_container_get_short_name(self.container)); + preset[@"ChapterMarkers"] = @(self.chaptersEnabled); // MP4 specifics options. - dict[@"Mp4HttpOptimize"] = @(self.mp4HttpOptimize); - dict[@"Mp4iPodCompatible"] = @(self.mp4iPodCompatible); + preset[@"Mp4HttpOptimize"] = @(self.mp4HttpOptimize); + preset[@"Mp4iPodCompatible"] = @(self.mp4iPodCompatible); [@[self.video, self.filters, self.picture, self.audio, self.subtitles] makeObjectsPerformSelector:@selector(writeToPreset:) - withObject:dict]; + withObject:preset]; } - (void)setContainer:(int)container diff --git a/macosx/HBMutablePreset.h b/macosx/HBMutablePreset.h new file mode 100644 index 000000000..17d36f58e --- /dev/null +++ b/macosx/HBMutablePreset.h @@ -0,0 +1,29 @@ +// +// HBMutablePreset.h +// HandBrake +// +// Created by Damiano Galassi on 12/10/15. +// +// + +#import <Foundation/Foundation.h> +#import "HBPreset.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + * A mutable subclass of HBPreset. + */ +@interface HBMutablePreset : HBPreset + +/** + * Removes unknown keys and normalizes values. + */ +- (void)cleanUp; + +- (void)setObject:(id)obj forKey:(NSString *)key; +- (void)setObject:(id)obj forKeyedSubscript:(NSString *)key; + +@end + +NS_ASSUME_NONNULL_END diff --git a/macosx/HBMutablePreset.m b/macosx/HBMutablePreset.m new file mode 100644 index 000000000..a41445b84 --- /dev/null +++ b/macosx/HBMutablePreset.m @@ -0,0 +1,35 @@ +// +// HBMutablePreset.m +// HandBrake +// +// Created by Damiano Galassi on 12/10/15. +// +// + +#import "HBMutablePreset.h" + +@interface HBPreset (HBMutablePreset) + +@property (nonatomic, strong, nullable) NSMutableDictionary *content; +- (void)cleanUp; + +@end + +@implementation HBMutablePreset + +- (void)setObject:(id)obj forKey:(NSString *)key; +{ + self.content[key] = obj; +} + +- (void)setObject:(id)obj forKeyedSubscript:(NSString *)key +{ + self.content[key] = obj; +} + +- (void)cleanUp +{ + [super cleanUp]; +} + +@end diff --git a/macosx/HBPicture.m b/macosx/HBPicture.m index 099a4c77a..b68c74f78 100644 --- a/macosx/HBPicture.m +++ b/macosx/HBPicture.m @@ -566,7 +566,7 @@ NSString * const HBPictureChangedNotification = @"HBPictureChangedNotification"; #pragma mark - Presets -- (void)writeToPreset:(NSMutableDictionary *)preset +- (void)writeToPreset:(HBMutablePreset *)preset { preset[@"PictureKeepRatio"] = @(self.keepDisplayAspect); @@ -599,7 +599,7 @@ NSString * const HBPictureChangedNotification = @"HBPictureChangedNotification"; preset[@"PictureRightCrop"] = @(self.cropRight); } -- (void)applyPreset:(NSDictionary *)preset +- (void)applyPreset:(HBPreset *)preset { self.validating = YES; self.notificationsEnabled = NO; diff --git a/macosx/HBPreset.h b/macosx/HBPreset.h index bf5b51e8b..32f20c177 100644 --- a/macosx/HBPreset.h +++ b/macosx/HBPreset.h @@ -19,7 +19,7 @@ typedef NS_ENUM(NSUInteger, HBPresetFormat) { * * An instance of HBPreset can be an actual preset or a folder. */ -@interface HBPreset : HBTreeNode <NSCopying> +@interface HBPreset : HBTreeNode <NSCopying, NSMutableCopying> - (instancetype)initWithFolderName:(NSString *)title builtIn:(BOOL)builtIn; @@ -50,11 +50,6 @@ typedef NS_ENUM(NSUInteger, HBPresetFormat) { - (BOOL)writeToURL:(NSURL *)url atomically:(BOOL)atomically format:(HBPresetFormat)format removeRoot:(BOOL)removeRoot; /** - * Removes unknown keys and normalizes values. - */ -- (void)cleanUp; - -/** * The name of the preset. */ @property (nonatomic, copy) NSString *name; @@ -75,14 +70,14 @@ typedef NS_ENUM(NSUInteger, HBPresetFormat) { @property (nonatomic) BOOL isDefault; /** - * The actual content of the preset. - */ -@property (nonatomic, strong, nullable) NSDictionary *content; - -/** - * A dictionary representation of the preset. + * Returns the value associated with a given key. + * + * @param key The key for which to return the corresponding value. + * + * @return The value associated with key, or nil if no value is associated with key */ -@property (readonly, copy) NSDictionary *dictionary; +- (nullable id)objectForKey:(NSString *)key; +- (nullable id)objectForKeyedSubscript:(NSString *)key; @end diff --git a/macosx/HBPreset.m b/macosx/HBPreset.m index 58fe6a36d..971d2c0d6 100644 --- a/macosx/HBPreset.m +++ b/macosx/HBPreset.m @@ -5,10 +5,21 @@ It may be used under the terms of the GNU General Public License. */ #import "HBPreset.h" +#import "HBMutablePreset.h" + #include "preset.h" #import "NSJSONSerialization+HBAdditions.h" +@interface HBPreset () + +/** + * The actual content of the preset. + */ +@property (nonatomic, strong, nullable) NSMutableDictionary *content; + +@end + @implementation HBPreset - (instancetype)init @@ -30,7 +41,7 @@ { _name = [title copy]; _isBuiltIn = builtIn; - _content = [content copy]; + _content = [content mutableCopy]; if ([content[@"PresetDescription"] isKindOfClass:[NSString class]]) { _presetDescription = [content[@"PresetDescription"] copy]; @@ -188,6 +199,9 @@ } +/** + * A dictionary representation of the preset. + */ - (NSDictionary *)dictionary { NSMutableDictionary *output = [[NSMutableDictionary alloc] init]; @@ -248,39 +262,30 @@ return success; } +#pragma mark - NSCopying + - (id)copyWithZone:(NSZone *)zone { HBPreset *node = [super copyWithZone:zone]; node->_name = [self.name copy]; - node->_content = [self.content copy]; + node->_content = [self.content mutableCopy]; node->_presetDescription = [self.presetDescription copy]; return node; } -- (NSUInteger)hash +- (id)mutableCopyWithZone:(NSZone *)zone { - return self.name.hash + self.isBuiltIn + self.isLeaf; + return [[HBMutablePreset allocWithZone:zone] initWithDictionary:_content]; } -- (void)cleanUp +- (NSUInteger)hash { - // Run the libhb clean function - NSString *presetJson = [NSJSONSerialization HB_StringWithJSONObject:self.dictionary options:0 error:NULL]; - - if (presetJson.length) - { - char *cleanedJson = hb_presets_clean_json(presetJson.UTF8String); - NSDictionary *cleanedDict = [NSJSONSerialization HB_JSONObjectWithUTF8String:cleanedJson options:0 error:NULL]; - free(cleanedJson); - - if ([cleanedDict isKindOfClass:[NSDictionary class]]) - { - self.content = cleanedDict; - } - } + return self.name.hash + self.isBuiltIn + self.isLeaf; } +#pragma mark - Properties + - (void)setName:(NSString *)name { _name = [name copy]; @@ -293,6 +298,18 @@ [self.delegate nodeDidChange:self]; } +#pragma mark - Keys + +- (id)objectForKey:(NSString *)key +{ + return [_content objectForKey:key]; +} + +- (nullable id)objectForKeyedSubscript:(NSString *)key +{ + return _content[key]; +} + #pragma mark - KVC - (BOOL)validateName:(id *)ioValue error:(NSError * __autoreleasing *)outError diff --git a/macosx/HBPresetCoding.h b/macosx/HBPresetCoding.h index f1464c0b2..aca9aac34 100644 --- a/macosx/HBPresetCoding.h +++ b/macosx/HBPresetCoding.h @@ -6,10 +6,12 @@ #import <Foundation/Foundation.h> -@protocol HBPresetCoding <NSObject> +#import "HBPreset.h" +#import "HBMutablePreset.h" -- (void)applyPreset:(NSDictionary *)preset; -- (void)writeToPreset:(NSMutableDictionary *)preset; +@protocol HBPresetCoding <NSObject> +- (void)applyPreset:(HBPreset *)preset; +- (void)writeToPreset:(HBMutablePreset *)preset; @end
\ No newline at end of file diff --git a/macosx/HBSubtitles.m b/macosx/HBSubtitles.m index b21a956a6..85b69ac10 100644 --- a/macosx/HBSubtitles.m +++ b/macosx/HBSubtitles.m @@ -521,12 +521,12 @@ NSString *keySubTrackLanguageIndex = @"keySubTrackLanguageIndex"; #pragma mark - Presets -- (void)writeToPreset:(NSMutableDictionary *)preset +- (void)writeToPreset:(HBMutablePreset *)preset { [self.defaults writeToPreset:preset]; } -- (void)applyPreset:(NSDictionary *)preset +- (void)applyPreset:(HBPreset *)preset { [self.defaults applyPreset:preset]; [self addTracksFromDefaults]; diff --git a/macosx/HBSubtitlesDefaults.m b/macosx/HBSubtitlesDefaults.m index be607e95a..a390a86b3 100644 --- a/macosx/HBSubtitlesDefaults.m +++ b/macosx/HBSubtitlesDefaults.m @@ -19,7 +19,7 @@ return self; } -- (void)applyPreset:(NSDictionary *)preset +- (void)applyPreset:(HBPreset *)preset { if ([preset[@"SubtitleTrackSelectionBehavior"] isEqualToString:@"first"]) { @@ -61,7 +61,7 @@ self.burnInBluraySubtitles = [preset[@"SubtitleBurnBDSub"] boolValue]; } -- (void)writeToPreset:(NSMutableDictionary *)preset +- (void)writeToPreset:(HBMutablePreset *)preset { if (self.trackSelectionBehavior == HBSubtitleTrackSelectionBehaviorFirst) { diff --git a/macosx/HBVideo.m b/macosx/HBVideo.m index f264a16b5..b8a98d406 100644 --- a/macosx/HBVideo.m +++ b/macosx/HBVideo.m @@ -503,7 +503,7 @@ NSString * const HBVideoChangedNotification = @"HBVideoChangedNotification"; return string; } -- (void)applyPreset:(NSDictionary *)preset +- (void)applyPreset:(HBPreset *)preset { self.notificationsEnabled = NO; @@ -613,7 +613,7 @@ NSString * const HBVideoChangedNotification = @"HBVideoChangedNotification"; self.notificationsEnabled = YES; } -- (void)writeToPreset:(NSMutableDictionary *)preset +- (void)writeToPreset:(HBMutablePreset *)preset { preset[@"VideoEncoder"] = @(hb_video_encoder_get_short_name(self.encoder)); diff --git a/macosx/HandBrake Tests/HBJobTests.m b/macosx/HandBrake Tests/HBJobTests.m index c63fce273..19351bbfb 100644 --- a/macosx/HandBrake Tests/HBJobTests.m +++ b/macosx/HandBrake Tests/HBJobTests.m @@ -77,7 +77,7 @@ - (void)testAutoCrop { - XCTAssertEqual([self.preset.content[@"PictureAutoCrop"] boolValue], self.job.picture.autocrop); + XCTAssertEqual([self.preset[@"PictureAutoCrop"] boolValue], self.job.picture.autocrop); } - (void)testAutoCropValues diff --git a/macosx/HandBrake.xcodeproj/project.pbxproj b/macosx/HandBrake.xcodeproj/project.pbxproj index fb59eb248..53dbc1ebc 100644 --- a/macosx/HandBrake.xcodeproj/project.pbxproj +++ b/macosx/HandBrake.xcodeproj/project.pbxproj @@ -155,6 +155,7 @@ A955128B1A320B02001BFC6F /* libjansson.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A95512881A320A12001BFC6F /* libjansson.a */; }; A9597A2A1A49749D00007771 /* HBRange+UIAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = A9597A291A49749D00007771 /* HBRange+UIAdditions.m */; }; A967E4BA1A16768200DF1DFC /* [email protected] in Resources */ = {isa = PBXBuildFile; fileRef = A967E4B91A16768200DF1DFC /* [email protected] */; }; + A96CD1761BCC5F9100F372F1 /* HBMutablePreset.m in Sources */ = {isa = PBXBuildFile; fileRef = A96CD1751BCC5F9100F372F1 /* HBMutablePreset.m */; }; A9706CB41AC1436F00BAEAA8 /* HBApplication.m in Sources */ = {isa = PBXBuildFile; fileRef = A9706CB31AC1436F00BAEAA8 /* HBApplication.m */; }; A9706CB71AC1437800BAEAA8 /* HBExceptionAlertController.m in Sources */ = {isa = PBXBuildFile; fileRef = A9706CB61AC1437800BAEAA8 /* HBExceptionAlertController.m */; }; A9706CBA1AC1452800BAEAA8 /* ExceptionAlert.xib in Resources */ = {isa = PBXBuildFile; fileRef = A9706CB81AC1452800BAEAA8 /* ExceptionAlert.xib */; }; @@ -449,6 +450,8 @@ A95B8D931B09F16700F2F152 /* HandBrake Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "HandBrake Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; A95B8D961B09F16700F2F152 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; A967E4B91A16768200DF1DFC /* [email protected] */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "[email protected]"; sourceTree = "<group>"; }; + A96CD1741BCC5F9100F372F1 /* HBMutablePreset.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HBMutablePreset.h; sourceTree = "<group>"; }; + A96CD1751BCC5F9100F372F1 /* HBMutablePreset.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HBMutablePreset.m; sourceTree = "<group>"; }; A9706CB21AC1436F00BAEAA8 /* HBApplication.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HBApplication.h; sourceTree = "<group>"; }; A9706CB31AC1436F00BAEAA8 /* HBApplication.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HBApplication.m; sourceTree = "<group>"; }; A9706CB51AC1437800BAEAA8 /* HBExceptionAlertController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HBExceptionAlertController.h; sourceTree = "<group>"; }; @@ -1037,6 +1040,8 @@ 273F20A214ADBE670021BE6D /* HBPresetsManager.m */, A9CF25F21990D64E0023F727 /* HBPreset.h */, A9CF25F31990D64E0023F727 /* HBPreset.m */, + A96CD1741BCC5F9100F372F1 /* HBMutablePreset.h */, + A96CD1751BCC5F9100F372F1 /* HBMutablePreset.m */, A9D488A31996270300E9B1BA /* HBTreeNode.h */, A9D488A41996270300E9B1BA /* HBTreeNode.m */, ); @@ -1450,6 +1455,7 @@ 273F20AD14ADBE670021BE6D /* HBAdvancedController.m in Sources */, 273F20AE14ADBE670021BE6D /* HBAudioTrack.m in Sources */, A9DEC87A1A23C89E00C79B48 /* HBPicture.m in Sources */, + A96CD1761BCC5F9100F372F1 /* HBMutablePreset.m in Sources */, 273F20AF14ADBE670021BE6D /* HBAudioController.m in Sources */, A9537BF31A48A99500141102 /* HBVideo+UIAdditions.m in Sources */, 273F20B114ADBE670021BE6D /* HBDVDDetector.m in Sources */, |