diff options
author | CodaFi <devteam.codafi@gmail.com> | 2013-06-22 20:38:22 -0600 |
---|---|---|
committer | CodaFi <devteam.codafi@gmail.com> | 2013-06-22 20:38:22 -0600 |
commit | eb8b3fe42b0fc2fcaf9d5ca3f7570ccbbe99b02c (patch) | |
tree | cba7b6eea1ae818437749cac07b36b5e0e531b5d /src/objc/imap | |
parent | a24460880422f224c7d0ab906207bd5af7e0e8fc (diff) | |
parent | 74752eb7c987a2c1704f6f92486e4a4d3f77cbfb (diff) |
Merge remote-tracking branch 'upstream/master' into NSCoding-NSCopying
Diffstat (limited to 'src/objc/imap')
-rw-r--r-- | src/objc/imap/MCOIMAPFolderStatus.h | 18 | ||||
-rw-r--r-- | src/objc/imap/MCOIMAPFolderStatus.m | 35 | ||||
-rw-r--r-- | src/objc/imap/MCOIMAPFolderStatus.mm | 72 | ||||
-rw-r--r-- | src/objc/imap/MCOIMAPFolderStatusOperation.mm | 8 | ||||
-rw-r--r-- | src/objc/imap/MCOIMAPMessage.h | 4 | ||||
-rw-r--r-- | src/objc/imap/MCOIMAPNamespace.h | 4 | ||||
-rw-r--r-- | src/objc/imap/MCOIMAPNamespaceItem.h | 2 | ||||
-rw-r--r-- | src/objc/imap/MCOIMAPSearchExpression.mm | 14 | ||||
-rw-r--r-- | src/objc/imap/MCOIMAPSession.h | 4 |
9 files changed, 89 insertions, 72 deletions
diff --git a/src/objc/imap/MCOIMAPFolderStatus.h b/src/objc/imap/MCOIMAPFolderStatus.h index 9ee1813d..d39e1fc5 100644 --- a/src/objc/imap/MCOIMAPFolderStatus.h +++ b/src/objc/imap/MCOIMAPFolderStatus.h @@ -14,10 +14,7 @@ /* This class holds IMAP folder metadata */ -@interface MCOIMAPFolderStatus : NSObject - -/** Create an empty instance */ -+ (MCOIMAPFolderStatus *) status; +@interface MCOIMAPFolderStatus : NSObject <NSCopying> /** The folder's IMAP UIDNEXT value. Used to determine the uid for the next received message. */ @property (nonatomic, assign) uint32_t uidNext; @@ -26,17 +23,16 @@ @property (nonatomic, assign) uint32_t uidValidity; /** Number of recent messages received in the folder */ -@property (nonatomic, assign) uint32_t totalRecent; +@property (nonatomic, assign) uint32_t recentCount; /** Number of unseen messages in the folder */ -@property (nonatomic, assign) uint32_t totalUnseen; - -// Number of messages in the folder -@property (nonatomic, assign) uint32_t totalMessages; - -// We need also the the folder path +@property (nonatomic, assign) uint32_t unseenCount; +/** Number of messages in the folder */ +@property (nonatomic, assign) uint32_t messageCount; +/** Highest modification sequence value for this folder. See CONDSTORE RFC 4551. */ +@property (nonatomic, assign) uint64_t setHighestModSeqValue; @end diff --git a/src/objc/imap/MCOIMAPFolderStatus.m b/src/objc/imap/MCOIMAPFolderStatus.m deleted file mode 100644 index ceab8a00..00000000 --- a/src/objc/imap/MCOIMAPFolderStatus.m +++ /dev/null @@ -1,35 +0,0 @@ -// -// MCOIMAPFolderStatus.m -// mailcore2 -// -// Created by Sebastian on 6/5/13. -// Copyright (c) 2013 MailCore. All rights reserved. -// - -#import "MCOIMAPFolderStatus.h" - - -@implementation MCOIMAPFolderStatus { - uint32_t total_unseen; - uint32_t total_messages; - uint32_t total_recent; - uint32_t _uidNext; - uint32_t _uidValidity; -} - -@synthesize uidNext = _uidNext; -@synthesize uidValidity = _uidValidity; -@synthesize totalMessages = total_messages; -@synthesize totalRecent = total_recent; -@synthesize totalUnseen = total_unseen; - - - -+ (MCOIMAPFolderStatus *) status -{ - return [[[MCOIMAPFolderStatus alloc] init] autorelease]; -} - - - -@end diff --git a/src/objc/imap/MCOIMAPFolderStatus.mm b/src/objc/imap/MCOIMAPFolderStatus.mm new file mode 100644 index 00000000..7cd1597d --- /dev/null +++ b/src/objc/imap/MCOIMAPFolderStatus.mm @@ -0,0 +1,72 @@ +// +// MCOIMAPFolderStatus.m +// mailcore2 +// +// Created by Sebastian on 6/5/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#import "MCOIMAPFolderStatus.h" +#import "NSObject+MCO.h" + +#include "MCIMAPFolderStatus.h" + +#define nativeType mailcore::IMAPFolderStatus + +@implementation MCOIMAPFolderStatus { + mailcore::IMAPFolderStatus * _nativeStatus; +} + ++ (void) load +{ + MCORegisterClass(self, &typeid(nativeType)); +} + +- (id) initWithMCFolderStatus:(mailcore::IMAPFolderStatus *)status +{ + self = [super init]; + + status->retain(); + _nativeStatus = status; + + return self; +} + +- (void) dealloc +{ + MC_SAFE_RELEASE(_nativeStatus); + [super dealloc]; +} + ++ (NSObject *) mco_objectWithMCObject:(mailcore::Object *)object +{ + mailcore::IMAPFolderStatus * status = (mailcore::IMAPFolderStatus *) object; + return [[[self alloc] initWithMCFolderStatus:status] autorelease]; +} + +- (mailcore::Object *) mco_mcObject +{ + return _nativeStatus; +} + +- (id) copyWithZone:(NSZone *)zone +{ + nativeType * nativeObject = (nativeType *) [self mco_mcObject]->copy(); + id result = [[self class] mco_objectWithMCObject:nativeObject]; + MC_SAFE_RELEASE(nativeObject); + return [result retain]; +} + +- (NSString *) description +{ + return MCO_OBJC_BRIDGE_GET(description); +} + +MCO_OBJC_SYNTHESIZE_SCALAR(uint32_t, uint32_t, setUnseenCount, unseenCount) +MCO_OBJC_SYNTHESIZE_SCALAR(uint32_t, uint32_t, setMessageCount, messageCount) +MCO_OBJC_SYNTHESIZE_SCALAR(uint32_t, uint32_t, setRecentCount, recentCount) +MCO_OBJC_SYNTHESIZE_SCALAR(uint32_t, uint32_t, setUidNext, uidNext) +MCO_OBJC_SYNTHESIZE_SCALAR(uint32_t, uint32_t, setUidValidity, uidValidity) +MCO_OBJC_SYNTHESIZE_SCALAR(uint64_t, uint64_t, setHighestModSeqValue, highestModSeqValue) + +@end diff --git a/src/objc/imap/MCOIMAPFolderStatusOperation.mm b/src/objc/imap/MCOIMAPFolderStatusOperation.mm index 21b937b9..c7f5370c 100644 --- a/src/objc/imap/MCOIMAPFolderStatusOperation.mm +++ b/src/objc/imap/MCOIMAPFolderStatusOperation.mm @@ -50,13 +50,7 @@ typedef void (^CompletionType)(NSError *error, MCOIMAPFolderStatus *status); nativeType *op = MCO_NATIVE_INSTANCE; if (op->error() == mailcore::ErrorNone) { - MCOIMAPFolderStatus * status = [MCOIMAPFolderStatus status]; - [status setUidNext:MCO_NATIVE_INSTANCE->uidNext()]; - [status setUidValidity:MCO_NATIVE_INSTANCE->uidValidity()]; - [status setTotalMessages:MCO_NATIVE_INSTANCE->messageCount()]; - [status setTotalRecent:MCO_NATIVE_INSTANCE->recentCount()]; - [status setTotalUnseen:MCO_NATIVE_INSTANCE->unseenCount()]; - + MCOIMAPFolderStatus * status = MCO_TO_OBJC(op->status()); _completionBlock(nil, status); } else { _completionBlock([NSError mco_errorWithErrorCode:op->error()], nil); diff --git a/src/objc/imap/MCOIMAPMessage.h b/src/objc/imap/MCOIMAPMessage.h index d9b54abe..0743e983 100644 --- a/src/objc/imap/MCOIMAPMessage.h +++ b/src/objc/imap/MCOIMAPMessage.h @@ -46,8 +46,8 @@ /** Main MIME part of the message */ @property (nonatomic, retain) MCOAbstractPart * mainPart; -/** Any Gmail labels of the message */ -@property (nonatomic, copy) NSArray * gmailLabels; +/** All Gmail labels of the message */ +@property (nonatomic, copy) NSArray * /* NSString */ gmailLabels; /** Returns the part with the given part identifier. diff --git a/src/objc/imap/MCOIMAPNamespace.h b/src/objc/imap/MCOIMAPNamespace.h index f3373c64..5fcda25b 100644 --- a/src/objc/imap/MCOIMAPNamespace.h +++ b/src/objc/imap/MCOIMAPNamespace.h @@ -30,7 +30,7 @@ - (char) mainDelimiter; /** Returns the list of prefixes of this namespace. */ -- (NSArray *) prefixes; +- (NSArray * /* NSString */) prefixes; /** Returns the folder path for the given list of path components in the context @@ -45,7 +45,7 @@ - (NSString *) pathForComponents:(NSArray *)components prefix:(NSString *)prefix; /** Returns the components given a folder path. */ -- (NSArray *) componentsFromPath:(NSString *)path; +- (NSArray * /* NSString */) componentsFromPath:(NSString *)path; /** Returns YES if the namespace contains the given folder path. */ - (BOOL) containsFolderPath:(NSString *)path; diff --git a/src/objc/imap/MCOIMAPNamespaceItem.h b/src/objc/imap/MCOIMAPNamespaceItem.h index b23d0dfc..3063919b 100644 --- a/src/objc/imap/MCOIMAPNamespaceItem.h +++ b/src/objc/imap/MCOIMAPNamespaceItem.h @@ -26,7 +26,7 @@ - (NSString *) pathForComponents:(NSArray *)components; /** Returns components for the given path in the context of this namespace */ -- (NSArray *) componentsForPath:(NSString *)path; +- (NSArray * /* NSString */) componentsForPath:(NSString *)path; /** Returns YES if the namespace contains this folder path */ - (BOOL) containsFolder:(NSString *)folder; diff --git a/src/objc/imap/MCOIMAPSearchExpression.mm b/src/objc/imap/MCOIMAPSearchExpression.mm index ecc44ba6..dc2e027a 100644 --- a/src/objc/imap/MCOIMAPSearchExpression.mm +++ b/src/objc/imap/MCOIMAPSearchExpression.mm @@ -84,23 +84,13 @@ + (MCOIMAPSearchExpression *) searchAnd:(MCOIMAPSearchExpression *)expression other:(MCOIMAPSearchExpression *)other { - mailcore::IMAPSearchExpression * copyExpr = (mailcore::IMAPSearchExpression *) expression->_nativeExpr->copy(); - mailcore::IMAPSearchExpression * copyOther = (mailcore::IMAPSearchExpression *) other->_nativeExpr->copy(); - mailcore::IMAPSearchExpression * result = mailcore::IMAPSearchExpression::searchAnd(copyExpr, copyOther); - copyExpr->release(); - copyOther->release(); - + mailcore::IMAPSearchExpression * result = mailcore::IMAPSearchExpression::searchOr(expression->_nativeExpr, other->_nativeExpr); return MCO_TO_OBJC(result); } + (MCOIMAPSearchExpression *) searchOr:(MCOIMAPSearchExpression *)expression other:(MCOIMAPSearchExpression *)other { - mailcore::IMAPSearchExpression * copyExpr = (mailcore::IMAPSearchExpression *) expression->_nativeExpr->copy(); - mailcore::IMAPSearchExpression * copyOther = (mailcore::IMAPSearchExpression *) other->_nativeExpr->copy(); - mailcore::IMAPSearchExpression * result = mailcore::IMAPSearchExpression::searchOr(copyExpr, copyOther); - copyExpr->release(); - copyOther->release(); - + mailcore::IMAPSearchExpression * result = mailcore::IMAPSearchExpression::searchOr(expression->_nativeExpr, other->_nativeExpr); return MCO_TO_OBJC(result); } diff --git a/src/objc/imap/MCOIMAPSession.h b/src/objc/imap/MCOIMAPSession.h index 4011a00a..1b394eff 100644 --- a/src/objc/imap/MCOIMAPSession.h +++ b/src/objc/imap/MCOIMAPSession.h @@ -309,9 +309,9 @@ MCOIMAPFolderInfoOperation *folderInfo = [session folderInfoOperation:folder]; [folderInfo start:^(NSError *error, MCOIMAPFolderInfo *info) { - int messageCount = [info messageCount]; int numberOfMessages = 50; - MCOIndexSet *numbers = [MCOIndexSet indexSetWithRange:MCORangeMake(messageCount - numberOfMessages, numberOfMessages)]; + numberOfMessages -= 1; + MCOIndexSet *numbers = [MCOIndexSet indexSetWithRange:MCORangeMake([info messageCount] - numberOfMessages, numberOfMessages)]; MCOIMAPFetchMessagesOperation *fetchOperation = [session fetchMessagesByNumberOperationWithFolder:folder requestKind:MCOIMAPMessagesRequestKindUid |