ipsservices/ipssosaoplugin/src/IpsSosAOMboxLogic.cpp
branchRCL_3
changeset 64 3533d4323edc
parent 63 d189ee25cf9d
--- a/ipsservices/ipssosaoplugin/src/IpsSosAOMboxLogic.cpp	Tue Aug 31 15:04:17 2010 +0300
+++ b/ipsservices/ipssosaoplugin/src/IpsSosAOMboxLogic.cpp	Wed Sep 01 12:28:57 2010 +0100
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). 
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -16,11 +16,23 @@
 *
 */
 
-#include "ipssosaopluginheaders.h"
+
+//<cmail> internal dependency removed
+/*#ifdef _DEBUG
+#include "../../internal/IpsSosAOPluginTester/inc/IpsSosAOPluginTester.hrh"
+#endif // _DEBUG*/
+//</cmail>
+
+#include <cmmanager.h>
 
-//<QMail>
+#include "emailtrace.h"
+#include "IpsSosAOMboxLogic.h"
+#include "ipssetdataapi.h"
+#include "IpsSosAOSchedulerUtils.h"
+#include "IpsSosAOPlugin.hrh"
+#include "IpsSosAOImapPopLogic.h"
+
 const TInt KAOSecondsInMinute = 60;
-//</QMail>
 const TInt KIpsSosAOMboxLogicMinGra = 1;
 
 // ----------------------------------------------------------------------------
@@ -31,10 +43,8 @@
         TMsvId aMailboxId ) :
     iSession( aSession ), iMailboxId( aMailboxId ), iState( EStateError ),
     iErrorCounter( 0 ), iError( KErrNone ), iTimer( NULL ),
-	//<QMail>
-    iFetchMsgArray( KIpsSosAOMboxLogicMinGra ), iAgent( NULL ),
-    iIsRoaming( EFalse )
-	//</QMail>
+    iFetchMsgArray( KIpsSosAOMboxLogicMinGra ), iDataApi( NULL ), iAgent( NULL ),
+    iExtendedSettings( NULL ), iIsRoaming( EFalse )
     {
     FUNC_LOG;
     }
@@ -46,8 +56,8 @@
     {
     FUNC_LOG;
     delete iTimer;
-	//<QMail>
-	//</QMail>
+    delete iDataApi;
+    delete iExtendedSettings;
     delete iAgent;
     iFetchMsgArray.Close();
     }
@@ -75,12 +85,9 @@
     {
     FUNC_LOG;
     iTimer = CIpsSosAOPluginTimer::NewL( CActive::EPriorityStandard, *this );
-	//<QMail>
-
-	
+    iDataApi = CIpsSetDataApi::NewL( iSession );
     iAgent = CIpsSosAOBaseAgent::CreateAgentL( iSession, *this, iMailboxId );
-    
-    //</QMail>
+    LoadSettingsL();
     }
 
 // ----------------------------------------------------------------------------
