From dfc5c9e01fe1f7225a5e11949a7518841c893f97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesu=CC=81s=20A=2E=20A=CC=81lvarez?= Date: Wed, 30 Sep 2020 22:40:32 +0200 Subject: [PATCH] set minimum target to iOS 9 remove iOS 8 stuff --- Mini vMac.xcodeproj/project.pbxproj | 23 +-- .../xcshareddata/xcschemes/Mac128K.xcscheme | 2 +- .../xcschemes/MacII-640x480.xcscheme | 2 +- .../xcshareddata/xcschemes/MacII.xcscheme | 2 +- .../xcshareddata/xcschemes/MacPlus4M.xcscheme | 2 +- .../xcshareddata/xcschemes/Mini vMac.xcscheme | 2 +- .../xcshareddata/xcschemes/libhfs.xcscheme | 2 +- .../xcshareddata/xcschemes/libmfs.xcscheme | 2 +- .../xcshareddata/xcschemes/libres.xcscheme | 2 +- Mini vMac/AppDelegate.m | 28 +-- Mini vMac/InsertDiskViewController.m | 165 ++++++------------ Mini vMac/KBKeyboardView.m | 2 +- Mini vMac/MYOSGLUE.m | 73 +++----- Mini vMac/UIImage+DiskImageIcon.m | 3 +- Mini vMac/ViewController.m | 6 +- 15 files changed, 98 insertions(+), 218 deletions(-) diff --git a/Mini vMac.xcodeproj/project.pbxproj b/Mini vMac.xcodeproj/project.pbxproj index 506b55d..f418dfc 100644 --- a/Mini vMac.xcodeproj/project.pbxproj +++ b/Mini vMac.xcodeproj/project.pbxproj @@ -843,7 +843,7 @@ 28F676B51CD15E0B00FC6FA6 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1170; + LastUpgradeCheck = 1200; ORGANIZATIONNAME = namedfork; TargetAttributes = { 283422C91CF8EF8C0088B634 = { @@ -876,10 +876,9 @@ }; buildConfigurationList = 28F676B81CD15E0B00FC6FA6 /* Build configuration list for PBXProject "Mini vMac" */; compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( - English, en, Base, ); @@ -1252,7 +1251,6 @@ INFOPLIST_PREPROCESS = YES; INFOPLIST_PREPROCESSOR_DEFINITIONS = PLIST_PREPROCESSOR; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_DYLIB_INSTALL_NAME = "$(DYLIB_INSTALL_NAME_BASE:standardizepath)/$(EXECUTABLE_PATH)"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = net.namedfork.minivmac.macplus4m; @@ -1280,7 +1278,6 @@ INFOPLIST_PREPROCESS = YES; INFOPLIST_PREPROCESSOR_DEFINITIONS = PLIST_PREPROCESSOR; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_DYLIB_INSTALL_NAME = "$(DYLIB_INSTALL_NAME_BASE:standardizepath)/$(EXECUTABLE_PATH)"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = net.namedfork.minivmac.macplus4m; @@ -1308,7 +1305,6 @@ INFOPLIST_PREPROCESS = YES; INFOPLIST_PREPROCESSOR_DEFINITIONS = PLIST_PREPROCESSOR; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_DYLIB_INSTALL_NAME = "$(DYLIB_INSTALL_NAME_BASE:standardizepath)/$(EXECUTABLE_PATH)"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = net.namedfork.minivmac.macii; @@ -1336,7 +1332,6 @@ INFOPLIST_PREPROCESS = YES; INFOPLIST_PREPROCESSOR_DEFINITIONS = PLIST_PREPROCESSOR; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_DYLIB_INSTALL_NAME = "$(DYLIB_INSTALL_NAME_BASE:standardizepath)/$(EXECUTABLE_PATH)"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = net.namedfork.minivmac.macii; @@ -1364,7 +1359,6 @@ INFOPLIST_PREPROCESS = YES; INFOPLIST_PREPROCESSOR_DEFINITIONS = PLIST_PREPROCESSOR; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_DYLIB_INSTALL_NAME = "$(DYLIB_INSTALL_NAME_BASE:standardizepath)/$(EXECUTABLE_PATH)"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = net.namedfork.minivmac.mac128k; @@ -1392,7 +1386,6 @@ INFOPLIST_PREPROCESS = YES; INFOPLIST_PREPROCESSOR_DEFINITIONS = PLIST_PREPROCESSOR; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_DYLIB_INSTALL_NAME = "$(DYLIB_INSTALL_NAME_BASE:standardizepath)/$(EXECUTABLE_PATH)"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = net.namedfork.minivmac.mac128k; @@ -1420,7 +1413,6 @@ INFOPLIST_PREPROCESS = YES; INFOPLIST_PREPROCESSOR_DEFINITIONS = PLIST_PREPROCESSOR; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_DYLIB_INSTALL_NAME = "$(DYLIB_INSTALL_NAME_BASE:standardizepath)/$(EXECUTABLE_PATH)"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "net.namedfork.minivmac.macii-640x480"; @@ -1448,7 +1440,6 @@ INFOPLIST_PREPROCESS = YES; INFOPLIST_PREPROCESSOR_DEFINITIONS = PLIST_PREPROCESSOR; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_DYLIB_INSTALL_NAME = "$(DYLIB_INSTALL_NAME_BASE:standardizepath)/$(EXECUTABLE_PATH)"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "net.namedfork.minivmac.macii-640x480"; @@ -1484,6 +1475,7 @@ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; @@ -1508,7 +1500,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -1539,6 +1531,7 @@ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; @@ -1557,7 +1550,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; @@ -1575,7 +1568,7 @@ DEVELOPMENT_TEAM = UJXNDZ5TNU; HEADER_SEARCH_PATHS = "$(SRCROOT)"; INFOPLIST_FILE = "Mini vMac/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; MARKETING_VERSION = 2.4; OTHER_CFLAGS = "-DUSE_LIBRES"; @@ -1595,7 +1588,7 @@ DEVELOPMENT_TEAM = UJXNDZ5TNU; HEADER_SEARCH_PATHS = "$(SRCROOT)"; INFOPLIST_FILE = "Mini vMac/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; MARKETING_VERSION = 2.4; OTHER_CFLAGS = "-DUSE_LIBRES"; diff --git a/Mini vMac.xcodeproj/xcshareddata/xcschemes/Mac128K.xcscheme b/Mini vMac.xcodeproj/xcshareddata/xcschemes/Mac128K.xcscheme index ebf1036..b521ee2 100644 --- a/Mini vMac.xcodeproj/xcshareddata/xcschemes/Mac128K.xcscheme +++ b/Mini vMac.xcodeproj/xcshareddata/xcschemes/Mac128K.xcscheme @@ -1,6 +1,6 @@ +@interface InsertDiskViewController () @end @@ -31,7 +31,6 @@ NSString *basePath; NSArray *diskImages, *otherFiles; UIAlertController *createDiskImageController; - UIAlertView *createDiskImageAlert; __block __weak UITextField *sizeTextField; __block __weak UITextField *nameTextField; NSString *fileToRename; @@ -82,10 +81,10 @@ NSArray *allFiles = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:basePath error:NULL]; diskImages = [allFiles filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"%@ containsObject: pathExtension.lowercaseString", [AppDelegate sharedInstance].diskImageExtensions]]; otherFiles = [allFiles filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(NSString* _Nonnull name, NSDictionary * _Nullable bindings) { - BOOL isDiskImage = [diskImages containsObject:name]; + BOOL isDiskImage = [self->diskImages containsObject:name]; BOOL isDirectory; BOOL isHidden = [name hasPrefix:@"."]; - [[NSFileManager defaultManager] fileExistsAtPath:[basePath stringByAppendingPathComponent:name] isDirectory:&isDirectory]; + [[NSFileManager defaultManager] fileExistsAtPath:[self->basePath stringByAppendingPathComponent:name] isDirectory:&isDirectory]; return !(isDirectory || isDiskImage || isHidden); }]]; } @@ -272,30 +271,19 @@ - (void)askRenameFile:(NSString*)filePath { NSString *fileName = filePath.lastPathComponent; - if ([UIAlertController class]) { - UIAlertController *alertController = [UIAlertController alertControllerWithTitle:fileName message:NSLocalizedString(@"Enter new name", nil) preferredStyle:UIAlertControllerStyleAlert]; - [alertController addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) { - nameTextField = textField; - textField.delegate = self; - textField.placeholder = fileName; - textField.text = fileName; - }]; - [alertController addAction:[UIAlertAction actionWithTitle:NSLocalizedString(@"Cancel", nil) style:UIAlertActionStyleCancel handler:nil]]; - [alertController addAction:[UIAlertAction actionWithTitle:NSLocalizedString(@"Rename", nil) style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { - NSString *newName = alertController.textFields.firstObject.text; - [self renameFile:filePath toName:newName]; - }]]; - [self presentViewController:alertController animated:YES completion:nil]; - } else { - UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:fileName message:NSLocalizedString(@"Enter new name", nil) delegate:self cancelButtonTitle:NSLocalizedString(@"Cancel", nil) otherButtonTitles:NSLocalizedString(@"Rename", nil), nil]; - alertView.alertViewStyle = UIAlertViewStylePlainTextInput; - nameTextField = [alertView textFieldAtIndex:0]; - nameTextField.delegate = self; - nameTextField.placeholder = fileName; - nameTextField.text = fileName; - fileToRename = filePath; - [alertView show]; - } + UIAlertController *alertController = [UIAlertController alertControllerWithTitle:fileName message:NSLocalizedString(@"Enter new name", nil) preferredStyle:UIAlertControllerStyleAlert]; + [alertController addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) { + self->nameTextField = textField; + textField.delegate = self; + textField.placeholder = fileName; + textField.text = fileName; + }]; + [alertController addAction:[UIAlertAction actionWithTitle:NSLocalizedString(@"Cancel", nil) style:UIAlertActionStyleCancel handler:nil]]; + [alertController addAction:[UIAlertAction actionWithTitle:NSLocalizedString(@"Rename", nil) style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { + NSString *newName = alertController.textFields.firstObject.text; + [self renameFile:filePath toName:newName]; + }]]; + [self presentViewController:alertController animated:YES completion:nil]; } - (void)renameFile:(NSString*)filePath toName:(NSString*)newName { @@ -319,39 +307,27 @@ #pragma mark - Disk Image Creation - (void)createDiskImage { - if ([UIAlertController class]) { - UIAlertController *alertController = [UIAlertController alertControllerWithTitle:NSLocalizedString(@"Create Disk Image", nil) message:nil preferredStyle:UIAlertControllerStyleAlert]; - [alertController addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) { - textField.placeholder = NSLocalizedString(@"name", nil); - [textField addTarget:self action:@selector(validateCreateDiskImageInput:) forControlEvents:UIControlEventAllEditingEvents]; - }]; - - [alertController addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) { - [self _configureNewDiskSizeField:textField]; - }]; - - [alertController addAction:[UIAlertAction actionWithTitle:NSLocalizedString(@"Cancel", nil) style:UIAlertActionStyleCancel handler:nil]]; - UIAlertAction *createAction = [UIAlertAction actionWithTitle:NSLocalizedString(@"Create", nil) style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { - NSString *name = [self _newDiskImageName]; - off_t size = [self _newDiskImageSize]; - createDiskImageController = nil; - [self createDiskImageWithName:name size:size]; - }]; - [alertController addAction:createAction]; - createAction.enabled = NO; - [self presentViewController:alertController animated:YES completion:nil]; - createDiskImageController = alertController; - } else { - UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Create Disk Image", nil) message:nil delegate:self cancelButtonTitle:NSLocalizedString(@"Cancel", nil) otherButtonTitles:NSLocalizedString(@"Create", nil), nil]; - alertView.alertViewStyle = UIAlertViewStyleLoginAndPasswordInput; - nameTextField = [alertView textFieldAtIndex:0]; - nameTextField.delegate = self; - nameTextField.placeholder = NSLocalizedString(@"name", nil); - [nameTextField addTarget:self action:@selector(validateCreateDiskImageInput:) forControlEvents:UIControlEventAllEditingEvents]; - [self _configureNewDiskSizeField:[alertView textFieldAtIndex:1]]; - createDiskImageAlert = alertView; - [alertView show]; - } + UIAlertController *alertController = [UIAlertController alertControllerWithTitle:NSLocalizedString(@"Create Disk Image", nil) message:nil preferredStyle:UIAlertControllerStyleAlert]; + [alertController addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) { + textField.placeholder = NSLocalizedString(@"name", nil); + [textField addTarget:self action:@selector(validateCreateDiskImageInput:) forControlEvents:UIControlEventAllEditingEvents]; + }]; + + [alertController addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) { + [self _configureNewDiskSizeField:textField]; + }]; + + [alertController addAction:[UIAlertAction actionWithTitle:NSLocalizedString(@"Cancel", nil) style:UIAlertActionStyleCancel handler:nil]]; + UIAlertAction *createAction = [UIAlertAction actionWithTitle:NSLocalizedString(@"Create", nil) style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { + NSString *name = [self _newDiskImageName]; + off_t size = [self _newDiskImageSize]; + self->createDiskImageController = nil; + [self createDiskImageWithName:name size:size]; + }]; + [alertController addAction:createAction]; + createAction.enabled = NO; + [self presentViewController:alertController animated:YES completion:nil]; + createDiskImageController = alertController; } - (void)_configureNewDiskSizeField:(UITextField*)textField { @@ -378,7 +354,7 @@ - (BOOL)validateCreateDiskImageInput:(id)sender { BOOL valid = NO; - if (self.presentedViewController == createDiskImageController || createDiskImageAlert.visible) { + if (self.presentedViewController == createDiskImageController) { NSString *name = [self _newDiskImageName]; BOOL nameIsValid = (name.length > 0) && ![name hasPrefix:@"."] && ![name containsString:@"/"] && ![name containsString:@"*"]; @@ -400,15 +376,13 @@ - (NSString*)_newDiskImageName { if (createDiskImageController != nil) { return createDiskImageController.textFields[0].text; - } else if (createDiskImageAlert.visible) { - return nameTextField.text; } else { return nil; } } - (off_t)_newDiskImageSize { - if (createDiskImageController == nil && !createDiskImageAlert.visible) { + if (createDiskImageController == nil) { return 0; } UISegmentedControl *unitsControl = (UISegmentedControl*)sizeTextField.rightView; @@ -429,29 +403,19 @@ UIActivityIndicatorView *activityIndicatorView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; activityIndicatorView.color = [UIColor blackColor]; - if ([UIAlertController class]) { - UIAlertController *alertController = [UIAlertController alertControllerWithTitle:NSLocalizedString(@"Creating Disk Image", nil) message:@"\n\n\n" preferredStyle:UIAlertControllerStyleAlert]; - [self presentViewController:alertController animated:true completion:^{ - UIView *alertView = alertController.view; - activityIndicatorView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin; - activityIndicatorView.center = CGPointMake(alertView.bounds.size.width / 2.0, alertView.bounds.size.height / 2.0 + 32.0); - [alertView addSubview:activityIndicatorView]; - [activityIndicatorView startAnimating]; - [self _writeNewDiskImage:fd size:size activityIndicator:activityIndicatorView progressAlert:alertController]; - }]; - } else { - UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Creating Disk Image", nil) message:nil delegate:nil cancelButtonTitle:nil otherButtonTitles:nil]; + UIAlertController *alertController = [UIAlertController alertControllerWithTitle:NSLocalizedString(@"Creating Disk Image", nil) message:@"\n\n\n" preferredStyle:UIAlertControllerStyleAlert]; + [self presentViewController:alertController animated:true completion:^{ + UIView *alertView = alertController.view; + activityIndicatorView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin; + activityIndicatorView.center = CGPointMake(alertView.bounds.size.width / 2.0, alertView.bounds.size.height / 2.0 + 32.0); [alertView addSubview:activityIndicatorView]; [activityIndicatorView startAnimating]; - [alertView setValue:activityIndicatorView forKey:@"accessoryView"]; - [alertView show]; - [self _writeNewDiskImage:fd size:size activityIndicator:activityIndicatorView progressAlert:alertView]; - } + [self _writeNewDiskImage:fd size:size activityIndicator:activityIndicatorView]; + }]; } -- (void)_writeNewDiskImage:(int)fd size:(off_t)size activityIndicator:(UIActivityIndicatorView*)activityIndicatorView progressAlert:(id)progressAlert { - long queue = NSFoundationVersionNumber >= NSFoundationVersionNumber_iOS_8_0 ? QOS_CLASS_USER_INITIATED : DISPATCH_QUEUE_PRIORITY_HIGH; - dispatch_async(dispatch_get_global_queue(queue, 0), ^{ +- (void)_writeNewDiskImage:(int)fd size:(off_t)size activityIndicator:(UIActivityIndicatorView*)activityIndicatorView { + dispatch_async(dispatch_get_global_queue(QOS_CLASS_USER_INITIATED, 0), ^{ int error = 0; if (ftruncate(fd, size)) { error = errno; @@ -459,19 +423,11 @@ close(fd); dispatch_async(dispatch_get_main_queue(), ^{ [activityIndicatorView stopAnimating]; - if ([progressAlert isKindOfClass:[UIAlertController class]]) { - [self dismissViewControllerAnimated:YES completion:^{ - if (error) { - [[AppDelegate sharedInstance] showAlertWithTitle:NSLocalizedString(@"Could not create disk image", nil) message:[[NSString alloc] initWithUTF8String:strerror(error)]]; - } - }]; - } else if ([progressAlert isKindOfClass:[UIAlertView class]]) { - UIAlertView *alert = progressAlert; - [alert dismissWithClickedButtonIndex:0 animated:NO]; + [self dismissViewControllerAnimated:YES completion:^{ if (error) { [[AppDelegate sharedInstance] showAlertWithTitle:NSLocalizedString(@"Could not create disk image", nil) message:[[NSString alloc] initWithUTF8String:strerror(error)]]; } - } + }]; [self.tableView beginUpdates]; [self loadDirectoryContents]; [self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationFade]; @@ -510,27 +466,6 @@ } } -#pragma mark - Alert Delegate - -- (void)alertView:(UIAlertView *)alertView willDismissWithButtonIndex:(NSInteger)buttonIndex { - if (fileToRename && buttonIndex == alertView.firstOtherButtonIndex) { - [self renameFile:fileToRename toName:nameTextField.text]; - fileToRename = nil; - } else if (createDiskImageAlert != nil) { - NSString *name = [self _newDiskImageName]; - off_t size = [self _newDiskImageSize]; - createDiskImageAlert = nil; - [self createDiskImageWithName:name size:size]; - } -} - -- (BOOL)alertViewShouldEnableFirstOtherButton:(UIAlertView *)alertView { - if (alertView == createDiskImageAlert) { - return [self validateCreateDiskImageInput:alertView]; - } - return YES; -} - @end @implementation FileTableViewCell diff --git a/Mini vMac/KBKeyboardView.m b/Mini vMac/KBKeyboardView.m index 47bad6d..8e21f81 100644 --- a/Mini vMac/KBKeyboardView.m +++ b/Mini vMac/KBKeyboardView.m @@ -148,7 +148,7 @@ fontScale *= [self isCompactKeyboardSize:selectedSize] ? 0.6 : 0.65; } key.label = label; - key.titleLabel.font = [UIFont systemFontOfSize:self->fontSize * fontScale weight:&UIFontWeightRegular ? UIFontWeightRegular : 1.0]; + key.titleLabel.font = [UIFont systemFontOfSize:self->fontSize * fontScale weight:UIFontWeightRegular]; [keyPlane addObject:key]; } diff --git a/Mini vMac/MYOSGLUE.m b/Mini vMac/MYOSGLUE.m index 08f4e45..5683610 100644 --- a/Mini vMac/MYOSGLUE.m +++ b/Mini vMac/MYOSGLUE.m @@ -36,7 +36,7 @@ EXPORTVAR(ui3p, RAM) EXPORTVAR(ui3p, VidROM) EXPORTVAR(ui3p, VidMem) -@interface MNVMBundleClassName : NSObject +@interface MNVMBundleClassName : NSObject - (void)makeNewDisk:(NSString*)name size:(NSInteger)size; - (void)updateScreen:(CGImageRef)screenImage; @@ -1471,21 +1471,13 @@ LOCALPROC MacMsgDisplayOn() { if (SavedBriefMsg != nullpr) { NSString *title = NSStringCreateFromSubstCStr(SavedBriefMsg, falseblnr); NSString *message = NSStringCreateFromSubstCStr(SavedLongMsg, falseblnr); - if ([UIAlertController class]) { - UIAlertController *alertController = [UIAlertController alertControllerWithTitle:title message:message preferredStyle:UIAlertControllerStyleAlert]; - blnr wasStopped = SpeedStopped; - [alertController addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { - SpeedStopped = wasStopped; - }]]; - SpeedStopped = trueblnr; - [[UIApplication sharedApplication].keyWindow.rootViewController presentViewController:alertController animated:YES completion:nil]; - } else { - // fallback for iOS 7 - UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:title message:message delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil]; - alertView.delegate = sharedEmulator; - SpeedStopped = trueblnr; - [alertView show]; - } + UIAlertController *alertController = [UIAlertController alertControllerWithTitle:title message:message preferredStyle:UIAlertControllerStyleAlert]; + blnr wasStopped = SpeedStopped; + [alertController addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { + SpeedStopped = wasStopped; + }]]; + SpeedStopped = trueblnr; + [[UIApplication sharedApplication].keyWindow.rootViewController presentViewController:alertController animated:YES completion:nil]; SavedBriefMsg = nullpr; SavedLongMsg = nullpr; } @@ -1788,29 +1780,19 @@ GLOBALPROC WaitForNextTick(void) { } - (void)makeNewDisk:(NSString*)name size:(NSInteger)size { - if ([UIAlertController class]) { - UIAlertController *alertController = [UIAlertController alertControllerWithTitle:NSLocalizedString(@"Export File", nil) message:NSLocalizedString(@"Enter new name", nil) preferredStyle:UIAlertControllerStyleAlert]; - [alertController addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) { - nameTextField = textField; - nameTextField.placeholder = name; - nameTextField.text = name; - }]; - [alertController addAction:[UIAlertAction actionWithTitle:NSLocalizedString(@"Cancel", nil) style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) { - [self didMakeNewDisk:nil size:0]; - }]]; - [alertController addAction:[UIAlertAction actionWithTitle:NSLocalizedString(@"Save", nil) style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { - [self didMakeNewDisk:nameTextField.text size:size]; - }]]; - [[UIApplication sharedApplication].keyWindow.rootViewController presentViewController:alertController animated:YES completion:nil]; - } else { - // iOS 7 fallback - UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Export File", nil) message:NSLocalizedString(@"Enter new name", nil) delegate:self cancelButtonTitle:NSLocalizedString(@"Cancel", nil) otherButtonTitles:NSLocalizedString(@"Save", nil), nil]; - alert.alertViewStyle = UIAlertViewStylePlainTextInput; - nameTextField = [alert textFieldAtIndex:0]; - nameTextField.placeholder = name; - nameTextField.text = name; - [alert show]; - } + UIAlertController *alertController = [UIAlertController alertControllerWithTitle:NSLocalizedString(@"Export File", nil) message:NSLocalizedString(@"Enter new name", nil) preferredStyle:UIAlertControllerStyleAlert]; + [alertController addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) { + self->nameTextField = textField; + self->nameTextField.placeholder = name; + self->nameTextField.text = name; + }]; + [alertController addAction:[UIAlertAction actionWithTitle:NSLocalizedString(@"Cancel", nil) style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) { + [self didMakeNewDisk:nil size:0]; + }]]; + [alertController addAction:[UIAlertAction actionWithTitle:NSLocalizedString(@"Save", nil) style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { + [self didMakeNewDisk:self->nameTextField.text size:size]; + }]]; + [[UIApplication sharedApplication].keyWindow.rootViewController presentViewController:alertController animated:YES completion:nil]; } - (void)didMakeNewDisk:(NSString*)fileName size:(NSInteger)size { @@ -1828,19 +1810,6 @@ GLOBALPROC WaitForNextTick(void) { SpeedStopped = falseblnr; } -- (void)alertView:(UIAlertView *)alertView willDismissWithButtonIndex:(NSInteger)buttonIndex { - if (nameTextField) { - NSString *fileName = nil; - if (buttonIndex == alertView.firstOtherButtonIndex) { - fileName = nameTextField.text; - } - [self didMakeNewDisk:fileName size:vSonyNewDiskSize]; - } - if (SpeedStopped) { - SpeedStopped = falseblnr; - } -} - #pragma mark - Keyboard - (int)translateScanCode:(int)scancode { diff --git a/Mini vMac/UIImage+DiskImageIcon.m b/Mini vMac/UIImage+DiskImageIcon.m index 3cb3c17..ff10bdf 100644 --- a/Mini vMac/UIImage+DiskImageIcon.m +++ b/Mini vMac/UIImage+DiskImageIcon.m @@ -55,8 +55,7 @@ static const char kDiskImageIconAttributeName[] = "net.namedfork.DiskImageIcon"; + (void)loadIconForDiskImageAndNotify:(NSString *)path { if ([NSThread isMainThread]) { - long queue = NSFoundationVersionNumber >= NSFoundationVersionNumber_iOS_8_0 ? QOS_CLASS_USER_INITIATED : DISPATCH_QUEUE_PRIORITY_LOW; - dispatch_async(dispatch_get_global_queue(queue, 0), ^{ + dispatch_async(dispatch_get_global_queue(QOS_CLASS_USER_INITIATED, 0), ^{ [self loadIconForDiskImageAndNotify:path]; }); return; diff --git a/Mini vMac/ViewController.m b/Mini vMac/ViewController.m index dbe392e..319b109 100644 --- a/Mini vMac/ViewController.m +++ b/Mini vMac/ViewController.m @@ -328,7 +328,7 @@ API_AVAILABLE(ios(13.4)) if (animated) { keyboardView.frame = CGRectOffset(finalFrame, 0.0, finalFrame.size.height); [UIView animateWithDuration:0.3 delay:0.0 options:UIViewAnimationOptionCurveEaseOut animations:^{ - keyboardView.frame = finalFrame; + self->keyboardView.frame = finalFrame; } completion:nil]; } else { keyboardView.frame = finalFrame; @@ -338,10 +338,10 @@ API_AVAILABLE(ios(13.4)) if (animated) { CGRect finalFrame = CGRectMake(0.0, self.view.bounds.size.height, keyboardView.bounds.size.width, keyboardView.bounds.size.height); [UIView animateWithDuration:0.3 delay:0.0 options:UIViewAnimationOptionCurveEaseOut animations:^{ - keyboardView.frame = finalFrame; + self->keyboardView.frame = finalFrame; } completion:^(BOOL finished) { if (finished) { - keyboardView.hidden = YES; + self->keyboardView.hidden = YES; } }]; } else {