diff options
Diffstat (limited to 'packages/darwin_app/spotlight_importer/GetMetadataForFile.m')
-rw-r--r-- | packages/darwin_app/spotlight_importer/GetMetadataForFile.m | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/packages/darwin_app/spotlight_importer/GetMetadataForFile.m b/packages/darwin_app/spotlight_importer/GetMetadataForFile.m new file mode 100644 index 00000000..16fe8681 --- /dev/null +++ b/packages/darwin_app/spotlight_importer/GetMetadataForFile.m @@ -0,0 +1,78 @@ +#include <CoreFoundation/CoreFoundation.h> +#include <CoreServices/CoreServices.h> +#include <Foundation/Foundation.h> + +/* ----------------------------------------------------------------------------- + Step 1 + Set the UTI types the importer supports + + Modify the CFBundleDocumentTypes entry in Info.plist to contain + an array of Uniform Type Identifiers (UTI) for the LSItemContentTypes + that your importer can handle + + ----------------------------------------------------------------------------- */ + +/* ----------------------------------------------------------------------------- + Step 2 + Implement the GetMetadataForFile function + + Implement the GetMetadataForFile function below to scrape the relevant + metadata from your document and return it as a CFDictionary using standard keys + (defined in MDItem.h) whenever possible. + ----------------------------------------------------------------------------- */ + +/* ----------------------------------------------------------------------------- + Step 3 (optional) + If you have defined new attributes, update the schema.xml file + + Edit the schema.xml file to include the metadata keys that your importer returns. + Add them to the <allattrs> and <displayattrs> elements. + + Add any custom types that your importer requires to the <attributes> element + + <attribute name="com_mycompany_metadatakey" type="CFString" multivalued="true"/> + + ----------------------------------------------------------------------------- */ + + + +/* ----------------------------------------------------------------------------- + Get metadata attributes from file + + This function's job is to extract useful information your file format supports + and return it as a dictionary + ----------------------------------------------------------------------------- */ + +Boolean GetMetadataForFile(void* thisInterface, + CFMutableDictionaryRef attributes, + CFStringRef contentTypeUTI, + CFStringRef pathToFile) +{ + /* Pull any available metadata from the file at the specified path */ + /* Return the attribute keys and attribute values in the dict */ + /* Return TRUE if successful, FALSE if there was no data provided */ + Boolean success=NO; + NSString *theContent; + NSAutoreleasePool *pool; + + // Don't assume that there is an autorelease pool around the calling of this function. + pool = [[NSAutoreleasePool alloc] init]; + // load the document at the specified location + theContent=[[NSString alloc] initWithContentsOfFile:(NSString *)pathToFile + //usedEncoding:(NSStringEncoding *)NULL + encoding:NSUTF8StringEncoding + error:(NSError **)NULL]; + if (theContent) + { + [(NSMutableDictionary *)attributes setObject:theContent + forKey:(NSString *)kMDItemTextContent]; + + // return YES so that the attributes are imported + success=YES; + + // release the loaded document + [theContent release]; + } + [pool release]; + return success; +} |