@@ -170,9 +177,7 @@
 void CIpsSosAOMBoxLogic::FetchMessagesL( const RArray<TMsvId> aArray )
     {
     FUNC_LOG;
-    //<Qmail>
-    
-    //</Qmail>
+    LoadSettingsL();
     for ( TInt i = 0; i < aArray.Count(); i++ )
         {
         iFetchMsgArray.AppendL( aArray[i] );
@@ -205,86 +210,55 @@
     {
     FUNC_LOG;
     TBool ret = ETrue;
-	//<QMail>
-    CIpsSosAOSettingsHandler* settings = NULL;
-    TRAP_IGNORE( settings = 
-            CIpsSosAOSettingsHandler::NewL(iSession, iMailboxId));
-    
-    if( settings )
+    TIpsSetDataEmnStates state = EMailEmnOff;
+    if ( iExtendedSettings )
         {
-        IpsServices::TIpsSetDataEmnStates state = IpsServices::EMailEmnOff;
-        state = settings->EmailNotificationState();
-        
-        if ( state == IpsServices::EMailEmnOff )
-            {
-            ret = EFalse;
-            }
-        
-        delete settings;
+        state = iExtendedSettings->EmailNotificationState();
         }
-    
-	//</QMail>
+    if ( state == EMailEmnOff )
+        {
+        ret = EFalse;
+        }
     return ret;
     }
 
 // ----------------------------------------------------------------------------
 // ----------------------------------------------------------------------------
 // 
-//<QMail>
 void CIpsSosAOMBoxLogic::GetEmailAddress(  
     TBuf<KIpsSosAOTextBufferSize>& aEmailAddress ) const
     {
     FUNC_LOG;
-    CIpsSosAOSettingsHandler* settings = NULL;
-
-    TRAPD( err, settings = CIpsSosAOSettingsHandler::NewL(
-            iSession, iMailboxId) );
+    const TDesC& addr = iExtendedSettings->EmailAddress();
+    __ASSERT_DEBUG( ( 
+            addr.Length() <= KIpsSosAOTextBufferSize ), 
+            User::Panic( KIpsSosAOPanicLit, KErrGeneral) );
     
-    if( settings )
+    if ( addr.Length() <= KIpsSosAOTextBufferSize )
         {
-        HBufC* addr = NULL;
-        TRAP(err, addr = settings->EmailAddressL());
-        
-        if( addr )
-            {
-            __ASSERT_DEBUG( ( 
-                    addr->Length() <= KIpsSosAOTextBufferSize ), 
-                    User::Panic( KIpsSosAOPanicLit, KErrGeneral) );
-            
-            if ( addr->Length() <= KIpsSosAOTextBufferSize )
-                {
-                aEmailAddress.Copy( *addr );
-                }
-            delete addr;
-            }   
-        
-        delete settings;
+        aEmailAddress.Copy( addr );
         }
-    
-	//<QMail>
     }
 
 // ----------------------------------------------------------------------------
 // ----------------------------------------------------------------------------
-//<QMail>
+//  
+//<cmail>
 void CIpsSosAOMBoxLogic::SetEmnReceivedFlagL( TBool aNewValue )
+//</cmail>
     {
-    
-    CIpsSosAOSettingsHandler* settings = 
-            CIpsSosAOSettingsHandler::NewL(
-                iSession, iMailboxId );
-    CleanupStack::PushL(settings);
-    
-    settings->SetEmnReceivedButNotSyncedFlag( aNewValue );
-    
-    CleanupStack::PopAndDestroy(settings);
-	//</QMail>
+    LoadSettingsL();
+    iExtendedSettings->SetEmnReceivedButNotSyncedFlag( aNewValue );
+    iDataApi->SaveExtendedSettingsL(
+        *iExtendedSettings );
     }
 
 // ----------------------------------------------------------------------------
 // ----------------------------------------------------------------------------
 //
+//<cmail>
 TBool CIpsSosAOMBoxLogic::IsMailboxRoamingStoppedL()
+//</cmail>
     {
     TBool ret = EFalse;
     if ( iIsRoaming && !CanConnectIfRoamingL() )
@@ -305,79 +279,64 @@
     TInt cycles = 0;
     
     if ( event == EEventStart && iState == EStateError && 
-          ( (iIsRoaming && CanConnectIfRoamingL())||
-             !iIsRoaming ) )
+            CanConnectIfRoamingL() )
         {
-        NM_COMMENT("CIpsSosAOMBoxLogic: event: EEventStart");
         event = EEventNop;
         iAgent->LoadSettingsL();
         iTimer->Cancel();
-        INFO_1("CIpsSosAOMBoxLogic: timer scheduled: %d", KIpsSosAOStartDelaySeconds);
         iTimer->After( KIpsSosAOStartDelaySeconds );
         iState = EStateWaitSyncStart;
-        NM_COMMENT("CIpsSosAOMBoxLogic: switching state: EStateWaitSyncStart");
         }
     
     while ( event != EEventNop && iState != EStateError )
         {
+//<cmail> removing flags    
+/*#ifdef IPSSOSIMAPPOLOGGING_ON
+        WriteDebugData( event );
+#endif*/
+//</cmail>
         switch ( event )
             {
             case EEventTimerFired:
-                NM_COMMENT("CIpsSosAOMBoxLogic: event: EEventTimerFired");
                 event = HandleTimerFiredL();
               break;
             case EEventStartSync:
-                NM_COMMENT("CIpsSosAOMBoxLogic: event: EEventStartSync");
                 if ( iState == EStateWaitSyncStart )
                     {         
                     iError = KErrNone;
                     iAgent->StartSyncL();
                     iState = EStateSyncOngoing;
-                    NM_COMMENT("CIpsSosAOMBoxLogic: switching state: EStateSyncOngoing");
                     }
                 else if ( iState == EStateIdleAndWaitCommands )
                     {
                     // start sync command in idle state is currently 
                     // received when emn arrives, checking scheduling 
                     // if user have selected week days / hours in setting
-					//<QMail>
-                    CIpsSosAOSettingsHandler* settings = 
-                             CIpsSosAOSettingsHandler::NewL(iSession, iMailboxId);
-                    CleanupStack::PushL(settings);
-                    
                     CIpsSosAOSchedulerUtils* scheduler = 
-                        CIpsSosAOSchedulerUtils::NewLC( *settings );
-                        
+                        CIpsSosAOSchedulerUtils::NewLC( *iExtendedSettings );
                     TTimeIntervalSeconds seconds;
                     TIpsSosAOConnectionType type = 
-                            scheduler->SecondsToNextMark( seconds );
-                    
-					//</QMail>
+                        scheduler->SecondsToNextMark( seconds );
                     if ( type == EAOCConnectAfter )
                         {
-                        NM_COMMENT("CIpsSosAOMBoxLogic: switching state: EStateWaitSyncStart");
                         iState = EStateWaitSyncStart;
-                        INFO_1("CIpsSosAOMBoxLogic: timer scheduled: %d", seconds);
                         iTimer->After( seconds );
-                        
+                        //<cmail>
                         SetEmnReceivedFlagL( ETrue );
+                        //</cmail>
                         }
                     else
                         {
                         iError = KErrNone;
                         iAgent->StartSyncL();
                         iState = EStateSyncOngoing;
-                        NM_COMMENT("CIpsSosAOMBoxLogic: switching state: EStateSyncOngoing");
                         }
-					//<QMail>
-                    CleanupStack::PopAndDestroy( 2, settings );
-					//</QMail>
+                    CleanupStack::PopAndDestroy( scheduler );
                     }
                 // ignore in other states
                 event = EEventNop;
                 break;
             case EEventFetchMessages:
-                NM_COMMENT("CIpsSosAOMBoxLogic: event: EEventFetchMessages");
                 if ( ( iState == EStateWaitSyncStart || 
                        iState == EStateIdleAndWaitCommands ) &&
                         iFetchMsgArray.Count() > 0 )
@@ -385,7 +344,6 @@
                     iError = KErrNone;
                     iAgent->StartFetchMessagesL( iFetchMsgArray );
                     iFetchMsgArray.Reset();
-                    NM_COMMENT("CIpsSosAOMBoxLogic: switching state: EStateFetchOngoing");
                     iState = EStateFetchOngoing;
                     }
                 else 
@@ -396,31 +354,28 @@
                 event = EEventNop;
                 break;
             case EEventOperationCompleted:
-                NM_COMMENT("CIpsSosAOMBoxLogic: event: EEventOperationCompleted");
                 event = HandleOperationCompletionL();
                 break;
             case EEventSuspendOperations:
-                NM_COMMENT("CIpsSosAOMBoxLogic: event: EEventSuspendOperations");
                 SuspendOperations();
                 iState = EStateSuspended;
                 event = EEventNop;
                 break;
             case EEventContinueOperations:
-                NM_COMMENT("CIpsSosAOMBoxLogic: event: EEventContinueOperations");
                 if ( iState == EStateSuspended )
                     {
-                    INFO_1("CIpsSosAOMBoxLogic: timer scheduled: %d", KIpsSosAOContinueWaitTime);
                     iTimer->After( KIpsSosAOContinueWaitTime );
                     }
-                event = EEventNop;
+                else
+                    {
+                    event = EEventNop;
+                    }
                 // ignore if in other states
                 break;
             case EEventStopAndRemoveOps:
-                NM_COMMENT("CIpsSosAOMBoxLogic: event: EEventStopAndRemoveOps");
                 // notify deletion
                 iAgent->CancelAllAndDisconnectL();
                 iTimer->Cancel();
-                NM_COMMENT("CIpsSosAOMBoxLogic: switching state: EStateError");
                 iState = EStateError;
                 event = EEventNop;
                 break;
@@ -477,17 +432,13 @@
         ( agentState == CIpsSosAOBaseAgent::EStateConnectAndSyncOnHold || 
           agentState == CIpsSosAOBaseAgent::EStatePopulateOnHold ) )
         {
-        iTimer->Cancel();
         iAgent->ContinueHoldOperations();
-        NM_COMMENT("CIpsSosAOMBoxLogic: switching state: EStateSyncOngoing");
         iState = EStateSyncOngoing;
         }
     else if ( iState == EStateSuspended && 
             agentState == CIpsSosAOBaseAgent::EStateFetchOnHold )
         {
-        iTimer->Cancel();
         iAgent->ContinueHoldOperations();
-        NM_COMMENT("CIpsSosAOMBoxLogic: switching state: EStateFetchOngoing");
         iState = EStateFetchOngoing;
         }
     else
@@ -506,43 +457,30 @@
     {
     FUNC_LOG;
     TInt event = EEventNop;
-	//<Qmail>
-    CIpsSosAOSettingsHandler* settings = 
-             CIpsSosAOSettingsHandler::NewL(iSession, iMailboxId);
-    CleanupStack::PushL(settings);
-	//</Qmail>     
     if ( iState == EStateSyncOngoing )
         {
-        INFO_1("CIpsSosAOMBoxLogic: operation completed error: %d", iError);
-        bool doSaveSyncTime = EFalse;
         if ( !( iError == KErrNone || iError == KErrCancel ) )
             {
             ++iErrorCounter;
             }
         else
             {
-            if (iError == KErrNone)
-                {
-                doSaveSyncTime = ETrue;
-                }
             iError = KErrNone;
             iErrorCounter = 0;
             }
-        
+        //<cmail>
         if ( iError != KErrNone && 
                 IsErrorFatalL( iError ) )
+        //</cmail>
             {
             iAgent->CancelAllAndDisconnectL();
             // switch ao off
-			//<QMail>
-            
-            settings->SetAlwaysOnlineState( IpsServices::EMailAoOff );
+            iExtendedSettings->SetAlwaysOnlineState( EMailAoOff );
             // emn not swithced of if its going to be "always on" in
             // future
-            
-            settings->SetEmnReceivedButNotSyncedFlag( EFalse );
-            //</QMail>
-            NM_COMMENT("CIpsSosAOMBoxLogic: switching state: EStateError");
+            iExtendedSettings->SetEmnReceivedButNotSyncedFlag( EFalse );
+            iDataApi->SaveExtendedSettingsL(
+                *iExtendedSettings );
             iState = EStateError;
             iErrorCounter = 0;
             }
@@ -550,33 +488,26 @@
                 iErrorCounter < KIpsSosAOMaxReTryTimes )
             {
             // not fatal error
-			//<QMail>
-            IpsServices::TIpsSetDataAoStates state = 
-                    settings->AlwaysOnlineState();
-            
-            if ( state == IpsServices::EMailAoOff )
+            TIpsSetDataAoStates state = iExtendedSettings->AlwaysOnlineState();
+            if ( state == EMailAoOff )
                 {
-                NM_COMMENT("CIpsSosAOMBoxLogic: switching state: EStateIdleAndWaitCommands");
                 iState = EStateIdleAndWaitCommands;
                 }
             else
                 {
                 if( !iTimer->IsActive() )
                     {
-                    INFO_1("CIpsSosAOMBoxLogic: timer scheduled: %d", KIpsSosAOReTryInterval);
-                    iTimer->After( KIpsSosAOReTryInterval );
+                iTimer->After( KIpsSosAOReTryInterval );
                     }
-                NM_COMMENT("CIpsSosAOMBoxLogic: switching state: EStateWaitSyncStart");
                 iState = EStateWaitSyncStart;
                 }
-
-			//</QMail>
             }
         else if ( iError != KErrNone && 
                 iErrorCounter >= KIpsSosAOMaxReTryTimes )
             {
-            
+            //<cmail>
             SetEmnReceivedFlagL( EFalse );
+            //</cmail>
             // not fatal, but all re trys are gone
             CalculateToNextIntervalL();
             }
@@ -584,10 +515,7 @@
             {
             // no errors
             // update successfull sync time to settings
-            if (doSaveSyncTime)
-                {
-                SaveSuccessfulSyncTimeL();
-                }
+            SaveSuccessfulSyncTimeL();
             // and adjust timer to sync interval
             CalculateToNextIntervalL();
             }
@@ -597,7 +525,6 @@
         iError = KErrNone;
         if ( iTimer->IsActive() )
             {
-            NM_COMMENT("CIpsSosAOMBoxLogic: switching state: EStateWaitSyncStart");
             iState = EStateWaitSyncStart;
             }
         else
@@ -605,9 +532,6 @@
             event = CheckSchedulingAndSwitchStateL();          
             }
         }
-		//<Qmail>
-    CleanupStack::PopAndDestroy(settings);
-	//</Qmail>
     return event;
     }
 
