aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/objc/imap
diff options
context:
space:
mode:
authorGravatar CodaFi <devteam.codafi@gmail.com>2013-06-22 20:38:22 -0600
committerGravatar CodaFi <devteam.codafi@gmail.com>2013-06-22 20:38:22 -0600
commiteb8b3fe42b0fc2fcaf9d5ca3f7570ccbbe99b02c (patch)
treecba7b6eea1ae818437749cac07b36b5e0e531b5d /src/objc/imap
parenta24460880422f224c7d0ab906207bd5af7e0e8fc (diff)
parent74752eb7c987a2c1704f6f92486e4a4d3f77cbfb (diff)
Merge remote-tracking branch 'upstream/master' into NSCoding-NSCopying
Diffstat (limited to 'src/objc/imap')
-rw-r--r--src/objc/imap/MCOIMAPFolderStatus.h18
-rw-r--r--src/objc/imap/MCOIMAPFolderStatus.m35
-rw-r--r--src/objc/imap/MCOIMAPFolderStatus.mm72
-rw-r--r--src/objc/imap/MCOIMAPFolderStatusOperation.mm8
-rw-r--r--src/objc/imap/MCOIMAPMessage.h4
-rw-r--r--src/objc/imap/MCOIMAPNamespace.h4
-rw-r--r--src/objc/imap/MCOIMAPNamespaceItem.h2
-rw-r--r--src/objc/imap/MCOIMAPSearchExpression.mm14
-rw-r--r--src/objc/imap/MCOIMAPSession.h4
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