...
 
Commits (65)
......@@ -25,32 +25,50 @@
#import "MLAlbum.h"
extern NSString *const MLAlbumTrackAlbumName;
extern NSString *const MLAlbumTrackNumber;
extern NSString *const MLAlbumTrackTrackName;
extern NSString *const MLAlbumTrackDiscNumber;
@class MLFile;
@interface MLAlbumTrack : NSManagedObject
+ (NSArray *)allTracks;
+ (MLAlbumTrack *)trackWithAlbum:(MLAlbum *)album
trackNumber:(NSNumber *)trackNumber
createIfNeeded:(BOOL)createIfNeeded;
createIfNeeded:(BOOL)createIfNeeded __attribute__((deprecated));
+ (MLAlbumTrack *)trackWithAlbum:(MLAlbum *)album
trackNumber:(NSNumber *)trackNumber
trackName:(NSString *)trackName
createIfNeeded:(BOOL)createIfNeeded;
createIfNeeded:(BOOL)createIfNeeded __attribute__((deprecated));
+ (MLAlbumTrack *)trackWithAlbumName:(NSString *)albumName
trackNumber:(NSNumber *)trackNumber
createIfNeeded:(BOOL)createIfNeeded
wasCreated:(BOOL *)wasCreated;
wasCreated:(BOOL *)wasCreated __attribute__((deprecated));
+ (MLAlbumTrack *)trackWithAlbumName:(NSString *)albumName
trackNumber:(NSNumber *)trackNumber
trackName:(NSString *)trackName
createIfNeeded:(BOOL)createIfNeeded
wasCreated:(BOOL *)wasCreated;
wasCreated:(BOOL *)wasCreated __attribute__((deprecated));
/* for available keys, see above */
+ (MLAlbumTrack *)trackWithAlbum:(MLAlbum *)album
metadata:(NSDictionary *)metadata
createIfNeeded:(BOOL)createIfNeeded
wasCreated:(BOOL *)wasCreated;
+ (MLAlbumTrack *)trackWithMetadata:(NSDictionary *)metadata
createIfNeeded:(BOOL)createIfNeeded
wasCreated:(BOOL *)wasCreated;
@property (nonatomic, strong) NSNumber *unread;
@property (nonatomic, strong) NSString *artist;
@property (nonatomic, strong) NSString *genre;
@property (nonatomic, strong) NSString *title;
@property (nonatomic, strong) NSNumber *trackNumber;
@property (nonatomic, strong) NSNumber *discNumber;
@property (nonatomic, strong) MLAlbum *album;
@property (nonatomic, strong) NSSet *files;
......@@ -63,4 +81,5 @@
- (void)removeFilesObject:(NSManagedObject *)value;
- (void)addFiles:(NSSet *)value;
- (void)removeFiles:(NSSet *)value;
- (MLFile *)anyFileFromTrack;
@end
......@@ -26,6 +26,12 @@
*****************************************************************************/
#import <CoreData/CoreData.h>
#if TARGET_OS_IOS
#import <CoreSpotlight/CoreSpotlight.h>
#endif
#if TARGET_OS_IPHONE
@class UIImage;
#endif
@class MLShowEpisode;
@class MLAlbumTrack;
......@@ -82,9 +88,10 @@ extern NSString *const MLFileThumbnailWasUpdated;
@property (nonatomic, strong) NSString *genre;
@property (nonatomic, strong) MLAlbumTrack *albumTrack;
@property (nonatomic, strong) NSString *thumbnailName;
#if TARGET_OS_IPHONE
- (void)setComputedThumbnailScaledForDevice:(UIImage *)thumbnail;
@property (nonatomic, strong) UIImage *computedThumbnail;
#endif
@property (nonatomic, assign) BOOL isSafe;
@property (nonatomic, assign) BOOL isBeingParsed;
@property (nonatomic, assign) BOOL thumbnailTimeouted;
......@@ -122,6 +129,11 @@ extern NSString *const MLFileThumbnailWasUpdated;
- (size_t)fileSizeInBytes;
#if TARGET_OS_IOS
- (CSSearchableItemAttributeSet *)coreSpotlightAttributeSet;
- (void)updateCoreSpotlightEntry;
#endif
@end
......
......@@ -39,13 +39,20 @@
@property (nonatomic, strong) NSPersistentStoreCoordinator *persistentStoreCoordinator;
@property (nonatomic, copy) NSDictionary *additionalPersitentStoreOptions;
@property (nonatomic, readonly) int deviceSpeedCategory;
// default is group.org.videolan.vlc-ios
// uses identifier from Info.plist in framework bundle or main bundle with key
// MLKitGroupIdentifier by default
// if key in Info.plist wasn't set it further defaults to group.org.videolan.vlc-ios
@property (nonatomic, copy) NSString *applicationGroupIdentifier;
#if TARGET_OS_IOS
@property (nonatomic, getter = isSpotlightIndexingEnabled) BOOL spotlightIndexingEnabled;
#endif
+ (id)sharedMediaLibrary;
- (BOOL)libraryMigrationNeeded;
- (void)migrateLibrary;
- (void)overrideLibraryWithLibraryFromURL:(NSURL *)replacementURL;
- (void)addFilePaths:(NSArray *)filepaths;
- (void)updateMediaDatabase;
......@@ -68,8 +75,11 @@
- (void)applicationWillExit;
- (void)save;
- (void)saveWithCompletionHandler:(void (^)(BOOL success))completionHandler;
- (void)libraryDidDisappear;
- (void)libraryDidAppear;
@end
@protocol MLMediaLibrary <NSObject>
......
......@@ -26,6 +26,7 @@
#import <CoreData/CoreData.h>
@class MLShow;
@class MLFile;
@interface MLShowEpisode : NSManagedObject
......@@ -56,6 +57,6 @@
- (void)removeFilesObject:(NSManagedObject *)value;
- (void)addFiles:(NSSet *)value;
- (void)removeFiles:(NSSet *)value;
- (MLFile *)anyFileFromEpisode;
@end
......@@ -27,6 +27,8 @@
#import <MediaLibraryKit/MLShowEpisode.h>
#import <MediaLibraryKit/MLAlbum.h>
#import <MediaLibraryKit/MLAlbumTrack.h>
#import <MediaLibraryKit/MLThumbnailerQueue.h>
#import <MediaLibraryKit/UIImage+MLKit.h>
@class MLFile;
@class MLLabel;
......
......@@ -11,6 +11,9 @@
@interface UIImage (MLKit)
+ (CGSize)preferredThumbnailSizeForDevice;
// uses current screen scale as scale
+ (UIImage *)scaleImage:(UIImage *)image toFitRect:(CGRect)rect;
+ (UIImage *)scaleImage:(UIImage *)image toFitRect:(CGRect)rect scale:(CGFloat) scale;
@end
......@@ -3,6 +3,6 @@
<plist version="1.0">
<dict>
<key>_XCCurrentVersionName</key>
<string>MediaLibrary-2.6.xcdatamodel</string>
<string>MediaLibrary-2.7.xcdatamodel</string>
</dict>
</plist>
Pod::Spec.new do |s|
s.name = "MediaLibraryKit-prod"
s.version = "2.6.9"
s.summary = "A MediaLibrary framework in Objective-C for iOS and OS X"
s.description = <<-DESC
MediaLibraryKit is an abstraction of CoreData to be used with for any kind of audio-visual media. It can do thumbnailing, metadata parsing as well as playback state management. It is a proven code based deployed with VLC-iOS since day one.
DESC
s.homepage = "https://code.videolan.org/videolan/MediaLibraryKit"
s.license = { :type => "LGPLv2.1", :file => "COPYING" }
s.authors = { "Pierre d'Herbemont" => "pdherbemont@videolan.org", "Felix Paul Kühne" => "fkuehne@videolan.org", "Tobias Conradi" => "videolan@tobias-conradi.de", "Carola Nitz" => "caro@videolan.org" }
s.social_media_url = "http://twitter.com/videolan"
s.ios.deployment_target = "8.4"
s.watchos.deployment_target = "2.0"
# s.osx.deployment_target = "10.7"
# s.tvos.deployment_target = "9.0"
s.source = { :git => "https://code.videolan.org/videolan/MediaLibraryKit.git", :tag => "#{s.version}" }
s.prefix_header_file = "MediaLibraryKit_Prefix.pch"
s.source_files = "Headers/Internal/*.h", "Sources/*.m",
s.public_header_files = "Headers/Public/*.h"
s.exclude_files = \
"Sources/MLMovieInfoGrabber.m", "Sources/MLTVShowEpisodesInfoGrabber.m", "Sources/MLTVShowInfoGrabber.m", \
"Sources/MLURLConnection.m", "Sources/NSXMLNode_Additions.m", \
"Headers/Internal/MLMovieInfoGrabber.h", "Headers/Internal/MLTVShowEpisodesInfoGrabber.h", "Headers/Internal/MLTVShowInfoGrabber.h", \
"Headers/Internal/MLURLConnection.h", "Headers/Internal/NSXMLNode_Additions.h", "Headers/Internal/TheTVDBGrabber.h"
s.header_dir = "MediaLibraryKit"
s.resources = "MappingModel_2_5_to_2_6.xcmappingmodel", "MediaLibrary.xcdatamodeld"
s.frameworks = "Foundation", "CoreData"
s.requires_arc = true
s.watchos.xcconfig = { "GCC_PREPROCESSOR_DEFINITIONS" => "$(inherited) MLKIT_READONLY_TARGET" }
s.ios.dependency "MobileVLCKit", "~>3.3.0"
s.static_framework = true
end
Pod::Spec.new do |s|
s.name = "MediaLibraryKit-unstable"
s.version = "2.6.5"
s.summary = "A MediaLibrary framework in Objective-C for iOS and OS X"
s.description = <<-DESC
MediaLibraryKit is an abstraction of CoreData to be used with for any kind of audio-visual media. It can do thumbnailing, metadata parsing as well as playback state management. It is a proven code based deployed with VLC-iOS since day one.
This pod depends on an unstable version of MobileVLCKit. It is NOT RECOMMEND to be used in production!
DESC
s.homepage = "https://code.videolan.org/videolan/MediaLibraryKit"
s.license = { :type => "LGPLv2.1", :file => "COPYING" }
s.authors = { "Pierre d'Herbemont" => "pdherbemont@videolan.org", "Felix Paul Kühne" => "fkuehne@videolan.org", "Tobias Conradi" => "videolan@tobias-conradi.de", "Carola Nitz" => "caro@videolan.org" }
s.social_media_url = "http://twitter.com/videolan"
s.ios.deployment_target = "7.0"
s.watchos.deployment_target = "2.0"
s.source = { :git => "https://code.videolan.org/videolan/MediaLibraryKit.git", :tag => "#{s.version}" }
s.prefix_header_file = "MediaLibraryKit_Prefix.pch"
s.source_files = "Headers/Internal/*.h", "Sources/*.m",
s.public_header_files = "Headers/Public/*.h"
s.exclude_files = \
"Sources/MLMovieInfoGrabber.m", "Sources/MLTVShowEpisodesInfoGrabber.m", "Sources/MLTVShowInfoGrabber.m", \
"Sources/MLURLConnection.m", "Sources/NSXMLNode_Additions.m", \
"Headers/Internal/MLMovieInfoGrabber.h", "Headers/Internal/MLTVShowEpisodesInfoGrabber.h", "Headers/Internal/MLTVShowInfoGrabber.h", \
"Headers/Internal/MLURLConnection.h", "Headers/Internal/NSXMLNode_Additions.h", "Headers/Internal/TheTVDBGrabber.h"
s.header_dir = "MediaLibraryKit"
s.resources = "MappingModel_2_5_to_2_6.xcmappingmodel", "MediaLibrary.xcdatamodeld"
s.frameworks = "Foundation", "CoreData"
s.requires_arc = true
s.watchos.xcconfig = { "GCC_PREPROCESSOR_DEFINITIONS" => "$(inherited) MLKIT_READONLY_TARGET" }
s.ios.dependency "MobileVLCKit-unstable", "~>3.0.0a8"
end
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
<key>NSPrincipalClass</key>
<string></string>
</dict>
</plist>
......@@ -13,29 +13,76 @@
7D0EF52A170885130003ED47 /* MLFileParserQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D0EF51B170885130003ED47 /* MLFileParserQueue.m */; };
7D0EF52B170885130003ED47 /* MLLabel.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D0EF51C170885130003ED47 /* MLLabel.m */; };
7D0EF52C170885130003ED47 /* MLMediaLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D0EF51D170885130003ED47 /* MLMediaLibrary.m */; };
7D0EF52D170885130003ED47 /* MLMovieInfoGrabber.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D0EF51E170885130003ED47 /* MLMovieInfoGrabber.m */; };
7D0EF52E170885130003ED47 /* MLShow.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D0EF51F170885130003ED47 /* MLShow.m */; };
7D0EF52F170885130003ED47 /* MLShowEpisode.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D0EF520170885130003ED47 /* MLShowEpisode.m */; };
7D0EF530170885130003ED47 /* MLThumbnailerQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D0EF522170885130003ED47 /* MLThumbnailerQueue.m */; };
7D0EF531170885130003ED47 /* MLTitleDecrapifier.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D0EF523170885130003ED47 /* MLTitleDecrapifier.m */; };
7D0EF532170885130003ED47 /* MLTVShowEpisodesInfoGrabber.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D0EF524170885130003ED47 /* MLTVShowEpisodesInfoGrabber.m */; };
7D0EF533170885130003ED47 /* MLTVShowInfoGrabber.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D0EF525170885130003ED47 /* MLTVShowInfoGrabber.m */; };
7D0EF534170885130003ED47 /* MLURLConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D0EF526170885130003ED47 /* MLURLConnection.m */; };
7D0EF535170885130003ED47 /* NSXMLNode_Additions.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D0EF527170885130003ED47 /* NSXMLNode_Additions.m */; };
7D0EF551170885230003ED47 /* CXMLDocument_CreationExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D0EF53A170885230003ED47 /* CXMLDocument_CreationExtensions.m */; };
7D0EF552170885230003ED47 /* CXMLNode_CreationExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D0EF53C170885230003ED47 /* CXMLNode_CreationExtensions.m */; };
7D0EF553170885230003ED47 /* CXMLDocument.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D0EF53E170885230003ED47 /* CXMLDocument.m */; };
7D0EF554170885230003ED47 /* CXMLDocument_PrivateExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D0EF540170885230003ED47 /* CXMLDocument_PrivateExtensions.m */; };
7D0EF555170885230003ED47 /* CXMLElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D0EF542170885230003ED47 /* CXMLElement.m */; };
7D0EF556170885230003ED47 /* CXMLElement_CreationExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D0EF544170885230003ED47 /* CXMLElement_CreationExtensions.m */; };
7D0EF557170885230003ED47 /* CXMLElement_ElementTreeExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D0EF546170885230003ED47 /* CXMLElement_ElementTreeExtensions.m */; };
7D0EF558170885230003ED47 /* CXMLNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D0EF548170885230003ED47 /* CXMLNode.m */; };
7D0EF559170885230003ED47 /* CXMLNode_PrivateExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D0EF54A170885230003ED47 /* CXMLNode_PrivateExtensions.m */; };
7D0EF55A170885230003ED47 /* CXMLNode_XPathExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D0EF54C170885230003ED47 /* CXMLNode_XPathExtensions.m */; };
7D0EF55B170885230003ED47 /* CTidy.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D0EF54F170885230003ED47 /* CTidy.m */; };
7D201AC81B186724009AC64E /* UIImage+MLKit.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D201AC71B186724009AC64E /* UIImage+MLKit.m */; };
7D8ECFE21708FEAE00A989E9 /* CXHTMLDocument.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D8ECFE11708FEAE00A989E9 /* CXHTMLDocument.m */; };
7D8ECFE51708FEC000A989E9 /* CXMLNamespaceNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D8ECFE41708FEC000A989E9 /* CXMLNamespaceNode.m */; };
7D2DF7D31B677F1700FB78AB /* MediaLibraryKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D0EF510170885130003ED47 /* MediaLibraryKit.h */; settings = {ATTRIBUTES = (Public, ); }; };
7D2DF7D41B677F1700FB78AB /* MLAlbum.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D9E238117AEE9F2008485E5 /* MLAlbum.h */; settings = {ATTRIBUTES = (Public, ); }; };
7D2DF7D51B677F1700FB78AB /* MLAlbumTrack.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D9E238417AEEA13008485E5 /* MLAlbumTrack.h */; settings = {ATTRIBUTES = (Public, ); }; };
7D2DF7D61B677F1700FB78AB /* MLFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D0EF511170885130003ED47 /* MLFile.h */; settings = {ATTRIBUTES = (Public, ); }; };
7D2DF7D71B677F1700FB78AB /* MLLabel.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D0EF512170885130003ED47 /* MLLabel.h */; settings = {ATTRIBUTES = (Public, ); }; };
7D2DF7D81B677F1700FB78AB /* MLMediaLibrary.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D0EF513170885130003ED47 /* MLMediaLibrary.h */; settings = {ATTRIBUTES = (Public, ); }; };
7D2DF7D91B677F1700FB78AB /* MLShow.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D0EF514170885130003ED47 /* MLShow.h */; settings = {ATTRIBUTES = (Public, ); }; };
7D2DF7DA1B677F1700FB78AB /* MLShowEpisode.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D0EF515170885130003ED47 /* MLShowEpisode.h */; settings = {ATTRIBUTES = (Public, ); }; };
7D2DF7DB1B677F1700FB78AB /* MLThumbnailerQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D0EF521170885130003ED47 /* MLThumbnailerQueue.h */; settings = {ATTRIBUTES = (Public, ); }; };
7D2DF7DC1B677F2300FB78AB /* MLCrashPreventer.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D0EF517170885130003ED47 /* MLCrashPreventer.h */; settings = {ATTRIBUTES = (Private, ); }; };
7D2DF7DD1B677F2300FB78AB /* MLFileEntityMappingPolicy_2_5_to_2_6.h in Headers */ = {isa = PBXBuildFile; fileRef = DDC57DF91AFD0B5000DBAEF7 /* MLFileEntityMappingPolicy_2_5_to_2_6.h */; settings = {ATTRIBUTES = (Private, ); }; };
7D2DF7DE1B677F2300FB78AB /* MLFileParserQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D0EF51A170885130003ED47 /* MLFileParserQueue.h */; settings = {ATTRIBUTES = (Private, ); }; };
7D2DF7DF1B677F2300FB78AB /* MLMediaLibrary+Migration.h in Headers */ = {isa = PBXBuildFile; fileRef = DDB959351AFB9B2B00BB8CFF /* MLMediaLibrary+Migration.h */; settings = {ATTRIBUTES = (Private, ); }; };
7D2DF7E01B677F2300FB78AB /* MLMovieInfoGrabber.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D0EF508170885130003ED47 /* MLMovieInfoGrabber.h */; settings = {ATTRIBUTES = (Private, ); }; };
7D2DF7E11B677F2300FB78AB /* MLTitleDecrapifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D0EF509170885130003ED47 /* MLTitleDecrapifier.h */; settings = {ATTRIBUTES = (Private, ); }; };
7D2DF7E21B677F2300FB78AB /* MLTVShowEpisodesInfoGrabber.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D0EF50A170885130003ED47 /* MLTVShowEpisodesInfoGrabber.h */; settings = {ATTRIBUTES = (Private, ); }; };
7D2DF7E31B677F2300FB78AB /* MLTVShowInfoGrabber.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D0EF50B170885130003ED47 /* MLTVShowInfoGrabber.h */; settings = {ATTRIBUTES = (Private, ); }; };
7D2DF7E41B677F2300FB78AB /* MLURLConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D0EF50C170885130003ED47 /* MLURLConnection.h */; settings = {ATTRIBUTES = (Private, ); }; };
7D2DF7E51B677F2300FB78AB /* NSXMLNode_Additions.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D0EF50D170885130003ED47 /* NSXMLNode_Additions.h */; settings = {ATTRIBUTES = (Private, ); }; };
7D2DF7E61B677F2300FB78AB /* TheTVDBGrabber.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D0EF50E170885130003ED47 /* TheTVDBGrabber.h */; settings = {ATTRIBUTES = (Private, ); }; };
7D2DF7E71B677F3100FB78AB /* MLCrashPreventer.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D0EF518170885130003ED47 /* MLCrashPreventer.m */; };
7D2DF7E81B677F3100FB78AB /* MLFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D0EF519170885130003ED47 /* MLFile.m */; };
7D2DF7E91B677F3100FB78AB /* MLFileParserQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D0EF51B170885130003ED47 /* MLFileParserQueue.m */; };
7D2DF7EA1B677F3100FB78AB /* MLLabel.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D0EF51C170885130003ED47 /* MLLabel.m */; };
7D2DF7EB1B677F3100FB78AB /* MLMediaLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D0EF51D170885130003ED47 /* MLMediaLibrary.m */; };
7D2DF7EC1B677F3100FB78AB /* MLMediaLibrary+Migration.m in Sources */ = {isa = PBXBuildFile; fileRef = DDB959361AFB9B2B00BB8CFF /* MLMediaLibrary+Migration.m */; };
7D2DF7EE1B677F3100FB78AB /* MLShow.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D0EF51F170885130003ED47 /* MLShow.m */; };
7D2DF7EF1B677F3100FB78AB /* MLShowEpisode.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D0EF520170885130003ED47 /* MLShowEpisode.m */; };
7D2DF7F01B677F3100FB78AB /* MLAlbum.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D9E238717AEEA71008485E5 /* MLAlbum.m */; };
7D2DF7F11B677F3100FB78AB /* MLAlbumTrack.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D9E238517AEEA13008485E5 /* MLAlbumTrack.m */; };
7D2DF7F21B677F3100FB78AB /* MLFileEntityMappingPolicy_2_5_to_2_6.m in Sources */ = {isa = PBXBuildFile; fileRef = DDC57DFA1AFD0B5000DBAEF7 /* MLFileEntityMappingPolicy_2_5_to_2_6.m */; };
7D2DF7F31B677F3100FB78AB /* MLThumbnailerQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D0EF522170885130003ED47 /* MLThumbnailerQueue.m */; };
7D2DF7F41B677F3100FB78AB /* MLTitleDecrapifier.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D0EF523170885130003ED47 /* MLTitleDecrapifier.m */; };
7D2DF7FB1B677F8200FB78AB /* MappingModel_2_5_to_2_6.xcmappingmodel in Resources */ = {isa = PBXBuildFile; fileRef = DDB959381AFBAD8700BB8CFF /* MappingModel_2_5_to_2_6.xcmappingmodel */; };
7D2DF7FC1B677F8200FB78AB /* MediaLibrary.xcdatamodeld in Resources */ = {isa = PBXBuildFile; fileRef = DDC7BFAA1B03825F00160878 /* MediaLibrary.xcdatamodeld */; };
7D2DF7FE1B67808D00FB78AB /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7D2DF7FD1B67808D00FB78AB /* UIKit.framework */; };
7D62B5AB1B67D1460098D4BB /* libMobileVLCKit.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7D62B5AA1B67D1460098D4BB /* libMobileVLCKit.a */; };
7D84E4E71B42BA9900EA7D1F /* MLFileEntityMappingPolicy_2_5_to_2_6.m in Sources */ = {isa = PBXBuildFile; fileRef = DDC57DFA1AFD0B5000DBAEF7 /* MLFileEntityMappingPolicy_2_5_to_2_6.m */; };
7D84E4E81B42BA9900EA7D1F /* MLCrashPreventer.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D0EF518170885130003ED47 /* MLCrashPreventer.m */; };
7D84E4E91B42BA9900EA7D1F /* MLFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D0EF519170885130003ED47 /* MLFile.m */; };
7D84E4EA1B42BA9900EA7D1F /* MLFileParserQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D0EF51B170885130003ED47 /* MLFileParserQueue.m */; };
7D84E4EB1B42BA9900EA7D1F /* MediaLibrary.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = DDC7BFAA1B03825F00160878 /* MediaLibrary.xcdatamodeld */; };
7D84E4EC1B42BA9900EA7D1F /* MLLabel.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D0EF51C170885130003ED47 /* MLLabel.m */; };
7D84E4ED1B42BA9900EA7D1F /* MLMediaLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D0EF51D170885130003ED47 /* MLMediaLibrary.m */; };
7D84E4EF1B42BA9900EA7D1F /* MLShow.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D0EF51F170885130003ED47 /* MLShow.m */; };
7D84E4F01B42BA9900EA7D1F /* MLShowEpisode.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D0EF520170885130003ED47 /* MLShowEpisode.m */; };
7D84E4F11B42BA9900EA7D1F /* MappingModel_2_5_to_2_6.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = DDB959381AFBAD8700BB8CFF /* MappingModel_2_5_to_2_6.xcmappingmodel */; };
7D84E4F21B42BA9900EA7D1F /* MLThumbnailerQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D0EF522170885130003ED47 /* MLThumbnailerQueue.m */; };
7D84E4F31B42BA9900EA7D1F /* MLTitleDecrapifier.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D0EF523170885130003ED47 /* MLTitleDecrapifier.m */; };
7D84E4F61B42BA9900EA7D1F /* MLURLConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D0EF526170885130003ED47 /* MLURLConnection.m */; };
7D84E4F71B42BA9900EA7D1F /* MLAlbumTrack.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D9E238517AEEA13008485E5 /* MLAlbumTrack.m */; };
7D84E4F81B42BA9900EA7D1F /* MLAlbum.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D9E238717AEEA71008485E5 /* MLAlbum.m */; };
7D84E4FE1B42BA9900EA7D1F /* UIImage+MLKit.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D201AC71B186724009AC64E /* UIImage+MLKit.m */; };
7D84E5021B42BA9900EA7D1F /* MLMediaLibrary+Migration.m in Sources */ = {isa = PBXBuildFile; fileRef = DDB959361AFB9B2B00BB8CFF /* MLMediaLibrary+Migration.m */; };
7D84E50A1B42BA9900EA7D1F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7D0EF4A1170883940003ED47 /* Foundation.framework */; };
7D84E50C1B42BA9900EA7D1F /* MLAlbum.h in Copy Files */ = {isa = PBXBuildFile; fileRef = 7D9E238117AEE9F2008485E5 /* MLAlbum.h */; };
7D84E50D1B42BA9900EA7D1F /* MLAlbumTrack.h in Copy Files */ = {isa = PBXBuildFile; fileRef = 7D9E238417AEEA13008485E5 /* MLAlbumTrack.h */; };
7D84E50E1B42BA9900EA7D1F /* MediaLibraryKit.h in Copy Files */ = {isa = PBXBuildFile; fileRef = 7D0EF510170885130003ED47 /* MediaLibraryKit.h */; };
7D84E50F1B42BA9900EA7D1F /* MLFile.h in Copy Files */ = {isa = PBXBuildFile; fileRef = 7D0EF511170885130003ED47 /* MLFile.h */; };
7D84E5101B42BA9900EA7D1F /* MLLabel.h in Copy Files */ = {isa = PBXBuildFile; fileRef = 7D0EF512170885130003ED47 /* MLLabel.h */; };
7D84E5111B42BA9900EA7D1F /* MLMediaLibrary.h in Copy Files */ = {isa = PBXBuildFile; fileRef = 7D0EF513170885130003ED47 /* MLMediaLibrary.h */; };
7D84E5121B42BA9900EA7D1F /* MLShow.h in Copy Files */ = {isa = PBXBuildFile; fileRef = 7D0EF514170885130003ED47 /* MLShow.h */; };
7D84E5131B42BA9900EA7D1F /* MLShowEpisode.h in Copy Files */ = {isa = PBXBuildFile; fileRef = 7D0EF515170885130003ED47 /* MLShowEpisode.h */; };
7D84E5141B42BA9900EA7D1F /* MLThumbnailerQueue.h in Copy Files */ = {isa = PBXBuildFile; fileRef = 7D0EF521170885130003ED47 /* MLThumbnailerQueue.h */; };
7D9E238617AEEA13008485E5 /* MLAlbumTrack.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D9E238517AEEA13008485E5 /* MLAlbumTrack.m */; };
7D9E238817AEEA71008485E5 /* MLAlbum.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D9E238717AEEA71008485E5 /* MLAlbum.m */; };
7D9E238917AF0711008485E5 /* MLAlbum.h in Copy Files */ = {isa = PBXBuildFile; fileRef = 7D9E238117AEE9F2008485E5 /* MLAlbum.h */; };
......@@ -47,6 +94,9 @@
A792468C170F09A30036AAF2 /* MLShow.h in Copy Files */ = {isa = PBXBuildFile; fileRef = 7D0EF514170885130003ED47 /* MLShow.h */; };
A792468D170F09A30036AAF2 /* MLShowEpisode.h in Copy Files */ = {isa = PBXBuildFile; fileRef = 7D0EF515170885130003ED47 /* MLShowEpisode.h */; };
A792468E170F09A30036AAF2 /* MLThumbnailerQueue.h in Copy Files */ = {isa = PBXBuildFile; fileRef = 7D0EF521170885130003ED47 /* MLThumbnailerQueue.h */; };
DD9FBE711BA8883B00FFE77A /* UIImage+MLKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D201AC61B186724009AC64E /* UIImage+MLKit.h */; settings = {ATTRIBUTES = (Public, ); }; };
DD9FBE721BA8891500FFE77A /* UIImage+MLKit.h in Copy Files */ = {isa = PBXBuildFile; fileRef = 7D201AC61B186724009AC64E /* UIImage+MLKit.h */; };
DD9FBE731BA985C600FFE77A /* UIImage+MLKit.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D201AC71B186724009AC64E /* UIImage+MLKit.m */; settings = {ASSET_TAGS = (); }; };
DDB959371AFB9B2B00BB8CFF /* MLMediaLibrary+Migration.m in Sources */ = {isa = PBXBuildFile; fileRef = DDB959361AFB9B2B00BB8CFF /* MLMediaLibrary+Migration.m */; };
DDB959391AFBAD8700BB8CFF /* MappingModel_2_5_to_2_6.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = DDB959381AFBAD8700BB8CFF /* MappingModel_2_5_to_2_6.xcmappingmodel */; };
DDC57DFB1AFD0B5000DBAEF7 /* MLFileEntityMappingPolicy_2_5_to_2_6.m in Sources */ = {isa = PBXBuildFile; fileRef = DDC57DFA1AFD0B5000DBAEF7 /* MLFileEntityMappingPolicy_2_5_to_2_6.m */; };
......@@ -57,9 +107,10 @@
7D0EF49C170883940003ED47 /* Copy Files */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "include/${PRODUCT_NAME}";
dstPath = "${PRODUCT_NAME}";
dstSubfolderSpec = 16;
files = (
DD9FBE721BA8891500FFE77A /* UIImage+MLKit.h in Copy Files */,
7D9E238917AF0711008485E5 /* MLAlbum.h in Copy Files */,
7D9E238A17AF0711008485E5 /* MLAlbumTrack.h in Copy Files */,
A7924688170F09A30036AAF2 /* MediaLibraryKit.h in Copy Files */,
......@@ -73,9 +124,29 @@
name = "Copy Files";
runOnlyForDeploymentPostprocessing = 0;
};
7D84E50B1B42BA9900EA7D1F /* Copy Files */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "${PRODUCT_NAME}/MediaLibraryKit";
dstSubfolderSpec = 16;
files = (
7D84E50C1B42BA9900EA7D1F /* MLAlbum.h in Copy Files */,
7D84E50D1B42BA9900EA7D1F /* MLAlbumTrack.h in Copy Files */,
7D84E50E1B42BA9900EA7D1F /* MediaLibraryKit.h in Copy Files */,
7D84E50F1B42BA9900EA7D1F /* MLFile.h in Copy Files */,
7D84E5101B42BA9900EA7D1F /* MLLabel.h in Copy Files */,
7D84E5111B42BA9900EA7D1F /* MLMediaLibrary.h in Copy Files */,
7D84E5121B42BA9900EA7D1F /* MLShow.h in Copy Files */,
7D84E5131B42BA9900EA7D1F /* MLShowEpisode.h in Copy Files */,
7D84E5141B42BA9900EA7D1F /* MLThumbnailerQueue.h in Copy Files */,
);
name = "Copy Files";
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
7D0363A61B2F317500CC0343 /* MediaLibrary-2.7.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "MediaLibrary-2.7.xcdatamodel"; sourceTree = "<group>"; };
7D0EF49E170883940003ED47 /* libMediaLibraryKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libMediaLibraryKit.a; sourceTree = BUILT_PRODUCTS_DIR; };
7D0EF4A1170883940003ED47 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
7D0EF4DF170883D80003ED47 /* MediaLibraryKit_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaLibraryKit_Prefix.pch; sourceTree = "<group>"; };
......@@ -134,6 +205,11 @@
7D0EF550170885230003ED47 /* TouchXML.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TouchXML.h; sourceTree = "<group>"; };
7D201AC61B186724009AC64E /* UIImage+MLKit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIImage+MLKit.h"; sourceTree = "<group>"; };
7D201AC71B186724009AC64E /* UIImage+MLKit.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIImage+MLKit.m"; sourceTree = "<group>"; };
7D2DF7CB1B677EE600FB78AB /* MediaLibraryKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = MediaLibraryKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
7D2DF7CF1B677EE600FB78AB /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = "MediaLibraryKit-watchOS/Info.plist"; sourceTree = SOURCE_ROOT; };
7D2DF7FD1B67808D00FB78AB /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/WatchOS.platform/Developer/SDKs/WatchOS2.0.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; };
7D62B5AA1B67D1460098D4BB /* libMobileVLCKit.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libMobileVLCKit.a; path = "../VLCKit/build/Debug-iphoneos/libMobileVLCKit.a"; sourceTree = "<group>"; };
7D84E5181B42BA9900EA7D1F /* libMediaLibraryKit-readonly.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libMediaLibraryKit-readonly.a"; sourceTree = BUILT_PRODUCTS_DIR; };
7D8ECFE01708FEAE00A989E9 /* CXHTMLDocument.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CXHTMLDocument.h; sourceTree = "<group>"; };
7D8ECFE11708FEAE00A989E9 /* CXHTMLDocument.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CXHTMLDocument.m; sourceTree = "<group>"; };
7D8ECFE31708FEC000A989E9 /* CXMLNamespaceNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CXMLNamespaceNode.h; sourceTree = "<group>"; };
......@@ -142,6 +218,7 @@
7D9E238417AEEA13008485E5 /* MLAlbumTrack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLAlbumTrack.h; sourceTree = "<group>"; };
7D9E238517AEEA13008485E5 /* MLAlbumTrack.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MLAlbumTrack.m; sourceTree = "<group>"; };
7D9E238717AEEA71008485E5 /* MLAlbum.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MLAlbum.m; sourceTree = "<group>"; };
7DF09E7B1B6763DF001075FD /* libMobileVLCKit.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libMobileVLCKit.a; path = "../../../../../../Library/Developer/Xcode/DerivedData/VLC_for_iOS-aihbdkeagpzjqsczvuoyenddvmqy/Build/Products/Debug-iphoneos/libMobileVLCKit.a"; sourceTree = "<group>"; };
DDB959351AFB9B2B00BB8CFF /* MLMediaLibrary+Migration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MLMediaLibrary+Migration.h"; sourceTree = "<group>"; };
DDB959361AFB9B2B00BB8CFF /* MLMediaLibrary+Migration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MLMediaLibrary+Migration.m"; sourceTree = "<group>"; };
DDB959381AFBAD8700BB8CFF /* MappingModel_2_5_to_2_6.xcmappingmodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcmappingmodel; path = MappingModel_2_5_to_2_6.xcmappingmodel; sourceTree = "<group>"; };
......@@ -157,10 +234,27 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
7D62B5AB1B67D1460098D4BB /* libMobileVLCKit.a in Frameworks */,
7D0EF4A2170883940003ED47 /* Foundation.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
7D2DF7C71B677EE600FB78AB /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
7D2DF7FE1B67808D00FB78AB /* UIKit.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
7D84E5091B42BA9900EA7D1F /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
7D84E50A1B42BA9900EA7D1F /* Foundation.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
......@@ -183,6 +277,8 @@
isa = PBXGroup;
children = (
7D0EF49E170883940003ED47 /* libMediaLibraryKit.a */,
7D84E5181B42BA9900EA7D1F /* libMediaLibraryKit-readonly.a */,
7D2DF7CB1B677EE600FB78AB /* MediaLibraryKit.framework */,
);
name = Products;
sourceTree = "<group>";
......@@ -190,6 +286,9 @@
7D0EF4A0170883940003ED47 /* Frameworks */ = {
isa = PBXGroup;
children = (
7D62B5AA1B67D1460098D4BB /* libMobileVLCKit.a */,
7D2DF7FD1B67808D00FB78AB /* UIKit.framework */,
7DF09E7B1B6763DF001075FD /* libMobileVLCKit.a */,
7D0EF4A1170883940003ED47 /* Foundation.framework */,
);
name = Frameworks;
......@@ -198,6 +297,7 @@
7D0EF4A4170883940003ED47 /* Supporting Files */ = {
isa = PBXGroup;
children = (
7D2DF7CF1B677EE600FB78AB /* Info.plist */,
7D0EF4DF170883D80003ED47 /* MediaLibraryKit_Prefix.pch */,
);
name = "Supporting Files";
......@@ -243,6 +343,7 @@
7D0EF514170885130003ED47 /* MLShow.h */,
7D0EF515170885130003ED47 /* MLShowEpisode.h */,
7D0EF521170885130003ED47 /* MLThumbnailerQueue.h */,
7D201AC61B186724009AC64E /* UIImage+MLKit.h */,
);
path = Public;
sourceTree = "<group>";
......@@ -268,7 +369,6 @@
7D0EF525170885130003ED47 /* MLTVShowInfoGrabber.m */,
7D0EF526170885130003ED47 /* MLURLConnection.m */,
7D0EF527170885130003ED47 /* NSXMLNode_Additions.m */,
7D201AC61B186724009AC64E /* UIImage+MLKit.h */,
7D201AC71B186724009AC64E /* UIImage+MLKit.m */,
);
path = Sources;
......@@ -335,6 +435,37 @@
};
/* End PBXGroup section */
/* Begin PBXHeadersBuildPhase section */
7D2DF7C81B677EE600FB78AB /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
7D2DF7D31B677F1700FB78AB /* MediaLibraryKit.h in Headers */,
7D2DF7D41B677F1700FB78AB /* MLAlbum.h in Headers */,
7D2DF7D51B677F1700FB78AB /* MLAlbumTrack.h in Headers */,
7D2DF7D61B677F1700FB78AB /* MLFile.h in Headers */,
7D2DF7D71B677F1700FB78AB /* MLLabel.h in Headers */,
7D2DF7D81B677F1700FB78AB /* MLMediaLibrary.h in Headers */,
7D2DF7D91B677F1700FB78AB /* MLShow.h in Headers */,
7D2DF7DA1B677F1700FB78AB /* MLShowEpisode.h in Headers */,
7D2DF7DB1B677F1700FB78AB /* MLThumbnailerQueue.h in Headers */,
7D2DF7DC1B677F2300FB78AB /* MLCrashPreventer.h in Headers */,
DD9FBE711BA8883B00FFE77A /* UIImage+MLKit.h in Headers */,
7D2DF7DD1B677F2300FB78AB /* MLFileEntityMappingPolicy_2_5_to_2_6.h in Headers */,
7D2DF7DE1B677F2300FB78AB /* MLFileParserQueue.h in Headers */,
7D2DF7DF1B677F2300FB78AB /* MLMediaLibrary+Migration.h in Headers */,
7D2DF7E01B677F2300FB78AB /* MLMovieInfoGrabber.h in Headers */,
7D2DF7E11B677F2300FB78AB /* MLTitleDecrapifier.h in Headers */,
7D2DF7E21B677F2300FB78AB /* MLTVShowEpisodesInfoGrabber.h in Headers */,
7D2DF7E31B677F2300FB78AB /* MLTVShowInfoGrabber.h in Headers */,
7D2DF7E41B677F2300FB78AB /* MLURLConnection.h in Headers */,
7D2DF7E51B677F2300FB78AB /* NSXMLNode_Additions.h in Headers */,
7D2DF7E61B677F2300FB78AB /* TheTVDBGrabber.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
7D0EF49D170883940003ED47 /* MediaLibraryKit */ = {
isa = PBXNativeTarget;
......@@ -353,6 +484,41 @@
productReference = 7D0EF49E170883940003ED47 /* libMediaLibraryKit.a */;
productType = "com.apple.product-type.library.static";
};
7D2DF7CA1B677EE600FB78AB /* MediaLibraryKit-watchOS */ = {
isa = PBXNativeTarget;
buildConfigurationList = 7D2DF7D01B677EE600FB78AB /* Build configuration list for PBXNativeTarget "MediaLibraryKit-watchOS" */;
buildPhases = (
7D2DF7C61B677EE600FB78AB /* Sources */,
7D2DF7C71B677EE600FB78AB /* Frameworks */,
7D2DF7C81B677EE600FB78AB /* Headers */,
7D2DF7C91B677EE600FB78AB /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = "MediaLibraryKit-watchOS";
productName = "MediaLibraryKit-watchOS";
productReference = 7D2DF7CB1B677EE600FB78AB /* MediaLibraryKit.framework */;
productType = "com.apple.product-type.framework";
};
7D84E4E51B42BA9900EA7D1F /* MediaLibraryKit-readonly */ = {
isa = PBXNativeTarget;
buildConfigurationList = 7D84E5151B42BA9900EA7D1F /* Build configuration list for PBXNativeTarget "MediaLibraryKit-readonly" */;
buildPhases = (
7D84E4E61B42BA9900EA7D1F /* Sources */,
7D84E5091B42BA9900EA7D1F /* Frameworks */,
7D84E50B1B42BA9900EA7D1F /* Copy Files */,
);
buildRules = (
);
dependencies = (
);
name = "MediaLibraryKit-readonly";
productName = MediaLibraryKit;
productReference = 7D84E5181B42BA9900EA7D1F /* libMediaLibraryKit-readonly.a */;
productType = "com.apple.product-type.library.static";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
......@@ -361,6 +527,11 @@
attributes = {
LastUpgradeCheck = 0510;
ORGANIZATIONNAME = VideoLAN;
TargetAttributes = {
7D2DF7CA1B677EE600FB78AB = {
CreatedOnToolsVersion = 7.0;
};
};
};
buildConfigurationList = 7D0EF499170883940003ED47 /* Build configuration list for PBXProject "MediaLibraryKit" */;
compatibilityVersion = "Xcode 3.2";
......@@ -375,10 +546,24 @@
projectRoot = "";
targets = (
7D0EF49D170883940003ED47 /* MediaLibraryKit */,
7D84E4E51B42BA9900EA7D1F /* MediaLibraryKit-readonly */,
7D2DF7CA1B677EE600FB78AB /* MediaLibraryKit-watchOS */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
7D2DF7C91B677EE600FB78AB /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
7D2DF7FB1B677F8200FB78AB /* MappingModel_2_5_to_2_6.xcmappingmodel in Resources */,
7D2DF7FC1B677F8200FB78AB /* MediaLibrary.xcdatamodeld in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
7D0EF49A170883940003ED47 /* Sources */ = {
isa = PBXSourcesBuildPhase;
......@@ -391,33 +576,61 @@
DDC7BFAE1B03825F00160878 /* MediaLibrary.xcdatamodeld in Sources */,
7D0EF52B170885130003ED47 /* MLLabel.m in Sources */,
7D0EF52C170885130003ED47 /* MLMediaLibrary.m in Sources */,
7D0EF52D170885130003ED47 /* MLMovieInfoGrabber.m in Sources */,
7D0EF52E170885130003ED47 /* MLShow.m in Sources */,
7D0EF52F170885130003ED47 /* MLShowEpisode.m in Sources */,
DDB959391AFBAD8700BB8CFF /* MappingModel_2_5_to_2_6.xcmappingmodel in Sources */,
7D0EF530170885130003ED47 /* MLThumbnailerQueue.m in Sources */,
7D0EF531170885130003ED47 /* MLTitleDecrapifier.m in Sources */,
7D0EF532170885130003ED47 /* MLTVShowEpisodesInfoGrabber.m in Sources */,
7D0EF533170885130003ED47 /* MLTVShowInfoGrabber.m in Sources */,
7D0EF534170885130003ED47 /* MLURLConnection.m in Sources */,
7D9E238617AEEA13008485E5 /* MLAlbumTrack.m in Sources */,
7D9E238817AEEA71008485E5 /* MLAlbum.m in Sources */,
7D0EF535170885130003ED47 /* NSXMLNode_Additions.m in Sources */,
7D0EF551170885230003ED47 /* CXMLDocument_CreationExtensions.m in Sources */,
7D0EF552170885230003ED47 /* CXMLNode_CreationExtensions.m in Sources */,
7D0EF553170885230003ED47 /* CXMLDocument.m in Sources */,
7D0EF554170885230003ED47 /* CXMLDocument_PrivateExtensions.m in Sources */,
7D201AC81B186724009AC64E /* UIImage+MLKit.m in Sources */,
7D0EF555170885230003ED47 /* CXMLElement.m in Sources */,
7D0EF556170885230003ED47 /* CXMLElement_CreationExtensions.m in Sources */,
7D0EF557170885230003ED47 /* CXMLElement_ElementTreeExtensions.m in Sources */,
DDB959371AFB9B2B00BB8CFF /* MLMediaLibrary+Migration.m in Sources */,
7D0EF558170885230003ED47 /* CXMLNode.m in Sources */,
7D0EF559170885230003ED47 /* CXMLNode_PrivateExtensions.m in Sources */,
7D0EF55A170885230003ED47 /* CXMLNode_XPathExtensions.m in Sources */,
7D0EF55B170885230003ED47 /* CTidy.m in Sources */,
7D8ECFE21708FEAE00A989E9 /* CXHTMLDocument.m in Sources */,
7D8ECFE51708FEC000A989E9 /* CXMLNamespaceNode.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
7D2DF7C61B677EE600FB78AB /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
7D2DF7E71B677F3100FB78AB /* MLCrashPreventer.m in Sources */,
7D2DF7E81B677F3100FB78AB /* MLFile.m in Sources */,
7D2DF7E91B677F3100FB78AB /* MLFileParserQueue.m in Sources */,
7D2DF7EA1B677F3100FB78AB /* MLLabel.m in Sources */,
7D2DF7EB1B677F3100FB78AB /* MLMediaLibrary.m in Sources */,
7D2DF7EC1B677F3100FB78AB /* MLMediaLibrary+Migration.m in Sources */,
7D2DF7EE1B677F3100FB78AB /* MLShow.m in Sources */,
7D2DF7EF1B677F3100FB78AB /* MLShowEpisode.m in Sources */,
7D2DF7F01B677F3100FB78AB /* MLAlbum.m in Sources */,
7D2DF7F11B677F3100FB78AB /* MLAlbumTrack.m in Sources */,
7D2DF7F21B677F3100FB78AB /* MLFileEntityMappingPolicy_2_5_to_2_6.m in Sources */,
7D2DF7F31B677F3100FB78AB /* MLThumbnailerQueue.m in Sources */,
7D2DF7F41B677F3100FB78AB /* MLTitleDecrapifier.m in Sources */,
DD9FBE731BA985C600FFE77A /* UIImage+MLKit.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
7D84E4E61B42BA9900EA7D1F /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
7D84E4E71B42BA9900EA7D1F /* MLFileEntityMappingPolicy_2_5_to_2_6.m in Sources */,
7D84E4E81B42BA9900EA7D1F /* MLCrashPreventer.m in Sources */,
7D84E4E91B42BA9900EA7D1F /* MLFile.m in Sources */,
7D84E4EA1B42BA9900EA7D1F /* MLFileParserQueue.m in Sources */,
7D84E4EB1B42BA9900EA7D1F /* MediaLibrary.xcdatamodeld in Sources */,
7D84E4EC1B42BA9900EA7D1F /* MLLabel.m in Sources */,
7D84E4ED1B42BA9900EA7D1F /* MLMediaLibrary.m in Sources */,
7D84E4EF1B42BA9900EA7D1F /* MLShow.m in Sources */,
7D84E4F01B42BA9900EA7D1F /* MLShowEpisode.m in Sources */,
7D84E4F11B42BA9900EA7D1F /* MappingModel_2_5_to_2_6.xcmappingmodel in Sources */,
7D84E4F21B42BA9900EA7D1F /* MLThumbnailerQueue.m in Sources */,
7D84E4F31B42BA9900EA7D1F /* MLTitleDecrapifier.m in Sources */,
7D84E4F61B42BA9900EA7D1F /* MLURLConnection.m in Sources */,
7D84E4F71B42BA9900EA7D1F /* MLAlbumTrack.m in Sources */,
7D84E4F81B42BA9900EA7D1F /* MLAlbum.m in Sources */,
7D84E4FE1B42BA9900EA7D1F /* UIImage+MLKit.m in Sources */,
7D84E5021B42BA9900EA7D1F /* MLMediaLibrary+Migration.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
......@@ -497,8 +710,9 @@
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = MediaLibraryKit_Prefix.pch;
HEADER_SEARCH_PATHS = (
"\"$(SRCROOT)/External/MobileVLCKit/include\"",
/usr/include/libxml2,
"$(inherited)",
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
"$(CONFIGURATION_BUILD_DIR)/**",
);
IPHONEOS_DEPLOYMENT_TARGET = 5.1.1;
LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)/External/MobileVLCKit\"";
......@@ -521,8 +735,9 @@
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = MediaLibraryKit_Prefix.pch;
HEADER_SEARCH_PATHS = (
"\"$(SRCROOT)/External/MobileVLCKit/include\"",
/usr/include/libxml2,
"$(inherited)",
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
"$(CONFIGURATION_BUILD_DIR)/**",
);
IPHONEOS_DEPLOYMENT_TARGET = 5.1.1;
LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)/External/MobileVLCKit\"";
......@@ -532,6 +747,141 @@
};
name = Release;
};
7D2DF7D11B677EE600FB78AB /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
APPLICATION_EXTENSION_API_ONLY = YES;
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_UNREACHABLE_CODE = YES;
CURRENT_PROJECT_VERSION = 1;
DEBUG_INFORMATION_FORMAT = dwarf;
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_NO_COMMON_BLOCKS = YES;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = MediaLibraryKit_Prefix.pch;
GCC_PREPROCESSOR_DEFINITIONS = (
"$(inherited)",
MLKIT_READONLY_TARGET,
);
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
INFOPLIST_FILE = "MediaLibraryKit-watchOS/Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
MTL_ENABLE_DEBUG_INFO = YES;
PRODUCT_BUNDLE_IDENTIFIER = "org.videolan.MediaLibraryKit-watchOS";
PRODUCT_NAME = MediaLibraryKit;
SDKROOT = watchos;
SKIP_INSTALL = YES;
TARGETED_DEVICE_FAMILY = 4;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
WATCHOS_DEPLOYMENT_TARGET = 2.0;
};
name = Debug;
};
7D2DF7D21B677EE600FB78AB /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
APPLICATION_EXTENSION_API_ONLY = YES;
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_UNREACHABLE_CODE = YES;
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 1;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_NO_COMMON_BLOCKS = YES;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = MediaLibraryKit_Prefix.pch;
GCC_PREPROCESSOR_DEFINITIONS = MLKIT_READONLY_TARGET;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
INFOPLIST_FILE = "MediaLibraryKit-watchOS/Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
MTL_ENABLE_DEBUG_INFO = NO;
PRODUCT_BUNDLE_IDENTIFIER = "org.videolan.MediaLibraryKit-watchOS";
PRODUCT_NAME = MediaLibraryKit;
SDKROOT = watchos;
SKIP_INSTALL = YES;
TARGETED_DEVICE_FAMILY = 4;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
WATCHOS_DEPLOYMENT_TARGET = 2.0;
};
name = Release;
};
7D84E5161B42BA9900EA7D1F /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = (
"$(ARCHS_STANDARD)",
armv7s,
);
CLANG_ENABLE_OBJC_ARC = YES;
DSTROOT = /tmp/MediaLibraryKit.dst;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = MediaLibraryKit_Prefix.pch;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
MLKIT_READONLY_TARGET,
);
IPHONEOS_DEPLOYMENT_TARGET = 5.1.1;
LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)/External/MobileVLCKit\"";
OTHER_LDFLAGS = "-ObjC";
PRODUCT_NAME = "MediaLibraryKit-readonly";
SKIP_INSTALL = YES;
};
name = Debug;
};
7D84E5171B42BA9900EA7D1F /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = (
"$(ARCHS_STANDARD)",
armv7s,
);
CLANG_ENABLE_OBJC_ARC = YES;
DSTROOT = /tmp/MediaLibraryKit.dst;
ENABLE_NS_ASSERTIONS = NO;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = MediaLibraryKit_Prefix.pch;
GCC_PREPROCESSOR_DEFINITIONS = MLKIT_READONLY_TARGET;
IPHONEOS_DEPLOYMENT_TARGET = 5.1.1;
LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)/External/MobileVLCKit\"";
OTHER_LDFLAGS = "-ObjC";
PRODUCT_NAME = "MediaLibraryKit-readonly";
SKIP_INSTALL = YES;
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
......@@ -553,17 +903,36 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
7D2DF7D01B677EE600FB78AB /* Build configuration list for PBXNativeTarget "MediaLibraryKit-watchOS" */ = {
isa = XCConfigurationList;
buildConfigurations = (
7D2DF7D11B677EE600FB78AB /* Debug */,
7D2DF7D21B677EE600FB78AB /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
7D84E5151B42BA9900EA7D1F /* Build configuration list for PBXNativeTarget "MediaLibraryKit-readonly" */ = {
isa = XCConfigurationList;
buildConfigurations = (
7D84E5161B42BA9900EA7D1F /* Debug */,
7D84E5171B42BA9900EA7D1F /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
/* Begin XCVersionGroup section */
DDC7BFAA1B03825F00160878 /* MediaLibrary.xcdatamodeld */ = {
isa = XCVersionGroup;
children = (
7D0363A61B2F317500CC0343 /* MediaLibrary-2.7.xcdatamodel */,
DDC7BFAB1B03825F00160878 /* MediaLibrary-2.1.xcdatamodel */,
DDC7BFAC1B03825F00160878 /* MediaLibrary-2.5.xcdatamodel */,
DDC7BFAD1B03825F00160878 /* MediaLibrary-2.6.xcdatamodel */,
);
currentVersion = DDC7BFAD1B03825F00160878 /* MediaLibrary-2.6.xcdatamodel */;
currentVersion = 7D0363A61B2F317500CC0343 /* MediaLibrary-2.7.xcdatamodel */;
path = MediaLibrary.xcdatamodeld;
sourceTree = "<group>";
versionGroupType = wrapper.xcdatamodel;
......
......@@ -30,23 +30,28 @@
#import <CoreData/CoreData.h>
#if TARGET_OS_IPHONE
// FIXME
#define HAVE_BLOCK 0
#define NSXMLDocument CXMLDocument
#define NSXMLNode CXMLNode
#ifndef __IPHONE_9_0
#error "This project uses features only available in iOS SDK 9.0 and later."
#endif
#import "TouchXML.h"
// FIXME
#define HAVE_BLOCK 0
#import <UIKit/UIKit.h>
#ifndef MLKIT_READONLY_TARGET
#if !TARGET_OS_WATCH
#import <MobileVLCKit/MobileVLCKit.h>
#endif
#endif
#else
#define HAVE_BLOCK 1
#import <VLCKit/VLCKit.h>
#import "NSXMLNode_Additions.h"
#endif
#import "NSXMLNode_Additions.h"
#import "UIImage+MLKit.h"
#ifndef NDEBUG
......@@ -57,6 +62,8 @@
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
#define SYSTEM_RUNS_IOS9 SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"9.0")
#ifdef __IPHONE_7_0
#define SYSTEM_RUNS_IOS7 SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0")
#else
......
Version 2.6.9
-------------
* Add saveWithCompletionHandler to fix runtime crashes
Version 2.6.8
-------------
* Fix runtime exception when attempting to save pending changes
Version 2.6.7
-------------
* Updated Cocoapods spec
Version 2.6.6
-------------
* Updated Cocoapods spec
Version 2.6.5
-------------
* Fixed a duplication of Files with cyrillic letters
* Fix behavior when used in restricted environments with no access to app groups
Version 2.6.4
-------------
* Added unstable Cocoapods spec
Version 2.6.3
-------------
* Added Cocoapods spec
Version 2.6.2
-------------
* Optimized thumbnailing and parsing
Version 2.6.1
-------------
* Fixed file lookup for paths containing spaces or umlauts
* Fixed music album import issues
Version 2.6.0
-------------
* Added native support for watchOS 2
* Added improve data model
* Added support for CoreSpotlight
* Improved thumbnailing
* Improved support for group identifiers
* Stability improvements
Added Public APIs:
- MLMediaLibrary:
- new property: spotlightIndexingEnabled
- MLAlbumTrack:
- new selectors: trackWithAlbum:metadata:createIfNeeded:wasCreated:
trackWithMetadata:createIfNeeded:wasCreated:
Deprecated Public APIs:
- MLAlbumTrack:
trackWithAlbum:trackNumber:createIfNeeded:
trackWithAlbum:trackNumber:trackName:createIfNeeded:
trackWithAlbumName:trackNumber:createIfNeeded:wasCreated:
trackWithAlbumName:trackNumber:trackName:createIfNeeded:wasCreated:
Version 2.5.5
-------------
* Stability improvements
Version 2.5.4
-------------
* Stability improvements
Version 2.5.3
-------------
* Stability improvements
Version 2.5.2
-------------
* Smaller library size by increased dead code stripping
* Added new target to create a read-only variant which
does not depend on VLCKit
Version 2.5.1
-------------
Added Public APIs:
......
......@@ -49,6 +49,8 @@
+ (MLAlbum *)albumWithName:(NSString *)name
{
NSFetchRequest *request = [[MLMediaLibrary sharedMediaLibrary] fetchRequestForEntity:@"Album"];
if (!request)
return nil;
[request setPredicate:[NSPredicate predicateWithFormat:@"name == %@", name]];
NSManagedObjectContext *moc = [[MLMediaLibrary sharedMediaLibrary] managedObjectContext];
......@@ -77,7 +79,13 @@
[[NSSortDescriptor alloc] initWithKey:@"trackNumber"
ascending:YES
selector:@selector(compare:)];
return [tracks sortedArrayUsingDescriptors:@[trackNumberDescriptor]];
NSSortDescriptor *discNumberDescriptor =
[[NSSortDescriptor alloc] initWithKey:@"discNumber"
ascending:YES
selector:@selector(compare:)];
return [tracks sortedArrayUsingDescriptors:@[discNumberDescriptor, trackNumberDescriptor]];
}
- (void)addTrack:(MLAlbumTrack *)track
......@@ -100,11 +108,16 @@
NSMutableSet *tracks = [self mutableSetValueForKey:@"tracks"];
[tracks removeObject:track];
@try {
[tracks removeObject:track];
[self willChangeValueForKey:@"tracks"];
[self setValue:tracks forKey:@"tracks"];
[self didChangeValueForKey:@"tracks"];
[self willChangeValueForKey:@"tracks"];
[self setValue:tracks forKey:@"tracks"];
[self didChangeValueForKey:@"tracks"];
}
@catch (NSException *exception) {
NSLog(@"removing track failed");
}
}
- (void)removeTrackWithNumber:(NSNumber *)trackNumber
......
......@@ -26,6 +26,13 @@
#import "MLMediaLibrary.h"
#import "MLAlbumTrack.h"
#import "MLAlbum.h"
#import "MLFile.h"
NSString *const MLAlbumTrackAlbum = @"MLAlbumTrackAlbum";
NSString *const MLAlbumTrackAlbumName = @"MLAlbumTrackAlbumName";
NSString *const MLAlbumTrackNumber = @"MLAlbumTrackNumber";
NSString *const MLAlbumTrackTrackName = @"MLAlbumTrackTrackName";
NSString *const MLAlbumTrackDiscNumber = @"MLAlbumTrackDiscNumber";
@interface MLAlbumTrack ()
@property (nonatomic, strong) NSNumber *primitiveUnread;
......@@ -54,35 +61,61 @@
+ (MLAlbumTrack *)trackWithAlbum:(MLAlbum *)album trackNumber:(NSNumber *)trackNumber createIfNeeded:(BOOL)createIfNeeded
{
return [MLAlbumTrack trackWithAlbum:album
trackNumber:trackNumber
trackName:@""
createIfNeeded:createIfNeeded];
NSMutableDictionary *mutDict = [NSMutableDictionary dictionary];
if (trackNumber)
[mutDict setObject:trackNumber forKey:MLAlbumTrackNumber];
BOOL wasCreated = NO;
return [MLAlbumTrack trackWithAlbum:album metadata:[NSDictionary dictionaryWithDictionary:mutDict] createIfNeeded:createIfNeeded wasCreated:&wasCreated];
}
+ (MLAlbumTrack *)trackWithAlbum:(MLAlbum *)album trackNumber:(NSNumber *)trackNumber trackName:(NSString *)trackName createIfNeeded:(BOOL)createIfNeeded
{
NSMutableDictionary *mutDict = [NSMutableDictionary dictionary];
if (trackName)
[mutDict setObject:trackName forKey:MLAlbumTrackTrackName];
if (trackNumber)
[mutDict setObject:trackNumber forKey:MLAlbumTrackNumber];
BOOL wasCreated = NO;
return [MLAlbumTrack trackWithAlbum:album metadata:[NSDictionary dictionaryWithDictionary:mutDict] createIfNeeded:createIfNeeded wasCreated:&wasCreated];
}
+ (MLAlbumTrack *)trackWithAlbum:(MLAlbum *)album metadata:(NSDictionary *)metadata createIfNeeded:(BOOL)createIfNeeded wasCreated:(BOOL *)wasCreated
{
if (!album)
return nil;
NSNumber *trackNumber = metadata[MLAlbumTrackNumber];
NSString *trackName = metadata[MLAlbumTrackTrackName];
NSNumber *discNumber = metadata[MLAlbumTrackDiscNumber];
NSSet *tracks = [album tracks];
MLAlbumTrack *track = nil;
if (trackNumber) {
for (MLAlbumTrack *trackIter in tracks) {
if ([trackIter.trackNumber intValue] == [trackNumber intValue]) {
for (MLAlbumTrack *trackIter in tracks) {
if ([trackIter.trackNumber intValue] == [trackNumber intValue]) {
if (trackIter.discNumber.intValue == discNumber.intValue) {
track = trackIter;
break;
} else if ([trackIter.title isEqualToString:trackName]) {
}
} else if ([trackIter.title isEqualToString:trackName]) {
if (trackIter.discNumber.intValue == discNumber.intValue) {
track = trackIter;
break;
}
}
}
if (!track && createIfNeeded) {
track = [[MLMediaLibrary sharedMediaLibrary] createObjectForEntity:@"AlbumTrack"];
if (trackNumber.integerValue == 0)
trackNumber = @(tracks.count + 1);
track.trackNumber = trackNumber;
track.title = trackName;
if (discNumber)
track.discNumber = discNumber;
[album addTrack:track];
}
return track;
......@@ -90,25 +123,45 @@
+ (MLAlbumTrack *)trackWithAlbumName:(NSString *)albumName trackNumber:(NSNumber *)trackNumber createIfNeeded:(BOOL)createIfNeeded wasCreated:(BOOL *)wasCreated
{
return [MLAlbumTrack trackWithAlbumName:albumName
trackNumber:trackNumber
trackName:@""
createIfNeeded:createIfNeeded
wasCreated:wasCreated];
NSMutableDictionary *mutDict = [NSMutableDictionary dictionary];
if (albumName)
[mutDict setObject:albumName forKey:MLAlbumTrackAlbumName];
if (trackNumber)
[mutDict setObject:trackNumber forKey:MLAlbumTrackNumber];
return [MLAlbumTrack trackWithMetadata:[NSDictionary dictionaryWithDictionary:mutDict] createIfNeeded:createIfNeeded wasCreated:wasCreated];
}