@@ -621,46 +545,35 @@
         {
         iAgent->HoldOperations();
         }
+    iState = EStateSuspended;
     // set suspend watchdog, if clien not continue this
     // ensure ao logic to continue
-    if ( !iTimer->IsActive() || iState == EStateSyncOngoing || iState == EStateFetchOngoing)
+    if ( !iTimer->IsActive() )
         {
-        INFO_1("CIpsSosAOMBoxLogic: timer scheduled: %d", KIpsSosAOSuspendWatchdogTime);
         iTimer->After( KIpsSosAOSuspendWatchdogTime );
         }
-    NM_COMMENT("CIpsSosAOMBoxLogic: switching state: EStateSuspended");
-    iState = EStateSuspended;
     }
 
 // ----------------------------------------------------------------------------
 // ----------------------------------------------------------------------------
-//<QMail>
-
+//
+//<cmail>
 TBool CIpsSosAOMBoxLogic::IsErrorFatalL( TInt aError )
+//</cmail>
     {
     FUNC_LOG;
     // error can be fatal only if we haven't got successful connect
     // in mailbox ever and error is something else than KErrNone or
     // KErrCancel, and retry interval is reached
     TBool ret = EFalse;
-    //<Qmail>
-    
-    //</Qmail>
-    
-    CIpsSosAOSettingsHandler* settings = 
-             CIpsSosAOSettingsHandler::NewL(iSession, iMailboxId);
-    CleanupStack::PushL(settings);
-    
-    IpsServices::TAOInfo info = settings->LastUpdateInfo();
+    LoadSettingsL();
+    TAOInfo info = iExtendedSettings->LastUpdateInfo();
     if ( aError != KErrNone && aError != KErrCancel 
             && !info.iUpdateSuccessfulWithCurSettings
             && iErrorCounter >= KIpsSosAOMaxReTryTimes )
         {
         ret = ETrue;
         }
-    
-    CleanupStack::PopAndDestroy(settings);
-    //</QMail>
     return ret;
     }
 
