diff options
81 files changed, 2866 insertions, 201 deletions
diff --git a/build-mac/mailcore2.xcodeproj/project.pbxproj b/build-mac/mailcore2.xcodeproj/project.pbxproj index 921889e1..d4cfb285 100644 --- a/build-mac/mailcore2.xcodeproj/project.pbxproj +++ b/build-mac/mailcore2.xcodeproj/project.pbxproj @@ -7,6 +7,22 @@ objects = { /* Begin PBXBuildFile section */ + C62C6ED416A2A0E600737497 /* MCIMAPIdentityOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = C62C6ED216A2A0E600737497 /* MCIMAPIdentityOperation.cc */; }; + C62C6ED816A398FA00737497 /* MCIMAPFolderInfoOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = C62C6ED616A398FA00737497 /* MCIMAPFolderInfoOperation.cc */; }; + C62C6EDA16A3D60700737497 /* MCIMAPAsyncSession.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA7FD16A295B500778456 /* MCIMAPAsyncSession.cc */; }; + C62C6EDB16A3FC8700737497 /* MCIMAPOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C64EA7F016A15A4D00778456 /* MCIMAPOperation.h */; }; + C62C6EE016A696AB00737497 /* MCAsyncIMAP.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C64EA7F916A15A9200778456 /* MCAsyncIMAP.h */; }; + C62C6EE216A696B400737497 /* MCIMAPFetchFoldersOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C64EA7FB16A2959700778456 /* MCIMAPFetchFoldersOperation.h */; }; + C62C6EE316A696EE00737497 /* MCIMAPAppendMessageOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C64EA81016A299EB00778456 /* MCIMAPAppendMessageOperation.h */; }; + C62C6EE416A696F600737497 /* MCIMAPCopyMessagesOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C64EA81316A29A1000778456 /* MCIMAPCopyMessagesOperation.h */; }; + C62C6EE516A6970400737497 /* MCIMAPFetchMessagesOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C64EA81916A29ADB00778456 /* MCIMAPFetchMessagesOperation.h */; }; + C62C6EE616A6970A00737497 /* MCIMAPFetchContentOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C64EA81C16A29DC400778456 /* MCIMAPFetchContentOperation.h */; }; + C62C6EE716A6971000737497 /* MCIMAPIdleOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C64EA82816A29F0300778456 /* MCIMAPIdleOperation.h */; }; + C62C6EE816A6971500737497 /* MCIMAPFolderInfoOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C62C6ED716A398FA00737497 /* MCIMAPFolderInfoOperation.h */; }; + C62C6EE916A6971B00737497 /* MCIMAPSearchOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C64EA82516A29EE300778456 /* MCIMAPSearchOperation.h */; }; + C62C6EEA16A6972100737497 /* MCIMAPFetchNamespaceOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C64EA82B16A2A01400778456 /* MCIMAPFetchNamespaceOperation.h */; }; + C62C6EEB16A6972700737497 /* MCIMAPIdentityOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C62C6ED316A2A0E600737497 /* MCIMAPIdentityOperation.h */; }; + C62C6EEC16A69D3D00737497 /* MCIMAPOperationCallback.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C64EA7F416A15A6300778456 /* MCIMAPOperationCallback.h */; }; C64EA6F4169E847800778456 /* MCAbstractMessage.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA694169E847800778456 /* MCAbstractMessage.cc */; }; C64EA6F6169E847800778456 /* MCAbstractMessagePart.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA696169E847800778456 /* MCAbstractMessagePart.cc */; }; C64EA6F8169E847800778456 /* MCAbstractMultipart.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA698169E847800778456 /* MCAbstractMultipart.cc */; }; @@ -44,7 +60,7 @@ C64EA740169E847800778456 /* MCMessageParser.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA6E4169E847800778456 /* MCMessageParser.cc */; }; C64EA742169E847800778456 /* MCMessagePart.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA6E6169E847800778456 /* MCMessagePart.cc */; }; C64EA744169E847800778456 /* MCMultipart.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA6E8169E847800778456 /* MCMultipart.cc */; }; - C64EA74C169E859600778456 /* IMAPAsyncSession.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C64EA68C169E847800778456 /* IMAPAsyncSession.h */; }; + C64EA74C169E859600778456 /* MCIMAPAsyncSession.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C64EA68C169E847800778456 /* MCIMAPAsyncSession.h */; }; C64EA74D169E859600778456 /* MCSMTPAsyncSession.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C64EA690169E847800778456 /* MCSMTPAsyncSession.h */; }; C64EA74E169E859600778456 /* MCAbstract.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C64EA693169E847800778456 /* MCAbstract.h */; }; C64EA74F169E859600778456 /* MCAbstractMessage.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C64EA695169E847800778456 /* MCAbstractMessage.h */; }; @@ -99,11 +115,9 @@ C64EA781169E89F600778456 /* MCSMTPSession.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA6EE169E847800778456 /* MCSMTPSession.cc */; }; C64EA783169F241300778456 /* MCCore.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C64EA782169F23AB00778456 /* MCCore.h */; }; C64EA784169F24E400778456 /* MCSMTPAsyncSession.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA68F169E847800778456 /* MCSMTPAsyncSession.cc */; }; - C64EA787169F252C00778456 /* MCSMTPSendWithRecipientOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA785169F252C00778456 /* MCSMTPSendWithRecipientOperation.cc */; }; C64EA790169F259200778456 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C64EA78F169F259200778456 /* Foundation.framework */; }; C64EA79B169F259F00778456 /* libmailcore2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = C64EA537169E772200778456 /* libmailcore2.a */; }; C64EA79E169F29A700778456 /* MCSMTPSendWithDataOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA79C169F29A700778456 /* MCSMTPSendWithDataOperation.cc */; }; - C64EA7A1169F29D900778456 /* MCSMTPSendWithBuilderOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA79F169F29D900778456 /* MCSMTPSendWithBuilderOperation.cc */; }; C64EA7A5169F2A6100778456 /* mailcore.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C64EA7A4169F2A3E00778456 /* mailcore.h */; }; C64EA7AB16A00AF600778456 /* main.mm in Sources */ = {isa = PBXBuildFile; fileRef = C64EA7AA16A00AF600778456 /* main.mm */; }; C64EA7B116A00BBB00778456 /* CoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C64EA7B016A00BBB00778456 /* CoreServices.framework */; }; @@ -113,6 +127,23 @@ C64EA7E616A14A6A00778456 /* MCAsyncSMTP.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C64EA7E316A149EF00778456 /* MCAsyncSMTP.h */; }; C64EA7E716A14A7400778456 /* MCSMTPOperationCallback.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C64EA7E116A1425400778456 /* MCSMTPOperationCallback.h */; }; C64EA7EA16A154B300778456 /* MCSMTPCheckAccountOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA7E816A154B000778456 /* MCSMTPCheckAccountOperation.cc */; }; + C64EA7F116A15A4D00778456 /* MCIMAPOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA7EF16A15A4D00778456 /* MCIMAPOperation.cc */; }; + C64EA7F816A15A7800778456 /* MCIMAPCheckAccountOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA7F616A15A7800778456 /* MCIMAPCheckAccountOperation.cc */; }; + C64EA7FC16A2959800778456 /* MCIMAPFetchFoldersOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA7FA16A2959700778456 /* MCIMAPFetchFoldersOperation.cc */; }; + C64EA80216A295E400778456 /* MCIMAPRenameFolderOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA80016A295E200778456 /* MCIMAPRenameFolderOperation.cc */; }; + C64EA80516A2997E00778456 /* MCIMAPDeleteFolderOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA80316A2997B00778456 /* MCIMAPDeleteFolderOperation.cc */; }; + C64EA80816A2999A00778456 /* MCIMAPCreateFolderOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA80616A2999800778456 /* MCIMAPCreateFolderOperation.cc */; }; + C64EA80B16A299B700778456 /* MCIMAPSubscribeFolderOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA80916A299B500778456 /* MCIMAPSubscribeFolderOperation.cc */; }; + C64EA81116A299ED00778456 /* MCIMAPAppendMessageOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA80F16A299EA00778456 /* MCIMAPAppendMessageOperation.cc */; }; + C64EA81416A29A2300778456 /* MCIMAPCopyMessagesOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA81216A29A0A00778456 /* MCIMAPCopyMessagesOperation.cc */; }; + C64EA81716A29A8700778456 /* MCIMAPExpungeOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA81516A29A8500778456 /* MCIMAPExpungeOperation.cc */; }; + C64EA81A16A29AF200778456 /* MCIMAPFetchMessagesOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA81816A29AD400778456 /* MCIMAPFetchMessagesOperation.cc */; }; + C64EA81D16A29DC500778456 /* MCIMAPFetchContentOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA81B16A29DC100778456 /* MCIMAPFetchContentOperation.cc */; }; + C64EA82016A29E4100778456 /* MCIMAPStoreFlagsOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA81E16A29E3D00778456 /* MCIMAPStoreFlagsOperation.cc */; }; + C64EA82316A29E5300778456 /* MCIMAPStoreLabelsOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA82116A29E4F00778456 /* MCIMAPStoreLabelsOperation.cc */; }; + C64EA82616A29EE500778456 /* MCIMAPSearchOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA82416A29EE000778456 /* MCIMAPSearchOperation.cc */; }; + C64EA82916A29F2200778456 /* MCIMAPIdleOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA82716A29EF400778456 /* MCIMAPIdleOperation.cc */; }; + C64EA82C16A2A08B00778456 /* MCIMAPFetchNamespaceOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA82A16A29FAA00778456 /* MCIMAPFetchNamespaceOperation.cc */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -132,16 +163,29 @@ dstPath = include/mailcore; dstSubfolderSpec = 16; files = ( - C64EA74C169E859600778456 /* IMAPAsyncSession.h in CopyFiles */, + C64EA74C169E859600778456 /* MCIMAPAsyncSession.h in CopyFiles */, + C62C6EE016A696AB00737497 /* MCAsyncIMAP.h in CopyFiles */, C64EA74E169E859600778456 /* MCAbstract.h in CopyFiles */, + C62C6EE216A696B400737497 /* MCIMAPFetchFoldersOperation.h in CopyFiles */, C64EA74F169E859600778456 /* MCAbstractMessage.h in CopyFiles */, C64EA7E516A14A5400778456 /* MCAsync.h in CopyFiles */, C64EA750169E859600778456 /* MCAbstractMessagePart.h in CopyFiles */, + C62C6EDB16A3FC8700737497 /* MCIMAPOperation.h in CopyFiles */, C64EA751169E859600778456 /* MCAbstractMultipart.h in CopyFiles */, C64EA752169E859600778456 /* MCAbstractPart.h in CopyFiles */, + C62C6EEC16A69D3D00737497 /* MCIMAPOperationCallback.h in CopyFiles */, + C62C6EE816A6971500737497 /* MCIMAPFolderInfoOperation.h in CopyFiles */, + C62C6EE516A6970400737497 /* MCIMAPFetchMessagesOperation.h in CopyFiles */, + C62C6EE916A6971B00737497 /* MCIMAPSearchOperation.h in CopyFiles */, C64EA7A5169F2A6100778456 /* mailcore.h in CopyFiles */, + C62C6EE616A6970A00737497 /* MCIMAPFetchContentOperation.h in CopyFiles */, + C62C6EEB16A6972700737497 /* MCIMAPIdentityOperation.h in CopyFiles */, + C62C6EE316A696EE00737497 /* MCIMAPAppendMessageOperation.h in CopyFiles */, C64EA7E716A14A7400778456 /* MCSMTPOperationCallback.h in CopyFiles */, C64EA7E616A14A6A00778456 /* MCAsyncSMTP.h in CopyFiles */, + C62C6EEA16A6972100737497 /* MCIMAPFetchNamespaceOperation.h in CopyFiles */, + C62C6EE716A6971000737497 /* MCIMAPIdleOperation.h in CopyFiles */, + C62C6EE416A696F600737497 /* MCIMAPCopyMessagesOperation.h in CopyFiles */, C64EA753169E859600778456 /* MCAddress.h in CopyFiles */, C64EA754169E859600778456 /* MCMessageConstants.h in CopyFiles */, C64EA755169E859600778456 /* MCMessageHeader.h in CopyFiles */, @@ -205,8 +249,12 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + C62C6ED216A2A0E600737497 /* MCIMAPIdentityOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCIMAPIdentityOperation.cc; sourceTree = "<group>"; }; + C62C6ED316A2A0E600737497 /* MCIMAPIdentityOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCIMAPIdentityOperation.h; sourceTree = "<group>"; }; + C62C6ED616A398FA00737497 /* MCIMAPFolderInfoOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCIMAPFolderInfoOperation.cc; sourceTree = "<group>"; }; + C62C6ED716A398FA00737497 /* MCIMAPFolderInfoOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCIMAPFolderInfoOperation.h; sourceTree = "<group>"; }; C64EA537169E772200778456 /* libmailcore2.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libmailcore2.a; sourceTree = BUILT_PRODUCTS_DIR; }; - C64EA68C169E847800778456 /* IMAPAsyncSession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IMAPAsyncSession.h; sourceTree = "<group>"; }; + C64EA68C169E847800778456 /* MCIMAPAsyncSession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCIMAPAsyncSession.h; sourceTree = "<group>"; }; C64EA68F169E847800778456 /* MCSMTPAsyncSession.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCSMTPAsyncSession.cc; sourceTree = "<group>"; }; C64EA690169E847800778456 /* MCSMTPAsyncSession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCSMTPAsyncSession.h; sourceTree = "<group>"; }; C64EA693169E847800778456 /* MCAbstract.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCAbstract.h; sourceTree = "<group>"; }; @@ -316,6 +364,43 @@ C64EA7E416A14A4500778456 /* MCAsync.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MCAsync.h; sourceTree = "<group>"; }; C64EA7E816A154B000778456 /* MCSMTPCheckAccountOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCSMTPCheckAccountOperation.cc; sourceTree = "<group>"; }; C64EA7E916A154B200778456 /* MCSMTPCheckAccountOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCSMTPCheckAccountOperation.h; sourceTree = "<group>"; }; + C64EA7EF16A15A4D00778456 /* MCIMAPOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCIMAPOperation.cc; sourceTree = "<group>"; }; + C64EA7F016A15A4D00778456 /* MCIMAPOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCIMAPOperation.h; sourceTree = "<group>"; }; + C64EA7F416A15A6300778456 /* MCIMAPOperationCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCIMAPOperationCallback.h; sourceTree = "<group>"; }; + C64EA7F616A15A7800778456 /* MCIMAPCheckAccountOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCIMAPCheckAccountOperation.cc; sourceTree = "<group>"; }; + C64EA7F716A15A7800778456 /* MCIMAPCheckAccountOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCIMAPCheckAccountOperation.h; sourceTree = "<group>"; }; + C64EA7F916A15A9200778456 /* MCAsyncIMAP.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MCAsyncIMAP.h; sourceTree = "<group>"; }; + C64EA7FA16A2959700778456 /* MCIMAPFetchFoldersOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCIMAPFetchFoldersOperation.cc; sourceTree = "<group>"; }; + C64EA7FB16A2959700778456 /* MCIMAPFetchFoldersOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCIMAPFetchFoldersOperation.h; sourceTree = "<group>"; }; + C64EA7FD16A295B500778456 /* MCIMAPAsyncSession.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCIMAPAsyncSession.cc; sourceTree = "<group>"; }; + C64EA80016A295E200778456 /* MCIMAPRenameFolderOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCIMAPRenameFolderOperation.cc; sourceTree = "<group>"; }; + C64EA80116A295E300778456 /* MCIMAPRenameFolderOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCIMAPRenameFolderOperation.h; sourceTree = "<group>"; }; + C64EA80316A2997B00778456 /* MCIMAPDeleteFolderOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCIMAPDeleteFolderOperation.cc; sourceTree = "<group>"; }; + C64EA80416A2997D00778456 /* MCIMAPDeleteFolderOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCIMAPDeleteFolderOperation.h; sourceTree = "<group>"; }; + C64EA80616A2999800778456 /* MCIMAPCreateFolderOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCIMAPCreateFolderOperation.cc; sourceTree = "<group>"; }; + C64EA80716A2999900778456 /* MCIMAPCreateFolderOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCIMAPCreateFolderOperation.h; sourceTree = "<group>"; }; + C64EA80916A299B500778456 /* MCIMAPSubscribeFolderOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCIMAPSubscribeFolderOperation.cc; sourceTree = "<group>"; }; + C64EA80A16A299B600778456 /* MCIMAPSubscribeFolderOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCIMAPSubscribeFolderOperation.h; sourceTree = "<group>"; }; + C64EA80F16A299EA00778456 /* MCIMAPAppendMessageOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCIMAPAppendMessageOperation.cc; sourceTree = "<group>"; }; + C64EA81016A299EB00778456 /* MCIMAPAppendMessageOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCIMAPAppendMessageOperation.h; sourceTree = "<group>"; }; + C64EA81216A29A0A00778456 /* MCIMAPCopyMessagesOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCIMAPCopyMessagesOperation.cc; sourceTree = "<group>"; }; + C64EA81316A29A1000778456 /* MCIMAPCopyMessagesOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCIMAPCopyMessagesOperation.h; sourceTree = "<group>"; }; + C64EA81516A29A8500778456 /* MCIMAPExpungeOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCIMAPExpungeOperation.cc; sourceTree = "<group>"; }; + C64EA81616A29A8600778456 /* MCIMAPExpungeOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCIMAPExpungeOperation.h; sourceTree = "<group>"; }; + C64EA81816A29AD400778456 /* MCIMAPFetchMessagesOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCIMAPFetchMessagesOperation.cc; sourceTree = "<group>"; }; + C64EA81916A29ADB00778456 /* MCIMAPFetchMessagesOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCIMAPFetchMessagesOperation.h; sourceTree = "<group>"; }; + C64EA81B16A29DC100778456 /* MCIMAPFetchContentOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCIMAPFetchContentOperation.cc; sourceTree = "<group>"; }; + C64EA81C16A29DC400778456 /* MCIMAPFetchContentOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCIMAPFetchContentOperation.h; sourceTree = "<group>"; }; + C64EA81E16A29E3D00778456 /* MCIMAPStoreFlagsOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCIMAPStoreFlagsOperation.cc; sourceTree = "<group>"; }; + C64EA81F16A29E3F00778456 /* MCIMAPStoreFlagsOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCIMAPStoreFlagsOperation.h; sourceTree = "<group>"; }; + C64EA82116A29E4F00778456 /* MCIMAPStoreLabelsOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCIMAPStoreLabelsOperation.cc; sourceTree = "<group>"; }; + C64EA82216A29E5200778456 /* MCIMAPStoreLabelsOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCIMAPStoreLabelsOperation.h; sourceTree = "<group>"; }; + C64EA82416A29EE000778456 /* MCIMAPSearchOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCIMAPSearchOperation.cc; sourceTree = "<group>"; }; + C64EA82516A29EE300778456 /* MCIMAPSearchOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCIMAPSearchOperation.h; sourceTree = "<group>"; }; + C64EA82716A29EF400778456 /* MCIMAPIdleOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCIMAPIdleOperation.cc; sourceTree = "<group>"; }; + C64EA82816A29F0300778456 /* MCIMAPIdleOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCIMAPIdleOperation.h; sourceTree = "<group>"; }; + C64EA82A16A29FAA00778456 /* MCIMAPFetchNamespaceOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCIMAPFetchNamespaceOperation.cc; sourceTree = "<group>"; }; + C64EA82B16A2A01400778456 /* MCIMAPFetchNamespaceOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCIMAPFetchNamespaceOperation.h; sourceTree = "<group>"; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -339,6 +424,17 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + C62C6ED916A3D55E00737497 /* deprecated */ = { + isa = PBXGroup; + children = ( + C64EA785169F252C00778456 /* MCSMTPSendWithRecipientOperation.cc */, + C64EA786169F252C00778456 /* MCSMTPSendWithRecipientOperation.h */, + C64EA79F169F29D900778456 /* MCSMTPSendWithBuilderOperation.cc */, + C64EA7A0169F29D900778456 /* MCSMTPSendWithBuilderOperation.h */, + ); + name = deprecated; + sourceTree = "<group>"; + }; C64EA52C169E772200778456 = { isa = PBXGroup; children = ( @@ -384,7 +480,48 @@ C64EA68B169E847800778456 /* imap */ = { isa = PBXGroup; children = ( - C64EA68C169E847800778456 /* IMAPAsyncSession.h */, + C64EA7F916A15A9200778456 /* MCAsyncIMAP.h */, + C64EA7FD16A295B500778456 /* MCIMAPAsyncSession.cc */, + C64EA68C169E847800778456 /* MCIMAPAsyncSession.h */, + C64EA7EF16A15A4D00778456 /* MCIMAPOperation.cc */, + C64EA7F016A15A4D00778456 /* MCIMAPOperation.h */, + C64EA7F416A15A6300778456 /* MCIMAPOperationCallback.h */, + C64EA7F616A15A7800778456 /* MCIMAPCheckAccountOperation.cc */, + C64EA7F716A15A7800778456 /* MCIMAPCheckAccountOperation.h */, + C64EA7FA16A2959700778456 /* MCIMAPFetchFoldersOperation.cc */, + C64EA7FB16A2959700778456 /* MCIMAPFetchFoldersOperation.h */, + C64EA80016A295E200778456 /* MCIMAPRenameFolderOperation.cc */, + C64EA80116A295E300778456 /* MCIMAPRenameFolderOperation.h */, + C64EA80316A2997B00778456 /* MCIMAPDeleteFolderOperation.cc */, + C64EA80416A2997D00778456 /* MCIMAPDeleteFolderOperation.h */, + C64EA80616A2999800778456 /* MCIMAPCreateFolderOperation.cc */, + C64EA80716A2999900778456 /* MCIMAPCreateFolderOperation.h */, + C64EA80916A299B500778456 /* MCIMAPSubscribeFolderOperation.cc */, + C64EA80A16A299B600778456 /* MCIMAPSubscribeFolderOperation.h */, + C64EA80F16A299EA00778456 /* MCIMAPAppendMessageOperation.cc */, + C64EA81016A299EB00778456 /* MCIMAPAppendMessageOperation.h */, + C64EA81216A29A0A00778456 /* MCIMAPCopyMessagesOperation.cc */, + C64EA81316A29A1000778456 /* MCIMAPCopyMessagesOperation.h */, + C64EA81516A29A8500778456 /* MCIMAPExpungeOperation.cc */, + C64EA81616A29A8600778456 /* MCIMAPExpungeOperation.h */, + C64EA81816A29AD400778456 /* MCIMAPFetchMessagesOperation.cc */, + C64EA81916A29ADB00778456 /* MCIMAPFetchMessagesOperation.h */, + C64EA81B16A29DC100778456 /* MCIMAPFetchContentOperation.cc */, + C64EA81C16A29DC400778456 /* MCIMAPFetchContentOperation.h */, + C64EA81E16A29E3D00778456 /* MCIMAPStoreFlagsOperation.cc */, + C64EA81F16A29E3F00778456 /* MCIMAPStoreFlagsOperation.h */, + C64EA82116A29E4F00778456 /* MCIMAPStoreLabelsOperation.cc */, + C64EA82216A29E5200778456 /* MCIMAPStoreLabelsOperation.h */, + C64EA82416A29EE000778456 /* MCIMAPSearchOperation.cc */, + C64EA82516A29EE300778456 /* MCIMAPSearchOperation.h */, + C64EA82716A29EF400778456 /* MCIMAPIdleOperation.cc */, + C64EA82816A29F0300778456 /* MCIMAPIdleOperation.h */, + C64EA82A16A29FAA00778456 /* MCIMAPFetchNamespaceOperation.cc */, + C64EA82B16A2A01400778456 /* MCIMAPFetchNamespaceOperation.h */, + C62C6ED216A2A0E600737497 /* MCIMAPIdentityOperation.cc */, + C62C6ED316A2A0E600737497 /* MCIMAPIdentityOperation.h */, + C62C6ED616A398FA00737497 /* MCIMAPFolderInfoOperation.cc */, + C62C6ED716A398FA00737497 /* MCIMAPFolderInfoOperation.h */, ); path = imap; sourceTree = "<group>"; @@ -399,14 +536,11 @@ C64EA68E169E847800778456 /* smtp */ = { isa = PBXGroup; children = ( + C62C6ED916A3D55E00737497 /* deprecated */, C64EA68F169E847800778456 /* MCSMTPAsyncSession.cc */, C64EA690169E847800778456 /* MCSMTPAsyncSession.h */, - C64EA785169F252C00778456 /* MCSMTPSendWithRecipientOperation.cc */, - C64EA786169F252C00778456 /* MCSMTPSendWithRecipientOperation.h */, C64EA79C169F29A700778456 /* MCSMTPSendWithDataOperation.cc */, C64EA79D169F29A700778456 /* MCSMTPSendWithDataOperation.h */, - C64EA79F169F29D900778456 /* MCSMTPSendWithBuilderOperation.cc */, - C64EA7A0169F29D900778456 /* MCSMTPSendWithBuilderOperation.h */, C64EA7D816A1386500778456 /* MCSMTPOperation.cc */, C64EA7D916A1386600778456 /* MCSMTPOperation.h */, C64EA7E116A1425400778456 /* MCSMTPOperationCallback.h */, @@ -704,11 +838,29 @@ C64EA744169E847800778456 /* MCMultipart.cc in Sources */, C64EA781169E89F600778456 /* MCSMTPSession.cc in Sources */, C64EA784169F24E400778456 /* MCSMTPAsyncSession.cc in Sources */, - C64EA787169F252C00778456 /* MCSMTPSendWithRecipientOperation.cc in Sources */, C64EA79E169F29A700778456 /* MCSMTPSendWithDataOperation.cc in Sources */, - C64EA7A1169F29D900778456 /* MCSMTPSendWithBuilderOperation.cc in Sources */, C64EA7DA16A1386600778456 /* MCSMTPOperation.cc in Sources */, C64EA7EA16A154B300778456 /* MCSMTPCheckAccountOperation.cc in Sources */, + C64EA7F116A15A4D00778456 /* MCIMAPOperation.cc in Sources */, + C64EA7F816A15A7800778456 /* MCIMAPCheckAccountOperation.cc in Sources */, + C64EA7FC16A2959800778456 /* MCIMAPFetchFoldersOperation.cc in Sources */, + C64EA80216A295E400778456 /* MCIMAPRenameFolderOperation.cc in Sources */, + C64EA80516A2997E00778456 /* MCIMAPDeleteFolderOperation.cc in Sources */, + C64EA80816A2999A00778456 /* MCIMAPCreateFolderOperation.cc in Sources */, + C64EA80B16A299B700778456 /* MCIMAPSubscribeFolderOperation.cc in Sources */, + C64EA81116A299ED00778456 /* MCIMAPAppendMessageOperation.cc in Sources */, + C64EA81416A29A2300778456 /* MCIMAPCopyMessagesOperation.cc in Sources */, + C64EA81716A29A8700778456 /* MCIMAPExpungeOperation.cc in Sources */, + C64EA81A16A29AF200778456 /* MCIMAPFetchMessagesOperation.cc in Sources */, + C64EA81D16A29DC500778456 /* MCIMAPFetchContentOperation.cc in Sources */, + C64EA82016A29E4100778456 /* MCIMAPStoreFlagsOperation.cc in Sources */, + C64EA82316A29E5300778456 /* MCIMAPStoreLabelsOperation.cc in Sources */, + C64EA82616A29EE500778456 /* MCIMAPSearchOperation.cc in Sources */, + C64EA82916A29F2200778456 /* MCIMAPIdleOperation.cc in Sources */, + C64EA82C16A2A08B00778456 /* MCIMAPFetchNamespaceOperation.cc in Sources */, + C62C6ED416A2A0E600737497 /* MCIMAPIdentityOperation.cc in Sources */, + C62C6ED816A398FA00737497 /* MCIMAPFolderInfoOperation.cc in Sources */, + C62C6EDA16A3D60700737497 /* MCIMAPAsyncSession.cc in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/src/async/imap/IMAPAsyncSession.h b/src/async/imap/IMAPAsyncSession.h deleted file mode 100644 index 53438c7e..00000000 --- a/src/async/imap/IMAPAsyncSession.h +++ /dev/null @@ -1,122 +0,0 @@ -#ifndef __MAILCORE_MCIMAPASYNCSESSION_H - -#define __MAILCORE_MCIMAPASYNCSESSION_H - -#include <mailcore/CBaseTypes.h> -#include <mailcore/MessageConstants.h> - -namespace mailcore { - - class IMAPOperation; - class IMAPFetchFoldersOperation; - class IMAPAppendOperation; - class IMAPCopyOperation; - class IMAPFetchMessagesOperation; - class IMAPIdleOperation; - class IMAPSession; - class IMAPNamespace; - - class IMAPSession : public Object { - private: - String * mHostname; - unsigned int mPort; - String * mUsername; - String * mPassword; - AuthType mAuthType; - ConnectionType mConnectionType; - bool mCheckCertificateEnabled; - bool mVoIPEnabled; - char mDelimiter; - IMAPNamespace * mDefaultNamespace; - - IMAPSession * mSession; - - public: - IMAPAsyncSession(); - virtual ~IMAPAsyncSession(); - - virtual String * className(); - - virtual void setHostname(String * hostname); - virtual String * hostname(); - - virtual void setPort(unsigned int port); - virtual unsigned int port(); - - virtual void setUsername(String * login); - virtual String * username(); - - virtual void setPassword(String * password); - virtual String * password(); - - virtual void setAuthType(AuthType authType); - virtual AuthType authType(); - - virtual void setConnectionType(ConnectionType connectionType); - virtual ConnectionType connectionType(); - - virtual void setTimeout(time_t timeout); - virtual time_t timeout(); - - virtual void setCheckCertificateEnabled(bool enabled); - virtual bool isCheckCertificateEnabled(); - - virtual void setVoIPEnabled(bool enabled); - virtual bool isVoIPEnabled(); - - virtual void setDelimiter(char delimiter); - virtual char delimiter(); - - virtual void setDefaultNamespace(IMAPNamespace * ns); - virtual IMAPNamespace * defaultNamespace(); - - virtual IMAPOperation * select(String * folder); - - virtual IMAPFetchFoldersOperation * fetchSubscribedFolders(); - virtual IMAPFetchFoldersOperation * fetchAllFolders(); - - virtual IMAPOperation * renameFolder(String * folder, String * otherName); - virtual IMAPOperation * deleteFolder(String * folder, ErrorCode * pError); - virtual IMAPOperation * createFolder(String * folder, ErrorCode * pError); - - virtual IMAPOperation * subscribeFolder(String * folder, ErrorCode * pError); - virtual IMAPOperation * unsubscribeFolder(String * folder, ErrorCode * pError); - - virtual IMAPAppendOperation * appendMessage(String * folder, Data * messageData, MessageFlag flags); - - virtual IMAPCopyOperation * copyMessages(String * folder, Array * uidSet, String * destFolder); - - virtual IMAPOperation * expunge(String * folder); - - virtual IMAPFetchMessagesOperation * fetchMessagesByUID(String * folder, IMAPMessagesRequestKind requestKind, - uint32_t firstUID, uint32_t lastUID); - virtual IMAPFetchMessagesOperation * fetchMessagesByNumber(String * folder, IMAPMessagesRequestKind requestKind, - uint32_t firstNumber, uint32_t lastNumber); - virtual IMAPFetchMessagesOperation * fetchMessagesByUID(String * folder, IMAPMessagesRequestKind requestKind, - Array * numbers); - virtual IMAPFetchMessagesOperation * fetchMessagesByNumber(String * folder, IMAPMessagesRequestKind requestKind, - Array * numbers); - virtual IMAPFetchMessageOperation * fetchMessageByUID(String * folder, uint32_t uid); - virtual IMAPFetchMessageOperation * fetchMessageAttachmentByUID(String * folder, uint32_t uid, String * partID, - Encoding encoding, unsigned int expectedSize); - - virtual IMAPOperation * storeFlags(String * folder, Array * uids, IMAPStoreFlagsRequestKind kind, MessageFlag flags); - virtual IMAPOperation * storeLabels(String * folder, Array * uids, IMAPStoreFlagsRequestKind kind, Array * labels); - - virtual IMAPSearchOperation * search(String * folder, IMAPSearchKind kind, String * searchString); - virtual IMAPSearchOperation * search(String * folder, IMAPSearchExpression * expression); - - virtual IMAPIdleOperation * idle(String * folder, uint32_t lastKnownUID); - - virtual IMAPOperation * connect(); - virtual IMAPOperation * disconnect(); - - virtual IMAPOperation * fetchNamespace(); - - virtual IMAPOperation * login(); - - virtual IMAPOperation * identity(String * vendor, String * name, String * version); - }; -} - -#endif diff --git a/src/async/imap/MCAsyncIMAP.h b/src/async/imap/MCAsyncIMAP.h new file mode 100644 index 00000000..1391439b --- /dev/null +++ b/src/async/imap/MCAsyncIMAP.h @@ -0,0 +1,29 @@ +// +// MCAsyncIMAP.h +// mailcore2 +// +// Created by DINH Viêt Hoà on 1/12/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#ifndef mailcore2_MCAsyncIMAP_h +#define mailcore2_MCAsyncIMAP_h + +#include <mailcore/MCIMAPAsyncSession.h> +#include <mailcore/MCIMAPOperation.h> +#include <mailcore/MCIMAPFetchFoldersOperation.h> +#include <mailcore/MCIMAPAppendMessageOperation.h> +#include <mailcore/MCIMAPCopyMessagesOperation.h> +#include <mailcore/MCIMAPFetchMessagesOperation.h> +#include <mailcore/MCIMAPFetchContentOperation.h> +#include <mailcore/MCIMAPIdleOperation.h> +#include <mailcore/MCIMAPFolderInfoOperation.h> +#include <mailcore/MCIMAPSession.h> +#include <mailcore/MCIMAPNamespace.h> +#include <mailcore/MCIMAPSearchOperation.h> +#include <mailcore/MCIMAPSearchExpression.h> +#include <mailcore/MCIMAPFetchNamespaceOperation.h> +#include <mailcore/MCIMAPIdentityOperation.h> +#include <mailcore/MCIMAPOperationCallback.h> + +#endif diff --git a/src/async/imap/MCIMAPAppendMessageOperation.cc b/src/async/imap/MCIMAPAppendMessageOperation.cc new file mode 100644 index 00000000..4026d2d8 --- /dev/null +++ b/src/async/imap/MCIMAPAppendMessageOperation.cc @@ -0,0 +1,71 @@ +// +// MCIMAPAppendMessageOperation.cc +// mailcore2 +// +// Created by DINH Viêt Hoà on 1/12/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#include "MCIMAPAppendMessageOperation.h" + +#include "MCIMAPSession.h" +#include "MCIMAPAsyncSession.h" + +using namespace mailcore; + +IMAPAppendMessageOperation::IMAPAppendMessageOperation() +{ + mFolder = NULL; + mMessageData = NULL; + mFlags = MessageFlagNone; + mCreatedUID = 0; +} + +IMAPAppendMessageOperation::~IMAPAppendMessageOperation() +{ + MC_SAFE_RELEASE(mFolder); + MC_SAFE_RELEASE(mMessageData); +} + +void IMAPAppendMessageOperation::setFolder(String * folder) +{ + MC_SAFE_REPLACE_COPY(String, mFolder, folder); +} + +String * IMAPAppendMessageOperation::folder() +{ + return mFolder; +} + +void IMAPAppendMessageOperation::setMessageData(Data * messageData) +{ + MC_SAFE_REPLACE_RETAIN(Data, mMessageData, messageData); +} + +Data * IMAPAppendMessageOperation::messageData() +{ + return mMessageData; +} + +void IMAPAppendMessageOperation::setFlags(MessageFlag flags) +{ + mFlags = flags; +} + +MessageFlag IMAPAppendMessageOperation::flags() +{ + return mFlags; +} + +uint32_t IMAPAppendMessageOperation::createdUID() +{ + return mCreatedUID; +} + +void IMAPAppendMessageOperation::main() +{ + ErrorCode error; + session()->session()->appendMessage(mFolder, mMessageData, mFlags, this, &mCreatedUID, &error); + setError(error); +} + diff --git a/src/async/imap/MCIMAPAppendMessageOperation.h b/src/async/imap/MCIMAPAppendMessageOperation.h new file mode 100644 index 00000000..bf8238e5 --- /dev/null +++ b/src/async/imap/MCIMAPAppendMessageOperation.h @@ -0,0 +1,43 @@ +// +// MCIMAPAppendMessageOperation.h +// mailcore2 +// +// Created by DINH Viêt Hoà on 1/12/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#ifndef __mailcore2__MCIMAPAppendMessageOperation__ +#define __mailcore2__MCIMAPAppendMessageOperation__ + +#include <mailcore/MCIMAPOperation.h> +#include <mailcore/MCMessageConstants.h> + +namespace mailcore { + + class IMAPAppendMessageOperation : public IMAPOperation { + private: + String * mFolder; + Data * mMessageData; + MessageFlag mFlags; + uint32_t mCreatedUID; + + public: + IMAPAppendMessageOperation(); + virtual ~IMAPAppendMessageOperation(); + + virtual void setFolder(String * folder); + virtual String * folder(); + + virtual void setMessageData(Data * messageData); + virtual Data * messageData(); + + virtual void setFlags(MessageFlag flags); + virtual MessageFlag flags(); + + virtual uint32_t createdUID(); + + virtual void main(); + }; +} + +#endif /* defined(__mailcore2__MCIMAPAppendMessageOperation__) */ diff --git a/src/async/imap/MCIMAPAsyncSession.cc b/src/async/imap/MCIMAPAsyncSession.cc new file mode 100644 index 00000000..6dfaaa22 --- /dev/null +++ b/src/async/imap/MCIMAPAsyncSession.cc @@ -0,0 +1,429 @@ +// +// IMAPAsyncSession.cc +// mailcore2 +// +// Created by DINH Viêt Hoà on 1/12/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#include "MCIMAPAsyncSession.h" + +#include "MCIMAP.h" +#include "MCIMAPFolderInfoOperation.h" +#include "MCIMAPFetchFoldersOperation.h" +#include "MCIMAPRenameFolderOperation.h" +#include "MCIMAPDeleteFolderOperation.h" +#include "MCIMAPCreateFolderOperation.h" +#include "MCIMAPSubscribeFolderOperation.h" +#include "MCIMAPExpungeOperation.h" +#include "MCIMAPAppendMessageOperation.h" +#include "MCIMAPCopyMessagesOperation.h" +#include "MCIMAPFetchMessagesOperation.h" +#include "MCIMAPFetchContentOperation.h" +#include "MCIMAPFetchContentOperation.h" +#include "MCIMAPStoreFlagsOperation.h" +#include "MCIMAPStoreLabelsOperation.h" +#include "MCIMAPSearchOperation.h" +#include "MCIMAPCheckAccountOperation.h" +#include "MCIMAPFetchNamespaceOperation.h" +#include "MCIMAPIdleOperation.h" +#include "MCIMAPIdentityOperation.h" + +using namespace mailcore; + +IMAPAsyncSession::IMAPAsyncSession() +{ + mSession = new IMAPSession(); + mQueue = new OperationQueue(); +} + +IMAPAsyncSession::~IMAPAsyncSession() +{ + MC_SAFE_RELEASE(mDefaultNamespace); + MC_SAFE_RELEASE(mQueue); + MC_SAFE_RELEASE(mSession); +} + +void IMAPAsyncSession::setHostname(String * hostname) +{ + mSession->setHostname(hostname); +} + +String * IMAPAsyncSession::hostname() +{ + return mSession->hostname(); +} + +void IMAPAsyncSession::setPort(unsigned int port) +{ + mSession->setPort(port); +} + +unsigned int IMAPAsyncSession::port() +{ + return mSession->port(); +} + +void IMAPAsyncSession::setUsername(String * username) +{ + mSession->setUsername(username); +} + +String * IMAPAsyncSession::username() +{ + return mSession->username(); +} + +void IMAPAsyncSession::setPassword(String * password) +{ + mSession->setPassword(password); +} + +String * IMAPAsyncSession::password() +{ + return mSession->password(); +} + +void IMAPAsyncSession::setAuthType(AuthType authType) +{ + mSession->setAuthType(authType); +} + +AuthType IMAPAsyncSession::authType() +{ + return mSession->authType(); +} + +void IMAPAsyncSession::setConnectionType(ConnectionType connectionType) +{ + mSession->setConnectionType(connectionType); +} + +ConnectionType IMAPAsyncSession::connectionType() +{ + return mSession->connectionType(); +} + +void IMAPAsyncSession::setTimeout(time_t timeout) +{ + mSession->setTimeout(timeout); +} + +time_t IMAPAsyncSession::timeout() +{ + return mSession->timeout(); +} + +void IMAPAsyncSession::setCheckCertificateEnabled(bool enabled) +{ + mSession->setCheckCertificateEnabled(enabled); +} + +bool IMAPAsyncSession::isCheckCertificateEnabled() +{ + return mSession->isCheckCertificateEnabled(); +} + +void IMAPAsyncSession::setVoIPEnabled(bool enabled) +{ + mSession->setVoIPEnabled(enabled); +} + +bool IMAPAsyncSession::isVoIPEnabled() +{ + return mSession->isVoIPEnabled(); +} + +void IMAPAsyncSession::setDelimiter(char delimiter) +{ + mSession->setDelimiter(delimiter); + mDelimiter = delimiter; +} + +char IMAPAsyncSession::delimiter() +{ + return mDelimiter; +} + +void IMAPAsyncSession::setDefaultNamespace(IMAPNamespace * ns) +{ + mSession->setDefaultNamespace(ns); + MC_SAFE_REPLACE_RETAIN(IMAPNamespace, mDefaultNamespace, ns); +} + +IMAPNamespace * IMAPAsyncSession::defaultNamespace() +{ + return mDefaultNamespace; +} + +IMAPFolderInfoOperation * IMAPAsyncSession::folderInfoOperation(String * folder) +{ + IMAPFolderInfoOperation * op = new IMAPFolderInfoOperation(); + op->setSession(this); + op->setFolder(folder); + op->autorelease(); + return op; +} + +IMAPFetchFoldersOperation * IMAPAsyncSession::fetchSubscribedFoldersOperation() +{ + IMAPFetchFoldersOperation * op = new IMAPFetchFoldersOperation(); + op->setSession(this); + op->setFetchSubscribedEnabled(true); + op->autorelease(); + return op; +} + +IMAPFetchFoldersOperation * IMAPAsyncSession::fetchAllFoldersOperation() +{ + IMAPFetchFoldersOperation * op = new IMAPFetchFoldersOperation(); + op->setSession(this); + op->autorelease(); + return op; +} + +IMAPOperation * IMAPAsyncSession::renameFolderOperation(String * folder, String * otherName) +{ + IMAPRenameFolderOperation * op = new IMAPRenameFolderOperation(); + op->setSession(this); + op->setFolder(folder); + op->setOtherName(otherName); + op->autorelease(); + return op; +} + +IMAPOperation * IMAPAsyncSession::deleteFolderOperation(String * folder) +{ + IMAPDeleteFolderOperation * op = new IMAPDeleteFolderOperation(); + op->setSession(this); + op->setFolder(folder); + op->autorelease(); + return op; +} + +IMAPOperation * IMAPAsyncSession::createFolderOperation(String * folder) +{ + IMAPCreateFolderOperation * op = new IMAPCreateFolderOperation(); + op->setSession(this); + op->setFolder(folder); + op->autorelease(); + return op; +} + +IMAPOperation * IMAPAsyncSession::subscribeFolderOperation(String * folder) +{ + IMAPSubscribeFolderOperation * op = new IMAPSubscribeFolderOperation(); + op->setSession(this); + op->setFolder(folder); + op->autorelease(); + return op; +} + +IMAPOperation * IMAPAsyncSession::unsubscribeFolderOperation(String * folder) +{ + IMAPSubscribeFolderOperation * op = new IMAPSubscribeFolderOperation(); + op->setSession(this); + op->setUnsubscribeEnabled(true); + op->setFolder(folder); + op->autorelease(); + return op; +} + +IMAPAppendMessageOperation * IMAPAsyncSession::appendMessageOperation(String * folder, Data * messageData, MessageFlag flags) +{ + IMAPAppendMessageOperation * op = new IMAPAppendMessageOperation(); + op->setSession(this); + op->setFolder(folder); + op->setMessageData(messageData); + op->setFlags(flags); + op->autorelease(); + return op; +} + +IMAPCopyMessagesOperation * IMAPAsyncSession::copyMessagesOperation(String * folder, Array * uids, String * destFolder) +{ + IMAPCopyMessagesOperation * op = new IMAPCopyMessagesOperation(); + op->setSession(this); + op->setFolder(folder); + op->setUids(uids); + op->setDestFolder(destFolder); + op->autorelease(); + return op; +} + +IMAPOperation * IMAPAsyncSession::expungeOperation(String * folder) +{ + IMAPExpungeOperation * op = new IMAPExpungeOperation(); + op->setSession(this); + op->setFolder(folder); + op->autorelease(); + return op; +} + +IMAPFetchMessagesOperation * IMAPAsyncSession::fetchMessagesByUIDOperation(String * folder, IMAPMessagesRequestKind requestKind, + uint32_t firstUID, uint32_t lastUID) +{ + IMAPFetchMessagesOperation * op = new IMAPFetchMessagesOperation(); + op->setSession(this); + op->setFolder(folder); + op->setKind(requestKind); + op->setFetchByUidEnabled(true); + op->setFirst(firstUID); + op->setLast(lastUID); + op->autorelease(); + return op; +} + +IMAPFetchMessagesOperation * IMAPAsyncSession::fetchMessagesByNumberOperation(String * folder, IMAPMessagesRequestKind requestKind, + uint32_t firstNumber, uint32_t lastNumber) +{ + IMAPFetchMessagesOperation * op = new IMAPFetchMessagesOperation(); + op->setSession(this); + op->setFolder(folder); + op->setKind(requestKind); + op->setFirst(firstNumber); + op->setLast(lastNumber); + op->autorelease(); + return op; +} + +IMAPFetchMessagesOperation * IMAPAsyncSession::fetchMessagesByUIDOperation(String * folder, IMAPMessagesRequestKind requestKind, + Array * uids) +{ + IMAPFetchMessagesOperation * op = new IMAPFetchMessagesOperation(); + op->setSession(this); + op->setFolder(folder); + op->setKind(requestKind); + op->setFetchByUidEnabled(true); + op->setUids(uids); + op->autorelease(); + return op; +} + +IMAPFetchMessagesOperation * IMAPAsyncSession::fetchMessagesByNumberOperation(String * folder, IMAPMessagesRequestKind requestKind, + Array * numbers) +{ + IMAPFetchMessagesOperation * op = new IMAPFetchMessagesOperation(); + op->setSession(this); + op->setFolder(folder); + op->setKind(requestKind); + op->setNumbers(numbers); + op->autorelease(); + return op; +} + +IMAPFetchContentOperation * IMAPAsyncSession::fetchMessageByUIDOperation(String * folder, uint32_t uid) +{ + IMAPFetchContentOperation * op = new IMAPFetchContentOperation(); + op->setSession(this); + op->setFolder(folder); + op->setUid(uid); + op->autorelease(); + return op; +} + +IMAPFetchContentOperation * IMAPAsyncSession::fetchMessageAttachmentByUIDOperation(String * folder, uint32_t uid, String * partID, + Encoding encoding, unsigned int expectedSize) +{ + IMAPFetchContentOperation * op = new IMAPFetchContentOperation(); + op->setSession(this); + op->setFolder(folder); + op->setUid(uid); + op->setPartID(partID); + op->setEncoding(encoding); + op->autorelease(); + return op; +} + +IMAPOperation * IMAPAsyncSession::storeFlagsOperation(String * folder, Array * uids, IMAPStoreFlagsRequestKind kind, MessageFlag flags) +{ + IMAPStoreFlagsOperation * op = new IMAPStoreFlagsOperation(); + op->setSession(this); + op->setFolder(folder); + op->setUids(uids); + op->setKind(kind); + op->setFlags(flags); + op->autorelease(); + return op; +} + +IMAPOperation * IMAPAsyncSession::storeLabelsOperation(String * folder, Array * uids, IMAPStoreFlagsRequestKind kind, Array * labels) +{ + IMAPStoreLabelsOperation * op = new IMAPStoreLabelsOperation(); + op->setSession(this); + op->setFolder(folder); + op->setUids(uids); + op->setKind(kind); + op->setLabels(labels); + op->autorelease(); + return op; +} + +IMAPSearchOperation * IMAPAsyncSession::searchOperation(String * folder, IMAPSearchKind kind, String * searchString) +{ + IMAPSearchOperation * op = new IMAPSearchOperation(); + op->setSession(this); + op->setFolder(folder); + op->setSearchKind(kind); + op->setSearchString(searchString); + op->autorelease(); + return op; +} + +IMAPSearchOperation * IMAPAsyncSession::searchOperation(String * folder, IMAPSearchExpression * expression) +{ + IMAPSearchOperation * op = new IMAPSearchOperation(); + op->setSession(this); + op->setFolder(folder); + op->setSearchExpression(expression); + op->autorelease(); + return op; +} + +IMAPIdleOperation * IMAPAsyncSession::idleOperation(String * folder, uint32_t lastKnownUID) +{ + IMAPIdleOperation * op = new IMAPIdleOperation(); + op->setSession(this); + op->setFolder(folder); + op->setLastKnownUID(lastKnownUID); + op->autorelease(); + return op; +} + +IMAPFetchNamespaceOperation * IMAPAsyncSession::fetchNamespaceOperation() +{ + IMAPFetchNamespaceOperation * op = new IMAPFetchNamespaceOperation(); + op->setSession(this); + op->autorelease(); + return op; +} + +IMAPIdentityOperation * IMAPAsyncSession::identityOperation(String * vendor, String * name, String * version) +{ + IMAPIdentityOperation * op = new IMAPIdentityOperation(); + op->setSession(this); + op->setVendor(vendor); + op->setName(name); + op->setVersion(version); + op->autorelease(); + return op; +} + +IMAPOperation * IMAPAsyncSession::checkAccountOperation() +{ + IMAPCheckAccountOperation * op = new IMAPCheckAccountOperation(); + op->setSession(this); + op->autorelease(); + return op; +} + +IMAPSession * IMAPAsyncSession::session() +{ + return mSession; +} + +void IMAPAsyncSession::runOperation(IMAPOperation * operation) +{ + // TODO: disconnect after delay + mQueue->addOperation(operation); +} diff --git a/src/async/imap/MCIMAPAsyncSession.h b/src/async/imap/MCIMAPAsyncSession.h new file mode 100644 index 00000000..6628e80a --- /dev/null +++ b/src/async/imap/MCIMAPAsyncSession.h @@ -0,0 +1,121 @@ +#ifndef __MAILCORE_MCIMAPASYNCSESSION_H + +#define __MAILCORE_MCIMAPASYNCSESSION_H + +#include <mailcore/MCBaseTypes.h> +#include <mailcore/MCMessageConstants.h> + +namespace mailcore { + + class IMAPOperation; + class IMAPFetchFoldersOperation; + class IMAPAppendMessageOperation; + class IMAPCopyMessagesOperation; + class IMAPFetchMessagesOperation; + class IMAPFetchContentOperation; + class IMAPIdleOperation; + class IMAPFolderInfoOperation; + class IMAPSession; + class IMAPNamespace; + class IMAPSearchOperation; + class IMAPSearchExpression; + class IMAPFetchNamespaceOperation; + class IMAPIdentityOperation; + + class IMAPAsyncSession : public Object { + private: + IMAPSession * mSession; + OperationQueue * mQueue; + char mDelimiter; + IMAPNamespace * mDefaultNamespace; + + void queue(IMAPOperation * op); + + public: + IMAPAsyncSession(); + virtual ~IMAPAsyncSession(); + + virtual void setHostname(String * hostname); + virtual String * hostname(); + + virtual void setPort(unsigned int port); + virtual unsigned int port(); + + virtual void setUsername(String * username); + virtual String * username(); + + virtual void setPassword(String * password); + virtual String * password(); + + virtual void setAuthType(AuthType authType); + virtual AuthType authType(); + + virtual void setConnectionType(ConnectionType connectionType); + virtual ConnectionType connectionType(); + + virtual void setTimeout(time_t timeout); + virtual time_t timeout(); + + virtual void setCheckCertificateEnabled(bool enabled); + virtual bool isCheckCertificateEnabled(); + + virtual void setVoIPEnabled(bool enabled); + virtual bool isVoIPEnabled(); + + virtual void setDelimiter(char delimiter); + virtual char delimiter(); + + virtual void setDefaultNamespace(IMAPNamespace * ns); + virtual IMAPNamespace * defaultNamespace(); + + virtual IMAPFolderInfoOperation * folderInfoOperation(String * folder); + + virtual IMAPFetchFoldersOperation * fetchSubscribedFoldersOperation(); + virtual IMAPFetchFoldersOperation * fetchAllFoldersOperation(); + + virtual IMAPOperation * renameFolderOperation(String * folder, String * otherName); + virtual IMAPOperation * deleteFolderOperation(String * folder); + virtual IMAPOperation * createFolderOperation(String * folder); + + virtual IMAPOperation * subscribeFolderOperation(String * folder); + virtual IMAPOperation * unsubscribeFolderOperation(String * folder); + + virtual IMAPAppendMessageOperation * appendMessageOperation(String * folder, Data * messageData, MessageFlag flags); + + virtual IMAPCopyMessagesOperation * copyMessagesOperation(String * folder, Array * uids, String * destFolder); + + virtual IMAPOperation * expungeOperation(String * folder); + + virtual IMAPFetchMessagesOperation * fetchMessagesByUIDOperation(String * folder, IMAPMessagesRequestKind requestKind, + uint32_t firstUID, uint32_t lastUID); + virtual IMAPFetchMessagesOperation * fetchMessagesByNumberOperation(String * folder, IMAPMessagesRequestKind requestKind, + uint32_t firstNumber, uint32_t lastNumber); + virtual IMAPFetchMessagesOperation * fetchMessagesByUIDOperation(String * folder, IMAPMessagesRequestKind requestKind, + Array * numbers); + virtual IMAPFetchMessagesOperation * fetchMessagesByNumberOperation(String * folder, IMAPMessagesRequestKind requestKind, + Array * numbers); + virtual IMAPFetchContentOperation * fetchMessageByUIDOperation(String * folder, uint32_t uid); + virtual IMAPFetchContentOperation * fetchMessageAttachmentByUIDOperation(String * folder, uint32_t uid, String * partID, + Encoding encoding, unsigned int expectedSize); + + virtual IMAPOperation * storeFlagsOperation(String * folder, Array * uids, IMAPStoreFlagsRequestKind kind, MessageFlag flags); + virtual IMAPOperation * storeLabelsOperation(String * folder, Array * uids, IMAPStoreFlagsRequestKind kind, Array * labels); + + virtual IMAPSearchOperation * searchOperation(String * folder, IMAPSearchKind kind, String * searchString); + virtual IMAPSearchOperation * searchOperation(String * folder, IMAPSearchExpression * expression); + + virtual IMAPIdleOperation * idleOperation(String * folder, uint32_t lastKnownUID); + + virtual IMAPFetchNamespaceOperation * fetchNamespaceOperation(); + + virtual IMAPIdentityOperation * identityOperation(String * vendor, String * name, String * version); + + virtual IMAPOperation * checkAccountOperation(); + + // private + virtual void runOperation(IMAPOperation * operation); + virtual IMAPSession * session(); + }; +} + +#endif diff --git a/src/async/imap/MCIMAPCheckAccountOperation.cc b/src/async/imap/MCIMAPCheckAccountOperation.cc new file mode 100644 index 00000000..c494dad7 --- /dev/null +++ b/src/async/imap/MCIMAPCheckAccountOperation.cc @@ -0,0 +1,21 @@ +// +// MCIMAPCheckAccountOperation.cc +// mailcore2 +// +// Created by DINH Viêt Hoà on 1/12/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#include "MCIMAPCheckAccountOperation.h" + +#include "MCIMAPAsyncSession.h" +#include "MCIMAPSession.h" + +using namespace mailcore; + +void IMAPCheckAccountOperation::main() +{ + ErrorCode error; + session()->session()->login(&error); + setError(error); +} diff --git a/src/async/imap/MCIMAPCheckAccountOperation.h b/src/async/imap/MCIMAPCheckAccountOperation.h new file mode 100644 index 00000000..e69a9898 --- /dev/null +++ b/src/async/imap/MCIMAPCheckAccountOperation.h @@ -0,0 +1,24 @@ +// +// MCIMAPCheckAccountOperation.h +// mailcore2 +// +// Created by DINH Viêt Hoà on 1/12/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#ifndef __mailcore2__MCIMAPCheckAccountOperation__ +#define __mailcore2__MCIMAPCheckAccountOperation__ + +#include <mailcore/MCIMAPOperation.h> + +namespace mailcore { + + class IMAPCheckAccountOperation : public IMAPOperation { + private: + + public: + virtual void main(); + }; +} + +#endif /* defined(__mailcore2__MCIMAPCheckAccountOperation__) */ diff --git a/src/async/imap/MCIMAPCopyMessagesOperation.cc b/src/async/imap/MCIMAPCopyMessagesOperation.cc new file mode 100644 index 00000000..b7321d97 --- /dev/null +++ b/src/async/imap/MCIMAPCopyMessagesOperation.cc @@ -0,0 +1,75 @@ +// +// MCIMAPCopyMessagesOperation.cc +// mailcore2 +// +// Created by DINH Viêt Hoà on 1/12/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#include "MCIMAPCopyMessagesOperation.h" + +#include "MCIMAPSession.h" +#include "MCIMAPAsyncSession.h" + +using namespace mailcore; + +IMAPCopyMessagesOperation::IMAPCopyMessagesOperation() +{ + mFolder = NULL; + mUids = NULL; + mDestFolder = NULL; + mDestUids = NULL; +} + +IMAPCopyMessagesOperation::~IMAPCopyMessagesOperation() +{ + MC_SAFE_RELEASE(mDestUids); + MC_SAFE_RELEASE(mFolder); + MC_SAFE_RELEASE(mUids); + MC_SAFE_RELEASE(mDestFolder); +} + +void IMAPCopyMessagesOperation::setFolder(String * folder) +{ + MC_SAFE_REPLACE_COPY(String, mFolder, folder); +} + +String * IMAPCopyMessagesOperation::folder() +{ + return mFolder; +} + +void IMAPCopyMessagesOperation::setUids(Array * uids) +{ + MC_SAFE_REPLACE_RETAIN(Array, mUids, uids); +} + +Array * IMAPCopyMessagesOperation::uids() +{ + return mUids; +} + +Array * IMAPCopyMessagesOperation::destUids() +{ + return mDestUids; +} + +void IMAPCopyMessagesOperation::setDestFolder(String * destFolder) +{ + MC_SAFE_REPLACE_COPY(String, mDestFolder, destFolder); +} + +String * IMAPCopyMessagesOperation::destFolder() +{ + return mDestFolder; +} + +void IMAPCopyMessagesOperation::main() +{ + ErrorCode error; + session()->session()->copyMessages(mFolder, mUids, mDestFolder, &mDestUids, &error); + if (mDestUids != NULL) { + mDestUids->retain(); + } + setError(error); +} diff --git a/src/async/imap/MCIMAPCopyMessagesOperation.h b/src/async/imap/MCIMAPCopyMessagesOperation.h new file mode 100644 index 00000000..4dd279dd --- /dev/null +++ b/src/async/imap/MCIMAPCopyMessagesOperation.h @@ -0,0 +1,42 @@ +// +// MCIMAPCopyMessagesOperation.h +// mailcore2 +// +// Created by DINH Viêt Hoà on 1/12/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#ifndef __mailcore2__MCIMAPCopyMessagesOperation__ +#define __mailcore2__MCIMAPCopyMessagesOperation__ + +#include <mailcore/MCIMAPOperation.h> + +namespace mailcore { + + class IMAPCopyMessagesOperation : public IMAPOperation { + private: + String * mFolder; + Array * mUids; + String * mDestFolder; + Array * mDestUids; + + public: + IMAPCopyMessagesOperation(); + virtual ~IMAPCopyMessagesOperation(); + + virtual void setFolder(String * folder); + virtual String * folder(); + + virtual void setDestFolder(String * destFolder); + virtual String * destFolder(); + + virtual void setUids(Array * uids); + virtual Array * uids(); + + virtual Array * destUids(); + + virtual void main(); + }; +} + +#endif /* defined(__mailcore2__MCIMAPCopyMessagesOperation__) */ diff --git a/src/async/imap/MCIMAPCreateFolderOperation.cc b/src/async/imap/MCIMAPCreateFolderOperation.cc new file mode 100644 index 00000000..bdf76c91 --- /dev/null +++ b/src/async/imap/MCIMAPCreateFolderOperation.cc @@ -0,0 +1,41 @@ +// +// MCIMAPCreateFolderOperation.cpp +// mailcore2 +// +// Created by DINH Viêt Hoà on 1/12/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#include "MCIMAPCreateFolderOperation.h" + +#include "MCIMAPSession.h" +#include "MCIMAPAsyncSession.h" + +using namespace mailcore; + +IMAPCreateFolderOperation::IMAPCreateFolderOperation() +{ + mFolder = NULL; +} + +IMAPCreateFolderOperation::~IMAPCreateFolderOperation() +{ + MC_SAFE_RELEASE(mFolder); +} + +void IMAPCreateFolderOperation::setFolder(String * folder) +{ + MC_SAFE_REPLACE_COPY(String, mFolder, folder); +} + +String * IMAPCreateFolderOperation::folder() +{ + return mFolder; +} + +void IMAPCreateFolderOperation::main() +{ + ErrorCode error; + session()->session()->createFolder(mFolder, &error); + setError(error); +} diff --git a/src/async/imap/MCIMAPCreateFolderOperation.h b/src/async/imap/MCIMAPCreateFolderOperation.h new file mode 100644 index 00000000..4b242696 --- /dev/null +++ b/src/async/imap/MCIMAPCreateFolderOperation.h @@ -0,0 +1,31 @@ +// +// MCIMAPCreateFolderOperation.h +// mailcore2 +// +// Created by DINH Viêt Hoà on 1/12/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#ifndef __mailcore2__MCIMAPCreateFolderOperation__ +#define __mailcore2__MCIMAPCreateFolderOperation__ + +#include <mailcore/MCIMAPOperation.h> + +namespace mailcore { + + class IMAPCreateFolderOperation : public IMAPOperation { + private: + String * mFolder; + + public: + IMAPCreateFolderOperation(); + virtual ~IMAPCreateFolderOperation(); + + virtual void setFolder(String * folder); + virtual String * folder(); + + virtual void main(); + }; +} + +#endif /* defined(__mailcore2__MCIMAPCreateFolderOperation__) */ diff --git a/src/async/imap/MCIMAPDeleteFolderOperation.cc b/src/async/imap/MCIMAPDeleteFolderOperation.cc new file mode 100644 index 00000000..e3541480 --- /dev/null +++ b/src/async/imap/MCIMAPDeleteFolderOperation.cc @@ -0,0 +1,41 @@ +// +// MCIMAPDeleteFolderOperation.cc +// mailcore2 +// +// Created by DINH Viêt Hoà on 1/12/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#include "MCIMAPDeleteFolderOperation.h" + +#include "MCIMAPSession.h" +#include "MCIMAPAsyncSession.h" + +using namespace mailcore; + +IMAPDeleteFolderOperation::IMAPDeleteFolderOperation() +{ + mFolder = NULL; +} + +IMAPDeleteFolderOperation::~IMAPDeleteFolderOperation() +{ + MC_SAFE_RELEASE(mFolder); +} + +void IMAPDeleteFolderOperation::setFolder(String * folder) +{ + MC_SAFE_REPLACE_COPY(String, mFolder, folder); +} + +String * IMAPDeleteFolderOperation::folder() +{ + return mFolder; +} + +void IMAPDeleteFolderOperation::main() +{ + ErrorCode error; + session()->session()->deleteFolder(mFolder, &error); + setError(error); +} diff --git a/src/async/imap/MCIMAPDeleteFolderOperation.h b/src/async/imap/MCIMAPDeleteFolderOperation.h new file mode 100644 index 00000000..96d0873c --- /dev/null +++ b/src/async/imap/MCIMAPDeleteFolderOperation.h @@ -0,0 +1,31 @@ +// +// MCIMAPDeleteFolderOperation.h +// mailcore2 +// +// Created by DINH Viêt Hoà on 1/12/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#ifndef __mailcore2__MCIMAPDeleteFolderOperation__ +#define __mailcore2__MCIMAPDeleteFolderOperation__ + +#include <mailcore/MCIMAPOperation.h> + +namespace mailcore { + + class IMAPDeleteFolderOperation : public IMAPOperation { + private: + String * mFolder; + + public: + IMAPDeleteFolderOperation(); + virtual ~IMAPDeleteFolderOperation(); + + virtual void setFolder(String * folder); + virtual String * folder(); + + virtual void main(); + }; +} + +#endif /* defined(__mailcore2__MCIMAPDeleteFolderOperation__) */ diff --git a/src/async/imap/MCIMAPExpungeOperation.cc b/src/async/imap/MCIMAPExpungeOperation.cc new file mode 100644 index 00000000..c0abee70 --- /dev/null +++ b/src/async/imap/MCIMAPExpungeOperation.cc @@ -0,0 +1,41 @@ +// +// MCIMAPExpungeOperation.cc +// mailcore2 +// +// Created by DINH Viêt Hoà on 1/12/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#include "MCIMAPExpungeOperation.h" + +#include "MCIMAPSession.h" +#include "MCIMAPAsyncSession.h" + +using namespace mailcore; + +IMAPExpungeOperation::IMAPExpungeOperation() +{ + mFolder = NULL; +} + +IMAPExpungeOperation::~IMAPExpungeOperation() +{ + MC_SAFE_RELEASE(mFolder); +} + +void IMAPExpungeOperation::setFolder(String * folder) +{ + MC_SAFE_REPLACE_COPY(String, mFolder, folder); +} + +String * IMAPExpungeOperation::folder() +{ + return mFolder; +} + +void IMAPExpungeOperation::main() +{ + ErrorCode error; + session()->session()->expunge(mFolder, &error); + setError(error); +} diff --git a/src/async/imap/MCIMAPExpungeOperation.h b/src/async/imap/MCIMAPExpungeOperation.h new file mode 100644 index 00000000..4f3bde19 --- /dev/null +++ b/src/async/imap/MCIMAPExpungeOperation.h @@ -0,0 +1,31 @@ +// +// MCIMAPExpungeOperation.h +// mailcore2 +// +// Created by DINH Viêt Hoà on 1/12/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#ifndef __mailcore2__MCIMAPExpungeOperation__ +#define __mailcore2__MCIMAPExpungeOperation__ + +#include <mailcore/MCIMAPOperation.h> + +namespace mailcore { + + class IMAPExpungeOperation : public IMAPOperation { + private: + String * mFolder; + + public: + IMAPExpungeOperation(); + virtual ~IMAPExpungeOperation(); + + virtual void setFolder(String * folder); + virtual String * folder(); + + virtual void main(); + }; +} + +#endif /* defined(__mailcore2__MCIMAPExpungeOperation__) */ diff --git a/src/async/imap/MCIMAPFetchContentOperation.cc b/src/async/imap/MCIMAPFetchContentOperation.cc new file mode 100644 index 00000000..ed0d1375 --- /dev/null +++ b/src/async/imap/MCIMAPFetchContentOperation.cc @@ -0,0 +1,89 @@ +// +// IMAPFetchContentOperation.cc +// mailcore2 +// +// Created by DINH Viêt Hoà on 1/12/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#include "MCIMAPFetchContentOperation.h" + +#include "MCIMAPSession.h" +#include "MCIMAPAsyncSession.h" + +using namespace mailcore; + +IMAPFetchContentOperation::IMAPFetchContentOperation() +{ + mFolder = NULL; + mUid = 0; + mPartID = NULL; + mEncoding = Encoding7Bit; + mData = NULL; +} + +IMAPFetchContentOperation::~IMAPFetchContentOperation() +{ + MC_SAFE_RELEASE(mFolder); + MC_SAFE_RELEASE(mPartID); + MC_SAFE_RELEASE(mData); +} + +void IMAPFetchContentOperation::setFolder(String * folder) +{ + MC_SAFE_REPLACE_COPY(String, mFolder, folder); +} + +String * IMAPFetchContentOperation::folder() +{ + return mFolder; +} + +void IMAPFetchContentOperation::setUid(uint32_t uid) +{ + mUid = uid; +} + +uint32_t IMAPFetchContentOperation::uid() +{ + return mUid; +} + +void IMAPFetchContentOperation::setPartID(String * partID) +{ + MC_SAFE_REPLACE_COPY(String, mPartID, partID); +} + +String * IMAPFetchContentOperation::partID() +{ + return mPartID; +} + +void IMAPFetchContentOperation::setEncoding(Encoding encoding) +{ + mEncoding = encoding; +} + +Encoding IMAPFetchContentOperation::encoding() +{ + return mEncoding; +} + +Data * IMAPFetchContentOperation::data() +{ + return mData; +} + +void IMAPFetchContentOperation::main() +{ + ErrorCode error; + if (mPartID != NULL) { + mData = session()->session()->fetchMessageAttachmentByUID(mFolder, mUid, mPartID, mEncoding, this, &error); + } + else { + mData = session()->session()->fetchMessageByUID(mFolder, mUid, this, &error); + } + MC_SAFE_RETAIN(mData); + setError(error); +} + diff --git a/src/async/imap/MCIMAPFetchContentOperation.h b/src/async/imap/MCIMAPFetchContentOperation.h new file mode 100644 index 00000000..732bcdf4 --- /dev/null +++ b/src/async/imap/MCIMAPFetchContentOperation.h @@ -0,0 +1,46 @@ +// +// IMAPFetchContentOperation.h +// mailcore2 +// +// Created by DINH Viêt Hoà on 1/12/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#ifndef __mailcore2__IMAPFetchContentOperation__ +#define __mailcore2__IMAPFetchContentOperation__ + +#include <mailcore/MCIMAPOperation.h> + +namespace mailcore { + + class IMAPFetchContentOperation : public IMAPOperation { + private: + String * mFolder; + uint32_t mUid; + String * mPartID; + Encoding mEncoding; + Data * mData; + + public: + IMAPFetchContentOperation(); + virtual ~IMAPFetchContentOperation(); + + virtual void setFolder(String * folder); + virtual String * folder(); + + virtual void setUid(uint32_t uid); + virtual uint32_t uid(); + + virtual void setPartID(String * partID); + virtual String * partID(); + + virtual void setEncoding(Encoding encoding); + virtual Encoding encoding(); + + virtual Data * data(); + + virtual void main(); + }; +} + +#endif /* defined(__mailcore2__IMAPFetchContentOperation__) */ diff --git a/src/async/imap/MCIMAPFetchFoldersOperation.cc b/src/async/imap/MCIMAPFetchFoldersOperation.cc new file mode 100644 index 00000000..55d3ae4e --- /dev/null +++ b/src/async/imap/MCIMAPFetchFoldersOperation.cc @@ -0,0 +1,77 @@ +// +// MCIMAPFetchFoldersOperation.cpp +// mailcore2 +// +// Created by DINH Viêt Hoà on 1/12/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#include "MCIMAPFetchFoldersOperation.h" + +#include <stdlib.h> + +#include "MCIMAPSession.h" +#include "MCIMAPAsyncSession.h" + +using namespace mailcore; + +IMAPFetchFoldersOperation::IMAPFetchFoldersOperation() +{ + mFolder = NULL; + mFetchSubscribedEnabled = false; + mFolders = NULL; +} + +IMAPFetchFoldersOperation::~IMAPFetchFoldersOperation() +{ + MC_SAFE_RELEASE(mFolder); +} + +void IMAPFetchFoldersOperation::setFolder(String * folder) +{ + MC_SAFE_REPLACE_COPY(String, mFolder, folder); +} + +String * IMAPFetchFoldersOperation::folder() +{ + return mFolder; +} + +void IMAPFetchFoldersOperation::setFetchSubscribedEnabled(bool enabled) +{ + mFetchSubscribedEnabled = enabled; +} + +bool IMAPFetchFoldersOperation::isFetchSubscribedEnabled() +{ + return mFetchSubscribedEnabled; +} + +Array * IMAPFetchFoldersOperation::folders() +{ + return mFolders; +} + +void IMAPFetchFoldersOperation::main() +{ + ErrorCode error; + if (mFetchSubscribedEnabled) { + mFolders = session()->session()->fetchSubscribedFolders(&error); + } + else { + mFolders = session()->session()->fetchAllFolders(&error); + } + MC_SAFE_RETAIN(mFolders); + setError(error); + + char * delimiterData = (char *) malloc(1); + * delimiterData = session()->session()->delimiter(); + session()->performMethodOnMainThread((Object::Method) &IMAPFetchFoldersOperation::setDelimiterDataOnMainThread, + delimiterData); + free(delimiterData); +} + +void IMAPFetchFoldersOperation::setDelimiterDataOnMainThread(char * delimiterData) +{ + session()->setDelimiter(* delimiterData); +} diff --git a/src/async/imap/MCIMAPFetchFoldersOperation.h b/src/async/imap/MCIMAPFetchFoldersOperation.h new file mode 100644 index 00000000..8d31e370 --- /dev/null +++ b/src/async/imap/MCIMAPFetchFoldersOperation.h @@ -0,0 +1,40 @@ +// +// MCIMAPFetchFoldersOperation.h +// mailcore2 +// +// Created by DINH Viêt Hoà on 1/12/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#ifndef __mailcore2__MCIMAPFetchFoldersOperation__ +#define __mailcore2__MCIMAPFetchFoldersOperation__ + +#include <mailcore/MCBaseTypes.h> +#include <mailcore/MCIMAPOperation.h> + +namespace mailcore { + + class IMAPFetchFoldersOperation : public IMAPOperation { + private: + String * mFolder; + bool mFetchSubscribedEnabled; + Array * mFolders; + void setDelimiterDataOnMainThread(char * delimiterData); + + public: + IMAPFetchFoldersOperation(); + virtual ~IMAPFetchFoldersOperation(); + + virtual void setFolder(String * folder); + virtual String * folder(); + + virtual void setFetchSubscribedEnabled(bool enabled); + virtual bool isFetchSubscribedEnabled(); + + virtual Array * folders(); + + virtual void main(); + }; +} + +#endif /* defined(__mailcore2__MCIMAPFetchFoldersOperation__) */ diff --git a/src/async/imap/MCIMAPFetchMessagesOperation.cc b/src/async/imap/MCIMAPFetchMessagesOperation.cc new file mode 100644 index 00000000..c08d1c52 --- /dev/null +++ b/src/async/imap/MCIMAPFetchMessagesOperation.cc @@ -0,0 +1,137 @@ +// +// IMAPFetchMessagesOperation.cc +// mailcore2 +// +// Created by DINH Viêt Hoà on 1/12/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#include "MCIMAPFetchMessagesOperation.h" + +#include "MCIMAPSession.h" +#include "MCIMAPAsyncSession.h" + +using namespace mailcore; + +IMAPFetchMessagesOperation::IMAPFetchMessagesOperation() +{ + mFolder = NULL; + mFetchByUidEnabled = false; + mFirst = 0; + mLast = 0; + mUids = NULL; + mNumbers = NULL; + mMessages = NULL; +} + +IMAPFetchMessagesOperation::~IMAPFetchMessagesOperation() +{ + MC_SAFE_RELEASE(mFolder); + MC_SAFE_RELEASE(mNumbers); + MC_SAFE_RELEASE(mUids); + MC_SAFE_RELEASE(mMessages); +} + +void IMAPFetchMessagesOperation::setFolder(String * folder) +{ + MC_SAFE_REPLACE_COPY(String, mFolder, folder); +} + +String * IMAPFetchMessagesOperation::folder() +{ + return mFolder; +} + +void IMAPFetchMessagesOperation::setFetchByUidEnabled(bool enabled) +{ + mFetchByUidEnabled = enabled; +} + +bool IMAPFetchMessagesOperation::isFetchByUidEnabled() +{ + return mFetchByUidEnabled; +} + +void IMAPFetchMessagesOperation::setFirst(uint32_t first) +{ + mFirst = first; +} + +uint32_t IMAPFetchMessagesOperation::first() +{ + return mFirst; +} + +void IMAPFetchMessagesOperation::setLast(uint32_t last) +{ + mLast = last; +} + +uint32_t IMAPFetchMessagesOperation::last() +{ + return mLast; +} + +void IMAPFetchMessagesOperation::setUids(Array * uids) +{ + MC_SAFE_REPLACE_RETAIN(Array, mUids, uids); +} + +Array * IMAPFetchMessagesOperation::uids() +{ + return mUids; +} + +void IMAPFetchMessagesOperation::setNumbers(Array * numbers) +{ + MC_SAFE_REPLACE_RETAIN(Array, mNumbers, numbers); +} + +Array * IMAPFetchMessagesOperation::numbers() +{ + return mNumbers; +} + +void IMAPFetchMessagesOperation::setKind(IMAPMessagesRequestKind kind) +{ + mKind = kind; +} + +IMAPMessagesRequestKind IMAPFetchMessagesOperation::kind() +{ + return mKind; +} + +Array * IMAPFetchMessagesOperation::messages() +{ + return mMessages; +} + +void IMAPFetchMessagesOperation::main() +{ + ErrorCode error; + MCLog("1"); + if (mFetchByUidEnabled) { + MCLog("2"); + if (mUids != NULL) { + MCLog("3"); + mMessages = session()->session()->fetchMessagesByUID(mFolder, mKind, mUids, this, &error); + } + else { + MCLog("4"); + mMessages = session()->session()->fetchMessagesByUID(mFolder, mKind, mFirst, mLast, this, &error); + } + } + else { + MCLog("5"); + if (mNumbers != NULL) { + MCLog("6"); + mMessages = session()->session()->fetchMessagesByNumber(mFolder, mKind, mNumbers, this, &error); + } + else { + MCLog("7"); + mMessages = session()->session()->fetchMessagesByNumber(mFolder, mKind, mFirst, mLast, this, &error); + } + } + setError(error); +} diff --git a/src/async/imap/MCIMAPFetchMessagesOperation.h b/src/async/imap/MCIMAPFetchMessagesOperation.h new file mode 100644 index 00000000..03abbf2a --- /dev/null +++ b/src/async/imap/MCIMAPFetchMessagesOperation.h @@ -0,0 +1,58 @@ +// +// IMAPFetchMessagesOperation.h +// mailcore2 +// +// Created by DINH Viêt Hoà on 1/12/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#ifndef __mailcore2__IMAPFetchMessagesOperation__ +#define __mailcore2__IMAPFetchMessagesOperation__ + +#include <mailcore/MCIMAPOperation.h> + +namespace mailcore { + + class IMAPFetchMessagesOperation : public IMAPOperation { + private: + String * mFolder; + bool mFetchByUidEnabled; + uint32_t mFirst; + uint32_t mLast; + Array * mUids; + Array * mNumbers; + IMAPMessagesRequestKind mKind; + Array * mMessages; + + public: + IMAPFetchMessagesOperation(); + virtual ~IMAPFetchMessagesOperation(); + + virtual void setFolder(String * folder); + virtual String * folder(); + + virtual void setFetchByUidEnabled(bool enabled); + virtual bool isFetchByUidEnabled(); + + virtual void setFirst(uint32_t first); + virtual uint32_t first(); + + virtual void setLast(uint32_t last); + virtual uint32_t last(); + + virtual void setUids(Array * uids); + virtual Array * uids(); + + virtual void setNumbers(Array * numbers); + virtual Array * numbers(); + + virtual void setKind(IMAPMessagesRequestKind kind); + virtual IMAPMessagesRequestKind kind(); + + virtual Array * messages(); + + virtual void main(); + }; +} + +#endif /* defined(__mailcore2__IMAPFetchMessagesOperation__) */ diff --git a/src/async/imap/MCIMAPFetchNamespaceOperation.cc b/src/async/imap/MCIMAPFetchNamespaceOperation.cc new file mode 100644 index 00000000..5aea5237 --- /dev/null +++ b/src/async/imap/MCIMAPFetchNamespaceOperation.cc @@ -0,0 +1,33 @@ +// +// IMAPFetchNamespaceOperation.cc +// mailcore2 +// +// Created by DINH Viêt Hoà on 1/12/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#include "MCIMAPFetchNamespaceOperation.h" + +#include "MCIMAPSession.h" +#include "MCIMAPAsyncSession.h" + +using namespace mailcore; + +IMAPFetchNamespaceOperation::IMAPFetchNamespaceOperation() +{ + mNamespaces = NULL; +} + +IMAPFetchNamespaceOperation::~IMAPFetchNamespaceOperation() +{ + MC_SAFE_RELEASE(mNamespaces); +} + +void IMAPFetchNamespaceOperation::main() +{ + ErrorCode error; + mNamespaces = session()->session()->fetchNamespace(&error); + setError(error); + mNamespaces->retain(); +} + diff --git a/src/async/imap/MCIMAPFetchNamespaceOperation.h b/src/async/imap/MCIMAPFetchNamespaceOperation.h new file mode 100644 index 00000000..c80d0830 --- /dev/null +++ b/src/async/imap/MCIMAPFetchNamespaceOperation.h @@ -0,0 +1,28 @@ +// +// IMAPFetchNamespaceOperation.h +// mailcore2 +// +// Created by DINH Viêt Hoà on 1/12/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#ifndef __mailcore2__IMAPFetchNamespaceOperation__ +#define __mailcore2__IMAPFetchNamespaceOperation__ + +#include <mailcore/MCIMAPOperation.h> + +namespace mailcore { + + class IMAPFetchNamespaceOperation : public IMAPOperation { + HashMap * mNamespaces; + private: + + public: + IMAPFetchNamespaceOperation(); + virtual ~IMAPFetchNamespaceOperation(); + + virtual void main(); + }; +} + +#endif /* defined(__mailcore2__IMAPFetchNamespaceOperation__) */ diff --git a/src/async/imap/MCIMAPFolderInfoOperation.cc b/src/async/imap/MCIMAPFolderInfoOperation.cc new file mode 100644 index 00000000..3f2970e3 --- /dev/null +++ b/src/async/imap/MCIMAPFolderInfoOperation.cc @@ -0,0 +1,60 @@ +// +// MCIMAPFolderInfoOperation.cc +// mailcore2 +// +// Created by DINH Viêt Hoà on 1/13/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#include "MCIMAPFolderInfoOperation.h" + +#include "MCIMAPSession.h" +#include "MCIMAPAsyncSession.h" + +using namespace mailcore; + +IMAPFolderInfoOperation::IMAPFolderInfoOperation() +{ + mFolder = NULL; + mUidNext = 0; + mUidValidity = 0; + mMessageCount = 0; +} + +IMAPFolderInfoOperation::~IMAPFolderInfoOperation() +{ + MC_SAFE_RELEASE(mFolder); +} + +void IMAPFolderInfoOperation::setFolder(String * folder) +{ + MC_SAFE_REPLACE_COPY(String, mFolder, folder); +} + +String * IMAPFolderInfoOperation::folder() +{ + return mFolder; +} + +uint32_t IMAPFolderInfoOperation::uidNext() +{ + return mUidNext; +} + +uint32_t IMAPFolderInfoOperation::uidValidity() +{ + return mUidValidity; +} + +int IMAPFolderInfoOperation::messageCount() +{ + return mMessageCount; +} + +void IMAPFolderInfoOperation::main() +{ + ErrorCode error; + session()->session()->select(mFolder, &error); + setError(error); +} + diff --git a/src/async/imap/MCIMAPFolderInfoOperation.h b/src/async/imap/MCIMAPFolderInfoOperation.h new file mode 100644 index 00000000..0f6e1224 --- /dev/null +++ b/src/async/imap/MCIMAPFolderInfoOperation.h @@ -0,0 +1,39 @@ +// +// MCIMAPFolderInfoOperation.h +// mailcore2 +// +// Created by DINH Viêt Hoà on 1/13/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#ifndef __mailcore2__MCIMAPFolderInfoOperation__ +#define __mailcore2__MCIMAPFolderInfoOperation__ + +#include <mailcore/MCIMAPOperation.h> + +namespace mailcore { + + class IMAPFolderInfoOperation : public IMAPOperation { + private: + String * mFolder; + uint32_t mUidNext; + uint32_t mUidValidity; + int mMessageCount; + + public: + IMAPFolderInfoOperation(); + virtual ~IMAPFolderInfoOperation(); + + virtual void setFolder(String * folder); + virtual String * folder(); + + virtual uint32_t uidNext(); + virtual uint32_t uidValidity(); + virtual int messageCount(); + + virtual void main(); + }; + +} + +#endif /* defined(__mailcore2__MCIMAPFolderInfoOperation__) */ diff --git a/src/async/imap/MCIMAPIdentityOperation.cc b/src/async/imap/MCIMAPIdentityOperation.cc new file mode 100644 index 00000000..16ffd6a4 --- /dev/null +++ b/src/async/imap/MCIMAPIdentityOperation.cc @@ -0,0 +1,73 @@ +// +// IMAPIdentityOperation.cc +// mailcore2 +// +// Created by DINH Viêt Hoà on 1/12/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#include "MCIMAPIdentityOperation.h" + +#include "MCIMAPSession.h" +#include "MCIMAPAsyncSession.h" + +using namespace mailcore; + +IMAPIdentityOperation::IMAPIdentityOperation() +{ + mVendor = NULL; + mName = NULL; + mVersion = NULL; + mServerIdentity = NULL; +} + +IMAPIdentityOperation::~IMAPIdentityOperation() +{ + MC_SAFE_RELEASE(mVendor); + MC_SAFE_RELEASE(mName); + MC_SAFE_RELEASE(mVersion); + MC_SAFE_RELEASE(mServerIdentity); +} + +void IMAPIdentityOperation::setVendor(String * vendor) +{ + MC_SAFE_REPLACE_COPY(String, mVendor, vendor); +} + +String * IMAPIdentityOperation::vendor() +{ + return mVendor; +} + +void IMAPIdentityOperation::setName(String * name) +{ + MC_SAFE_REPLACE_COPY(String, mName, name); +} + +String * IMAPIdentityOperation::name() +{ + return mName; +} + +void IMAPIdentityOperation::setVersion(String * version) +{ + MC_SAFE_REPLACE_COPY(String, mVersion, version); +} + +String * IMAPIdentityOperation::version() +{ + return mVersion; +} + +HashMap * IMAPIdentityOperation::serverIdentity() +{ + return mServerIdentity; +} + +void IMAPIdentityOperation::main() +{ + ErrorCode error; + mServerIdentity = session()->session()->identity(mVendor, mName, mVersion, &error); + setError(error); +} + diff --git a/src/async/imap/MCIMAPIdentityOperation.h b/src/async/imap/MCIMAPIdentityOperation.h new file mode 100644 index 00000000..c0015472 --- /dev/null +++ b/src/async/imap/MCIMAPIdentityOperation.h @@ -0,0 +1,42 @@ +// +// IMAPIdentityOperation.h +// mailcore2 +// +// Created by DINH Viêt Hoà on 1/12/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#ifndef __mailcore2__IMAPIdentityOperation__ +#define __mailcore2__IMAPIdentityOperation__ + +#include <mailcore/MCIMAPOperation.h> + +namespace mailcore { + + class IMAPIdentityOperation : public IMAPOperation { + private: + String * mVendor; + String * mName; + String * mVersion; + HashMap * mServerIdentity; + + public: + IMAPIdentityOperation(); + virtual ~IMAPIdentityOperation(); + + virtual void setVendor(String * vendor); + virtual String * vendor(); + + virtual void setName(String * name); + virtual String * name(); + + virtual void setVersion(String * version); + virtual String * version(); + + virtual HashMap * serverIdentity(); + + virtual void main(); + }; +} + +#endif /* defined(__mailcore2__IMAPIdentityOperation__) */ diff --git a/src/async/imap/MCIMAPIdleOperation.cc b/src/async/imap/MCIMAPIdleOperation.cc new file mode 100644 index 00000000..16c9461a --- /dev/null +++ b/src/async/imap/MCIMAPIdleOperation.cc @@ -0,0 +1,72 @@ +// +// IMAPIdleOperation.cc +// mailcore2 +// +// Created by DINH Viêt Hoà on 1/12/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#include "MCIMAPIdleOperation.h" + +#include "MCIMAPSession.h" +#include "MCIMAPAsyncSession.h" + +using namespace mailcore; + +IMAPIdleOperation::IMAPIdleOperation() +{ + mFolder = NULL; + mLastKnownUid = 0; +} + +IMAPIdleOperation::~IMAPIdleOperation() +{ + MC_SAFE_RELEASE(mFolder); +} + +void IMAPIdleOperation::setFolder(String * folder) +{ + MC_SAFE_REPLACE_COPY(String, mFolder, folder); +} + +String * IMAPIdleOperation::folder() +{ + return mFolder; +} + +void IMAPIdleOperation::setLastKnownUID(uint32_t uid) +{ + mLastKnownUid = uid; +} + +uint32_t IMAPIdleOperation::lastKnownUID() +{ + return mLastKnownUid; +} + +void IMAPIdleOperation::prepare() +{ + session()->session()->setupIdle(); +} + +void IMAPIdleOperation::unprepare() +{ + session()->session()->unsetupIdle(); +} + +void IMAPIdleOperation::main() +{ + performMethodOnMainThread((Object::Method) &IMAPIdleOperation::prepare, NULL); + + ErrorCode error; + session()->session()->idle(mFolder, mLastKnownUid, &error); + setError(error); + + performMethodOnMainThread((Object::Method) &IMAPIdleOperation::unprepare, NULL); +} + +void IMAPIdleOperation::cancel() +{ + session()->session()->interruptIdle(); +} + diff --git a/src/async/imap/MCIMAPIdleOperation.h b/src/async/imap/MCIMAPIdleOperation.h new file mode 100644 index 00000000..b369cda2 --- /dev/null +++ b/src/async/imap/MCIMAPIdleOperation.h @@ -0,0 +1,39 @@ +// +// IMAPIdleOperation.h +// mailcore2 +// +// Created by DINH Viêt Hoà on 1/12/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#ifndef __mailcore2__IMAPIdleOperation__ +#define __mailcore2__IMAPIdleOperation__ + +#include <mailcore/MCIMAPOperation.h> + +namespace mailcore { + + class IMAPIdleOperation : public IMAPOperation { + private: + String * mFolder; + uint32_t mLastKnownUid; + void prepare(); + void unprepare(); + + public: + IMAPIdleOperation(); + virtual ~IMAPIdleOperation(); + + virtual void setFolder(String * folder); + virtual String * folder(); + + virtual void setLastKnownUID(uint32_t uid); + virtual uint32_t lastKnownUID(); + + virtual void cancel(); + + virtual void main(); + }; +} + +#endif /* defined(__mailcore2__IMAPIdleOperation__) */ diff --git a/src/async/imap/MCIMAPOperation.cc b/src/async/imap/MCIMAPOperation.cc new file mode 100644 index 00000000..8dfb7a1a --- /dev/null +++ b/src/async/imap/MCIMAPOperation.cc @@ -0,0 +1,103 @@ +// +// MCIMAPOperation.cc +// mailcore2 +// +// Created by DINH Viêt Hoà on 1/12/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#include "MCIMAPOperation.h" + +#include <stdlib.h> + +#include "MCIMAPSession.h" +#include "MCIMAPAsyncSession.h" +#include "MCIMAPOperationCallback.h" + +using namespace mailcore; + +IMAPOperation::IMAPOperation() +{ + mSession = NULL; + mImapCallback = NULL; + mError = ErrorNone; +} + +IMAPOperation::~IMAPOperation() +{ + MC_SAFE_RELEASE(mSession); +} + +void IMAPOperation::setSession(IMAPAsyncSession * session) +{ + MC_SAFE_REPLACE_RETAIN(IMAPAsyncSession, mSession, session); +} + +IMAPAsyncSession * IMAPOperation::session() +{ + return mSession; +} + +void IMAPOperation::setImapCallback(IMAPOperationCallback * callback) +{ + mImapCallback = callback; +} + +IMAPOperationCallback * IMAPOperation::imapCallback() +{ + return mImapCallback; +} + +void IMAPOperation::setError(ErrorCode error) +{ + mError = error; +} + +ErrorCode IMAPOperation::error() +{ + return mError; +} + +void IMAPOperation::start() +{ + mSession->runOperation(this); +} + +struct progressContext { + unsigned int current; + unsigned int maximum; +}; + +void IMAPOperation::bodyProgress(IMAPSession * session, unsigned int current, unsigned int maximum) +{ + struct progressContext * context = (struct progressContext *) calloc(sizeof(* context), 1); + context->current = current; + context->maximum = maximum; + performMethodOnMainThread((Object::Method) &IMAPOperation::bodyProgressOnMainThread, context); +} + +void IMAPOperation::bodyProgressOnMainThread(void * ctx) +{ + struct progressContext * context = (struct progressContext *) ctx; + if (mImapCallback != NULL) { + mImapCallback->bodyProgress(this, context->current, context->maximum); + } + free(context); +} + +void IMAPOperation::itemsProgress(IMAPSession * session, unsigned int current, unsigned int maximum) +{ + struct progressContext * context = (struct progressContext *) calloc(sizeof(* context), 1); + context->current = current; + context->maximum = maximum; + performMethodOnMainThread((Object::Method) &IMAPOperation::itemsProgressOnMainThread, context); +} + +void IMAPOperation::itemsProgressOnMainThread(void * ctx) +{ + struct progressContext * context = (struct progressContext *) ctx; + if (mImapCallback != NULL) { + mImapCallback->itemProgress(this, context->current, context->maximum); + } + free(context); +} diff --git a/src/async/imap/MCIMAPOperation.h b/src/async/imap/MCIMAPOperation.h new file mode 100644 index 00000000..3d9d06eb --- /dev/null +++ b/src/async/imap/MCIMAPOperation.h @@ -0,0 +1,48 @@ +// +// MCIMAPOperation.h +// mailcore2 +// +// Created by DINH Viêt Hoà on 1/12/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#ifndef __mailcore2__MCIMAPOperation__ +#define __mailcore2__MCIMAPOperation__ + +#include <mailcore/MCBaseTypes.h> +#include <mailcore/MCIMAPProgressCallback.h> + +namespace mailcore { + + class IMAPAsyncSession; + class IMAPOperationCallback; + + class IMAPOperation : public Operation, public IMAPProgressCallback { + IMAPAsyncSession * mSession; + IMAPOperationCallback * mImapCallback; + ErrorCode mError; + private: + virtual void bodyProgress(IMAPSession * session, unsigned int current, unsigned int maximum); + virtual void bodyProgressOnMainThread(void * context); + virtual void itemsProgress(IMAPSession * session, unsigned int current, unsigned int maximum); + virtual void itemsProgressOnMainThread(void * context); + + public: + IMAPOperation(); + virtual ~IMAPOperation(); + + virtual void setSession(IMAPAsyncSession * session); + virtual IMAPAsyncSession * session(); + + virtual void setImapCallback(IMAPOperationCallback * callback); + virtual IMAPOperationCallback * imapCallback(); + + virtual void setError(ErrorCode error); + virtual ErrorCode error(); + + virtual void start(); + }; + +} + +#endif /* defined(__mailcore2__MCIMAPOperation__) */ diff --git a/src/async/imap/MCIMAPOperationCallback.h b/src/async/imap/MCIMAPOperationCallback.h new file mode 100644 index 00000000..6274297a --- /dev/null +++ b/src/async/imap/MCIMAPOperationCallback.h @@ -0,0 +1,24 @@ +// +// MCIMAPOperationCallback.h +// mailcore2 +// +// Created by DINH Viêt Hoà on 1/12/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#ifndef __mailcore2__MCIMAPOperationCallback__ +#define __mailcore2__MCIMAPOperationCallback__ + +namespace mailcore { + + class IMAPOperation; + + class IMAPOperationCallback { + public: + virtual void bodyProgress(IMAPOperation * session, unsigned int current, unsigned int maximum) {}; + virtual void itemProgress(IMAPOperation * session, unsigned int current, unsigned int maximum) {}; + }; + +} + +#endif /* defined(__mailcore2__MCIMAPOperationCallback__) */ diff --git a/src/async/imap/MCIMAPRenameFolderOperation.cc b/src/async/imap/MCIMAPRenameFolderOperation.cc new file mode 100644 index 00000000..891cd571 --- /dev/null +++ b/src/async/imap/MCIMAPRenameFolderOperation.cc @@ -0,0 +1,54 @@ +// +// MCIMAPRenameFolderOperation.cpp +// mailcore2 +// +// Created by DINH Viêt Hoà on 1/12/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#include "MCIMAPRenameFolderOperation.h" + +#include "MCIMAPSession.h" +#include "MCIMAPAsyncSession.h" + +using namespace mailcore; + +IMAPRenameFolderOperation::IMAPRenameFolderOperation() +{ + mFolder = NULL; + mOtherName = NULL; +} + +IMAPRenameFolderOperation::~IMAPRenameFolderOperation() +{ + MC_SAFE_RELEASE(mFolder); + MC_SAFE_RELEASE(mOtherName); +} + +void IMAPRenameFolderOperation::setFolder(String * folder) +{ + MC_SAFE_REPLACE_COPY(String, mFolder, folder); +} + +String * IMAPRenameFolderOperation::folder() +{ + return mFolder; +} + +void IMAPRenameFolderOperation::setOtherName(String * otherName) +{ + MC_SAFE_REPLACE_COPY(String, mOtherName, otherName); +} + +String * IMAPRenameFolderOperation::otherName() +{ + return mOtherName; +} + +void IMAPRenameFolderOperation::main() +{ + ErrorCode error; + session()->session()->renameFolder(mFolder, mOtherName, &error); + setError(error); +} + diff --git a/src/async/imap/MCIMAPRenameFolderOperation.h b/src/async/imap/MCIMAPRenameFolderOperation.h new file mode 100644 index 00000000..ddd07432 --- /dev/null +++ b/src/async/imap/MCIMAPRenameFolderOperation.h @@ -0,0 +1,35 @@ +// +// MCIMAPRenameFolderOperation.h +// mailcore2 +// +// Created by DINH Viêt Hoà on 1/12/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#ifndef __mailcore2__MCIMAPRenameFolderOperation__ +#define __mailcore2__MCIMAPRenameFolderOperation__ + +#include <mailcore/MCIMAPOperation.h> + +namespace mailcore { + + class IMAPRenameFolderOperation : public IMAPOperation { + private: + String * mFolder; + String * mOtherName; + + public: + IMAPRenameFolderOperation(); + ~IMAPRenameFolderOperation(); + + virtual void setFolder(String * folder); + virtual String * folder(); + + virtual void setOtherName(String * otherName); + virtual String * otherName(); + + virtual void main(); + }; +} + +#endif /* defined(__mailcore2__MCIMAPRenameFolderOperation__) */ diff --git a/src/async/imap/MCIMAPSearchOperation.cc b/src/async/imap/MCIMAPSearchOperation.cc new file mode 100644 index 00000000..395d3924 --- /dev/null +++ b/src/async/imap/MCIMAPSearchOperation.cc @@ -0,0 +1,83 @@ +// +// IMAPSearchOperation.cc +// mailcore2 +// +// Created by DINH Viêt Hoà on 1/12/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#include "MCIMAPSearchOperation.h" + +#include "MCIMAPSession.h" +#include "MCIMAPAsyncSession.h" +#include "MCIMAPSearchExpression.h" + +using namespace mailcore; + +IMAPSearchOperation::IMAPSearchOperation() +{ + mFolder = NULL; + mKind = IMAPSearchKindNone; + mSearchString = NULL; + mExpression = NULL; +} + +IMAPSearchOperation::~IMAPSearchOperation() +{ + MC_SAFE_RELEASE(mFolder); + MC_SAFE_RELEASE(mSearchString); + MC_SAFE_RELEASE(mExpression); +} + +void IMAPSearchOperation::setFolder(String * folder) +{ + MC_SAFE_REPLACE_COPY(String, mFolder, folder); +} + +String * IMAPSearchOperation::folder() +{ + return mFolder; +} + +void IMAPSearchOperation::setSearchKind(IMAPSearchKind kind) +{ + mKind = kind; +} + +IMAPSearchKind IMAPSearchOperation::searchKind() +{ + return mKind; +} + +void IMAPSearchOperation::setSearchString(String * searchString) +{ + MC_SAFE_REPLACE_COPY(String, mSearchString, searchString); +} + +String * IMAPSearchOperation::searchString() +{ + return mSearchString; +} + +void IMAPSearchOperation::setSearchExpression(IMAPSearchExpression * expression) +{ + MC_SAFE_REPLACE_RETAIN(IMAPSearchExpression, mExpression, expression); +} + +IMAPSearchExpression * IMAPSearchOperation::searchExpression() +{ + return mExpression; +} + +void IMAPSearchOperation::main() +{ + ErrorCode error; + if (mExpression != NULL) { + session()->session()->search(mFolder, mExpression, &error); + } + else { + session()->session()->search(mFolder, mKind, mSearchString, &error); + } + setError(error); +} + diff --git a/src/async/imap/MCIMAPSearchOperation.h b/src/async/imap/MCIMAPSearchOperation.h new file mode 100644 index 00000000..cf93d1a9 --- /dev/null +++ b/src/async/imap/MCIMAPSearchOperation.h @@ -0,0 +1,46 @@ +// +// IMAPSearchOperation.h +// mailcore2 +// +// Created by DINH Viêt Hoà on 1/12/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#ifndef __mailcore2__IMAPSearchOperation__ +#define __mailcore2__IMAPSearchOperation__ + +#include <mailcore/MCIMAPOperation.h> +#include <mailcore/MCMessageConstants.h> + +namespace mailcore { + + class IMAPSearchExpression; + + class IMAPSearchOperation : public IMAPOperation { + private: + String * mFolder; + IMAPSearchKind mKind; + String * mSearchString; + IMAPSearchExpression * mExpression; + + public: + IMAPSearchOperation(); + virtual ~IMAPSearchOperation(); + + virtual void setFolder(String * folder); + virtual String * folder(); + + virtual void setSearchKind(IMAPSearchKind kind); + virtual IMAPSearchKind searchKind(); + + virtual void setSearchString(String * searchString); + virtual String * searchString(); + + virtual void setSearchExpression(IMAPSearchExpression * expression); + virtual IMAPSearchExpression * searchExpression(); + + virtual void main(); + }; +} + +#endif /* defined(__mailcore2__IMAPSearchOperation__) */ diff --git a/src/async/imap/MCIMAPStoreFlagsOperation.cc b/src/async/imap/MCIMAPStoreFlagsOperation.cc new file mode 100644 index 00000000..82123631 --- /dev/null +++ b/src/async/imap/MCIMAPStoreFlagsOperation.cc @@ -0,0 +1,75 @@ +// +// MCIMAPStoreFlagsOperation.cc +// mailcore2 +// +// Created by DINH Viêt Hoà on 1/12/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#include "MCIMAPStoreFlagsOperation.h" + +#include "MCIMAPSession.h" +#include "MCIMAPAsyncSession.h" + +using namespace mailcore; + +IMAPStoreFlagsOperation::IMAPStoreFlagsOperation() +{ + mFolder = NULL; + mUids = NULL; + mKind = IMAPStoreFlagsRequestKindAdd; + mFlags = MessageFlagNone; +} + +IMAPStoreFlagsOperation::~IMAPStoreFlagsOperation() +{ + MC_SAFE_RELEASE(mFolder); + MC_SAFE_RELEASE(mUids); +} + +void IMAPStoreFlagsOperation::setFolder(String * folder) +{ + MC_SAFE_REPLACE_COPY(String, mFolder, folder); +} + +String * IMAPStoreFlagsOperation::folder() +{ + return mFolder; +} + +void IMAPStoreFlagsOperation::setUids(Array * uids) +{ + MC_SAFE_REPLACE_RETAIN(Array, mUids, uids); +} + +Array * IMAPStoreFlagsOperation::uids() +{ + return mUids; +} + +void IMAPStoreFlagsOperation::setKind(IMAPStoreFlagsRequestKind kind) +{ + mKind = kind; +} + +IMAPStoreFlagsRequestKind IMAPStoreFlagsOperation::kind() +{ + return mKind; +} + +void IMAPStoreFlagsOperation::setFlags(MessageFlag flags) +{ + mFlags = flags; +} + +MessageFlag IMAPStoreFlagsOperation::flags() +{ + return mFlags; +} + +void IMAPStoreFlagsOperation::main() +{ + ErrorCode error; + session()->session()->storeFlags(mFolder, mUids, mKind, mFlags, &error); + setError(error); +} diff --git a/src/async/imap/MCIMAPStoreFlagsOperation.h b/src/async/imap/MCIMAPStoreFlagsOperation.h new file mode 100644 index 00000000..b087db9e --- /dev/null +++ b/src/async/imap/MCIMAPStoreFlagsOperation.h @@ -0,0 +1,43 @@ +// +// MCIMAPStoreFlagsOperation.h +// mailcore2 +// +// Created by DINH Viêt Hoà on 1/12/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#ifndef __mailcore2__MCIMAPStoreFlagsOperation__ +#define __mailcore2__MCIMAPStoreFlagsOperation__ + +#include <mailcore/MCIMAPOperation.h> + +namespace mailcore { + + class IMAPStoreFlagsOperation : public IMAPOperation { + private: + String * mFolder; + Array * mUids; + IMAPStoreFlagsRequestKind mKind; + MessageFlag mFlags; + + public: + IMAPStoreFlagsOperation(); + virtual ~IMAPStoreFlagsOperation(); + + virtual void setFolder(String * folder); + virtual String * folder(); + + virtual void setUids(Array * uids); + virtual Array * uids(); + + virtual void setKind(IMAPStoreFlagsRequestKind kind); + virtual IMAPStoreFlagsRequestKind kind(); + + virtual void setFlags(MessageFlag flags); + virtual MessageFlag flags(); + + virtual void main(); + }; +} + +#endif /* defined(__mailcore2__MCIMAPStoreFlagsOperation__) */ diff --git a/src/async/imap/MCIMAPStoreLabelsOperation.cc b/src/async/imap/MCIMAPStoreLabelsOperation.cc new file mode 100644 index 00000000..dcafc175 --- /dev/null +++ b/src/async/imap/MCIMAPStoreLabelsOperation.cc @@ -0,0 +1,77 @@ +// +// MCIMAPStoreLabelsOperation.cc +// mailcore2 +// +// Created by DINH Viêt Hoà on 1/12/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#include "MCIMAPStoreLabelsOperation.h" + +#include "MCIMAPSession.h" +#include "MCIMAPAsyncSession.h" + +using namespace mailcore; + +IMAPStoreLabelsOperation::IMAPStoreLabelsOperation() +{ + mFolder = NULL; + mUids = NULL; + mKind = IMAPStoreFlagsRequestKindAdd; + mLabels = NULL; +} + +IMAPStoreLabelsOperation::~IMAPStoreLabelsOperation() +{ + MC_SAFE_RELEASE(mFolder); + MC_SAFE_RELEASE(mUids); + MC_SAFE_RELEASE(mLabels); +} + +void IMAPStoreLabelsOperation::setFolder(String * folder) +{ + MC_SAFE_REPLACE_COPY(String, mFolder, folder); +} + +String * IMAPStoreLabelsOperation::folder() +{ + return mFolder; +} + +void IMAPStoreLabelsOperation::setUids(Array * uids) +{ + MC_SAFE_REPLACE_RETAIN(Array, mUids, uids); +} + +Array * IMAPStoreLabelsOperation::uids() +{ + return mUids; +} + +void IMAPStoreLabelsOperation::setKind(IMAPStoreFlagsRequestKind kind) +{ + mKind = kind; +} + +IMAPStoreFlagsRequestKind IMAPStoreLabelsOperation::kind() +{ + return mKind; +} + +void IMAPStoreLabelsOperation::setLabels(Array * labels) +{ + MC_SAFE_REPLACE_RETAIN(Array, mLabels, labels); +} + +Array * IMAPStoreLabelsOperation::labels() +{ + return mLabels; +} + +void IMAPStoreLabelsOperation::main() +{ + ErrorCode error; + session()->session()->storeLabels(mFolder, mUids, mKind, mLabels, &error); + setError(error); +} + diff --git a/src/async/imap/MCIMAPStoreLabelsOperation.h b/src/async/imap/MCIMAPStoreLabelsOperation.h new file mode 100644 index 00000000..fcfc7f95 --- /dev/null +++ b/src/async/imap/MCIMAPStoreLabelsOperation.h @@ -0,0 +1,43 @@ +// +// MCIMAPStoreLabelsOperation.h +// mailcore2 +// +// Created by DINH Viêt Hoà on 1/12/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#ifndef __mailcore2__MCIMAPStoreLabelsOperation__ +#define __mailcore2__MCIMAPStoreLabelsOperation__ + +#include <mailcore/MCIMAPOperation.h> + +namespace mailcore { + + class IMAPStoreLabelsOperation : public IMAPOperation { + private: + String * mFolder; + Array * mUids; + IMAPStoreFlagsRequestKind mKind; + Array * mLabels; + + public: + IMAPStoreLabelsOperation(); + virtual ~IMAPStoreLabelsOperation(); + + virtual void setFolder(String * folder); + virtual String * folder(); + + virtual void setUids(Array * uids); + virtual Array * uids(); + + virtual void setKind(IMAPStoreFlagsRequestKind kind); + virtual IMAPStoreFlagsRequestKind kind(); + + virtual void setLabels(Array * labels); + virtual Array * labels(); + + virtual void main(); + }; +} + +#endif /* defined(__mailcore2__MCIMAPStoreLabelsOperation__) */ diff --git a/src/async/imap/MCIMAPSubscribeFolderOperation.cc b/src/async/imap/MCIMAPSubscribeFolderOperation.cc new file mode 100644 index 00000000..d7449fba --- /dev/null +++ b/src/async/imap/MCIMAPSubscribeFolderOperation.cc @@ -0,0 +1,57 @@ +// +// MCIMAPSubscribeFolderOperation.cpp +// mailcore2 +// +// Created by DINH Viêt Hoà on 1/12/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#include "MCIMAPSubscribeFolderOperation.h" + +#include "MCIMAPSession.h" +#include "MCIMAPAsyncSession.h" + +using namespace mailcore; + +IMAPSubscribeFolderOperation::IMAPSubscribeFolderOperation() +{ + mFolder = NULL; + mUnsubscribeEnabled = false; +} + +IMAPSubscribeFolderOperation::~IMAPSubscribeFolderOperation() +{ + MC_SAFE_RELEASE(mFolder); +} + +void IMAPSubscribeFolderOperation::setFolder(String * folder) +{ + MC_SAFE_REPLACE_COPY(String, mFolder, folder); +} + +String * IMAPSubscribeFolderOperation::folder() +{ + return mFolder; +} + +void IMAPSubscribeFolderOperation::setUnsubscribeEnabled(bool enabled) +{ + mUnsubscribeEnabled = enabled; +} + +bool IMAPSubscribeFolderOperation::isUnsubscribeEnabled() +{ + return mUnsubscribeEnabled; +} + +void IMAPSubscribeFolderOperation::main() +{ + ErrorCode error; + if (mUnsubscribeEnabled) { + session()->session()->unsubscribeFolder(mFolder, &error); + } + else { + session()->session()->subscribeFolder(mFolder, &error); + } + setError(error); +} diff --git a/src/async/imap/MCIMAPSubscribeFolderOperation.h b/src/async/imap/MCIMAPSubscribeFolderOperation.h new file mode 100644 index 00000000..92b97d15 --- /dev/null +++ b/src/async/imap/MCIMAPSubscribeFolderOperation.h @@ -0,0 +1,35 @@ +// +// MCIMAPSubscribeFolderOperation.h +// mailcore2 +// +// Created by DINH Viêt Hoà on 1/12/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#ifndef __mailcore2__MCIMAPSubscribeFolderOperation__ +#define __mailcore2__MCIMAPSubscribeFolderOperation__ + +#include <mailcore/MCIMAPOperation.h> + +namespace mailcore { + + class IMAPSubscribeFolderOperation : public IMAPOperation { + private: + String * mFolder; + bool mUnsubscribeEnabled; + + public: + IMAPSubscribeFolderOperation(); + virtual ~IMAPSubscribeFolderOperation(); + + virtual void setFolder(String * folder); + virtual String * folder(); + + virtual void setUnsubscribeEnabled(bool enabled); + virtual bool isUnsubscribeEnabled(); + + virtual void main(); + }; +} + +#endif /* defined(__mailcore2__MCIMAPSubscribeFolderOperation__) */ diff --git a/src/async/smtp/MCSMTPAsyncSession.cc b/src/async/smtp/MCSMTPAsyncSession.cc index e996e0e7..95aa0907 100644 --- a/src/async/smtp/MCSMTPAsyncSession.cc +++ b/src/async/smtp/MCSMTPAsyncSession.cc @@ -1,9 +1,9 @@ #include "MCSMTPAsyncSession.h" #include "MCSMTPSession.h" -#include "MCSMTPSendWithRecipientOperation.h" +//#include "MCSMTPSendWithRecipientOperation.h" #include "MCSMTPSendWithDataOperation.h" -#include "MCSMTPSendWithBuilderOperation.h" +//#include "MCSMTPSendWithBuilderOperation.h" #include "MCSMTPCheckAccountOperation.h" #include "MCSMTPOperation.h" @@ -17,10 +17,6 @@ SMTPAsyncSession::SMTPAsyncSession() SMTPAsyncSession::~SMTPAsyncSession() { - MC_SAFE_RELEASE(mHostname); - MC_SAFE_RELEASE(mUsername); - MC_SAFE_RELEASE(mPassword); - MC_SAFE_RELEASE(mQueue); MC_SAFE_RELEASE(mSession); } @@ -121,11 +117,12 @@ void SMTPAsyncSession::runOperation(SMTPOperation * operation) mQueue->addOperation(operation); } -SMTPSession * SMTPAsyncSession::SMTPAsyncSession::session() +SMTPSession * SMTPAsyncSession::session() { return mSession; } +#if 0 SMTPOperation * SMTPAsyncSession::sendMessageOperationWithFromAndRecipient(Address * from, Array * recipients, Data * messageData) { SMTPSendWithRecipientOperation * op = new SMTPSendWithRecipientOperation(); @@ -135,6 +132,7 @@ SMTPOperation * SMTPAsyncSession::sendMessageOperationWithFromAndRecipient(Addre op->setMessageData(messageData); return (SMTPOperation *) op->autorelease(); } +#endif SMTPOperation * SMTPAsyncSession::sendMessageOperation(Data * messageData) { @@ -144,6 +142,7 @@ SMTPOperation * SMTPAsyncSession::sendMessageOperation(Data * messageData) return (SMTPOperation *) op->autorelease(); } +#if 0 SMTPOperation * SMTPAsyncSession::sendMessageOperation(MessageBuilder * msg) { SMTPSendWithBuilderOperation * op = new SMTPSendWithBuilderOperation(); @@ -151,6 +150,7 @@ SMTPOperation * SMTPAsyncSession::sendMessageOperation(MessageBuilder * msg) op->setBuilder(msg); return (SMTPOperation *) op->autorelease(); } +#endif SMTPOperation * SMTPAsyncSession::checkAccountOperation(Address * from) { diff --git a/src/async/smtp/MCSMTPAsyncSession.h b/src/async/smtp/MCSMTPAsyncSession.h index 0b9e1edd..40b1cfbb 100644 --- a/src/async/smtp/MCSMTPAsyncSession.h +++ b/src/async/smtp/MCSMTPAsyncSession.h @@ -15,16 +15,6 @@ namespace mailcore { class SMTPAsyncSession : public Object { private: - String * mHostname; - unsigned int mPort; - String * mUsername; - String * mPassword; - AuthType mAuthType; - ConnectionType mConnectionType; - time_t mTimeout; - bool mCheckCertificateEnabled; - bool mUseHeloIPEnabled; - SMTPSession * mSession; OperationQueue * mQueue; @@ -61,9 +51,7 @@ namespace mailcore { virtual void setUseHeloIPEnabled(bool enabled); virtual bool useHeloIPEnabled(); - virtual SMTPOperation * sendMessageOperationWithFromAndRecipient(Address * from, Array * recipients, Data * messageData); virtual SMTPOperation * sendMessageOperation(Data * messageData); - virtual SMTPOperation * sendMessageOperation(MessageBuilder * msg); virtual SMTPOperation * checkAccountOperation(Address * from); // private diff --git a/src/async/smtp/MCSMTPSendWithDataOperation.cc b/src/async/smtp/MCSMTPSendWithDataOperation.cc index 5c43828a..bb2c5ea9 100644 --- a/src/async/smtp/MCSMTPSendWithDataOperation.cc +++ b/src/async/smtp/MCSMTPSendWithDataOperation.cc @@ -36,7 +36,6 @@ Data * SMTPSendWithDataOperation::messageData() void SMTPSendWithDataOperation::main() { ErrorCode error; - session()->session()->sendMessage(mMessageData, this, &error); setError(error); } diff --git a/src/async/smtp/MCSMTPSendWithDataOperation.h b/src/async/smtp/MCSMTPSendWithDataOperation.h index 4f71e233..0afd381b 100644 --- a/src/async/smtp/MCSMTPSendWithDataOperation.h +++ b/src/async/smtp/MCSMTPSendWithDataOperation.h @@ -16,8 +16,8 @@ namespace mailcore { class SMTPSendWithDataOperation : public SMTPOperation { - Data * mMessageData; private: + Data * mMessageData; public: SMTPSendWithDataOperation(); diff --git a/src/core/MCCore.h b/src/core/MCCore.h index 9c1e0d42..d5d6f79d 100644 --- a/src/core/MCCore.h +++ b/src/core/MCCore.h @@ -15,5 +15,6 @@ #include <mailcore/MCPOP.h> #include <mailcore/MCRFC822.h> #include <mailcore/MCSMTP.h> +#include <mailcore/MCAsyncIMAP.h> #endif diff --git a/src/core/abstract/MCAbstractMessage.h b/src/core/abstract/MCAbstractMessage.h index e5b62c8a..59d0d75a 100644 --- a/src/core/abstract/MCAbstractMessage.h +++ b/src/core/abstract/MCAbstractMessage.h @@ -18,7 +18,6 @@ namespace mailcore { virtual ~AbstractMessage(); virtual String * description(); - //virtual String * className(); virtual Object * copy(); virtual MessageHeader * header(); diff --git a/src/core/abstract/MCAbstractMessagePart.h b/src/core/abstract/MCAbstractMessagePart.h index a855202c..4c61c326 100644 --- a/src/core/abstract/MCAbstractMessagePart.h +++ b/src/core/abstract/MCAbstractMessagePart.h @@ -22,7 +22,6 @@ namespace mailcore { virtual ~AbstractMessagePart(); virtual String * description(); - //virtual String * className(); virtual Object * copy(); virtual MessageHeader * header(); diff --git a/src/core/abstract/MCAbstractMultipart.h b/src/core/abstract/MCAbstractMultipart.h index c731ed7b..c2e827df 100644 --- a/src/core/abstract/MCAbstractMultipart.h +++ b/src/core/abstract/MCAbstractMultipart.h @@ -19,7 +19,6 @@ namespace mailcore { virtual ~AbstractMultipart(); virtual String * description(); - //virtual String * className(); virtual Object * copy(); virtual Array * parts(); diff --git a/src/core/abstract/MCAbstractPart.h b/src/core/abstract/MCAbstractPart.h index 356ed256..97d789fb 100644 --- a/src/core/abstract/MCAbstractPart.h +++ b/src/core/abstract/MCAbstractPart.h @@ -27,7 +27,6 @@ namespace mailcore { virtual ~AbstractPart(); virtual String * description(); - //virtual String * className(); virtual Object * copy(); virtual PartType partType(); diff --git a/src/core/abstract/MCAddress.h b/src/core/abstract/MCAddress.h index 227c1136..58b2767c 100644 --- a/src/core/abstract/MCAddress.h +++ b/src/core/abstract/MCAddress.h @@ -24,7 +24,6 @@ namespace mailcore { static Address * addressWithNonEncodedRFC822String(String * nonEncodedRFC822String); virtual String * description(); - //virtual String * className(); virtual bool isEqual(Object * otherObject); virtual unsigned int hash(); diff --git a/src/core/abstract/MCMessageHeader.h b/src/core/abstract/MCMessageHeader.h index 5a7483e2..54f906f4 100644 --- a/src/core/abstract/MCMessageHeader.h +++ b/src/core/abstract/MCMessageHeader.h @@ -32,7 +32,6 @@ namespace mailcore { virtual ~MessageHeader(); virtual String * description(); - //virtual String * className(); virtual Object * copy(); virtual void setMessageID(String * messageID); diff --git a/src/core/basetypes/MCArray.h b/src/core/basetypes/MCArray.h index a0abc243..9e234b97 100644 --- a/src/core/basetypes/MCArray.h +++ b/src/core/basetypes/MCArray.h @@ -22,7 +22,6 @@ namespace mailcore { static Array * array(); static Array * arrayWithObject(Object * obj); - //virtual String * className(); virtual String * description(); virtual Object * copy(); diff --git a/src/core/basetypes/MCData.h b/src/core/basetypes/MCData.h index 52232383..d92fa8a6 100644 --- a/src/core/basetypes/MCData.h +++ b/src/core/basetypes/MCData.h @@ -26,7 +26,6 @@ namespace mailcore { Data(const char * bytes, unsigned int length); virtual ~Data(); - //virtual String * className(); virtual String * description(); virtual Object * copy(); virtual bool isEqual(Object * otherObject); diff --git a/src/core/basetypes/MCHashMap.h b/src/core/basetypes/MCHashMap.h index 99e8db52..ec7955fc 100644 --- a/src/core/basetypes/MCHashMap.h +++ b/src/core/basetypes/MCHashMap.h @@ -27,7 +27,6 @@ namespace mailcore { static HashMap * hashMap(); - //virtual String * className(); virtual String * description(); virtual Object * copy(); diff --git a/src/core/basetypes/MCOperationQueue.cc b/src/core/basetypes/MCOperationQueue.cc index 3c22b89c..aa2e0193 100644 --- a/src/core/basetypes/MCOperationQueue.cc +++ b/src/core/basetypes/MCOperationQueue.cc @@ -6,6 +6,7 @@ #include "MCUtils.h" #include "MCArray.h" #include "MCLog.h" +#include "MCAutoreleasePool.h" #include <libetpan/libetpan.h> using namespace mailcore; @@ -65,6 +66,8 @@ void OperationQueue::runOperations() Operation * op = NULL; bool needsCheckRunning = false; + AutoreleasePool * pool = new AutoreleasePool(); + //int value = 0; //int r; @@ -84,6 +87,7 @@ void OperationQueue::runOperations() if (op == NULL) { //sem_post(&mStopSem); mailsem_up(mStopSem); + pool->release(); break; } @@ -108,6 +112,8 @@ void OperationQueue::runOperations() retain(); // (1) performMethodOnMainThread((Object::Method) &OperationQueue::checkRunningOnMainThread, this); } + + pool->release(); } MCLog("cleanup thread"); } diff --git a/src/core/basetypes/MCSet.h b/src/core/basetypes/MCSet.h index 0f1ab360..b4a339d4 100644 --- a/src/core/basetypes/MCSet.h +++ b/src/core/basetypes/MCSet.h @@ -22,7 +22,6 @@ namespace mailcore { static Set * set(); static Set * setWithArray(Array * objects); - //virtual String * className(); virtual String * description(); virtual Object * copy(); diff --git a/src/core/basetypes/MCString.h b/src/core/basetypes/MCString.h index 9ff04390..7a71b0f8 100644 --- a/src/core/basetypes/MCString.h +++ b/src/core/basetypes/MCString.h @@ -34,7 +34,6 @@ namespace mailcore { String(const char * bytes, unsigned int length, const char * charset = NULL); virtual ~String(); - //virtual String * className(); virtual String * description(); virtual Object * copy(); virtual bool isEqual(Object * otherObject); diff --git a/src/core/basetypes/MCValue.h b/src/core/basetypes/MCValue.h index cc776b24..05f499b6 100644 --- a/src/core/basetypes/MCValue.h +++ b/src/core/basetypes/MCValue.h @@ -38,7 +38,6 @@ namespace mailcore { virtual ~Value(); virtual String * description(); - //virtual String * className(); virtual bool isEqual(Object * otherObject); virtual unsigned int hash(); diff --git a/src/core/imap/MCIMAPFolder.h b/src/core/imap/MCIMAPFolder.h index f68498c2..cacd21bd 100644 --- a/src/core/imap/MCIMAPFolder.h +++ b/src/core/imap/MCIMAPFolder.h @@ -18,7 +18,6 @@ namespace mailcore { IMAPFolder(IMAPFolder * other); virtual ~IMAPFolder(); - //virtual String * className(); virtual Object * copy(); virtual void setPath(String * path); diff --git a/src/core/imap/MCIMAPMessage.h b/src/core/imap/MCIMAPMessage.h index afaa07c8..9aee0cdc 100644 --- a/src/core/imap/MCIMAPMessage.h +++ b/src/core/imap/MCIMAPMessage.h @@ -22,7 +22,6 @@ namespace mailcore { IMAPMessage(IMAPMessage * other); ~IMAPMessage(); - //virtual String * className(); virtual Object * copy(); virtual String * description(); diff --git a/src/core/imap/MCIMAPMessagePart.h b/src/core/imap/MCIMAPMessagePart.h index 37e12fea..99991390 100644 --- a/src/core/imap/MCIMAPMessagePart.h +++ b/src/core/imap/MCIMAPMessagePart.h @@ -14,7 +14,6 @@ namespace mailcore { IMAPMessagePart(IMAPMessagePart * other); virtual ~IMAPMessagePart(); - //virtual String * className(); virtual Object * copy(); }; } diff --git a/src/core/imap/MCIMAPMultipart.h b/src/core/imap/MCIMAPMultipart.h index bdb33470..db46b583 100644 --- a/src/core/imap/MCIMAPMultipart.h +++ b/src/core/imap/MCIMAPMultipart.h @@ -14,7 +14,6 @@ namespace mailcore { IMAPMultipart(IMAPMultipart * other); virtual ~IMAPMultipart(); - //virtual String * className(); virtual Object * copy(); }; } diff --git a/src/core/imap/MCIMAPNamespace.h b/src/core/imap/MCIMAPNamespace.h index b9cbf92a..4909421c 100644 --- a/src/core/imap/MCIMAPNamespace.h +++ b/src/core/imap/MCIMAPNamespace.h @@ -19,7 +19,6 @@ namespace mailcore { IMAPNamespace(IMAPNamespace * other); virtual ~IMAPNamespace(); - //virtual String * className(); virtual String * description(); virtual Object * copy(); diff --git a/src/core/imap/MCIMAPNamespaceItem.h b/src/core/imap/MCIMAPNamespaceItem.h index 3b40ae7c..f2831895 100644 --- a/src/core/imap/MCIMAPNamespaceItem.h +++ b/src/core/imap/MCIMAPNamespaceItem.h @@ -16,7 +16,6 @@ namespace mailcore { IMAPNamespaceItem(IMAPNamespaceItem * other); virtual ~IMAPNamespaceItem(); - //virtual String * className(); virtual String * description(); virtual Object * copy(); diff --git a/src/core/imap/MCIMAPPart.h b/src/core/imap/MCIMAPPart.h index b8b3625d..79c261fb 100644 --- a/src/core/imap/MCIMAPPart.h +++ b/src/core/imap/MCIMAPPart.h @@ -34,7 +34,6 @@ namespace mailcore { IMAPPart(IMAPPart * other); virtual ~IMAPPart(); - //virtual String * className(); virtual Object * copy(); virtual void setPartID(String * partID); diff --git a/src/core/imap/MCIMAPSearchExpression.h b/src/core/imap/MCIMAPSearchExpression.h index 53a373cd..184bff33 100644 --- a/src/core/imap/MCIMAPSearchExpression.h +++ b/src/core/imap/MCIMAPSearchExpression.h @@ -7,7 +7,7 @@ namespace mailcore { - class IMAPSearchExpression : Object { + class IMAPSearchExpression : public Object { private: IMAPSearchKind mKind; String * mHeader; @@ -22,7 +22,6 @@ namespace mailcore { virtual ~IMAPSearchExpression(); virtual String * description(); - //virtual String * className(); virtual Object * copy(); virtual IMAPSearchKind kind(); diff --git a/src/core/imap/MCIMAPSession.cc b/src/core/imap/MCIMAPSession.cc index 317af507..c22f082b 100644 --- a/src/core/imap/MCIMAPSession.cc +++ b/src/core/imap/MCIMAPSession.cc @@ -1197,7 +1197,7 @@ void IMAPSession::copyMessages(String * folder, Array * uidSet, String * destFol mailimap_set_free(dest_uid); } } - * pDestUIDs = (Array *) uidSetResult->retain()->autorelease(); + * pDestUIDs = (Array *) uidSetResult->autorelease(); * pError = ErrorNone; release: @@ -1929,8 +1929,7 @@ Data * IMAPSession::fetchMessageByUID(String * folder, uint32_t uid, } Data * IMAPSession::fetchMessageAttachmentByUID(String * folder, uint32_t uid, String * partID, - Encoding encoding, unsigned int expectedSize, - IMAPProgressCallback * progressCallback, ErrorCode * pError) + Encoding encoding, IMAPProgressCallback * progressCallback, ErrorCode * pError) { struct mailimap_fetch_type * fetch_type; struct mailimap_fetch_att * fetch_att; @@ -1949,7 +1948,7 @@ Data * IMAPSession::fetchMessageAttachmentByUID(String * folder, uint32_t uid, S mProgressItemsCount = 0; mProgressCallback = progressCallback; - bodyProgress(0, expectedSize); + bodyProgress(0, 0); partIDArray = partID->componentsSeparatedByString(MCSTR(".")); sec_list = clist_new(); @@ -1970,7 +1969,6 @@ Data * IMAPSession::fetchMessageAttachmentByUID(String * folder, uint32_t uid, S r = fetch_imap(mImap, uid, fetch_type, &text, &text_length); mailimap_fetch_type_free(fetch_type); - bodyProgress(expectedSize, expectedSize); mProgressCallback = NULL; MCLog("had error : %i", r); @@ -2299,8 +2297,9 @@ void IMAPSession::bodyProgress(unsigned int current, unsigned int maximum) void IMAPSession::itemsProgress(unsigned int current, unsigned int maximum) { + mProgressItemsCount ++; if (mProgressCallback != NULL) { - mProgressCallback->itemsProgress(this, current, maximum); + mProgressCallback->itemsProgress(this, mProgressItemsCount, maximum); } } diff --git a/src/core/imap/MCIMAPSession.h b/src/core/imap/MCIMAPSession.h index 93058c2b..ea9a39cd 100644 --- a/src/core/imap/MCIMAPSession.h +++ b/src/core/imap/MCIMAPSession.h @@ -66,8 +66,6 @@ namespace mailcore { IMAPSession(); virtual ~IMAPSession(); - //virtual String * className(); - virtual void setHostname(String * hostname); virtual String * hostname(); @@ -95,9 +93,11 @@ namespace mailcore { virtual void setVoIPEnabled(bool enabled); virtual bool isVoIPEnabled(); + // Needed for fetchSubscribedFolders() and fetchAllFolders(). virtual void setDelimiter(char delimiter); virtual char delimiter(); + // Needed for fetchSubscribedFolders() and fetchAllFolders(). virtual void setDefaultNamespace(IMAPNamespace * ns); virtual IMAPNamespace * defaultNamespace(); @@ -126,14 +126,13 @@ namespace mailcore { virtual Array * fetchMessagesByNumber(String * folder, IMAPMessagesRequestKind requestKind, uint32_t firstNumber, uint32_t lastNumber, IMAPProgressCallback * progressCallback, ErrorCode * pError); virtual Array * fetchMessagesByUID(String * folder, IMAPMessagesRequestKind requestKind, - Array * numbers, IMAPProgressCallback * progressCallback, ErrorCode * pError); + Array * uids, IMAPProgressCallback * progressCallback, ErrorCode * pError); virtual Array * fetchMessagesByNumber(String * folder, IMAPMessagesRequestKind requestKind, Array * numbers, IMAPProgressCallback * progressCallback, ErrorCode * pError); virtual Data * fetchMessageByUID(String * folder, uint32_t uid, IMAPProgressCallback * progressCallback, ErrorCode * pError); virtual Data * fetchMessageAttachmentByUID(String * folder, uint32_t uid, String * partID, - Encoding encoding, unsigned int expectedSize, - IMAPProgressCallback * progressCallback, ErrorCode * pError); + Encoding encoding, IMAPProgressCallback * progressCallback, ErrorCode * pError); virtual HashMap * fetchMessageNumberUIDMapping(String * folder, uint32_t fromUID, uint32_t toUID, ErrorCode * pError); diff --git a/src/core/pop/MCPOPMessageInfo.h b/src/core/pop/MCPOPMessageInfo.h index 1e52b695..a70a3f80 100644 --- a/src/core/pop/MCPOPMessageInfo.h +++ b/src/core/pop/MCPOPMessageInfo.h @@ -19,7 +19,6 @@ namespace mailcore { POPMessageInfo(POPMessageInfo * other); virtual ~POPMessageInfo(); - //virtual String * className(); virtual String * description(); virtual Object * copy(); diff --git a/src/core/pop/MCPOPSession.h b/src/core/pop/MCPOPSession.h index ef6c132b..d0d8dc4e 100644 --- a/src/core/pop/MCPOPSession.h +++ b/src/core/pop/MCPOPSession.h @@ -42,8 +42,6 @@ namespace mailcore { POPSession(); virtual ~POPSession(); - //virtual String * className(); - virtual void setHostname(String * hostname); virtual String * hostname(); diff --git a/src/core/rfc822/MCAttachment.h b/src/core/rfc822/MCAttachment.h index 0fc4fc98..b96dfd2b 100644 --- a/src/core/rfc822/MCAttachment.h +++ b/src/core/rfc822/MCAttachment.h @@ -33,7 +33,6 @@ namespace mailcore { virtual ~Attachment(); virtual String * description(); - //virtual String * className(); virtual Object * copy(); virtual void setData(Data * data); diff --git a/src/core/rfc822/MCMessageBuilder.h b/src/core/rfc822/MCMessageBuilder.h index fd05f3dc..6a71b9e0 100644 --- a/src/core/rfc822/MCMessageBuilder.h +++ b/src/core/rfc822/MCMessageBuilder.h @@ -25,7 +25,6 @@ namespace mailcore { virtual ~MessageBuilder(); virtual String * description(); - //virtual String * className(); virtual Object * copy(); virtual void setHTMLBody(String * htmlBody); diff --git a/src/core/rfc822/MCMessageParser.h b/src/core/rfc822/MCMessageParser.h index a3ece61c..f3f835fa 100644 --- a/src/core/rfc822/MCMessageParser.h +++ b/src/core/rfc822/MCMessageParser.h @@ -22,7 +22,6 @@ namespace mailcore { virtual ~MessageParser(); virtual String * description(); - //virtual String * className(); virtual Object * copy(); virtual AbstractPart * mainPart(); diff --git a/src/core/rfc822/MCMessagePart.h b/src/core/rfc822/MCMessagePart.h index 3f20b3a8..cbedec70 100644 --- a/src/core/rfc822/MCMessagePart.h +++ b/src/core/rfc822/MCMessagePart.h @@ -13,7 +13,6 @@ namespace mailcore { MessagePart(MessagePart * other); virtual ~MessagePart(); - //virtual String * className(); virtual Object * copy(); }; } diff --git a/src/core/rfc822/MCMultipart.h b/src/core/rfc822/MCMultipart.h index bdd71c48..effe10f3 100644 --- a/src/core/rfc822/MCMultipart.h +++ b/src/core/rfc822/MCMultipart.h @@ -13,7 +13,6 @@ namespace mailcore { Multipart(Multipart * other); virtual ~Multipart(); - //virtual String * className(); virtual Object * copy(); }; } diff --git a/src/core/smtp/MCSMTPSession.h b/src/core/smtp/MCSMTPSession.h index 98f4be4a..29e53ce4 100644 --- a/src/core/smtp/MCSMTPSession.h +++ b/src/core/smtp/MCSMTPSession.h @@ -41,12 +41,14 @@ namespace mailcore { void loginIfNeeded(ErrorCode * pError); bool checkCertificate(); + void sendMessage(Address * from, Array * recipients, Data * messageData, + SMTPProgressCallback * callback, ErrorCode * pError); + void sendMessage(MessageBuilder * msg, SMTPProgressCallback * callback, ErrorCode * pError); + public: SMTPSession(); virtual ~SMTPSession(); - //virtual String * className(); - virtual void setHostname(String * hostname); virtual String * hostname(); @@ -81,10 +83,7 @@ namespace mailcore { virtual void checkAccount(Address * from, ErrorCode * pError); - virtual void sendMessage(Address * from, Array * recipients, Data * messageData, - SMTPProgressCallback * callback, ErrorCode * pError); virtual void sendMessage(Data * messageData, SMTPProgressCallback * callback, ErrorCode * pError); - virtual void sendMessage(MessageBuilder * msg, SMTPProgressCallback * callback, ErrorCode * pError); }; } diff --git a/tests/main.mm b/tests/main.mm index 06b12876..1ef4927d 100644 --- a/tests/main.mm +++ b/tests/main.mm @@ -190,6 +190,50 @@ static void testAsyncSMTP(mailcore::Data * data) //smtp->release(); } +class TestIMAPCallback : public mailcore::Object, public mailcore::OperationCallback, public mailcore::IMAPOperationCallback { + virtual void operationFinished(mailcore::Operation * op) + { + mailcore::IMAPFetchMessagesOperation * fetchOp = (mailcore::IMAPFetchMessagesOperation *) op; + //MCLog("callback %s %s %s", MCUTF8DESC(op), MCUTF8DESC(fetchOp->messages()), MCUTF8DESC(this)); + } + + virtual void bodyProgress(mailcore::IMAPOperation * op, unsigned int current, unsigned int maximum) + { + MCLog("progress %s %s %i/%i", MCUTF8DESC(op), MCUTF8DESC(this), current, maximum); + } + + virtual void itemProgress(mailcore::IMAPOperation * op, unsigned int current, unsigned int maximum) + { + MCLog("item progress %s %s %i/%i", MCUTF8DESC(op), MCUTF8DESC(this), current, maximum); + } +}; + +static void testAsyncIMAP() +{ + mailcore::IMAPAsyncSession * session; + TestIMAPCallback * callback = new TestIMAPCallback(); + + session = new mailcore::IMAPAsyncSession(); + session->setHostname(MCSTR("imap.gmail.com")); + session->setPort(993); + session->setUsername(email); + session->setPassword(password); + session->setConnectionType(mailcore::ConnectionTypeTLS); + + mailcore::IMAPMessagesRequestKind requestKind = (mailcore::IMAPMessagesRequestKind) + (mailcore::IMAPMessagesRequestKindHeaders | mailcore::IMAPMessagesRequestKindStructure | + mailcore::IMAPMessagesRequestKindInternalDate | mailcore::IMAPMessagesRequestKindHeaderSubject | + mailcore::IMAPMessagesRequestKindFlags); + mailcore::IMAPFetchMessagesOperation * op = session->fetchMessagesByUIDOperation(MCSTR("INBOX"), requestKind, 1, 0); + op->setCallback(callback); + op->setImapCallback(callback); + op->start(); + //MCLog("%s", MCUTF8DESC(messages)); + [[NSRunLoop currentRunLoop] run]; + + //session->release(); +} + void testAll() { u_setDataDirectory("/usr/local/share/icu"); @@ -203,7 +247,8 @@ void testAll() //testSMTP(data); //testIMAP(); //testPOP(); - testAsyncSMTP(data); + //testAsyncSMTP(data); + testAsyncIMAP(); MCLog("pool release"); pool->release(); |