Fixed save issue that resulted in appkit throwing an error because of atomic write option

Fixed issue with wrong file type being selected in save dialog
Fixed issue with hidden warning box on save dialog when data loss will occur
This commit is contained in:
michael starke
2013-09-03 21:20:09 +02:00
parent aea17f4428
commit 957e8bab5a
4 changed files with 16 additions and 7 deletions

View File

@@ -42,7 +42,7 @@ APPKIT_EXTERN NSString *const MPDocumnetDidChangeCurrentEntryNotification;
@property (nonatomic, strong) NSURL *key;
@property (assign, readonly, getter = isReadOnly) BOOL readOnly;
@property (nonatomic, readonly, assign) KPKVersion versionForFileType;
/*
State (active group/entry)

View File

@@ -83,7 +83,6 @@ typedef NS_ENUM(NSUInteger, MPAlertType) {
_didLockFile = NO;
_hasPasswordOrKey = NO;
_readOnly = NO;
[self setFileType:MPXMLDocumentUTI];
self.tree = [KPKTree templateTree];
}
return self;
@@ -113,7 +112,7 @@ typedef NS_ENUM(NSUInteger, MPAlertType) {
return NO;
}
NSData *treeData = [self.tree encryptWithPassword:password forVersion:version error:outError];
if([treeData writeToURL:url options:NSDataWritingAtomic error:outError]) {
if(![treeData writeToURL:url options:0 error:outError]) {
NSLog(@"%@", [*outError localizedDescription]);
return NO;
}
@@ -208,6 +207,10 @@ typedef NS_ENUM(NSUInteger, MPAlertType) {
#pragma mark Properties
- (KPKVersion)versionForFileType {
return [[self class] versionForFileType:[self fileType]];
}
- (BOOL)encrypted {
return (self.tree == nil);
}

View File

@@ -52,8 +52,7 @@
else if([uti isEqualToString:MPLegacyDocumentUTI]) {
self.selectedVersion = KPKXmlVersion;
}
BOOL showInfoText = (self.document.tree.minimumVersion == KPKLegacyVersion && [uti isEqualToString:MPLegacyDocumentUTI]);
[self.infoTextField setHidden:!showInfoText];
[self _updateNote];
[self.savePanel setAllowedFileTypes:@[uti]];
}
@@ -65,7 +64,7 @@
}
- (void)_updateView {
switch(self.document.tree.minimumVersion) {
switch(self.document.versionForFileType) {
case KPKLegacyVersion:
[self.fileTypePopupButton selectItemAtIndex:1];
break;
@@ -76,6 +75,13 @@
NSAssert(NO, @"Minimum Version should always be valid");
break;
}
[self _updateNote];
}
- (void)_updateNote {
NSString *uti = [[self.fileTypePopupButton selectedItem] representedObject];
BOOL showInfoText = (self.document.tree.minimumVersion == KPKXmlVersion && [uti isEqualToString:MPLegacyDocumentUTI]);
[self.infoTextField setHidden:!showInfoText];
}
@end

View File

@@ -56,7 +56,7 @@
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>2527</string>
<string>2528</string>
<key>LSMinimumSystemVersion</key>
<string>${MACOSX_DEPLOYMENT_TARGET}</string>
<key>NSHumanReadableCopyright</key>