widgets/widgetapp/src/WidgetUiWindowManager.cpp
changeset 36 0ed94ceaa377
parent 27 60c5402cb945
child 37 cb62a4f66ebe
--- a/widgets/widgetapp/src/WidgetUiWindowManager.cpp	Tue Nov 24 09:02:20 2009 +0200
+++ b/widgets/widgetapp/src/WidgetUiWindowManager.cpp	Thu Dec 17 09:20:16 2009 +0200
@@ -25,23 +25,23 @@
 #include "WidgetInstallerInternalCRKeys.h"
 #include "SWInstWidgetUid.h"
 #include "widgetappdefs.rh"
-#include "Browser_platform_variant.hrh"
+#include "browser_platform_variant.hrh"
 #ifdef BRDO_WRT_HS_FF
 #include "cpspublisher.h"
 #endif
 
 #include <WidgetUi.rsg>
-#include <BrCtlInterface.h>
-#include <WidgetRegistryConstants.h>
+#include <brctlinterface.h>
+#include <widgetregistryconstants.h>
 #include <centralrepository.h>
 #include <StringLoader.h>
 #include <AknNoteDialog.h>
-#include <BrowserDialogsProvider.h>
+#include <browserdialogsprovider.h>
 #include <S32FILE.H>
 #include <aknnotewrappers.h>
 #include "cpglobals.h" // CPS string definitions.
 
-#include <InternetConnectionManager.h>
+#include <internetconnectionmanager.h>
 #include <ActiveApDb.h>
 #include <oommonitorsession.h>
 #include <aknglobalnote.h>
@@ -343,34 +343,40 @@
             {
             iNetworkMode = EOnlineMode;
             CWidgetUiWindow* wdgt_window( GetWindow( aUid ) );
-#ifdef BRDO_WRT_HS_FF
-            if ( wdgt_window->NetworkModeWait()->IsStarted() )
+            if (wdgt_window)
                 {
-                wdgt_window->NetworkModeWait()->AsyncStop();
+#ifdef BRDO_WRT_HS_FF
+                if ( wdgt_window->NetworkModeWait()->IsStarted() )
+                    {
+                    wdgt_window->NetworkModeWait()->AsyncStop();
+                    }
+#endif
+                wdgt_window->DetermineNetworkState();
                 }
-#endif
-            wdgt_window->DetermineNetworkState();
             }
             break;
        case WidgetOffline:
             {
             iNetworkMode = EOfflineMode;
             CWidgetUiWindow* wdgt_window( GetWindow( aUid ) );
+            if (wdgt_window)
+            	{
 #ifdef BRDO_WRT_HS_FF
-            if ( wdgt_window->NetworkModeWait()->IsStarted() )
-                {
-                wdgt_window->NetworkModeWait()->AsyncStop();
-                }
+                if ( wdgt_window->NetworkModeWait()->IsStarted() )
+                    {
+                    wdgt_window->NetworkModeWait()->AsyncStop();
+                    }
 #endif
-            // if no full view widgets open, then close the network connection
-            if ( ( !FullViewWidgetsOpen() ) && ( iConnection->Connected() ) )
-                {
-                wdgt_window->Engine()->HandleCommandL( 
-                        (TInt)TBrCtlDefs::ECommandIdBase +
-                        (TInt)TBrCtlDefs::ECommandDisconnect );
-                iConnection->StopConnectionL();
+                // if no full view widgets open, then close the network connection
+                if ( ( !FullViewWidgetsOpen() ) && ( iConnection->Connected() ) )
+                    {
+                    wdgt_window->Engine()->HandleCommandL( 
+                            (TInt)TBrCtlDefs::ECommandIdBase +
+                            (TInt)TBrCtlDefs::ECommandDisconnect );
+                    iConnection->StopConnectionL();
+                    }
+                wdgt_window->DetermineNetworkState();
                 }
-            wdgt_window->DetermineNetworkState();
             }
             break;
        case WidgetRestart:
@@ -997,6 +1003,9 @@
 #ifdef BRDO_WRT_HS_FF 
         wdgt_window->Engine()->MakeVisible( EFalse );
         wdgt_window->Engine()->SetRect( iCpsPublisher->BitmapSize());
+        //When HS comes to foreground show the latest updatd content on HS.
+        //Relayout can sometimes happen only when widget in FullView.
+        wdgt_window->PublishSnapShot();
 #endif
         }
     }
@@ -1397,6 +1406,11 @@
     else
         {
         NotifyCommandHandled();
+        TBool lastOne( iWidgetUiWindowManager->WindowListCount() == 0 );
+        if( lastOne )
+            {
+            iWidgetUiWindowManager->AppUi().Exit();
+            }
         iWidgetUiWindowManager->SendAppToBackground();  
         iWidgetUiWindowManager->WidgetUIClientSession().SetActive( iUid, EFalse );
         }