diff options
author | Crispin Flowerday <gnome@flowerday.cx> | 2005-01-02 05:32:57 +0800 |
---|---|---|
committer | Crispin Flowerday <crispin@src.gnome.org> | 2005-01-02 05:32:57 +0800 |
commit | 8999f2e890891e4286f501d2076716d523c7d169 (patch) | |
tree | fb44fc505779c839c0ee36dbf9d82772f8e470cb /embed/mozilla/EphySidebar.cpp | |
parent | 478e8b73f9a7302f0c30aaa685fc3104b99d7480 (diff) | |
download | gsoc2013-epiphany-8999f2e890891e4286f501d2076716d523c7d169.tar gsoc2013-epiphany-8999f2e890891e4286f501d2076716d523c7d169.tar.gz gsoc2013-epiphany-8999f2e890891e4286f501d2076716d523c7d169.tar.bz2 gsoc2013-epiphany-8999f2e890891e4286f501d2076716d523c7d169.tar.lz gsoc2013-epiphany-8999f2e890891e4286f501d2076716d523c7d169.tar.xz gsoc2013-epiphany-8999f2e890891e4286f501d2076716d523c7d169.tar.zst gsoc2013-epiphany-8999f2e890891e4286f501d2076716d523c7d169.zip |
Add an "add-sidebar" signal on the EphyEmbedSingle interface, it gets
2005-01-01 Crispin Flowerday <gnome@flowerday.cx>
* embed/ephy-embed-single.c: (ephy_embed_single_iface_init):
* embed/ephy-embed-single.h:
* embed/mozilla/EphySidebar.cpp:
* embed/mozilla/EphySidebar.h:
* embed/mozilla/Makefile.am:
* embed/mozilla/MozRegisterComponents.cpp:
Add an "add-sidebar" signal on the EphyEmbedSingle interface,
it gets emitted when a user clicks on a link that wants
to add a url to the sidebar.
Diffstat (limited to 'embed/mozilla/EphySidebar.cpp')
-rw-r--r-- | embed/mozilla/EphySidebar.cpp | 181 |
1 files changed, 181 insertions, 0 deletions
diff --git a/embed/mozilla/EphySidebar.cpp b/embed/mozilla/EphySidebar.cpp new file mode 100644 index 000000000..9b2ea9cda --- /dev/null +++ b/embed/mozilla/EphySidebar.cpp @@ -0,0 +1,181 @@ +/* + * Copyright (C) 2002 Philip Langdale + * Copyright (C) 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * $Id$ + */ + +#include "mozilla-config.h" + +#include "config.h" + +#include <nsCOMPtr.h> +#include <nsCRT.h> +#include <nsIProgrammingLanguage.h> + +#define MOZILLA_STRICT_API +#include <nsEmbedString.h> +#undef MOZILLA_STRICT_API + +#include "EphySidebar.h" +#include "ephy-embed-shell.h" +#include "ephy-embed-single.h" +#include "ephy-debug.h" + +/* Implementation file */ +NS_IMPL_ISUPPORTS2(EphySidebar, nsISidebar, nsIClassInfo) + +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) +{ + nsEmbedCString title; + EphyEmbedSingle *single; + + NS_UTF16ToCString (nsEmbedString(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)); + + g_signal_emit_by_name (single, "add-sidebar", + aContentURL, title.get()); + + 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 NS_ERROR_NOT_IMPLEMENTED; +} + +/* void addSearchEngine (in string engineURL, in string iconURL, in wstring suggestedTitle, in wst +ring suggestedCategory); */ +NS_IMETHODIMP +EphySidebar::AddSearchEngine (const char *engineURL, + const char *iconURL, + const PRUnichar *suggestedTitle, + const PRUnichar *suggestedCategory) +{ + return NS_ERROR_NOT_IMPLEMENTED; +} + + + +//------------------------------------------------------------------------------ +//nsIClassInfo Impl. +//------------------------------------------------------------------------------ + +/* void getInterfaces (out PRUint32 count, [array, size_is (count), retval] out nsIIDPtr array); */ +NS_IMETHODIMP EphySidebar::GetInterfaces(PRUint32 *aCount, nsIID * **aArray) +{ + PRUint32 count = 2; + + *aCount = count; + + *aArray = NS_STATIC_CAST(nsIID **, nsMemory::Alloc(count * sizeof(nsIID *))); + NS_ENSURE_TRUE(*aArray, NS_ERROR_OUT_OF_MEMORY); + + nsIID *iid = NS_STATIC_CAST(nsIID *, + nsMemory::Clone(&(NS_GET_IID(nsISidebar)), + sizeof(nsIID))); + if (!iid) + { + NS_FREE_XPCOM_ALLOCATED_POINTER_ARRAY(0, *aArray); + + return NS_ERROR_OUT_OF_MEMORY; + } + (*aArray)[0] = iid; + + + iid = NS_STATIC_CAST(nsIID *, + nsMemory::Clone(&(NS_GET_IID(nsIClassInfo)), + sizeof(nsIID))); + if (!iid) + { + NS_FREE_XPCOM_ALLOCATED_POINTER_ARRAY(1, *aArray); + + return NS_ERROR_OUT_OF_MEMORY; + } + (*aArray)[1] = iid; + + return NS_OK; +} + +/* nsISupports getHelperForLanguage (in PRUint32 language); */ +NS_IMETHODIMP EphySidebar::GetHelperForLanguage(PRUint32 language, nsISupports **_retval) +{ + *_retval = nsnull; + return NS_OK; +} + +/* readonly attribute string contractID; */ +NS_IMETHODIMP EphySidebar::GetContractID(char * *aContractID) +{ + *aContractID = nsCRT::strdup(NS_SIDEBAR_CONTRACTID); + return NS_OK; +} + +/* readonly attribute string classDescription; */ +NS_IMETHODIMP EphySidebar::GetClassDescription(char * *aClassDescription) +{ + *aClassDescription = nsCRT::strdup("Sidebar"); + return NS_OK; +} + +/* readonly attribute nsCIDPtr classID; */ +NS_IMETHODIMP EphySidebar::GetClassID(nsCID * *aClassID) +{ + *aClassID = nsnull; + return NS_OK; +} + +/* readonly attribute PRUint32 implementationLanguage; */ +NS_IMETHODIMP EphySidebar::GetImplementationLanguage(PRUint32 *aImplementationLanguage) +{ + *aImplementationLanguage = nsIProgrammingLanguage::CPLUSPLUS; + return NS_OK; +} + +/* readonly attribute PRUint32 flags; */ +NS_IMETHODIMP EphySidebar::GetFlags(PRUint32 *aFlags) +{ + *aFlags = nsIClassInfo::DOM_OBJECT; + return NS_OK; +} + +/* [notxpcom] readonly attribute nsCID classIDNoAlloc; */ +NS_IMETHODIMP EphySidebar::GetClassIDNoAlloc(nsCID *aClassIDNoAlloc) +{ + return NS_ERROR_NOT_AVAILABLE; +} |