diff options
Diffstat (limited to 'src/async/imap/MCIMAPAsyncSession.cc')
-rwxr-xr-x | src/async/imap/MCIMAPAsyncSession.cc | 40 |
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 |