aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/async/imap/MCIMAPAsyncSession.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/async/imap/MCIMAPAsyncSession.cc')
-rwxr-xr-xsrc/async/imap/MCIMAPAsyncSession.cc40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/async/imap/MCIMAPAsyncSession.cc b/src/async/imap/MCIMAPAsyncSession.cc
index 7986cb0b..5fe9a61b 100755
--- a/src/async/imap/MCIMAPAsyncSession.cc
+++ b/src/async/imap/MCIMAPAsyncSession.cc
@@ -40,6 +40,7 @@ IMAPAsyncSession::IMAPAsyncSession()
mAutomaticConfigurationDone = false;
mServerIdentity = new IMAPIdentity();
mClientIdentity = new IMAPIdentity();
+ mOperationQueueCallback = NULL;
}
IMAPAsyncSession::~IMAPAsyncSession()
@@ -513,3 +514,42 @@ void IMAPAsyncSession::automaticConfigurationDone(IMAPSession * session)
setDefaultNamespace(session->defaultNamespace());
mAutomaticConfigurationDone = true;
}
+
+void IMAPAsyncSession::setOperationQueueCallback(OperationQueueCallback * callback)
+{
+ mOperationQueueCallback = callback;
+}
+
+OperationQueueCallback * IMAPAsyncSession::operationQueueCallback()
+{
+ return mOperationQueueCallback;
+}
+
+bool IMAPAsyncSession::isOperationQueueRunning()
+{
+ return mQueueRunning;
+}
+
+void IMAPAsyncSession::operationRunningStateChanged()
+{
+ bool isRunning = false;
+ for(unsigned int i = 0 ; i < mSessions->count() ; i ++) {
+ IMAPAsyncConnection * currentSession = (IMAPAsyncConnection *) mSessions->objectAtIndex(i);
+ if (currentSession->isQueueRunning()){
+ isRunning = true;
+ break;
+ }
+ }
+ if (mQueueRunning == isRunning) {
+ return;
+ }
+ mQueueRunning = isRunning;
+ if (mOperationQueueCallback != NULL) {
+ if (isRunning) {
+ mOperationQueueCallback->queueStartRunning();
+ }
+ else {
+ mOperationQueueCallback->queueStoppedRunning();
+ }
+ }
+} \ No newline at end of file