From e497b299846293f001ad98f2b7dca3e68db2bf26 Mon Sep 17 00:00:00 2001
From: Christian Persch <chpe@cvs.gnome.org>
Date: Sat, 26 Jun 2004 18:28:44 +0000
Subject: Implement File->Work Off-Line command and backend. No
 DBUS/HAL/whatever

2004-06-26  Christian Persch  <chpe@cvs.gnome.org>

	* data/ui/epiphany-ui.xml:
	* embed/ephy-embed-single.c: (ephy_embed_single_iface_init),
	(ephy_embed_single_set_offline_mode),
	(ephy_embed_single_get_offline_mode):
	* embed/ephy-embed-single.h:
	* embed/mozilla/EphySingle.cpp:
	* embed/mozilla/mozilla-embed-single.cpp:
	* src/ephy-window.c: (network_status_changed), (ephy_window_init),
	(ephy_window_finalize):
	* src/window-commands.c: (window_cmd_file_save_as),
	(window_cmd_file_work_offline):
	* src/window-commands.h:

	Implement File->Work Off-Line command and backend.
	No DBUS/HAL/whatever integration yet.
---
 embed/mozilla/EphySingle.cpp | 35 ++++++++++++++++++++++++-----------
 1 file changed, 24 insertions(+), 11 deletions(-)

(limited to 'embed/mozilla/EphySingle.cpp')

diff --git a/embed/mozilla/EphySingle.cpp b/embed/mozilla/EphySingle.cpp
index b667c16d1..e059b5344 100644
--- a/embed/mozilla/EphySingle.cpp
+++ b/embed/mozilla/EphySingle.cpp
@@ -37,10 +37,9 @@
 NS_IMPL_ISUPPORTS1(EphySingle, nsIObserver)
 
 EphySingle::EphySingle()
+: mOwner(nsnull)
 {
-	LOG ("EphySingle constructor")
-
-	mOwner = nsnull;
+	LOG ("EphySingle ctor")
 }
 
 nsresult
@@ -48,14 +47,17 @@ EphySingle::Init (EphyEmbedSingle *aOwner)
 {
 	LOG ("EphySingle::Init")
 
-	mOwner = aOwner;
-
 	mObserverService = do_GetService ("@mozilla.org/observer-service;1");
 	NS_ENSURE_TRUE (mObserverService, NS_ERROR_FAILURE);
 
-	mObserverService->AddObserver (this, "cookie-changed", PR_FALSE);
-	mObserverService->AddObserver (this, "cookie-rejected", PR_FALSE);
-	mObserverService->AddObserver (this, "perm-changed", PR_FALSE);
+	nsresult rv;
+	rv = mObserverService->AddObserver (this, "cookie-changed", PR_TRUE);
+	rv |= mObserverService->AddObserver (this, "cookie-rejected", PR_TRUE);
+	rv |= mObserverService->AddObserver (this, "perm-changed", PR_TRUE);
+	rv |= mObserverService->AddObserver (this, "network:offline-status-changed", PR_TRUE);
+	NS_ENSURE_SUCCESS (rv, NS_ERROR_FAILURE);
+
+	mOwner = aOwner;
 
 	return NS_OK;
 }
@@ -63,11 +65,14 @@ EphySingle::Init (EphyEmbedSingle *aOwner)
 nsresult
 EphySingle::Detach ()
 {
+	LOG ("EphySingle::Detach")
+
 	if (mObserverService)
 	{
 		mObserverService->RemoveObserver (this, "cookie-changed");
 		mObserverService->RemoveObserver (this, "cookie-rejected");
 		mObserverService->RemoveObserver (this, "perm-changed");
+		mObserverService->RemoveObserver (this, "network:offline-status-changed");
 	}
 
 	return NS_OK;
@@ -75,9 +80,8 @@ EphySingle::Detach ()
 
 EphySingle::~EphySingle()
 {
-	LOG ("EphySingle destructor")
+	LOG ("EphySingle dtor")
 
-	Detach();
 	mOwner = nsnull;
 }
 
@@ -202,9 +206,18 @@ NS_IMETHODIMP EphySingle::Observe(nsISupports *aSubject,
 			rv = NS_ERROR_FAILURE;
 		}
 	}
+	else if (strcmp (aTopic, "network:offline-status-changed") == 0)
+	{
+		/* aData is either (PRUnichar[]) "offline" or "online" */
+		gboolean offline;
+
+		offline = (aData[1] == 'f');
+
+		g_signal_emit_by_name (mOwner, "network-status", offline);
+	}
 	else
 	{
-		g_warning ("EphySingle observed unknown topic!\n");
+		g_warning ("EphySingle observed unknown topic '%s'!\n", aTopic);
 		rv = NS_ERROR_FAILURE;
 	}
 
-- 
cgit