@@ -670,22 +583,15 @@
 CIpsSosAOMBoxLogic::TMBoxLogicEvent 
     CIpsSosAOMBoxLogic::CheckSchedulingAndSwitchStateL()
     {
-	//<Qmail>
-    FUNC_LOG;
+     //<cmail> logs removed </cmail>
     iTimer->Cancel();
     TMBoxLogicEvent event = EEventNop;
     TTimeIntervalSeconds secondsToConnect = CalculateScheduledSyncTimeL();
-    
-    CIpsSosAOSettingsHandler* settings = 
-             CIpsSosAOSettingsHandler::NewL(iSession, iMailboxId);
-    CleanupStack::PushL(settings);
-      
+    //<cmail> logs removed </cmail>
     if ( secondsToConnect.Int() == 0 )
         {
         //check last successfull sync time and check is interval reached
-
-    
-        IpsServices::TAOInfo info = settings->LastUpdateInfo();
+        TAOInfo info = iExtendedSettings->LastUpdateInfo();
         if ( !info.iUpdateSuccessfulWithCurSettings )
             {
             event = EEventStartSync;
@@ -695,17 +601,14 @@
             TTime now;
             now.HomeTime();
             TInt interval = 
-                    settings->InboxRefreshTime() * KAOSecondsInMinute;
+                iExtendedSettings->InboxRefreshTime() * KAOSecondsInMinute;
             TTimeIntervalSeconds secsFromLastSync;
             now.SecondsFrom( info.iLastSuccessfulUpdate, secsFromLastSync );
             if ( (secsFromLastSync.Int() > 0) && ( 
                     secsFromLastSync.Int() < interval ) )
                 {
                 // adjust timer to correct sync time
-                TInt syncAfter = interval - secsFromLastSync.Int();
-                INFO_1("CIpsSosAOMBoxLogic: timer scheduled: %d", syncAfter);
-                iTimer->After(syncAfter); 
-                NM_COMMENT("CIpsSosAOMBoxLogic: switching state: EStateWaitSyncStart");
+                iTimer->After(interval - secsFromLastSync.Int());        
                 iState = EStateWaitSyncStart;
                 }
             else
@@ -713,15 +616,12 @@
                 event = EEventStartSync;
                 }
             }
-        
         }
     else if ( secondsToConnect.Int() == KErrNotFound )
         {
         // means that ao is not on (but emn is)
-        NM_COMMENT("CIpsSosAOMBoxLogic: switching state: EStateIdleAndWaitCommands");
         iState = EStateIdleAndWaitCommands;
-      
-        if ( settings->EmnReceivedButNotSyncedFlag() )
+        if ( iExtendedSettings->EmnReceivedButNotSyncedFlag() )
             {
             // got emn when logic was stopped
             event = EEventStartSync;
@@ -729,15 +629,10 @@
         }
     else
         {
-        INFO_1("CIpsSosAOMBoxLogic: timer scheduled: %d", secondsToConnect);
         iTimer->After( secondsToConnect );
-        NM_COMMENT("CIpsSosAOMBoxLogic: switching state: EStateWaitSyncStart");
         iState = EStateWaitSyncStart;
-        
-
         }
-    CleanupStack::PopAndDestroy(settings);
-    //</Qmail>
+    
     return event;
     }
 
