ipsservices/ipssosaoplugin/src/IpsSosAOMboxLogic.cpp
changeset 23 2dc6caa42ec3
parent 18 578830873419
child 30 759dc5235cdb
--- a/ipsservices/ipssosaoplugin/src/IpsSosAOMboxLogic.cpp	Mon May 03 12:23:15 2010 +0300
+++ b/ipsservices/ipssosaoplugin/src/IpsSosAOMboxLogic.cpp	Fri May 14 15:41:10 2010 +0300
@@ -16,26 +16,21 @@
 *
 */
 
-
-//<cmail> internal dependency removed
-/*#ifdef _DEBUG
-#include "../../internal/IpsSosAOPluginTester/inc/IpsSosAOPluginTester.hrh"
-#endif // _DEBUG*/
-//</cmail>
-
+//<Qmail>
 #include <cmmanager.h>
+//</Qmail>
 
 #include "emailtrace.h"
 #include "IpsSosAOMboxLogic.h"
 //<QMail>
-
+#include "IpsSosAOSettingsHandler.h"
 //</QMail>
 #include "IpsSosAOSchedulerUtils.h"
 #include "IpsSosAOPlugin.hrh"
 #include "IpsSosAOImapPopLogic.h"
 
 //<QMail>
-//const TInt KAOSecondsInMinute = 60;
+const TInt KAOSecondsInMinute = 60;
 //</QMail>
 const TInt KIpsSosAOMboxLogicMinGra = 1;
 
@@ -93,9 +88,10 @@
     iTimer = CIpsSosAOPluginTimer::NewL( CActive::EPriorityStandard, *this );
 	//<QMail>
 
-	//</QMail>
+	
     iAgent = CIpsSosAOBaseAgent::CreateAgentL( iSession, *this, iMailboxId );
-    LoadSettingsL();
+    
+    //</QMail>
     }
 
 // ----------------------------------------------------------------------------
@@ -185,7 +181,9 @@
 void CIpsSosAOMBoxLogic::FetchMessagesL( const RArray<TMsvId> aArray )
     {
     FUNC_LOG;
-    LoadSettingsL();
+    //<Qmail>
+    
+    //</Qmail>
     for ( TInt i = 0; i < aArray.Count(); i++ )
         {
         iFetchMsgArray.AppendL( aArray[i] );
@@ -219,17 +217,22 @@
     FUNC_LOG;
     TBool ret = ETrue;
 	//<QMail>
-    /*
-    TIpsSetDataEmnStates state = EMailEmnOff;
-    if ( iExtendedSettings )
-        {
-        state = iExtendedSettings->EmailNotificationState();
+    CIpsSosAOSettingsHandler* settings = NULL;
+    TRAP_IGNORE( settings = 
+            CIpsSosAOSettingsHandler::NewL(iSession, iMailboxId));
+    
+    if(settings){
+        IpsServices::TIpsSetDataEmnStates state = IpsServices::EMailEmnOff;
+        state = settings->EmailNotificationState();
+        
+        if ( state == IpsServices::EMailEmnOff )
+            {
+            ret = EFalse;
+            }
+        
+        delete settings;
         }
-    if ( state == EMailEmnOff )
-        {
-        ret = EFalse;
-        }
-        */
+    
 	//</QMail>
     return ret;
     }
@@ -239,45 +242,57 @@
 // 
 //<QMail>
 void CIpsSosAOMBoxLogic::GetEmailAddress(  
-    TBuf<KIpsSosAOTextBufferSize>& /*aEmailAddress*/ ) const
+    TBuf<KIpsSosAOTextBufferSize>& aEmailAddress ) const
     {
     FUNC_LOG;
-    /*
-    const TDesC& addr = iExtendedSettings->EmailAddress();
-    __ASSERT_DEBUG( ( 
-            addr.Length() <= KIpsSosAOTextBufferSize ), 
-            User::Panic( KIpsSosAOPanicLit, KErrGeneral) );
+    CIpsSosAOSettingsHandler* settings = NULL;
+
+    TRAPD( err, settings = CIpsSosAOSettingsHandler::NewL(
+            iSession, iMailboxId) );
     
-    if ( addr.Length() <= KIpsSosAOTextBufferSize )
-        {
-        aEmailAddress.Copy( addr );
+    if(settings){
+        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;
         }
-        */
+    
 	//<QMail>
     }
 
 // ----------------------------------------------------------------------------
 // ----------------------------------------------------------------------------
 //<QMail>
