186 TFSProgress result = { TFSProgress::EFSStatus_Waiting, 0, 0, KErrNone }; |
186 TFSProgress result = { TFSProgress::EFSStatus_Waiting, 0, 0, KErrNone }; |
187 result.iError = KErrNone; |
187 result.iError = KErrNone; |
188 switch( iState ) |
188 switch( iState ) |
189 { |
189 { |
190 case EStateQueryingDetails: |
190 case EStateQueryingDetails: |
|
191 case EStateQueryingDetailsBusy: |
191 result.iProgressStatus = TFSProgress::EFSStatus_Authenticating; |
192 result.iProgressStatus = TFSProgress::EFSStatus_Authenticating; |
192 break; |
193 break; |
193 case EStateStartConnect: |
194 case EStateStartConnect: |
194 result.iProgressStatus = TFSProgress::EFSStatus_Started; |
195 result.iProgressStatus = TFSProgress::EFSStatus_Started; |
195 break; |
196 break; |
266 } |
267 } |
267 |
268 |
268 switch( iState ) |
269 switch( iState ) |
269 { |
270 { |
270 case EStateQueryingDetails: |
271 case EStateQueryingDetails: |
271 |
272 // querying pass finished - try to reconnect |
272 if ( KErrNone != err ) |
273 DoConnectOpL(); |
273 { |
|
274 // user might be cancelled query |
|
275 // or it IS EMPTY |
|
276 iError = err; |
|
277 iState = EStateIdle; |
|
278 } |
|
279 else |
|
280 { |
|
281 // Retry connect. |
|
282 DoConnectOpL(); |
|
283 } |
|
284 break; |
274 break; |
285 case EStateStartConnect: |
275 case EStateStartConnect: |
286 StartL(); |
276 StartL(); |
287 break; |
277 break; |
288 case EStateConnectAndSync: |
278 case EStateConnectAndSync: |
289 // Connection completed |
279 // Connection completed |
290 |
280 |
291 if( err == KErrImapBadLogon ) |
281 if ( err == KErrImapBadLogon ) |
292 { |
282 { |
293 // Login details are wrong. |
283 // Login details are wrong. Trying to ask for password |
294 QueryUserPwdL(); |
284 if ( QueryUserPassL() ) |
295 iState = EStateQueryingDetails; |
285 { |
296 |
286 err = KErrNone; |
297 err = KErrNone; |
287 } |
298 } |
288 } |
299 else if ( err == KErrNone ) |
289 else if ( err == KErrNone ) |
300 { |
290 { |
301 // no errors in connection |
291 // no errors in connection |
302 if( !iDoPlainConnect ) |
292 if( !iDoPlainConnect ) |
518 |
508 |
519 // ---------------------------------------------------------------------------- |
509 // ---------------------------------------------------------------------------- |
520 // CIpsPlgImap4ConnectOp::QueryUserPwdL() |
510 // CIpsPlgImap4ConnectOp::QueryUserPwdL() |
521 // ---------------------------------------------------------------------------- |
511 // ---------------------------------------------------------------------------- |
522 // |
512 // |
523 void CIpsPlgImap4ConnectOp::QueryUserPwdL() |
513 TBool CIpsPlgImap4ConnectOp::QueryUserPassL() |
524 { |
514 { |
525 if ( iEventHandler ) |
515 if ( iEventHandler ) |
526 { |
516 { |
527 iEventHandler->QueryUsrPassL( iService, this ); |
517 // ask for credentials for imap account and wait for callback |
528 } |
518 if ( iEventHandler->QueryUsrPassL( iService, this ) ) |
|
519 { |
|
520 iState = EStateQueryingDetails; |
|
521 } |
|
522 else |
|
523 { |
|
524 // another operation is waiting for password |
|
525 iState = EStateQueryingDetailsBusy; |
|
526 } |
|
527 |
|
528 return ETrue; |
|
529 } |
|
530 |
|
531 return EFalse; |
529 } |
532 } |
530 |
533 |
531 |
534 |
532 // ---------------------------------------------------------------------------- |
535 // ---------------------------------------------------------------------------- |
533 // CIpsPlgImap4ConnectOp::GetOperationErrorCodeL() |
536 // CIpsPlgImap4ConnectOp::GetOperationErrorCodeL() |
578 void CIpsPlgImap4ConnectOp::SignalSyncCompleted( TInt aError ) |
581 void CIpsPlgImap4ConnectOp::SignalSyncCompleted( TInt aError ) |
579 { |
582 { |
580 FUNC_LOG; |
583 FUNC_LOG; |
581 if ( iEventHandler && aError == KErrImapBadLogon ) |
584 if ( iEventHandler && aError == KErrImapBadLogon ) |
582 { |
585 { |
|
586 /* |
583 iEventHandler->SetNewPropertyEvent( |
587 iEventHandler->SetNewPropertyEvent( |
584 iService, KIpsSosEmailSyncCompleted, aError ); |
588 iService, KIpsSosEmailSyncCompleted, aError ); |
|
589 */ |
585 iIsSyncStartedSignaled = EFalse; |
590 iIsSyncStartedSignaled = EFalse; |
586 } |
591 } |
587 } |
592 } |
588 |
593 |
589 |
594 |
590 // ---------------------------------------------------------------------------- |
595 // ---------------------------------------------------------------------------- |
591 // ---------------------------------------------------------------------------- |
596 // ---------------------------------------------------------------------------- |
592 void CIpsPlgImap4ConnectOp::CredientialsSetL( TInt aEvent ) |
597 void CIpsPlgImap4ConnectOp::CredientialsSetL( TInt aEvent ) |
593 { |
598 { |
594 FUNC_LOG; |
599 FUNC_LOG; |
595 if ( aEvent == EIPSSosCredientialsCancelled ) |
600 |
596 { |
601 if ( iState == EStateQueryingDetails ) |
|
602 { |
|
603 // response for our operation`s query |
|
604 if ( aEvent == EIPSSosCredientialsCancelled ) |
|
605 { |
|
606 // user canceled operation |
|
607 CompleteObserver( KErrCancel ); |
|
608 } |
|
609 |
|
610 // password has been set, continue with operation |
|
611 SetActive(); |
|
612 CompleteThis(); |
|
613 } |
|
614 else if ( iState == EStateQueryingDetailsBusy ) |
|
615 { |
|
616 // response for other operation`s query |
|
617 // we could try to ask for password now, |
|
618 // but decision was made to cancel operation |
597 CompleteObserver( KErrCancel ); |
619 CompleteObserver( KErrCancel ); |
598 } |
620 SetActive(); |
599 //password has been set, continue with operation |
621 CompleteThis(); |
600 |
622 } |
601 SetActive(); |
|
602 CompleteThis(); |
|
603 } |
623 } |
604 // End of File |
624 // End of File |
605 |
625 |