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

Reply via email to