-//<cmail>
-void CIpsSosAOMBoxLogic::SetEmnReceivedFlagL( TBool /*aNewValue*/ )
-//</cmail>
+void CIpsSosAOMBoxLogic::SetEmnReceivedFlagL( TBool aNewValue )
     {
-    LoadSettingsL();
-    /*
-    iExtendedSettings->SetEmnReceivedButNotSyncedFlag( aNewValue );
-    iDataApi->SaveExtendedSettingsL(
-        *iExtendedSettings );
-    */
+    
+    CIpsSosAOSettingsHandler* settings = 
+            CIpsSosAOSettingsHandler::NewL(
+                iSession, iMailboxId );
+    CleanupStack::PushL(settings);
+    
+    settings->SetEmnReceivedButNotSyncedFlag( aNewValue );
+    
+    CleanupStack::PopAndDestroy(settings);
 	//</QMail>
     }
 
 // ----------------------------------------------------------------------------
 // ----------------------------------------------------------------------------
 //
-//<cmail>
 TBool CIpsSosAOMBoxLogic::IsMailboxRoamingStoppedL()
-//</cmail>
     {
     TBool ret = EFalse;
     if ( iIsRoaming && !CanConnectIfRoamingL() )
@@ -309,11 +324,6 @@
     
     while ( event != EEventNop && iState != EStateError )
         {
-//<cmail> removing flags    
-/*#ifdef IPSSOSIMAPPOLOGGING_ON
-        WriteDebugData( event );
-#endif*/
-//</cmail>
         switch ( event )
             {
             case EEventTimerFired:
@@ -332,21 +342,24 @@
                     // 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( *iExtendedSettings );
-                        */
+                        CIpsSosAOSchedulerUtils::NewLC( *settings );
+                        
                     TTimeIntervalSeconds seconds;
-                    TIpsSosAOConnectionType type = EAOCConnectAfter; 
-                        //= scheduler->SecondsToNextMark( seconds );
+                    TIpsSosAOConnectionType type = 
+                            scheduler->SecondsToNextMark( seconds );
+                    
 					//</QMail>
                     if ( type == EAOCConnectAfter )
                         {
                         iState = EStateWaitSyncStart;
                         iTimer->After( seconds );
-                        //<cmail>
+                        
                         SetEmnReceivedFlagL( ETrue );
-                        //</cmail>
                         }
                     else
                         {
@@ -355,7 +368,7 @@
                         iState = EStateSyncOngoing;
                         }
 					//<QMail>
-                    //CleanupStack::PopAndDestroy( scheduler );
+                    CleanupStack::PopAndDestroy( 2, settings );
 					//</QMail>
                     }
                 // ignore in other states
@@ -482,6 +495,11 @@
     {
     FUNC_LOG;
     TInt event = EEventNop;
+	//<Qmail>
+    CIpsSosAOSettingsHandler* settings = 
+             CIpsSosAOSettingsHandler::NewL(iSession, iMailboxId);
+    CleanupStack::PushL(settings);
+	//</Qmail>     
     if ( iState == EStateSyncOngoing )
         {
         if ( !( iError == KErrNone || iError == KErrCancel ) )
@@ -493,23 +511,20 @@
             iError = KErrNone;
             iErrorCounter = 0;
             }
-        //<cmail>
+        
         if ( iError != KErrNone && 
                 IsErrorFatalL( iError ) )
-        //</cmail>
             {
             iAgent->CancelAllAndDisconnectL();
             // switch ao off
 			//<QMail>
-            /*
-            iExtendedSettings->SetAlwaysOnlineState( EMailAoOff );
+            
+            settings->SetAlwaysOnlineState( IpsServices::EMailAoOff );
             // emn not swithced of if its going to be "always on" in
             // future
-            iExtendedSettings->SetEmnReceivedButNotSyncedFlag( EFalse );
-            iDataApi->SaveExtendedSettingsL(
-                *iExtendedSettings );
-                */
-			//</QMail>
+            
+            settings->SetEmnReceivedButNotSyncedFlag( EFalse );
+            //</QMail>
             iState = EStateError;
             iErrorCounter = 0;
             }
@@ -518,9 +533,10 @@
             {
             // not fatal error
 			//<QMail>
-        /*
-            TIpsSetDataAoStates state = iExtendedSettings->AlwaysOnlineState();
-            if ( state == EMailAoOff )
+            IpsServices::TIpsSetDataAoStates state = 
+                    settings->AlwaysOnlineState();
+            
+            if ( state == IpsServices::EMailAoOff )
                 {
                 iState = EStateIdleAndWaitCommands;
                 }
@@ -528,19 +544,18 @@
                 {
                 if( !iTimer->IsActive() )
                     {
-                iTimer->After( KIpsSosAOReTryInterval );
+                    iTimer->After( KIpsSosAOReTryInterval );
                     }
                 iState = EStateWaitSyncStart;
                 }
-                */
+
 			//</QMail>
             }
         else if ( iError != KErrNone && 
                 iErrorCounter >= KIpsSosAOMaxReTryTimes )
             {
-            //<cmail>
+            
             SetEmnReceivedFlagL( EFalse );
-            //</cmail>
             // not fatal, but all re trys are gone
             CalculateToNextIntervalL();
             }
@@ -565,6 +580,9 @@
             event = CheckSchedulingAndSwitchStateL();          
             }
         }
+		//<Qmail>
+    CleanupStack::PopAndDestroy(settings);
+	//</Qmail>
     return event;
     }
 
