diff options
author | DINH Viet Hoa <hoa@sprw.me> | 2013-01-16 01:07:32 -0800 |
---|---|---|
committer | DINH Viet Hoa <hoa@sprw.me> | 2013-01-16 01:07:32 -0800 |
commit | e75be6c8b9a9b694e86c4054b4493f8ec405df2f (patch) | |
tree | c74257540dca069ece8178d2afa03a3ee45d7781 /src/async/imap/MCIMAPFetchFoldersOperation.cc | |
parent | 70f53398659fb9305f6bf88e33c84327c61829d5 (diff) |
Implemented async IMAP
Diffstat (limited to 'src/async/imap/MCIMAPFetchFoldersOperation.cc')
-rw-r--r-- | src/async/imap/MCIMAPFetchFoldersOperation.cc | 77 |
1 files changed, 77 insertions, 0 deletions
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); +} |