36 #include "cfsmailbox.h" |
36 #include "cfsmailbox.h" |
37 #include "cfsmailfolder.h" |
37 #include "cfsmailfolder.h" |
38 #include "cfsmailmessage.h" |
38 #include "cfsmailmessage.h" |
39 #include "cfsmailaddress.h" |
39 #include "cfsmailaddress.h" |
40 #include "cfsmailcommon.h" |
40 #include "cfsmailcommon.h" |
|
41 #include "cemailsettingsextension.h" |
41 //</cmail> |
42 //</cmail> |
42 #include <freestyleemailui.mbg> |
43 #include <freestyleemailui.mbg> |
43 #include <AknQueryDialog.h> |
44 #include <AknQueryDialog.h> |
44 #include <AknBidiTextUtils.h> |
45 #include <AknBidiTextUtils.h> |
45 #include <gdi.h> |
46 #include <gdi.h> |
149 return static_cast<CFreestyleEmailUiAppUi*> |
150 return static_cast<CFreestyleEmailUiAppUi*> |
150 ( aObject )->ViewLoadIdleCallbackFunctionL(); |
151 ( aObject )->ViewLoadIdleCallbackFunctionL(); |
151 } |
152 } |
152 |
153 |
153 const TUint KConnectionStatusIconRotationInterval = 100; |
154 const TUint KConnectionStatusIconRotationInterval = 100; |
|
155 const TUint KFakeSyncAnimStopTimerInterval = 3000; // 3 secs |
154 const TInt KConnectionStatusIconRotationAmount = 18; |
156 const TInt KConnectionStatusIconRotationAmount = 18; |
155 // Length of the drive letter descriptor (e.g. "c:") |
157 // Length of the drive letter descriptor (e.g. "c:") |
156 const TInt KDriveDescLength = 2; |
158 const TInt KDriveDescLength = 2; |
157 |
159 |
158 |
160 |
582 |
584 |
583 iConnectionStatusVisible = ETrue; |
585 iConnectionStatusVisible = ETrue; |
584 // Create custom statuspane indicators object, which shows priority and followup flags |
586 // Create custom statuspane indicators object, which shows priority and followup flags |
585 CreateStatusPaneIndicatorsL(); |
587 CreateStatusPaneIndicatorsL(); |
586 iConnectionStatusIconAnimTimer = CFSEmailUiGenericTimer::NewL(this, CActive::EPriorityLow); |
588 iConnectionStatusIconAnimTimer = CFSEmailUiGenericTimer::NewL(this, CActive::EPriorityLow); |
|
589 iFakeSyncAnimStopTimer = CFSEmailUiGenericTimer::NewL(this, CActive::EPriorityLow); |
587 |
590 |
588 // this includes a wait note where code running will be pending |
591 // this includes a wait note where code running will be pending |
589 // until a certain callback event is received |
592 // until a certain callback event is received |
590 // -> thus keep this last in this method! |
593 // -> thus keep this last in this method! |
591 iWizardObserver->DoWizardStartupActionsL(); |
594 iWizardObserver->DoWizardStartupActionsL(); |
738 CFSEmailDownloadInfoMediator::Destroy(); |
741 CFSEmailDownloadInfoMediator::Destroy(); |
739 |
742 |
740 delete iNaviDecorator2MailViewer; |
743 delete iNaviDecorator2MailViewer; |
741 |
744 |
742 delete iConnectionStatusIconAnimTimer; |
745 delete iConnectionStatusIconAnimTimer; |
743 |
746 delete iFakeSyncAnimStopTimer; |
744 |
747 |
745 MTouchFeedback* touchFeedback( MTouchFeedback::Instance() ); |
748 MTouchFeedback* touchFeedback( MTouchFeedback::Instance() ); |
746 if (touchFeedback && touchFeedback->TouchFeedbackSupported()) |
749 if (touchFeedback && touchFeedback->TouchFeedbackSupported()) |
747 { |
750 { |
748 touchFeedback->SetFeedbackEnabledForThisApp(EFalse); |
751 touchFeedback->SetFeedbackEnabledForThisApp(EFalse); |
1820 |
1811 |
1821 // Start connect automatically if asked by the caller |
1812 // Start connect automatically if asked by the caller |
1822 // Disabled if offline or roaming |
1813 // Disabled if offline or roaming |
1823 if ( aAutoSync ) |
1814 if ( aAutoSync ) |
1824 { |
1815 { |
1825 StartMonitoringL(); |
1816 // check manual online setting |
|
1817 CEmailExtension* ext=NULL; |
|
1818 TBool manualSync = EFalse; |
|
1819 ext = iActiveMailbox->ExtensionL( KEmailSettingExtensionUid ); |
|
1820 if (ext) |
|
1821 { |
|
1822 CEmailSettingsExtension* extension = reinterpret_cast<CEmailSettingsExtension*>( ext ); |
|
1823 extension->SetMailBoxId(iActiveMailbox->GetId()); |
|
1824 manualSync = extension->IsSetL(EmailSyncInterval); |
|
1825 iActiveMailbox->ReleaseExtension(ext); |
|
1826 } |
|
1827 if(!manualSync) |
|
1828 { |
|
1829 StartMonitoringL(); |
|
1830 } |
1826 } |
1831 } |
1827 } |
1832 } |
1828 |
1833 |
1829 void CFreestyleEmailUiAppUi::StartMonitoringL() |
1834 void CFreestyleEmailUiAppUi::StartMonitoringL() |
1830 { |
1835 { |
2175 } |
2176 } |
2176 } |
2177 } |
2177 break; |
2178 break; |
2178 case TFSEventMailboxSyncStateChanged: |
2179 case TFSEventMailboxSyncStateChanged: |
2179 { |
2180 { |
|
2181 TBool tryRunningFakeSyncAnim( EFalse ); |
2180 TSSMailSyncState* newSyncState = static_cast<TSSMailSyncState*>( aParam1 ); |
2182 TSSMailSyncState* newSyncState = static_cast<TSSMailSyncState*>( aParam1 ); |
2181 if ( newSyncState !=0 && *newSyncState ) |
2183 if ( newSyncState !=0 && *newSyncState ) |
2182 { |
2184 { |
2183 switch ( *newSyncState ) |
2185 switch ( *newSyncState ) |
2184 { |
2186 { |
2185 case StartingSync: |
2187 case StartingSync: |
2186 { |
2188 { |
2187 TIMESTAMP( "Starting sync" ); |
2189 TIMESTAMP( "Starting sync" ); |
2188 //If syncs were started by user, show the synchoronisation indicator |
|
2189 if(iManualMailBoxSyncAll) |
|
2190 { |
|
2191 ManualMailBoxSyncAll(EFalse); |
|
2192 } |
|
2193 } |
2190 } |
2194 break; |
2191 break; |
2195 case SyncError: |
2192 case SyncError: |
2196 { |
2193 { |
2197 // error occured during "Connect" or "Send and receive" operation |
2194 // error occured during "Connect" or "Send and receive" operation |
2198 // check if user needs to be notified |
|
2199 TIMESTAMP( "Sync error" ); |
2195 TIMESTAMP( "Sync error" ); |
2200 if ( iManualMailBoxSync ) |
|
2201 { |
|
2202 /* |
|
2203 * As a fix to TJOS-82ZFCW, this general popup is no longer needed |
|
2204 * // since error id is not provided by plugin, lets popup general note |
|
2205 * HBufC* text = StringLoader::LoadL( R_FS_MSERVER_TEXT_UNABLE_TO_COMPLETE ); |
|
2206 * CleanupStack::PushL( text ); |
|
2207 * CAknInformationNote* infoNote = new ( ELeave ) CAknInformationNote; |
|
2208 * infoNote->ExecuteLD( *text ); |
|
2209 * CleanupStack::PopAndDestroy( text ); |
|
2210 */ |
|
2211 ManualMailBoxSync( EFalse ); |
|
2212 } |
|
2213 } |
2196 } |
2214 break; |
2197 break; |
2215 case FinishedSuccessfully: |
2198 case FinishedSuccessfully: // fall through |
|
2199 case Idle: |
|
2200 tryRunningFakeSyncAnim = ETrue; |
|
2201 // fall through |
2216 case SyncCancelled: |
2202 case SyncCancelled: |
2217 case Idle: |
|
2218 { |
2203 { |
2219 TIMESTAMP( "Sync finished" ); |
2204 TIMESTAMP( "Sync finished" ); |
2220 ManualMailBoxSync( EFalse ); |
|
2221 } |
2205 } |
2222 break; |
2206 break; |
2223 |
|
2224 case PushChannelOffBecauseBatteryIsLow: |
2207 case PushChannelOffBecauseBatteryIsLow: |
2225 { |
2208 { |
2226 } |
2209 } |
2227 break; |
2210 break; |
2228 } //switch |
2211 } //switch |
2229 } |
2212 } |
2230 UpdateTitlePaneConnectionStatus(); |
2213 |
|
2214 if ( tryRunningFakeSyncAnim ) |
|
2215 { |
|
2216 TRAP_IGNORE( RunFakeSyncAnimL() ); |
|
2217 } |
|
2218 |
|
2219 // update title pane connection status only if fake anim isn't |
|
2220 // ongoing (if it is the update will happen once it's finished) |
|
2221 if ( !iFakeSyncAnimStopTimer->IsActive() ) |
|
2222 { |
|
2223 UpdateTitlePaneConnectionStatus(); |
|
2224 } |
2231 } //case |
2225 } //case |
2232 break; |
2226 break; |
2233 |
2227 |
2234 case TFSEventNewMailbox: |
2228 case TFSEventNewMailbox: |
2235 { |
2229 { |
2315 { |
2309 { |
2316 iHtmlViewerView->HandleMailBoxEventL( aEvent, aMailbox, aParam1, aParam2, aParam3 ); |
2310 iHtmlViewerView->HandleMailBoxEventL( aEvent, aMailbox, aParam1, aParam2, aParam3 ); |
2317 } |
2311 } |
2318 // Download manager removed |
2312 // Download manager removed |
2319 |
2313 |
2320 if (iExitGuardian) |
|
2321 { |
|
2322 CleanupStack::PopAndDestroy(); // iExitGuardian->EnterLC() |
|
2323 } |
|
2324 } |
2314 } |
2325 |
2315 |
2326 void CFreestyleEmailUiAppUi::LaunchWizardL() |
2316 void CFreestyleEmailUiAppUi::LaunchWizardL() |
2327 { |
2317 { |
2328 FUNC_LOG; |
2318 FUNC_LOG; |
2528 AknIconUtils::SetSize( iConnectionIconBitmap, iconSize, EAspectRatioNotPreserved ); |
2518 AknIconUtils::SetSize( iConnectionIconBitmap, iconSize, EAspectRatioNotPreserved ); |
2529 } |
2519 } |
2530 titlePane->SetSmallPicture( iConnectionIconBitmap, iConnectionIconMask, iConnectionIconBitmap && iConnectionIconMask); |
2520 titlePane->SetSmallPicture( iConnectionIconBitmap, iConnectionIconMask, iConnectionIconBitmap && iConnectionIconMask); |
2531 } |
2521 } |
2532 iConnectionStatusIconAnimTimer->Stop(); |
2522 iConnectionStatusIconAnimTimer->Stop(); |
|
2523 iFakeSyncAnimStopTimer->Stop(); |
2533 } |
2524 } |
2534 |
2525 |
2535 void CFreestyleEmailUiAppUi::UpdateTitlePaneConnectionStatus( |
2526 void CFreestyleEmailUiAppUi::UpdateTitlePaneConnectionStatus( |
2536 TForcedStatus aForcedStatus /*= ENoForce*/ ) |
2527 TForcedStatus aForcedStatus /*= ENoForce*/ ) |
2537 { |
2528 { |
2561 TRAP_IGNORE( titlePane = |
2552 TRAP_IGNORE( titlePane = |
2562 (CAknTitlePane*)StatusPane()->ControlL( titlePaneUid ) ); |
2553 (CAknTitlePane*)StatusPane()->ControlL( titlePaneUid ) ); |
2563 |
2554 |
2564 // Set connection icon |
2555 // Set connection icon |
2565 iConnectionStatusIconAnimTimer->Stop(); |
2556 iConnectionStatusIconAnimTimer->Stop(); |
|
2557 iFakeSyncAnimStopTimer->Stop(); |
2566 iConnectionIconBitmap = 0; |
2558 iConnectionIconBitmap = 0; |
2567 iConnectionIconMask = 0; |
2559 iConnectionIconMask = 0; |
2568 TSize iconSize = LayoutHandler()->statusPaneIconSize(); |
2560 TSize iconSize = LayoutHandler()->statusPaneIconSize(); |
2569 TBool startTimer = EFalse; |
2561 TBool startTimer = EFalse; |
2570 if ( ( connectionStatus == EFSMailBoxOnline && iForcedConnectionStatus != EForceToDisconnected ) || |
2562 if ( ( connectionStatus == EFSMailBoxOnline && iForcedConnectionStatus != EForceToDisconnected ) || |
2918 { |
2910 { |
2919 return iLastPointerPosition; |
2911 return iLastPointerPosition; |
2920 } |
2912 } |
2921 |
2913 |
2922 // ----------------------------------------------------------------------------- |
2914 // ----------------------------------------------------------------------------- |
|
2915 // CFreestyleEmailUiAppUi::RunFakeSyncAnimL |
|
2916 // ----------------------------------------------------------------------------- |
|
2917 void CFreestyleEmailUiAppUi::RunFakeSyncAnimL() |
|
2918 { |
|
2919 FUNC_LOG; |
|
2920 |
|
2921 if ( iConnectionStatusVisible ) |
|
2922 { |
|
2923 // don't run if animation already ongoing |
|
2924 if ( !iConnectionStatusIconAnimTimer->IsActive() ) |
|
2925 { |
|
2926 TUid titlePaneUid = TUid::Uid( EEikStatusPaneUidTitle ); |
|
2927 CEikStatusPaneBase::TPaneCapabilities subPaneTitle = |
|
2928 StatusPane()->PaneCapabilities( titlePaneUid ); |
|
2929 if ( subPaneTitle.IsPresent() && subPaneTitle.IsAppOwned() ) |
|
2930 { |
|
2931 CAknTitlePane* titlePane = |
|
2932 static_cast<CAknTitlePane*>( |
|
2933 StatusPane()->ControlL( titlePaneUid ) ); |
|
2934 if ( titlePane ) |
|
2935 { |
|
2936 iConnectionIconBitmap = NULL; |
|
2937 iConnectionIconMask = NULL; |
|
2938 FsTextureManager()->ProvideBitmapL( |
|
2939 EStatusTextureSynchronising, |
|
2940 iConnectionIconBitmap, |
|
2941 iConnectionIconMask ); |
|
2942 if ( iConnectionIconBitmap && iConnectionIconMask ) |
|
2943 { |
|
2944 AknIconUtils::SetSize( |
|
2945 iConnectionIconBitmap, |
|
2946 LayoutHandler()->statusPaneIconSize(), |
|
2947 EAspectRatioNotPreserved ); |
|
2948 titlePane->SetSmallPicture( |
|
2949 iConnectionIconBitmap, |
|
2950 iConnectionIconMask, |
|
2951 ETrue ); |
|
2952 iConnectionStatusIconAnimTimer->Start( |
|
2953 KConnectionStatusIconRotationInterval ); |
|
2954 iFakeSyncAnimStopTimer->Start( |
|
2955 KFakeSyncAnimStopTimerInterval ); |
|
2956 titlePane->DrawNow(); |
|
2957 } |
|
2958 } |
|
2959 } |
|
2960 } |
|
2961 } |
|
2962 } |
|
2963 |
|
2964 // ----------------------------------------------------------------------------- |
2923 // |
2965 // |
2924 // ----------------------------------------------------------------------------- |
2966 // ----------------------------------------------------------------------------- |
2925 void CFreestyleEmailUiAppUi::ConstructNaviPaneL() |
2967 void CFreestyleEmailUiAppUi::ConstructNaviPaneL() |
2926 { |
2968 { |
2927 FUNC_LOG; |
2969 FUNC_LOG; |
2973 return decorator; |
3015 return decorator; |
2974 } |
3016 } |
2975 |
3017 |
2976 void CFreestyleEmailUiAppUi::TimerEventL( CFSEmailUiGenericTimer* aTriggeredTimer ) |
3018 void CFreestyleEmailUiAppUi::TimerEventL( CFSEmailUiGenericTimer* aTriggeredTimer ) |
2977 { |
3019 { |
2978 if (aTriggeredTimer == iConnectionStatusIconAnimTimer) |
3020 if ( aTriggeredTimer == iConnectionStatusIconAnimTimer ) |
2979 { |
3021 { |
2980 if ( iConnectionStatusVisible ) |
3022 if ( iConnectionStatusVisible ) |
2981 { |
3023 { |
2982 TUid titlePaneUid = TUid::Uid( EEikStatusPaneUidTitle ); |
3024 TUid titlePaneUid = TUid::Uid( EEikStatusPaneUidTitle ); |
2983 CEikStatusPaneBase::TPaneCapabilities subPaneTitle = |
3025 CEikStatusPaneBase::TPaneCapabilities subPaneTitle = |
2994 AknIconUtils::SetSizeAndRotation(iConnectionIconBitmap, iconSize, EAspectRatioNotPreserved, iConnectionStatusIconAngle); |
3036 AknIconUtils::SetSizeAndRotation(iConnectionIconBitmap, iconSize, EAspectRatioNotPreserved, iConnectionStatusIconAngle); |
2995 titlePane->DrawNow(); |
3037 titlePane->DrawNow(); |
2996 iConnectionStatusIconAnimTimer->Start(KConnectionStatusIconRotationInterval); |
3038 iConnectionStatusIconAnimTimer->Start(KConnectionStatusIconRotationInterval); |
2997 } |
3039 } |
2998 } |
3040 } |
|
3041 } |
|
3042 if ( aTriggeredTimer == iFakeSyncAnimStopTimer ) |
|
3043 { |
|
3044 // Just call the UpdateTitlePaneConnectionStatus. |
|
3045 // The method will put the correct sync icon to title pane |
|
3046 UpdateTitlePaneConnectionStatus(); |
2999 } |
3047 } |
3000 } |
3048 } |
3001 |
3049 |
3002 // ----------------------------------------------------------------------------- |
3050 // ----------------------------------------------------------------------------- |
3003 // CFreestyleEmailUiAppUi::SetFocusVisibility |
3051 // CFreestyleEmailUiAppUi::SetFocusVisibility |