Revision: 29862
http://sourceforge.net/p/bibdesk/svn/29862
Author: hofman
Date: 2025-11-20 17:45:17 +0000 (Thu, 20 Nov 2025)
Log Message:
-----------
still need secure coding for filter and conditions
Modified Paths:
--------------
trunk/bibdesk/BDSKCondition.h
trunk/bibdesk/BDSKCondition.m
trunk/bibdesk/BDSKFilter.h
trunk/bibdesk/BDSKFilter.m
Modified: trunk/bibdesk/BDSKCondition.h
===================================================================
--- trunk/bibdesk/BDSKCondition.h 2025-11-20 17:31:03 UTC (rev 29861)
+++ trunk/bibdesk/BDSKCondition.h 2025-11-20 17:45:17 UTC (rev 29862)
@@ -97,7 +97,7 @@
@protocol BDSKSmartGroup;
@class BibItem, BibAuthor;
-@interface BDSKCondition : NSObject <NSCopying> {
+@interface BDSKCondition : NSObject <NSCopying, NSSecureCoding> {
NSString *key;
BDSKStringComparison stringComparison;
BDSKAttachmentComparison attachmentComparison;
@@ -119,6 +119,7 @@
@property (class, nonatomic, readonly) NSString *dictionaryVersion;
- (instancetype)init NS_DESIGNATED_INITIALIZER;
+- (instancetype)initWithCoder:(NSCoder *)coder NS_DESIGNATED_INITIALIZER;
- (instancetype)initWithDictionary:(NSDictionary *)dictionary;
@property (nonatomic, readonly) NSDictionary *dictionaryValue;
Modified: trunk/bibdesk/BDSKCondition.m
===================================================================
--- trunk/bibdesk/BDSKCondition.m 2025-11-20 17:31:03 UTC (rev 29861)
+++ trunk/bibdesk/BDSKCondition.m 2025-11-20 17:45:17 UTC (rev 29862)
@@ -137,6 +137,43 @@
return self;
}
+- (instancetype)initWithCoder:(NSCoder *)decoder {
+ self = [super init];
+ if (self) {
+ key = [decoder decodeObjectOfClass:[NSString class] forKey:@"key"] ?:
@"";
+ stringValue = @"";
+ stringComparison = BDSKContain;
+ attachmentComparison = BDSKCountNotEqual;
+ countValue = 0;
+ dateComparison = BDSKToday;
+ numberValue = 0;
+ andNumberValue = 0;
+ periodValue = BDSKPeriodDay;
+ dateValue = nil;
+ toDateValue = nil;
+ authorValue = nil;
+ group = nil;
+ cachedStartDate = nil;
+ cachedEndDate = nil;
+ cacheTimer = nil;
+ // the order is important
+ [self setComparison:[decoder
decodeIntegerForKey:@"comparison"]];
+ if ([self isDateCondition] || [self isAttachmentCondition])
+ [self setDefaultValue];
+ [self setValue:[decoder decodeObjectOfClass:[NSString class]
forKey:@"value"]];
+ BDSKASSERT([self value] != nil);
+ }
+ return self;
+}
+
+- (void)encodeWithCoder:(NSCoder *)coder {
+ [coder encodeObject:[self key] forKey:@"key"];
+ [coder encodeInteger:[self comparison] forKey:@"comparison"];
+ [coder encodeObject:[self value] forKey:@"value"];
+}
+
++ (BOOL)supportsSecureCoding { return YES; }
+
- (void)dealloc {
//NSLog(@"dealloc condition");
[cacheTimer invalidate];
Modified: trunk/bibdesk/BDSKFilter.h
===================================================================
--- trunk/bibdesk/BDSKFilter.h 2025-11-20 17:31:03 UTC (rev 29861)
+++ trunk/bibdesk/BDSKFilter.h 2025-11-20 17:45:17 UTC (rev 29862)
@@ -48,7 +48,7 @@
@protocol BDSKSmartGroup;
@class BDSKCondition, BibItem;
-@interface BDSKFilter : NSObject <NSCopying> {
+@interface BDSKFilter : NSObject <NSCopying, NSSecureCoding> {
NSMutableArray *conditions;
BDSKConjunction conjunction;
__weak id<BDSKSmartGroup> group;
@@ -57,6 +57,7 @@
- (instancetype)initWithConditions:(NSArray *)aConditions
conjunction:(BDSKConjunction)aConjunction NS_DESIGNATED_INITIALIZER;
- (instancetype)initWithDictionary:(NSDictionary *)dictionary;
+- (instancetype)initWithCoder:(NSCoder *)coder NS_DESIGNATED_INITIALIZER;
@property (nonatomic, readonly) NSDictionary *dictionaryValue;
Modified: trunk/bibdesk/BDSKFilter.m
===================================================================
--- trunk/bibdesk/BDSKFilter.m 2025-11-20 17:31:03 UTC (rev 29861)
+++ trunk/bibdesk/BDSKFilter.m 2025-11-20 17:45:17 UTC (rev 29862)
@@ -81,6 +81,23 @@
return [self initWithConditions:newConditions conjunction:[[dictionary
objectForKey:@"conjunction"] integerValue]];
}
+- (instancetype)initWithCoder:(NSCoder *)decoder {
+ self = [super init];
+ if (self) {
+ conditions = [[NSMutableArray alloc] initWithArray:[decoder
decodeObjectOfClasses:[NSSet setWithObjects:[NSArray class], [BDSKCondition
class], nil] forKey:@"conditions"]];
+ conjunction = [decoder decodeIntegerForKey:@"conjunction"];
+ group = nil;
+ }
+ return self;
+}
+
+- (void)encodeWithCoder:(NSCoder *)coder {
+ [coder encodeObject:conditions forKey:@"conditions"];
+ [coder encodeInteger:conjunction forKey:@"conjunction"];
+}
+
++ (BOOL)supportsSecureCoding { return YES; }
+
- (void)dealloc {
if (group)
BDSKENSURE_MAIN_THREAD(
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
_______________________________________________
Bibdesk-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bibdesk-commit