diff --git a/MacPass/EntryView.xib b/MacPass/EntryView.xib index bc11ac8f..3a7e32e7 100644 --- a/MacPass/EntryView.xib +++ b/MacPass/EntryView.xib @@ -1,8 +1,8 @@ - + - + @@ -48,11 +48,11 @@ - + - + @@ -86,7 +86,7 @@ - + @@ -94,6 +94,7 @@ + @@ -136,11 +137,11 @@ - + - + @@ -174,7 +175,7 @@ - + @@ -212,7 +213,7 @@ - + @@ -292,4 +293,4 @@ - \ No newline at end of file + diff --git a/MacPass/KPKNode+IconImage.m b/MacPass/KPKNode+IconImage.m index fbec8b84..08307a15 100644 --- a/MacPass/KPKNode+IconImage.m +++ b/MacPass/KPKNode+IconImage.m @@ -9,18 +9,26 @@ #import "KPKNode+IconImage.h" #import "KPKIcon.h" +#import "KPKGroup.h" #import "KPKTree.h" #import "KPKMetaData.h" +#import "KPKTimeInfo.h" #import "MPIconHelper.h" @implementation KPKNode (IconImage) + (NSSet *)keyPathsForValuesAffectingIconImage { - return [NSSet setWithArray:@[@"iconUUID", @"iconId"]]; + return [NSSet setWithArray:@[NSStringFromSelector(@selector(iconUUID)), + NSStringFromSelector(@selector(iconId)), + @"timeInfo.expires"]]; } - (NSImage *)iconImage { + if(self.timeInfo.expires) { + const BOOL isGroup = [self isKindOfClass:[KPKGroup class]]; + return [MPIconHelper icon:(isGroup ? MPIconExpiredGroup : MPIconExpiredEntry)]; + } if(self.iconUUID) { KPKIcon *icon = [self.tree.metaData findIcon:self.iconUUID]; if(icon && icon.image) { diff --git a/MacPass/MPDocument.m b/MacPass/MPDocument.m index 81a1310b..df30de22 100644 --- a/MacPass/MPDocument.m +++ b/MacPass/MPDocument.m @@ -171,6 +171,7 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGroupKey } - (BOOL)readFromURL:(NSURL *)url ofType:(NSString *)typeName error:(NSError **)outError { + [self _watchForFileChanges:YES]; /* FIXME: Lockfile handling self.lockFileURL = [url URLByAppendingPathExtension:@"lock"]; if([[NSFileManager defaultManager] fileExistsAtPath:[_lockFileURL path]]) { diff --git a/MacPass/MPIconHelper.h b/MacPass/MPIconHelper.h index a4293728..c4f45ba2 100644 --- a/MacPass/MPIconHelper.h +++ b/MacPass/MPIconHelper.h @@ -48,6 +48,8 @@ typedef NS_ENUM(NSUInteger, MPIconType) { MPIconCreated, MPIconAddEntry, MPIconContextTriangle, + MPIconExpiredEntry, + MPIconExpiredGroup, }; /** diff --git a/MacPass/MPIconHelper.m b/MacPass/MPIconHelper.m index eceaee22..c757e9cb 100644 --- a/MacPass/MPIconHelper.m +++ b/MacPass/MPIconHelper.m @@ -17,7 +17,8 @@ } if([[icons allKeys] containsObject:@(type)]) { NSString *imageName = icons[@(type)]; - return [[NSBundle mainBundle] imageForResource:imageName]; + NSImage *image = [NSImage imageNamed:imageName]; + return image; } return [NSImage imageNamed:NSImageNameActionTemplate]; } @@ -83,7 +84,10 @@ @(MPIconHardDisk): @"99_HarddiskTemplate", @(MPIconCreated): @"99_CreatedTemplate", @(MPIconAddEntry): @"addEntryTemplate", - @(MPIconContextTriangle): @"contextTriangleTemplate" + @(MPIconContextTriangle): @"contextTriangleTemplate", + + @(MPIconExpiredEntry): NSImageNameCaution, + @(MPIconExpiredGroup): NSImageNameCaution }; }); return imageNames; diff --git a/MacPass/OutlineView.xib b/MacPass/OutlineView.xib index 5ef0f11c..1de84ec2 100644 --- a/MacPass/OutlineView.xib +++ b/MacPass/OutlineView.xib @@ -1,8 +1,8 @@ - + - + @@ -78,8 +78,9 @@ + - + @@ -158,4 +159,4 @@ - \ No newline at end of file +