@@ -590,26 +608,32 @@
 // ----------------------------------------------------------------------------
 // ----------------------------------------------------------------------------
 //<QMail>
-//<cmail>
-TBool CIpsSosAOMBoxLogic::IsErrorFatalL( TInt /*aError*/ )
-//</cmail>
+
+TBool CIpsSosAOMBoxLogic::IsErrorFatalL( TInt aError )
     {
     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;
-    LoadSettingsL();
-    /*
-    TAOInfo info = iExtendedSettings->LastUpdateInfo();
+    //<Qmail>
+    
+    //</Qmail>
+    
+    CIpsSosAOSettingsHandler* settings = 
+             CIpsSosAOSettingsHandler::NewL(iSession, iMailboxId);
+    CleanupStack::PushL(settings);
+    
+    IpsServices::TAOInfo info = settings->LastUpdateInfo();
     if ( aError != KErrNone && aError != KErrCancel 
             && !info.iUpdateSuccessfulWithCurSettings
             && iErrorCounter >= KIpsSosAOMaxReTryTimes )
         {
         ret = ETrue;
         }
-        */
-	//</QMail>
+    
+    CleanupStack::PopAndDestroy(settings);
+    //</QMail>
     return ret;
     }
 
@@ -619,20 +643,24 @@
 CIpsSosAOMBoxLogic::TMBoxLogicEvent 
     CIpsSosAOMBoxLogic::CheckSchedulingAndSwitchStateL()
     {
-     //<cmail> logs removed </cmail>
-    iTimer->Cancel();
+	//<Qmail>
+    FUNC_LOG;
+     iTimer->Cancel();
     TMBoxLogicEvent event = EEventNop;
     TTimeIntervalSeconds secondsToConnect = CalculateScheduledSyncTimeL();
-    //<cmail> logs removed </cmail>
+    
+    CIpsSosAOSettingsHandler* settings = 
+             CIpsSosAOSettingsHandler::NewL(iSession, iMailboxId);
+    CleanupStack::PushL(settings);
+      
     if ( secondsToConnect.Int() == 0 )
         {
         //check last successfull sync time and check is interval reached
-	//<QMail>
-    /*
-        TAOInfo info = iExtendedSettings->LastUpdateInfo();
+
+    
+        IpsServices::TAOInfo info = settings->LastUpdateInfo();
         if ( !info.iUpdateSuccessfulWithCurSettings )
             {
-        
             event = EEventStartSync;
             }
         else 
@@ -640,7 +668,7 @@
             TTime now;
             now.HomeTime();
             TInt interval = 
-                iExtendedSettings->InboxRefreshTime() * KAOSecondsInMinute;
+                    settings->InboxRefreshTime() * KAOSecondsInMinute;
             TTimeIntervalSeconds secsFromLastSync;
             now.SecondsFrom( info.iLastSuccessfulUpdate, secsFromLastSync );
             if ( (secsFromLastSync.Int() > 0) && ( 
@@ -661,23 +689,22 @@
         {
         // means that ao is not on (but emn is)
         iState = EStateIdleAndWaitCommands;
-       
-        if ( iExtendedSettings->EmnReceivedButNotSyncedFlag() )
+      
+        if ( settings->EmnReceivedButNotSyncedFlag() )
             {
             // got emn when logic was stopped
             event = EEventStartSync;
             }
-            
         }
     else
         {
         iTimer->After( secondsToConnect );
         iState = EStateWaitSyncStart;
+        
+
         }
-    */
-	//</QMail>
-        }
-    
+    CleanupStack::PopAndDestroy(settings);
+    //</Qmail>
     return event;
     }
 
