New method added to RDFCore: AddBookmark()

This commit is contained in:
rjc%netscape.com 1999-03-28 21:57:12 +00:00
parent 6da1d32e44
commit d57e357032
4 changed files with 94 additions and 20 deletions

View File

@ -36,16 +36,20 @@ public:
static const nsIID& GetIID() { static nsIID iid = NS_IDOMRDFCORE_IID; return iid; }
NS_IMETHOD DoSort(nsIDOMNode* aNode, const nsString& aSortResource, const nsString& aSortDirection)=0;
NS_IMETHOD AddBookmark(const nsString& aUrl, const nsString& aOptionalTitle)=0;
};
#define NS_DECL_IDOMRDFCORE \
NS_IMETHOD DoSort(nsIDOMNode* aNode, const nsString& aSortResource, const nsString& aSortDirection); \
NS_IMETHOD AddBookmark(const nsString& aUrl, const nsString& aOptionalTitle); \
#define NS_FORWARD_IDOMRDFCORE(_to) \
NS_IMETHOD DoSort(nsIDOMNode* aNode, const nsString& aSortResource, const nsString& aSortDirection) { return _to##DoSort(aNode, aSortResource, aSortDirection); } \
NS_IMETHOD AddBookmark(const nsString& aUrl, const nsString& aOptionalTitle) { return _to##AddBookmark(aUrl, aOptionalTitle); } \
extern "C" NS_DOM nsresult NS_InitRDFCoreClass(nsIScriptContext *aContext, void **aPrototype);

View File

@ -178,6 +178,45 @@ RDFCoreDoSort(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval
}
//
// Native method AddBookmark
//
PR_STATIC_CALLBACK(JSBool)
RDFCoreAddBookmark(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
nsIDOMRDFCore *nativeThis = (nsIDOMRDFCore*)JS_GetPrivate(cx, obj);
JSBool rBool = JS_FALSE;
nsAutoString b0;
nsAutoString b1;
*rval = JSVAL_NULL;
// If there's no private data, this must be the prototype, so ignore
if (nsnull == nativeThis) {
return JS_TRUE;
}
if (argc >= 2) {
nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]);
nsJSUtils::nsConvertJSValToString(b1, cx, argv[1]);
if (NS_OK != nativeThis->AddBookmark(b0, b1)) {
return JS_FALSE;
}
*rval = JSVAL_VOID;
}
else {
JS_ReportError(cx, "Function addBookmark requires 2 parameters");
return JS_FALSE;
}
return JS_TRUE;
}
/***********************************************************************/
//
// class for RDFCore
@ -211,6 +250,7 @@ static JSPropertySpec RDFCoreProperties[] =
static JSFunctionSpec RDFCoreMethods[] =
{
{"doSort", RDFCoreDoSort, 3},
{"addBookmark", RDFCoreAddBookmark, 2},
{0}
};

View File

