mirror of
https://github.com/zydeco/minivmac4ios.git
synced 2024-11-22 19:31:47 +00:00
also load keyboard layouts from Documents/Keyboard Layouts
This commit is contained in:
parent
097ac4e64d
commit
a6e6014220
@ -16,6 +16,7 @@ extern NSString *DocumentsChangedNotification;
|
|||||||
|
|
||||||
@property (strong, nonatomic) UIWindow *window;
|
@property (strong, nonatomic) UIWindow *window;
|
||||||
@property (nonatomic, readonly) NSString *documentsPath;
|
@property (nonatomic, readonly) NSString *documentsPath;
|
||||||
|
@property (nonatomic, readonly) NSString *userKeyboardLayoutsPath;
|
||||||
@property (nonatomic, readonly) NSArray<NSString*> *diskImageExtensions;
|
@property (nonatomic, readonly) NSArray<NSString*> *diskImageExtensions;
|
||||||
@property (nonatomic, readonly) NSArray<NSBundle*> *emulatorBundles;
|
@property (nonatomic, readonly) NSArray<NSBundle*> *emulatorBundles;
|
||||||
@property (readonly, nonatomic, getter = isSandboxed) BOOL sandboxed;
|
@property (readonly, nonatomic, getter = isSandboxed) BOOL sandboxed;
|
||||||
|
@ -45,6 +45,10 @@ NSString *DocumentsChangedNotification = @"documentsChanged";
|
|||||||
[application btcMouseSetRawMode:YES];
|
[application btcMouseSetRawMode:YES];
|
||||||
[application btcMouseSetDelegate:self];
|
[application btcMouseSetDelegate:self];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// populate documents directory so it shows up in Files
|
||||||
|
[[NSFileManager defaultManager] createDirectoryAtPath:self.userKeyboardLayoutsPath withIntermediateDirectories:YES attributes:nil error:nil];
|
||||||
|
|
||||||
return YES;
|
return YES;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -280,6 +284,15 @@ NSString *DocumentsChangedNotification = @"documentsChanged";
|
|||||||
return documentsPath;
|
return documentsPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (NSString *)userKeyboardLayoutsPath {
|
||||||
|
static dispatch_once_t onceToken;
|
||||||
|
static NSString *userKeyboardLayoutsPath;
|
||||||
|
dispatch_once(&onceToken, ^{
|
||||||
|
userKeyboardLayoutsPath = [self.documentsPath stringByAppendingPathComponent:@"Keyboard Layouts"];
|
||||||
|
});
|
||||||
|
return userKeyboardLayoutsPath;
|
||||||
|
}
|
||||||
|
|
||||||
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
|
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
|
||||||
if (url.fileURL) {
|
if (url.fileURL) {
|
||||||
// opening file
|
// opening file
|
||||||
|
@ -37,6 +37,11 @@ typedef enum : NSInteger {
|
|||||||
- (void)viewDidLoad {
|
- (void)viewDidLoad {
|
||||||
[super viewDidLoad];
|
[super viewDidLoad];
|
||||||
keyboardLayouts = [[NSBundle mainBundle] pathsForResourcesOfType:@"nfkeyboardlayout" inDirectory:@"Keyboard Layouts"];
|
keyboardLayouts = [[NSBundle mainBundle] pathsForResourcesOfType:@"nfkeyboardlayout" inDirectory:@"Keyboard Layouts"];
|
||||||
|
NSString *userKeyboardLayoutsPath = [AppDelegate sharedInstance].userKeyboardLayoutsPath;
|
||||||
|
NSArray *userKeyboardLayouts = [[[NSFileManager defaultManager] contentsOfDirectoryAtPath:userKeyboardLayoutsPath error:nil] filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"pathExtension.lowercaseString = %@", @"nfkeyboardlayout"]];
|
||||||
|
if (userKeyboardLayouts.count > 0) {
|
||||||
|
keyboardLayouts = [keyboardLayouts arrayByAddingObjectsFromArray:userKeyboardLayouts];
|
||||||
|
}
|
||||||
[self loadEmulatorBundles];
|
[self loadEmulatorBundles];
|
||||||
[self loadCredits];
|
[self loadCredits];
|
||||||
}
|
}
|
||||||
|
@ -220,7 +220,10 @@
|
|||||||
- (KBKeyboardLayout*)keyboardLayout {
|
- (KBKeyboardLayout*)keyboardLayout {
|
||||||
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
|
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
|
||||||
NSString *layoutName = [defaults stringForKey:@"keyboardLayout"];
|
NSString *layoutName = [defaults stringForKey:@"keyboardLayout"];
|
||||||
NSString *layoutPath = [[NSBundle mainBundle] pathForResource:layoutName ofType:nil inDirectory:@"Keyboard Layouts"];
|
NSString *layoutPath = [[[AppDelegate sharedInstance] userKeyboardLayoutsPath] stringByAppendingPathComponent:layoutName];
|
||||||
|
if (![[NSFileManager defaultManager] fileExistsAtPath:layoutPath]) {
|
||||||
|
layoutPath = [[NSBundle mainBundle] pathForResource:layoutName ofType:nil inDirectory:@"Keyboard Layouts"];
|
||||||
|
}
|
||||||
if (layoutPath == nil) {
|
if (layoutPath == nil) {
|
||||||
NSLog(@"Layout not found: %@", layoutPath);
|
NSLog(@"Layout not found: %@", layoutPath);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user