@@ -687,12 +714,12 @@
 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
@@ -700,8 +727,12 @@
         // settings
 		
 		//<QMail>
-       // iTimer->After( 
-       //         iExtendedSettings->InboxRefreshTime() * KAOSecondsInMinute );
+        CIpsSosAOSettingsHandler* settings = 
+                 CIpsSosAOSettingsHandler::NewL(iSession, iMailboxId);
+        CleanupStack::PushL(settings);
+        iTimer->After( 
+                settings->InboxRefreshTime() * KAOSecondsInMinute );
+        CleanupStack::PopAndDestroy(settings);
 	   //</QMail>
         iState = EStateWaitSyncStart;
         }
@@ -722,30 +753,36 @@
 //
 TTimeIntervalSeconds CIpsSosAOMBoxLogic::CalculateScheduledSyncTimeL()
     {
-    FUNC_LOG;
-    //<cmail> logs removed </cmail> 
-    LoadSettingsL();
-    TTimeIntervalSeconds seconds;
-	//<QMail>
-    /*
+    FUNC_LOG;    
+	//<Qmail>
+    
+    TTimeIntervalSeconds seconds=KErrNotFound;
+	
+    
+    CIpsSosAOSettingsHandler* settings = 
+             CIpsSosAOSettingsHandler::NewL(iSession, iMailboxId);
+    CleanupStack::PushL(settings);
+            
     // first check is ao or emn on at all
-    if ( (iExtendedSettings->AlwaysOnlineState() == EMailAoOff && 
-            iExtendedSettings->EmailNotificationState() == EMailEmnOff  )||
-        iExtendedSettings->SelectedWeekDays() == 0 ) // no week days chosen
+    if ( (settings->AlwaysOnlineState() == IpsServices::EMailAoOff && 
+            settings->EmailNotificationState() == IpsServices::EMailEmnOff  )||
+            settings->SelectedWeekDays() == 0 ) // no week days chosen
         {
         // no timed sync on
+        CleanupStack::PopAndDestroy(settings);    
         return KErrNotFound;
         }
     
-    if ( iExtendedSettings->EmailNotificationState() != EMailEmnOff && 
-         !iExtendedSettings->EmnReceivedButNotSyncedFlag()   )
+    if ( settings->EmailNotificationState() != IpsServices::EMailEmnOff && 
+         !settings->EmnReceivedButNotSyncedFlag()   )
         {
+        CleanupStack::PopAndDestroy(settings);
         return KErrNotFound;
         }
     
     
     CIpsSosAOSchedulerUtils* scheduler = CIpsSosAOSchedulerUtils::NewLC(
-        *iExtendedSettings );
+        *settings );
 
     TIpsSosAOConnectionType type = scheduler->SecondsToNextMark( seconds );
     if ( type == EAOCDisconnectAfter ) 
@@ -761,8 +798,8 @@
         // this means that user have choosed time/day schedule at 
         // timed sync and now we have to wait sync time
         }
-    CleanupStack::PopAndDestroy( scheduler );
-    */
+    CleanupStack::PopAndDestroy( 2, settings );
+    
 	//</QMail>
     return seconds;
     }
@@ -773,11 +810,9 @@
 void CIpsSosAOMBoxLogic::LoadSettingsL()
     {
     FUNC_LOG;
-    //<cmail> logs removed </cmail> 
-	//<QMail>
+    //<QMail>
     //removed loading
 	//</QMail>
-    //<cmail> logs removed </cmail>
     }
 
 // ----------------------------------------------------------------------------
@@ -788,18 +823,21 @@
     FUNC_LOG;
     TTime now;
     now.HomeTime();