@ -36,6 +36,7 @@
#include "nsIServiceManager.h"
#include "nsRDFCID.h"
#include "nsIXULSortService.h"
#include "nsIBookmarkDataSource.h"
// Globals
@ -45,12 +46,15 @@ static NS_DEFINE_IID(kIRDFCoreIID, NS_IDOMRDFCORE_IID);
static NS_DEFINE_IID(kIDOMDocumentIID, nsIDOMDocument::GetIID());
static NS_DEFINE_IID(kIDocumentIID, nsIDocument::GetIID());
static NS_DEFINE_IID(kRDFCoreCID, NS_RDFCORE_CID);
static NS_DEFINE_IID(kBrowserWindowCID, NS_BROWSER_WINDOW_CID);
static NS_DEFINE_CID(kRDFCoreCID, NS_RDFCORE_CID);
static NS_DEFINE_CID(kBrowserWindowCID, NS_BROWSER_WINDOW_CID);
static NS_DEFINE_IID(kXULSortServiceCID, NS_XULSORTSERVICE_CID);
static NS_DEFINE_CID(kXULSortServiceCID, NS_XULSORTSERVICE_CID);
static NS_DEFINE_IID(kIXULSortServiceIID, NS_IXULSORTSERVICE_IID);
static NS_DEFINE_CID(kRDFBookmarkDataSourceCID, NS_RDFBOOKMARKDATASOURCE_CID);
static NS_DEFINE_CID(kIRDFBookmarkDataSourceIID, NS_IRDFBOOKMARKDATASOURCE_IID);
/////////////////////////////////////////////////////////////////////////
// nsRDFCore
@ -135,33 +139,30 @@ NS_IMETHODIMP
nsRDFCore::DoSort(nsIDOMNode* node, const nsString& sortResource,
const nsString &sortDirection)
{
printf(" ***** nsRDFCore::DoSort entered!!! *****\n");
/*
if (nsnull == mScriptContext) {
return NS_ERROR_FAILURE;
}
*/
printf("----------------------------\n");
printf("-- Sort \n");
printf("----------------------------\n");
printf("Column: %s \n", sortResource.ToNewCString());
printf("Direction: %s \n", sortDirection.ToNewCString());
printf("----------------------------\n");
printf("----------------------------\n");
printf("-- Sort \n");
printf("-- Column: %s \n", sortResource.ToNewCString());
printf("-- Direction: %s \n", sortDirection.ToNewCString());
printf("----------------------------\n");
nsIXULSortService *gXULSortService = nsnull;
nsIXULSortService *XULSortService = nsnull;
nsresult rv = nsServiceManager::GetService(kXULSortServiceCID,
kIXULSortServiceIID, (nsISupports**) &gXULSortService);
if (nsnull != gXULSortService)
kIXULSortServiceIID, (nsISupports**) &XULSortService);
if (NS_SUCCEEDED(rv))
{
printf("\n******** YES, we got kXULSortServiceCID\n\n");
gXULSortService->DoSort(node, sortResource, sortDirection);
nsServiceManager::ReleaseService(kXULSortServiceCID, gXULSortService);
if (nsnull != XULSortService)
{
XULSortService->DoSort(node, sortResource, sortDirection);
nsServiceManager::ReleaseService(kXULSortServiceCID, XULSortService);
}
}
else printf("\n******** unable to obtain kXULSortServiceCID\n\n");
/*
if (nsnull != mScriptContext) {
@ -171,9 +172,37 @@ nsRDFCore::DoSort(nsIDOMNode* node, const nsString& sortResource,
mScriptContext->EvaluateString(mScript, url, 0, rVal, &isUndefined);
}
*/
return NS_OK;
return(rv);
}
NS_IMETHODIMP
nsRDFCore::AddBookmark(const nsString& aUrl, const nsString& aOptionalTitle)
{
printf("----------------------------\n");
printf("-- Add Bookmark \n");
printf("-- URL: %s \n", aUrl.ToNewCString());
printf("-- Title (opt): %s \n", aOptionalTitle.ToNewCString());
printf("----------------------------\n");
nsIRDFBookmarkDataSource *RDFBookmarkDataSource = nsnull;
nsresult rv = nsServiceManager::GetService(kRDFBookmarkDataSourceCID,
kIRDFBookmarkDataSourceIID, (nsISupports**) &RDFBookmarkDataSource);
if (NS_SUCCEEDED(rv))
{
if (nsnull != RDFBookmarkDataSource)
{
char *url = aUrl.ToNewCString();
char *optionalTitle = aOptionalTitle.ToNewCString();
rv = RDFBookmarkDataSource->AddBookmark(url, optionalTitle);
if (url) delete []url;
if (optionalTitle) delete []optionalTitle;
nsServiceManager::ReleaseService(kRDFBookmarkDataSourceCID,
RDFBookmarkDataSource);
}
}
return(rv);
}

View File

@ -50,6 +50,7 @@ class nsRDFCore : public nsBaseAppCore,
NS_IMETHOD SetDocumentCharset(const nsString& aCharset) { return nsBaseAppCore::SetDocumentCharset(aCharset); }
NS_IMETHOD DoSort(nsIDOMNode* node, const nsString& sortResource, const nsString& sortDirection);
NS_IMETHOD AddBookmark(const nsString& aUrl, const nsString& aOptionalTitle);
protected: