aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/async/imap/MCIMAPFetchFoldersOperation.cc
diff options
context:
space:
mode:
authorGravatar DINH Viet Hoa <hoa@sprw.me>2013-01-16 01:07:32 -0800
committerGravatar DINH Viet Hoa <hoa@sprw.me>2013-01-16 01:07:32 -0800
commite75be6c8b9a9b694e86c4054b4493f8ec405df2f (patch)
treec74257540dca069ece8178d2afa03a3ee45d7781 /src/async/imap/MCIMAPFetchFoldersOperation.cc
parent70f53398659fb9305f6bf88e33c84327c61829d5 (diff)
Implemented async IMAP
Diffstat (limited to 'src/async/imap/MCIMAPFetchFoldersOperation.cc')
-rw-r--r--src/async/imap/MCIMAPFetchFoldersOperation.cc77
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);
+}