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
+