@@ -747,52 +642,28 @@
 void CIpsSosAOMBoxLogic::CalculateToNextIntervalL()
     {
     FUNC_LOG;
-    
+    //<cmail> logs removed </cmail>
     iTimer->Cancel();
     TTimeIntervalSeconds interval;
     // first check and calculate scheduling function also loads settings
     interval = CalculateScheduledSyncTimeL();
-    
+    //<cmail> logs removed </cmail>
     if ( interval.Int() == 0 )
         {
         // add next interval, if interval is grater than 0 it means
         // that off-line time is going, user have selected days / times from
         // settings
-		
-		//<QMail>
-        CIpsSosAOSettingsHandler* settings = 
-                 CIpsSosAOSettingsHandler::NewL(iSession, iMailboxId);
-        CleanupStack::PushL(settings);
-        TInt inboxRefreshTime = settings->InboxRefreshTime();
-        TInt secs = inboxRefreshTime * KAOSecondsInMinute;
-        INFO_1("CIpsSosAOMBoxLogic: inboxRefreshTime: %d", inboxRefreshTime);
-        INFO_1("CIpsSosAOMBoxLogic: timer scheduled: %d", secs);
-        if (secs > 0) 
-            {
-            iTimer->After(TTimeIntervalSeconds(secs));
-            }
-        else 
-            {
-            // panic at this point when we get zero time from settings
-            __ASSERT_DEBUG( EFalse, User::Panic( KIpsSosAOPanicLit, KErrGeneral) );
-            iTimer->After(TTimeIntervalSeconds(KAODefaultInboxSyncTimeSecs));
-            }
-            
-        CleanupStack::PopAndDestroy(settings);
-	   //</QMail>
-        NM_COMMENT("CIpsSosAOMBoxLogic: switching state: EStateWaitSyncStart");
+        iTimer->After( 
+                iExtendedSettings->InboxRefreshTime() * KAOSecondsInMinute );
         iState = EStateWaitSyncStart;
         }
     else if ( interval.Int() > 0 )
         {
-        INFO_1("CIpsSosAOMBoxLogic: timer scheduled: %d", interval);
         iTimer->After( interval );
-        NM_COMMENT("CIpsSosAOMBoxLogic: switching state: EStateWaitSyncStart");
         iState = EStateWaitSyncStart;
         }
     else 
         {
-        NM_COMMENT("CIpsSosAOMBoxLogic: switching state: EStateIdleAndWaitCommands");
         iState = EStateIdleAndWaitCommands;
         }
     
@@ -803,36 +674,29 @@
 //
 TTimeIntervalSeconds CIpsSosAOMBoxLogic::CalculateScheduledSyncTimeL()
     {
-    FUNC_LOG;    
-	//<Qmail>
-    
-    TTimeIntervalSeconds seconds=KErrNotFound;
-	
+    FUNC_LOG;
+    //<cmail> logs removed </cmail> 
+    LoadSettingsL();
+    TTimeIntervalSeconds seconds;
     
-    CIpsSosAOSettingsHandler* settings = 
-             CIpsSosAOSettingsHandler::NewL(iSession, iMailboxId);
-    CleanupStack::PushL(settings);
-            
     // first check is ao or emn on at all
-    if ( (settings->AlwaysOnlineState() == IpsServices::EMailAoOff && 
-            settings->EmailNotificationState() == IpsServices::EMailEmnOff  )||
-            settings->SelectedWeekDays() == 0 ) // no week days chosen
+    if ( (iExtendedSettings->AlwaysOnlineState() == EMailAoOff && 
+            iExtendedSettings->EmailNotificationState() == EMailEmnOff  )||
+        iExtendedSettings->SelectedWeekDays() == 0 ) // no week days chosen
         {
         // no timed sync on
-        CleanupStack::PopAndDestroy(settings);    
         return KErrNotFound;
         }
     
-    if ( settings->EmailNotificationState() != IpsServices::EMailEmnOff && 
-         !settings->EmnReceivedButNotSyncedFlag()   )
+    if ( iExtendedSettings->EmailNotificationState() != EMailEmnOff && 
+         !iExtendedSettings->EmnReceivedButNotSyncedFlag()   )
         {
-        CleanupStack::PopAndDestroy(settings);
         return KErrNotFound;
         }
     
     
     CIpsSosAOSchedulerUtils* scheduler = CIpsSosAOSchedulerUtils::NewLC(
-        *settings );
+        *iExtendedSettings );
 
     TIpsSosAOConnectionType type = scheduler->SecondsToNextMark( seconds );
     if ( type == EAOCDisconnectAfter ) 
@@ -848,9 +712,7 @@
         // this means that user have choosed time/day schedule at 
         // timed sync and now we have to wait sync time
         }
