aboutsummaryrefslogtreecommitdiffstats
path: root/embed/xulrunner/components/EphySidebar.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'embed/xulrunner/components/EphySidebar.cpp')
-rw-r--r--embed/xulrunner/components/EphySidebar.cpp161
1 files changed, 161 insertions, 0 deletions
diff --git a/embed/xulrunner/components/EphySidebar.cpp b/embed/xulrunner/components/EphySidebar.cpp
new file mode 100644
index 000000000..1225e2d9a
--- /dev/null
+++ b/embed/xulrunner/components/EphySidebar.cpp
@@ -0,0 +1,161 @@
+/*
+ * Copyright © 2002 Philip Langdale
+ * Copyright © 2004 Crispin Flowerday
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * $Id$
+ */
+
+#include <xpcom-config.h>
+#include "config.h"
+
+#include <nsStringGlue.h>
+
+#include <nsICategoryManager.h>
+#include <nsIClassInfoImpl.h>
+#include <nsIScriptNameSpaceManager.h>
+#include <nsMemory.h>
+#include <nsServiceManagerUtils.h>
+#include <nsXPCOMCID.h>
+
+#include "ephy-debug.h"
+#include "ephy-embed-shell.h"
+#include "ephy-embed-single.h"
+
+#include "EphySidebar.h"
+
+NS_IMPL_ISUPPORTS1_CI(EphySidebar, nsISidebar)
+
+EphySidebar::EphySidebar()
+{
+}
+
+EphySidebar::~EphySidebar()
+{
+}
+
+/* void addPanel (in wstring aTitle, in string aContentURL, in string aCustomizeURL); */
+NS_IMETHODIMP
+EphySidebar::AddPanel (const PRUnichar *aTitle,
+ const char *aContentURL,
+ const char *aCustomizeURL)
+{
+ NS_ENSURE_ARG (aTitle);
+ NS_ENSURE_ARG (aContentURL);
+
+ nsCString title;
+ EphyEmbedSingle *single;
+
+ /* FIXME: length-limit string */
+ NS_UTF16ToCString (nsDependentString(aTitle),
+ NS_CSTRING_ENCODING_UTF8, title);
+
+ LOG ("Adding sidebar, url=%s title=%s", aContentURL, title.get());
+
+ single = EPHY_EMBED_SINGLE (ephy_embed_shell_get_embed_single (embed_shell));
+
+ gboolean result = FALSE;
+ g_signal_emit_by_name (single, "add-sidebar",
+ aContentURL, title.get(), &result);
+
+ return NS_OK;
+}
+
+/* void addPersistentPanel (in wstring aTitle, in string aContentURL, in string aCustomizeURL); */
+NS_IMETHODIMP
+EphySidebar::AddPersistentPanel (const PRUnichar *aTitle,
+ const char *aContentURL,
+ const char *aCustomizeURL)
+{
+ return AddPanel (aTitle, aContentURL, aCustomizeURL);
+}
+
+/* void addSearchEngine (in string engineURL, in string iconURL, in wstring suggestedTitle, in wst
+ring suggestedCategory); */
+NS_IMETHODIMP
+EphySidebar::AddSearchEngine (const char *aEngineURL,
+ const char *aIconURL,
+ const PRUnichar *aSuggestedTitle,
+ const PRUnichar *aSuggestedCategory)
+{
+ NS_ENSURE_ARG (aSuggestedTitle);
+ NS_ENSURE_ARG (aIconURL);
+ NS_ENSURE_ARG (aEngineURL);
+
+ nsCString title;
+ EphyEmbedSingle *single;
+
+ /* FIXME: length-limit string */
+ NS_UTF16ToCString (nsDependentString(aSuggestedTitle),
+ NS_CSTRING_ENCODING_UTF8, title);
+
+ LOG ("Adding search engine, engineurl=%s iconurl=%s title=%s", aEngineURL, aIconURL, title.get());
+
+ single = EPHY_EMBED_SINGLE (ephy_embed_shell_get_embed_single (embed_shell));
+
+ gboolean result = FALSE;
+ g_signal_emit_by_name (single, "add-search-engine",
+ aEngineURL, aIconURL, title.get(), &result);
+
+ return NS_OK;
+}
+
+/* void addMicrosummaryGenerator (in string generatorURL); */
+NS_IMETHODIMP
+EphySidebar::AddMicrosummaryGenerator (const char *generatorURL)
+{
+ return NS_ERROR_NOT_IMPLEMENTED;
+}
+
+/* static */ NS_METHOD
+EphySidebar::Register (nsIComponentManager* aComponentManager,
+ nsIFile* aPath,
+ const char* aRegistryLocation,
+ const char* aComponentType,
+ const nsModuleComponentInfo* aInfo)
+{
+ nsresult rv;
+ nsCOMPtr<nsICategoryManager> catMan (do_GetService(NS_CATEGORYMANAGER_CONTRACTID, &rv));
+ NS_ENSURE_SUCCESS (rv, rv);
+
+ rv = catMan->AddCategoryEntry (JAVASCRIPT_GLOBAL_PROPERTY_CATEGORY,
+ "sidebar",
+ NS_SIDEBAR_CONTRACTID,
+ PR_FALSE /* don't persist */,
+ PR_TRUE /* replace */,
+ nsnull);
+ NS_ENSURE_SUCCESS (rv, rv);
+
+ return rv;
+}
+
+/* static */ NS_METHOD
+EphySidebar::Unregister (nsIComponentManager* aComponentManager,
+ nsIFile* aPath,
+ const char* aRegistryLocation,
+ const nsModuleComponentInfo* aInfo)
+{
+ nsresult rv;
+ nsCOMPtr<nsICategoryManager> catMan (do_GetService(NS_CATEGORYMANAGER_CONTRACTID, &rv));
+ NS_ENSURE_SUCCESS (rv, rv);
+
+ rv = catMan->DeleteCategoryEntry (JAVASCRIPT_GLOBAL_PROPERTY_CATEGORY,
+ "sidebar",
+ PR_FALSE /* don't persist */);
+ NS_ENSURE_SUCCESS (rv, rv);
+
+ return rv;
+}