Revision: 27540
http://sourceforge.net/p/bibdesk/svn/27540
Author: hofman
Date: 2022-06-03 17:29:20 +0000 (Fri, 03 Jun 2022)
Log Message:
-----------
Change date modified in item using custom setter, avoid parsing the field value
back to the date
Modified Paths:
--------------
trunk/bibdesk/BibItem.m
Modified: trunk/bibdesk/BibItem.m
===================================================================
--- trunk/bibdesk/BibItem.m 2022-06-03 16:47:50 UTC (rev 27539)
+++ trunk/bibdesk/BibItem.m 2022-06-03 17:29:20 UTC (rev 27540)
@@ -107,6 +107,8 @@
- (void)setPubTypeString:(NSString *)newType;
- (void)setCiteKeyString:(NSString *)newCiteKey;
+- (void)setModifiedDate:(NSDate *)date;
+
// updates derived info from the dictionary
- (void)updateMetadataForKey:(NSString *)key;
@@ -285,9 +287,10 @@
identifierURL = createUniqueURL();
[self setPubTypeString:type];
- [self setDate: nil];
- [self setDateAdded: nil];
- [self setDateModified: nil];
+
+ pubDate = nil;
+ dateAdded = nil;
+ dateModified = nil;
filesToBeFiled = nil;
localUrlNeedsToBeFiled = NO;
@@ -996,11 +999,7 @@
[oldType retain];
[self setPubTypeString:newType];
- if (date != nil) {
- [pubFields setObject:[date standardDescription]
forKey:BDSKDateModifiedString];
- } else {
- [pubFields removeObjectForKey:BDSKDateModifiedString];
- }
+ [self setModifiedDate:date];
[self updateMetadataForKey:BDSKPubTypeString];
NSDictionary *notifInfo = [NSDictionary
dictionaryWithObjectsAndKeys:BDSKPubTypeString, BDSKBibItemKeyKey, newType,
BDSKBibItemNewValueKey, oldType, BDSKBibItemOldValueKey, nil];
@@ -1048,11 +1047,7 @@
}
[self setCiteKeyString:newCiteKey];
- if (date != nil) {
- [pubFields setObject:[date standardDescription]
forKey:BDSKDateModifiedString];
- } else {
- [pubFields removeObjectForKey:BDSKDateModifiedString];
- }
+ [self setModifiedDate:date];
[self updateMetadataForKey:BDSKCiteKeyString];
NSDictionary *notifInfo = [NSDictionary
dictionaryWithObjectsAndKeys:BDSKCiteKeyString, BDSKBibItemKeyKey, newCiteKey,
BDSKBibItemNewValueKey, oldCiteKey, BDSKBibItemOldValueKey, nil];
@@ -1202,7 +1197,7 @@
// to allow autocomplete:
if (value)
[[BDSKCompletionManager sharedManager] addString:value
forCompletionEntry:key];
- [pubFields setValue:[date standardDescription]
forKey:BDSKDateModifiedString];
+ [self setModifiedDate:date];
[self updateMetadataForKey:key];
if ([self owner]) {
@@ -4031,6 +4026,14 @@
}
}
+- (void)setModifiedDate:(NSDate *)date {
+ [self setDateModified:date];
+ if (date)
+ [pubFields setObject:[date standardDescription]
forKey:BDSKDateModifiedString];
+ else
+ [pubFields removeObjectForKey:BDSKDateModifiedString];
+}
+
// The date setters should only be used at initialization or from
updateMetadata:forKey:. If you want to change the date, change the value in
pubFields, and let updateMetadata handle the ivar.
- (void)updateMetadataForKey:(NSString *)key{
@@ -4077,31 +4080,29 @@
[theDate release];
}
- // setDateAdded: is only called here; it is derived based on pubFields
value of BDSKDateAddedString
- if (key == nil || allFieldsChanged || [BDSKDateAddedString
isEqualToString:key]) {
+ // initially or when all fields are changed set the added and modified
date based on the field values
+ if (key == nil || allFieldsChanged) {
NSString *dateAddedValue = [pubFields
objectForKey:BDSKDateAddedString];
- if (![NSString isEmptyString:dateAddedValue]) {
+ if ([NSString isEmptyString:dateAddedValue]) {
+ [self setDateAdded:nil];
+ } else {
theDate = [[NSDate alloc] initWithString:dateAddedValue];
if (theDate == nil)
theDate = [[NSDate
dateWithNaturalLanguageString:dateAddedValue] retain];
[self setDateAdded:theDate];
[theDate release];
- }else{
- [self setDateAdded:nil];
}
- }
-
- // we shouldn't check for the key here, as the DateModified can be set
with any key
- // setDateModified: is only called here; it is derived based on pubFields
value of BDSKDateAddedString
- NSString *dateModValue = [pubFields objectForKey:BDSKDateModifiedString];
- if (![NSString isEmptyString:dateModValue]) {
- theDate = [[NSDate alloc] initWithString:dateModValue];
- if (theDate == nil)
- theDate = [[NSDate dateWithNaturalLanguageString:dateModValue]
retain];
- [self setDateModified:theDate];
- [theDate release];
- }else{
- [self setDateModified:nil];
+
+ NSString *dateModValue = [pubFields
objectForKey:BDSKDateModifiedString];
+ if ([NSString isEmptyString:dateModValue]) {
+ [self setDateModified:nil];
+ } else {
+ theDate = [[NSDate alloc] initWithString:dateModValue];
+ if (theDate == nil)
+ theDate = [[NSDate dateWithNaturalLanguageString:dateModValue]
retain];
+ [self setDateModified:theDate];
+ [theDate release];
+ }
}
}
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