-    CleanupStack::PopAndDestroy( 2, settings );
-    
-	//</QMail>
+    CleanupStack::PopAndDestroy( scheduler );
     return seconds;
     }
 
@@ -860,9 +722,12 @@
 void CIpsSosAOMBoxLogic::LoadSettingsL()
     {
     FUNC_LOG;
-    //<QMail>
-    //removed loading
-	//</QMail>
+    //<cmail> logs removed </cmail> 
+    delete iExtendedSettings;
+    iExtendedSettings = NULL;
+    iExtendedSettings = CIpsSetDataExtension::NewL();
+    iDataApi->LoadExtendedSettingsL( iMailboxId, *iExtendedSettings );
+    //<cmail> logs removed </cmail>
     }
 
 // ----------------------------------------------------------------------------
@@ -873,22 +738,16 @@
     FUNC_LOG;
     TTime now;
     now.HomeTime();
-    //<QMail>
-    
-	
-    CIpsSosAOSettingsHandler* settings = 
-             CIpsSosAOSettingsHandler::NewL(iSession, iMailboxId);
-    CleanupStack::PushL(settings);
-        
-    IpsServices::TAOInfo info;
+    LoadSettingsL();
+    TAOInfo info;
     info.iLastSuccessfulUpdate = now;
     info.iUpdateSuccessfulWithCurSettings = ETrue;