-    LoadSettingsL();
-	//<QMail>
-    /*
-    TAOInfo info;
+    //<QMail>
+    
+	
+    CIpsSosAOSettingsHandler* settings = 
+             CIpsSosAOSettingsHandler::NewL(iSession, iMailboxId);
+    CleanupStack::PushL(settings);
+        
+    IpsServices::TAOInfo info;
     info.iLastSuccessfulUpdate = now;
     info.iUpdateSuccessfulWithCurSettings = ETrue;
-    iExtendedSettings->SetLastUpdateInfo( info );
+    settings->SetLastUpdateInfo( info );
     // clear flag
-    iExtendedSettings->SetEmnReceivedButNotSyncedFlag( EFalse );
-    iDataApi->SaveExtendedSettingsL(
-            *iExtendedSettings );
-            */
+    settings->SetEmnReceivedButNotSyncedFlag( EFalse );
+            
+    CleanupStack::PopAndDestroy(settings);
 	//</QMail>
     }
 
@@ -808,18 +846,29 @@
 TBool CIpsSosAOMBoxLogic::CanConnectIfRoamingL()
     {
     FUNC_LOG;
-    TBool ret = ETrue;
-    LoadSettingsL();
-	//<QMail>
-    /*
-    if ( ( iExtendedSettings->EmailNotificationState() == EMailEmnHomeOnly 
-          || iExtendedSettings->AlwaysOnlineState() == EMailAoHomeOnly
-          || iExtendedSettings->RoamHomeOnlyFlag() ) && iIsRoaming )
-        {
+    TBool ret = EFalse;
+    //<Qmail>
+    RCmManager mgr;
+    CleanupClosePushL(mgr);
+    TRAPD(err, mgr.OpenL());
+    
+    TCmGenConnSettings set;
+    
+    if(err==KErrNone){
+        TRAP(err, mgr.ReadGenConnSettingsL(set));
+        }
+    
+    CleanupStack::PopAndDestroy(&mgr);
+    
+    if( err==KErrNone && 
+            set.iCellularDataUsageVisitor == ECmCellularDataUsageAutomatic){
+        ret = ETrue;
+        }
+    else{
         ret = EFalse;
         }
-        */
-	//</QMail>
+   
+    //</QMail>
     return ret;          
     }
 
@@ -828,8 +877,16 @@
 TBool CIpsSosAOMBoxLogic::FirstEMNReceived()
     {
 	//<QMail>
-    //return iExtendedSettings->FirstEmnReceived();
-    return false;
+    CIpsSosAOSettingsHandler* settings = NULL;
+    TBool ret = EFalse;
+    TRAP_IGNORE(CIpsSosAOSettingsHandler::NewL(iSession, iMailboxId));
+    if(settings){
+        ret = settings->FirstEmnReceived();
+        delete settings;
+        }
+    
+    return ret;
+    
 	//</QMail>
     }
 
@@ -837,78 +894,30 @@
 // ----------------------------------------------------------------------------
 void CIpsSosAOMBoxLogic::SetFirstEMNReceived()
     {
-    TRAP_IGNORE( LoadSettingsL() );
-	//<QMail>
-    /*
-    iExtendedSettings->SetFirstEmnReceived( ETrue );
+    //<QMail>
+    
+    CIpsSosAOSettingsHandler* settings = NULL;
+    TRAP_IGNORE( settings = 
+            CIpsSosAOSettingsHandler::NewL(iSession, iMailboxId));
+    
+    if(settings){
+        settings->SetFirstEmnReceived( ETrue );
+        
     
-    //if alwaysonline was allowed to roam, so will EMN be.
-    iExtendedSettings->SetEmailNotificationState(
-            iExtendedSettings->AlwaysOnlineState() == 
-            EMailAoAlways ? EMailEmnAutomatic : EMailEmnHomeOnly );
-    
+        //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;
+        }
     
-    // set always online state off when emn is on
-    iExtendedSettings->SetAlwaysOnlineState( EMailAoOff );    
-    iExtendedSettings->SetInboxRefreshTime( KErrNotFound );
-    
-    TRAP_IGNORE( iDataApi->SaveExtendedSettingsL(
-       *iExtendedSettings ) );    
-    */
 	//</QMail>
     }
-//<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;
-        }
-
-    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