summaryrefslogtreecommitdiff
path: root/macosx/PcsxrDiscHandler.m
blob: 6a424ef3b5501dca169f944eab6823b726420306 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
//
//  PcsxrDiscHandler.m
//  Pcsxr
//
//  Created by Charles Betts on 12/11/11.
//  Copyright (c) 2011 __MyCompanyName__. All rights reserved.
//

#import "PcsxrDiscHandler.h"
#import "EmuThread.h"
#include "psxcommon.h"
#include "plugins.h"
#include "cdrom.h"
#import "RecentItemsMenu.h"
#import "PcsxrController.h"
#import "ARCBridge.h"

@interface PcsxrDiscHandler ()
@property (arcstrong) NSURL *discURL;
@end

@implementation PcsxrDiscHandler

@synthesize discURL;

- (NSURL*)discURLFromFilePath:(NSString *)filePath
{
	if (!discURL) {
		self.discURL = [NSURL fileURLWithPath:filePath isDirectory:NO];
	}
	return self.discURL;
}

+ (NSArray *)supportedUTIs
{
	static NSArray *utisupport = nil;
	if (utisupport == nil) {
		utisupport = [[NSArray alloc] initWithObjects:@"com.alcohol-soft.mdfdisc", @"com.goldenhawk.cdrwin-cuesheet", @"com.apple.disk-image-ndif", @"public.iso-image", @"com.sony.psp.firmware", @"com.codeplex.pcsxr.compressed-bin-image", nil];
	}
	return utisupport;
}

- (BOOL)handleFile:(NSString *)theFile
{
	PcsxrController *appDelegate = [NSApp delegate];
	if ([EmuThread active] == YES) {
		if (UsingIso()) {
			SetIsoFile([theFile fileSystemRepresentation]);
			SetCdOpenCaseTime(time(NULL) + 2);
			LidInterrupt();
		} else {
			return NO;
		}
	} else {
		[appDelegate runURL:[self discURLFromFilePath:theFile]];
	}
	[[appDelegate recentItems] addRecentItem:[self discURLFromFilePath:theFile]];
	return YES;
}

#if !__has_feature(objc_arc)
- (void)dealloc
{
	self.discURL = nil;
	
	[super dealloc];
}
#endif

@end