-    settings->SetLastUpdateInfo( info );
+    info.iLastUpdateFailed=EFalse;
+    iExtendedSettings->SetLastUpdateInfo( info );
     // clear flag
-    settings->SetEmnReceivedButNotSyncedFlag( EFalse );
-            
-    CleanupStack::PopAndDestroy(settings);
-	//</QMail>
+    iExtendedSettings->SetEmnReceivedButNotSyncedFlag( EFalse );
+    iDataApi->SaveExtendedSettingsL(
+            *iExtendedSettings );
     }
 
 // ----------------------------------------------------------------------------
@@ -896,28 +755,21 @@
 TBool CIpsSosAOMBoxLogic::CanConnectIfRoamingL()
     {
     FUNC_LOG;
-    TBool ret = EFalse;
-    //<Qmail>
-    RCmManager mgr;
-    CleanupClosePushL(mgr);
-    TRAPD(err, mgr.OpenL());
+    TBool ret = ETrue;
+
+    RCmManager cmManager;
+    cmManager.OpenLC();
+    TCmGenConnSettings OccSettings;
     
-    TCmGenConnSettings set;
-    if(err==KErrNone){
-        TRAP(err, mgr.ReadGenConnSettingsL(set));
+    //ask roaming settings from occ
+    cmManager.ReadGenConnSettingsL(OccSettings);
+    if(OccSettings.iCellularDataUsageVisitor == ECmCellularDataUsageDisabled && iIsRoaming)
+        {
+        ret = EFalse;
         }
     
-    CleanupStack::PopAndDestroy(&mgr);
+    CleanupStack::PopAndDestroy(&cmManager); // cmManager
     
-    if( err==KErrNone && 
-            set.iCellularDataUsageVisitor == ECmCellularDataUsageAutomatic){
-        ret = ETrue;
-        }
-    else{
-        ret = EFalse;
-        }
-   
-    //</QMail>
     return ret;          
     }
 
@@ -925,48 +777,80 @@
 // ----------------------------------------------------------------------------
 TBool CIpsSosAOMBoxLogic::FirstEMNReceived()
     {
-	//<QMail>
-    CIpsSosAOSettingsHandler* settings = NULL;
-    TBool ret = EFalse;
-    TRAP_IGNORE(CIpsSosAOSettingsHandler::NewL(iSession, iMailboxId));
-    if(settings){
-        ret = settings->FirstEmnReceived();
-        delete settings;
-        }
-    
-    return ret;
-    
-	//</QMail>
+    return iExtendedSettings->FirstEmnReceived();
     }
 
 // ----------------------------------------------------------------------------
 // ----------------------------------------------------------------------------
 void CIpsSosAOMBoxLogic::SetFirstEMNReceived()
     {
-    //<QMail>
+    TRAP_IGNORE( LoadSettingsL() );
+    iExtendedSettings->SetFirstEmnReceived( ETrue );
+    
+    //if alwaysonline was allowed to roam, so will EMN be.
+    iExtendedSettings->SetEmailNotificationState( EMailEmnAutomatic );
+    
     
-    CIpsSosAOSettingsHandler* settings = NULL;
-    TRAP_IGNORE( settings = 
-            CIpsSosAOSettingsHandler::NewL(iSession, iMailboxId));
+    // set always online state off when emn is on
+    iExtendedSettings->SetAlwaysOnlineState( EMailAoOff );    
+    iExtendedSettings->SetInboxRefreshTime( KErrNotFound );
     
-    if(settings){
-        settings->SetFirstEmnReceived( ETrue );
-        
+    TRAP_IGNORE( iDataApi->SaveExtendedSettingsL(
+       *iExtendedSettings ) );    
     
-        //if alwaysonline was allowed to roam, so will EMN be.
-        settings->SetEmailNotificationState(
-            settings->AlwaysOnlineState() == 
-            IpsServices::EMailAoAlways ? 
-                IpsServices::EMailEmnAutomatic : IpsServices::EMailEmnHomeOnly );
-        
-        
-        // set always online state off when emn is on
-        settings->SetAlwaysOnlineState( IpsServices::EMailAoOff );
-        delete settings;
+    }
+//<cmail> removing flags
+/*
+#ifdef IPSSOSIMAPPOLOGGING_ON
+// ----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
+//
+void CIpsSosAOMBoxLogic::WriteDebugData( TInt aEvent )
+    {
+    switch ( aEvent )
+        {
+        case EEventTimerFired:
+            break;
+        case EEventStartSync:
+            break;
+        case EEventFetchMessages:
+            break;
+        case EEventOperationCompleted:
+            break;
+        case EEventSuspendOperations:
+            break;
+        case EEventContinueOperations:
+            break;
+        case EEventStart:
+            break;
+        case EEventStopAndRemoveOps:
+            break;
+        case EEventNop:
+            break;
+        default:
+            break;
         }
-    
-	//</QMail>
+
+    switch ( iState )
+        {
+        case EStateWaitSyncStart:
+            break;
+        case EStateSyncOngoing:
+            break;
+        case EStateFetchOngoing:
+            break;
+        case EStateSuspended:
+            break;
+        case EStateIdleAndWaitCommands:
+            break;
+        case EStateError:
+            break;
+        default:
+            break;
+        };
     }
+#endif // IPSSMTPLOGGING_ON*/
+//</cmail>    
 
 // End of file