removed reference to nsIDataFlavor and merged nsITransferable and nsIGenericTransferable
git-svn-id: svn://10.0.0.236/trunk@31462 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
parent
0992ccb525
commit
089a8e7024
@ -81,14 +81,12 @@
|
||||
#include "nsWidgetsCID.h"
|
||||
#include "nsIClipboard.h"
|
||||
#include "nsITransferable.h"
|
||||
#include "nsIGenericTransferable.h"
|
||||
#include "nsIDataFlavor.h"
|
||||
#include "nsITransferable.h"
|
||||
#include "nsIFormatConverter.h"
|
||||
|
||||
// Drag & Drop, Clipboard Support
|
||||
static NS_DEFINE_CID(kCClipboardCID, NS_CLIPBOARD_CID);
|
||||
static NS_DEFINE_CID(kCGenericTransferableCID, NS_GENERICTRANSFERABLE_CID);
|
||||
static NS_DEFINE_IID(kCDataFlavorCID, NS_DATAFLAVOR_CID);
|
||||
static NS_DEFINE_CID(kCTransferableCID, NS_TRANSFERABLE_CID);
|
||||
static NS_DEFINE_IID(kCXIFFormatConverterCID, NS_XIFFORMATCONVERTER_CID);
|
||||
|
||||
static NS_DEFINE_IID(kIContentIID, NS_ICONTENT_IID);
|
||||
@ -849,6 +847,7 @@ NS_IMETHODIMP nsEditor::Copy()
|
||||
|
||||
NS_IMETHODIMP nsEditor::Paste()
|
||||
{
|
||||
|
||||
//printf("nsEditor::Paste\n");
|
||||
nsString stuffToPaste;
|
||||
|
||||
@ -859,49 +858,32 @@ NS_IMETHODIMP nsEditor::Paste()
|
||||
(nsISupports **)&clipboard);
|
||||
|
||||
// Create generic Transferable for getting the data
|
||||
nsCOMPtr<nsIGenericTransferable> genericTrans;
|
||||
rv = nsComponentManager::CreateInstance(kCGenericTransferableCID, nsnull,
|
||||
nsIGenericTransferable::GetIID(),
|
||||
(void**) getter_AddRefs(genericTrans));
|
||||
nsCOMPtr<nsITransferable> trans;
|
||||
rv = nsComponentManager::CreateInstance(kCTransferableCID, nsnull,
|
||||
nsITransferable::GetIID(),
|
||||
(void**) getter_AddRefs(trans));
|
||||
if (NS_OK == rv) {
|
||||
// Get the nsITransferable interface for getting the data from the clipboard
|
||||
nsCOMPtr<nsITransferable> trans(do_QueryInterface(genericTrans));
|
||||
if (trans) {
|
||||
nsCOMPtr<nsIDataFlavor> flavor;
|
||||
|
||||
// Create the desired DataFlavor for the type of data we want to get out of the transferable
|
||||
rv = nsComponentManager::CreateInstance(kCDataFlavorCID, nsnull, nsIDataFlavor::GetIID(), (void**) getter_AddRefs(flavor));
|
||||
if (NS_OK == rv) {
|
||||
// Initialize the DataFlavor and set it into the GenericTransferable
|
||||
flavor->Init(kTextMime, kTextMime);
|
||||
nsAutoString flavor(kTextMime);
|
||||
|
||||
//#define TEST_IS_DATA_FLAVOR_SUPPORTED 1
|
||||
#ifdef TEST_IS_DATA_FLAVOR_SUPPORTED
|
||||
// For testing IsDataFlavorSupported:
|
||||
rv = trans->IsDataFlavorSupported(flavor);
|
||||
if (!NS_SUCCEEDED(rv)) {
|
||||
printf("\07>>>>>>>>>>>>> transferable doesn't support text data flavor\n");
|
||||
//return rv;
|
||||
}
|
||||
#endif /* TEST_IS_DATA_FLAVOR_SUPPORTED */
|
||||
trans->AddDataFlavor(&flavor);
|
||||
|
||||
genericTrans->AddDataFlavor(flavor);
|
||||
// Get the Data from the clipboard
|
||||
clipboard->GetData(trans);
|
||||
|
||||
// Get the Data from the clipboard
|
||||
clipboard->GetData(trans);
|
||||
// Now we ask the transferable for the data
|
||||
// it still owns the data, we just have a pointer to it.
|
||||
// If it can't support a "text" output of the data the call will fail
|
||||
char *str = 0;
|
||||
PRUint32 len;
|
||||
if (NS_OK == trans->GetTransferData(&flavor, (void **)&str, &len)) {
|
||||
|
||||
// Now we ask the transferable for the data
|
||||
// it still owns the data, we just have a pointer to it.
|
||||
// If it can't support a "text" output of the data the call will fail
|
||||
char *str = 0;
|
||||
PRUint32 len;
|
||||
if (NS_OK == trans->GetTransferData(flavor, (void **)&str, &len)) {
|
||||
|
||||
// Make adjustments for null terminated strings
|
||||
if (str && len > 0) {
|
||||
// stuffToPaste is ready for insertion into the content
|
||||
stuffToPaste.SetString(str, len);
|
||||
}
|
||||
// Make adjustments for null terminated strings
|
||||
if (str && len > 0) {
|
||||
// stuffToPaste is ready for insertion into the content
|
||||
stuffToPaste.SetString(str, len);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -48,13 +48,11 @@ static NS_DEFINE_IID(kIDOMCharacterDataIID, NS_IDOMCHARACTERDATA_IID);
|
||||
#include "nsIDragService.h"
|
||||
#include "nsIDragSession.h"
|
||||
#include "nsITransferable.h"
|
||||
#include "nsIGenericTransferable.h"
|
||||
#include "nsIDataFlavor.h"
|
||||
#include "nsIFormatConverter.h"
|
||||
|
||||
// Drag & Drop, Clipboard Support
|
||||
static NS_DEFINE_CID(kCDragServiceCID, NS_DRAGSERVICE_CID);
|
||||
static NS_DEFINE_CID(kCGenericTransferableCID, NS_GENERICTRANSFERABLE_CID);
|
||||
static NS_DEFINE_CID(kCTransferableCID, NS_TRANSFERABLE_CID);
|
||||
static NS_DEFINE_IID(kCDataFlavorCID, NS_DATAFLAVOR_CID);
|
||||
static NS_DEFINE_IID(kCXIFFormatConverterCID, NS_XIFFORMATCONVERTER_CID);
|
||||
|
||||
@ -924,19 +922,6 @@ NS_IMPL_RELEASE(nsTextEditorDragListener)
|
||||
nsTextEditorDragListener::nsTextEditorDragListener()
|
||||
{
|
||||
NS_INIT_REFCNT();
|
||||
|
||||
nsresult rv = nsComponentManager::CreateInstance(kCDataFlavorCID, nsnull,
|
||||
nsIDataFlavor::GetIID(),
|
||||
(void**) getter_AddRefs(mTextDataFlavor));
|
||||
if (NS_OK == rv) {
|
||||
mTextDataFlavor->Init(kTextMime, "");
|
||||
}
|
||||
|
||||
/*rv = nsComponentManager::CreateInstance(kCDataFlavorCID, nsnull,
|
||||
nsIDataFlavor::GetIID(), (void**) getter_AddRefs(mImageDataFlavor));
|
||||
if (NS_OK == rv) {
|
||||
mImageDataFlavor->Init(kJPEGImageMime, "");
|
||||
}*/
|
||||
}
|
||||
|
||||
nsTextEditorDragListener::~nsTextEditorDragListener()
|
||||
@ -991,7 +976,8 @@ nsTextEditorDragListener::DragEnter(nsIDOMEvent* aDragEvent)
|
||||
if (NS_OK == rv) {
|
||||
nsCOMPtr<nsIDragSession> dragSession(do_QueryInterface(dragService));
|
||||
|
||||
if (dragSession && (NS_OK == dragSession->IsDataFlavorSupported(mTextDataFlavor))) {
|
||||
nsAutoString textFlavor(kTextMime);
|
||||
if (dragSession && NS_OK == dragSession->IsDataFlavorSupported(&textFlavor)) {
|
||||
dragSession->SetCanDrop(PR_TRUE);
|
||||
}
|
||||
|
||||
@ -1012,8 +998,8 @@ nsTextEditorDragListener::DragOver(nsIDOMEvent* aDragEvent)
|
||||
(nsISupports **)&dragService);
|
||||
if (NS_OK == rv) {
|
||||
nsCOMPtr<nsIDragSession> dragSession(do_QueryInterface(dragService));
|
||||
|
||||
if (dragSession && NS_OK == dragSession->IsDataFlavorSupported(mTextDataFlavor)) {
|
||||
nsAutoString textFlavor(kTextMime);
|
||||
if (dragSession && NS_OK == dragSession->IsDataFlavorSupported(&textFlavor)) {
|
||||
dragSession->SetCanDrop(PR_TRUE);
|
||||
}
|
||||
|
||||
@ -1051,18 +1037,19 @@ nsTextEditorDragListener::DragDrop(nsIDOMEvent* aMouseEvent)
|
||||
if (dragSession) {
|
||||
|
||||
// Create transferable for getting the drag data
|
||||
nsCOMPtr<nsIGenericTransferable> genericTrans;
|
||||
rv = nsComponentManager::CreateInstance(kCGenericTransferableCID, nsnull,
|
||||
nsIGenericTransferable::GetIID(),
|
||||
(void**) getter_AddRefs(genericTrans));
|
||||
nsCOMPtr<nsITransferable> trans;
|
||||
rv = nsComponentManager::CreateInstance(kCTransferableCID, nsnull,
|
||||
nsITransferable::GetIID(),
|
||||
(void**) getter_AddRefs(trans));
|
||||
if (NS_OK == rv) {
|
||||
// Add the text Flavor to the transferable,
|
||||
// because that is the only type of data we are looking for at the moment
|
||||
genericTrans->AddDataFlavor(mTextDataFlavor);
|
||||
nsAutoString textMime(kTextMime);
|
||||
trans->AddDataFlavor(&textMime);
|
||||
//genericTrans->AddDataFlavor(mImageDataFlavor);
|
||||
|
||||
// Query to get the standard interface that the drag service knows about
|
||||
nsCOMPtr<nsITransferable> trans (do_QueryInterface(genericTrans));
|
||||
nsCOMPtr<nsITransferable> trans (do_QueryInterface(trans));
|
||||
if (trans) {
|
||||
|
||||
// Fill the transferable with our requested data flavor
|
||||
@ -1072,7 +1059,7 @@ nsTextEditorDragListener::DragDrop(nsIDOMEvent* aMouseEvent)
|
||||
// Note: the transferable owns the pointer to the data
|
||||
char *str = 0;
|
||||
PRUint32 len;
|
||||
trans->GetTransferData(mTextDataFlavor, (void **)&str, &len);
|
||||
trans->GetTransferData(&textMime, (void **)&str, &len);
|
||||
|
||||
// If the string was not empty then paste it in
|
||||
if (str) {
|
||||
|
||||
@ -26,7 +26,6 @@
|
||||
#include "nsIDOMDragListener.h"
|
||||
#include "nsIDOMCompositionListener.h"
|
||||
#include "nsITextEditor.h"
|
||||
#include "nsIDataFlavor.h"
|
||||
#include "nsCOMPtr.h"
|
||||
|
||||
/** The nsTextEditorKeyListener public nsIDOMKeyListener
|
||||
@ -199,9 +198,6 @@ public:
|
||||
protected:
|
||||
nsCOMPtr<nsITextEditor> mEditor;
|
||||
|
||||
nsCOMPtr<nsIDataFlavor> mTextDataFlavor;
|
||||
nsCOMPtr<nsIDataFlavor> mImageDataFlavor;
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
@ -81,14 +81,12 @@
|
||||
#include "nsWidgetsCID.h"
|
||||
#include "nsIClipboard.h"
|
||||
#include "nsITransferable.h"
|
||||
#include "nsIGenericTransferable.h"
|
||||
#include "nsIDataFlavor.h"
|
||||
#include "nsITransferable.h"
|
||||
#include "nsIFormatConverter.h"
|
||||
|
||||
// Drag & Drop, Clipboard Support
|
||||
static NS_DEFINE_CID(kCClipboardCID, NS_CLIPBOARD_CID);
|
||||
static NS_DEFINE_CID(kCGenericTransferableCID, NS_GENERICTRANSFERABLE_CID);
|
||||
static NS_DEFINE_IID(kCDataFlavorCID, NS_DATAFLAVOR_CID);
|
||||
static NS_DEFINE_CID(kCTransferableCID, NS_TRANSFERABLE_CID);
|
||||
static NS_DEFINE_IID(kCXIFFormatConverterCID, NS_XIFFORMATCONVERTER_CID);
|
||||
|
||||
static NS_DEFINE_IID(kIContentIID, NS_ICONTENT_IID);
|
||||
@ -849,6 +847,7 @@ NS_IMETHODIMP nsEditor::Copy()
|
||||
|
||||
NS_IMETHODIMP nsEditor::Paste()
|
||||
{
|
||||
|
||||
//printf("nsEditor::Paste\n");
|
||||
nsString stuffToPaste;
|
||||
|
||||
@ -859,49 +858,32 @@ NS_IMETHODIMP nsEditor::Paste()
|
||||
(nsISupports **)&clipboard);
|
||||
|
||||
// Create generic Transferable for getting the data
|
||||
nsCOMPtr<nsIGenericTransferable> genericTrans;
|
||||
rv = nsComponentManager::CreateInstance(kCGenericTransferableCID, nsnull,
|
||||
nsIGenericTransferable::GetIID(),
|
||||
(void**) getter_AddRefs(genericTrans));
|
||||
nsCOMPtr<nsITransferable> trans;
|
||||
rv = nsComponentManager::CreateInstance(kCTransferableCID, nsnull,
|
||||
nsITransferable::GetIID(),
|
||||
(void**) getter_AddRefs(trans));
|
||||
if (NS_OK == rv) {
|
||||
// Get the nsITransferable interface for getting the data from the clipboard
|
||||
nsCOMPtr<nsITransferable> trans(do_QueryInterface(genericTrans));
|
||||
if (trans) {
|
||||
nsCOMPtr<nsIDataFlavor> flavor;
|
||||
|
||||
// Create the desired DataFlavor for the type of data we want to get out of the transferable
|
||||
rv = nsComponentManager::CreateInstance(kCDataFlavorCID, nsnull, nsIDataFlavor::GetIID(), (void**) getter_AddRefs(flavor));
|
||||
if (NS_OK == rv) {
|
||||
// Initialize the DataFlavor and set it into the GenericTransferable
|
||||
flavor->Init(kTextMime, kTextMime);
|
||||
nsAutoString flavor(kTextMime);
|
||||
|
||||
//#define TEST_IS_DATA_FLAVOR_SUPPORTED 1
|
||||
#ifdef TEST_IS_DATA_FLAVOR_SUPPORTED
|
||||
// For testing IsDataFlavorSupported:
|
||||
rv = trans->IsDataFlavorSupported(flavor);
|
||||
if (!NS_SUCCEEDED(rv)) {
|
||||
printf("\07>>>>>>>>>>>>> transferable doesn't support text data flavor\n");
|
||||
//return rv;
|
||||
}
|
||||
#endif /* TEST_IS_DATA_FLAVOR_SUPPORTED */
|
||||
trans->AddDataFlavor(&flavor);
|
||||
|
||||
genericTrans->AddDataFlavor(flavor);
|
||||
// Get the Data from the clipboard
|
||||
clipboard->GetData(trans);
|
||||
|
||||
// Get the Data from the clipboard
|
||||
clipboard->GetData(trans);
|
||||
// Now we ask the transferable for the data
|
||||
// it still owns the data, we just have a pointer to it.
|
||||
// If it can't support a "text" output of the data the call will fail
|
||||
char *str = 0;
|
||||
PRUint32 len;
|
||||
if (NS_OK == trans->GetTransferData(&flavor, (void **)&str, &len)) {
|
||||
|
||||
// Now we ask the transferable for the data
|
||||
// it still owns the data, we just have a pointer to it.
|
||||
// If it can't support a "text" output of the data the call will fail
|
||||
char *str = 0;
|
||||
PRUint32 len;
|
||||
if (NS_OK == trans->GetTransferData(flavor, (void **)&str, &len)) {
|
||||
|
||||
// Make adjustments for null terminated strings
|
||||
if (str && len > 0) {
|
||||
// stuffToPaste is ready for insertion into the content
|
||||
stuffToPaste.SetString(str, len);
|
||||
}
|
||||
// Make adjustments for null terminated strings
|
||||
if (str && len > 0) {
|
||||
// stuffToPaste is ready for insertion into the content
|
||||
stuffToPaste.SetString(str, len);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -48,13 +48,11 @@ static NS_DEFINE_IID(kIDOMCharacterDataIID, NS_IDOMCHARACTERDATA_IID);
|
||||
#include "nsIDragService.h"
|
||||
#include "nsIDragSession.h"
|
||||
#include "nsITransferable.h"
|
||||
#include "nsIGenericTransferable.h"
|
||||
#include "nsIDataFlavor.h"
|
||||
#include "nsIFormatConverter.h"
|
||||
|
||||
// Drag & Drop, Clipboard Support
|
||||
static NS_DEFINE_CID(kCDragServiceCID, NS_DRAGSERVICE_CID);
|
||||
static NS_DEFINE_CID(kCGenericTransferableCID, NS_GENERICTRANSFERABLE_CID);
|
||||
static NS_DEFINE_CID(kCTransferableCID, NS_TRANSFERABLE_CID);
|
||||
static NS_DEFINE_IID(kCDataFlavorCID, NS_DATAFLAVOR_CID);
|
||||
static NS_DEFINE_IID(kCXIFFormatConverterCID, NS_XIFFORMATCONVERTER_CID);
|
||||
|
||||
@ -924,19 +922,6 @@ NS_IMPL_RELEASE(nsTextEditorDragListener)
|
||||
nsTextEditorDragListener::nsTextEditorDragListener()
|
||||
{
|
||||
NS_INIT_REFCNT();
|
||||
|
||||
nsresult rv = nsComponentManager::CreateInstance(kCDataFlavorCID, nsnull,
|
||||
nsIDataFlavor::GetIID(),
|
||||
(void**) getter_AddRefs(mTextDataFlavor));
|
||||
if (NS_OK == rv) {
|
||||
mTextDataFlavor->Init(kTextMime, "");
|
||||
}
|
||||
|
||||
/*rv = nsComponentManager::CreateInstance(kCDataFlavorCID, nsnull,
|
||||
nsIDataFlavor::GetIID(), (void**) getter_AddRefs(mImageDataFlavor));
|
||||
if (NS_OK == rv) {
|
||||
mImageDataFlavor->Init(kJPEGImageMime, "");
|
||||
}*/
|
||||
}
|
||||
|
||||
nsTextEditorDragListener::~nsTextEditorDragListener()
|
||||
@ -991,7 +976,8 @@ nsTextEditorDragListener::DragEnter(nsIDOMEvent* aDragEvent)
|
||||
if (NS_OK == rv) {
|
||||
nsCOMPtr<nsIDragSession> dragSession(do_QueryInterface(dragService));
|
||||
|
||||
if (dragSession && (NS_OK == dragSession->IsDataFlavorSupported(mTextDataFlavor))) {
|
||||
nsAutoString textFlavor(kTextMime);
|
||||
if (dragSession && NS_OK == dragSession->IsDataFlavorSupported(&textFlavor)) {
|
||||
dragSession->SetCanDrop(PR_TRUE);
|
||||
}
|
||||
|
||||
@ -1012,8 +998,8 @@ nsTextEditorDragListener::DragOver(nsIDOMEvent* aDragEvent)
|
||||
(nsISupports **)&dragService);
|
||||
if (NS_OK == rv) {
|
||||
nsCOMPtr<nsIDragSession> dragSession(do_QueryInterface(dragService));
|
||||
|
||||
if (dragSession && NS_OK == dragSession->IsDataFlavorSupported(mTextDataFlavor)) {
|
||||
nsAutoString textFlavor(kTextMime);
|
||||
if (dragSession && NS_OK == dragSession->IsDataFlavorSupported(&textFlavor)) {
|
||||
dragSession->SetCanDrop(PR_TRUE);
|
||||
}
|
||||
|
||||
@ -1051,18 +1037,19 @@ nsTextEditorDragListener::DragDrop(nsIDOMEvent* aMouseEvent)
|
||||
if (dragSession) {
|
||||
|
||||
// Create transferable for getting the drag data
|
||||
nsCOMPtr<nsIGenericTransferable> genericTrans;
|
||||
rv = nsComponentManager::CreateInstance(kCGenericTransferableCID, nsnull,
|
||||
nsIGenericTransferable::GetIID(),
|
||||
(void**) getter_AddRefs(genericTrans));
|
||||
nsCOMPtr<nsITransferable> trans;
|
||||
rv = nsComponentManager::CreateInstance(kCTransferableCID, nsnull,
|
||||
nsITransferable::GetIID(),
|
||||
(void**) getter_AddRefs(trans));
|
||||
if (NS_OK == rv) {
|
||||
// Add the text Flavor to the transferable,
|
||||
// because that is the only type of data we are looking for at the moment
|
||||
genericTrans->AddDataFlavor(mTextDataFlavor);
|
||||
nsAutoString textMime(kTextMime);
|
||||
trans->AddDataFlavor(&textMime);
|
||||
//genericTrans->AddDataFlavor(mImageDataFlavor);
|
||||
|
||||
// Query to get the standard interface that the drag service knows about
|
||||
nsCOMPtr<nsITransferable> trans (do_QueryInterface(genericTrans));
|
||||
nsCOMPtr<nsITransferable> trans (do_QueryInterface(trans));
|
||||
if (trans) {
|
||||
|
||||
// Fill the transferable with our requested data flavor
|
||||
@ -1072,7 +1059,7 @@ nsTextEditorDragListener::DragDrop(nsIDOMEvent* aMouseEvent)
|
||||
// Note: the transferable owns the pointer to the data
|
||||
char *str = 0;
|
||||
PRUint32 len;
|
||||
trans->GetTransferData(mTextDataFlavor, (void **)&str, &len);
|
||||
trans->GetTransferData(&textMime, (void **)&str, &len);
|
||||
|
||||
// If the string was not empty then paste it in
|
||||
if (str) {
|
||||
|
||||
@ -26,7 +26,6 @@
|
||||
#include "nsIDOMDragListener.h"
|
||||
#include "nsIDOMCompositionListener.h"
|
||||
#include "nsITextEditor.h"
|
||||
#include "nsIDataFlavor.h"
|
||||
#include "nsCOMPtr.h"
|
||||
|
||||
/** The nsTextEditorKeyListener public nsIDOMKeyListener
|
||||
@ -199,9 +198,6 @@ public:
|
||||
protected:
|
||||
nsCOMPtr<nsITextEditor> mEditor;
|
||||
|
||||
nsCOMPtr<nsIDataFlavor> mTextDataFlavor;
|
||||
nsCOMPtr<nsIDataFlavor> mImageDataFlavor;
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
@ -67,22 +67,17 @@
|
||||
#include "nsLayoutAtoms.h"
|
||||
#include "nsPlaceholderFrame.h"
|
||||
|
||||
#include "nsIDataFlavor.h"
|
||||
|
||||
// Drag & Drop, Clipboard
|
||||
#include "nsWidgetsCID.h"
|
||||
#include "nsIClipboard.h"
|
||||
#include "nsITransferable.h"
|
||||
#include "nsIGenericTransferable.h"
|
||||
#include "nsIDataFlavor.h"
|
||||
#include "nsIFormatConverter.h"
|
||||
#include "nsIWebShell.h"
|
||||
|
||||
|
||||
// Drag & Drop, Clipboard Support
|
||||
static NS_DEFINE_CID(kCClipboardCID, NS_CLIPBOARD_CID);
|
||||
static NS_DEFINE_CID(kCGenericTransferableCID, NS_GENERICTRANSFERABLE_CID);
|
||||
static NS_DEFINE_IID(kCDataFlavorCID, NS_DATAFLAVOR_CID);
|
||||
static NS_DEFINE_CID(kCTransferableCID, NS_TRANSFERABLE_CID);
|
||||
static NS_DEFINE_IID(kCXIFConverterCID, NS_XIFFORMATCONVERTER_CID);
|
||||
|
||||
static PRBool gsNoisyRefs = PR_FALSE;
|
||||
@ -1545,43 +1540,33 @@ PresShell::DoCopy()
|
||||
|
||||
// Create a data flavor to tell the transferable
|
||||
// that it is about to receive XIF
|
||||
nsCOMPtr<nsIDataFlavor> flavor;
|
||||
rv = nsComponentManager::CreateInstance(kCDataFlavorCID,
|
||||
nsnull,
|
||||
nsIDataFlavor::GetIID(), (void**) getter_AddRefs(flavor));
|
||||
nsAutoString flavor(kXIFMime);
|
||||
|
||||
// Create a transferable for putting data on the Clipboard
|
||||
nsCOMPtr<nsITransferable> trans;
|
||||
rv = nsComponentManager::CreateInstance(kCTransferableCID, nsnull,
|
||||
nsITransferable::GetIID(),
|
||||
(void**) getter_AddRefs(trans));
|
||||
if (NS_OK == rv) {
|
||||
// Initialize data flavor to XIF
|
||||
flavor->Init(kXIFMime, "XIF");
|
||||
|
||||
// Create a transferable for putting data on the Clipboard
|
||||
nsCOMPtr<nsIGenericTransferable> genericTrans;
|
||||
rv = nsComponentManager::CreateInstance(kCGenericTransferableCID, nsnull,
|
||||
nsIGenericTransferable::GetIID(),
|
||||
(void**) getter_AddRefs(genericTrans));
|
||||
// The data on the clipboard will be in "XIF" format
|
||||
// so give the clipboard transferable a "XIFConverter" for
|
||||
// converting from XIF to other formats
|
||||
nsCOMPtr<nsIFormatConverter> xifConverter;
|
||||
rv = nsComponentManager::CreateInstance(kCXIFConverterCID, nsnull,
|
||||
nsIFormatConverter::GetIID(), (void**) getter_AddRefs(xifConverter));
|
||||
if (NS_OK == rv) {
|
||||
// The data on the clipboard will be in "XIF" format
|
||||
// so give the clipboard transferable a "XIFConverter" for
|
||||
// converting from XIF to other formats
|
||||
nsCOMPtr<nsIFormatConverter> xifConverter;
|
||||
rv = nsComponentManager::CreateInstance(kCXIFConverterCID, nsnull,
|
||||
nsIFormatConverter::GetIID(), (void**) getter_AddRefs(xifConverter));
|
||||
if (NS_OK == rv) {
|
||||
// Add the XIF DataFlavor to the transferable
|
||||
// this tells the transferable that it can handle receiving the XIF format
|
||||
genericTrans->AddDataFlavor(flavor);
|
||||
// Add the XIF DataFlavor to the transferable
|
||||
// this tells the transferable that it can handle receiving the XIF format
|
||||
trans->AddDataFlavor(&flavor);
|
||||
|
||||
// Add the converter for going from XIF to other formats
|
||||
genericTrans->SetConverter(xifConverter);
|
||||
// Add the converter for going from XIF to other formats
|
||||
trans->SetConverter(xifConverter);
|
||||
|
||||
// Now add the XIF data to the transferable
|
||||
genericTrans->SetTransferData(flavor, buffer.ToNewCString(), buffer.Length());
|
||||
// Now add the XIF data to the transferable
|
||||
trans->SetTransferData(&flavor, buffer.ToNewCString(), buffer.Length());
|
||||
|
||||
// put the transferable on the clipboard
|
||||
nsCOMPtr<nsITransferable> trans = do_QueryInterface(genericTrans);
|
||||
if (trans) {
|
||||
clipboard->SetData(trans, nsnull);
|
||||
}
|
||||
}
|
||||
// put the transferable on the clipboard
|
||||
clipboard->SetData(trans, nsnull);
|
||||
}
|
||||
}
|
||||
nsServiceManager::ReleaseService(kCClipboardCID, clipboard);
|
||||
|
||||
@ -67,22 +67,17 @@
|
||||
#include "nsLayoutAtoms.h"
|
||||
#include "nsPlaceholderFrame.h"
|
||||
|
||||
#include "nsIDataFlavor.h"
|
||||
|
||||
// Drag & Drop, Clipboard
|
||||
#include "nsWidgetsCID.h"
|
||||
#include "nsIClipboard.h"
|
||||
#include "nsITransferable.h"
|
||||
#include "nsIGenericTransferable.h"
|
||||
#include "nsIDataFlavor.h"
|
||||
#include "nsIFormatConverter.h"
|
||||
#include "nsIWebShell.h"
|
||||
|
||||
|
||||
// Drag & Drop, Clipboard Support
|
||||
static NS_DEFINE_CID(kCClipboardCID, NS_CLIPBOARD_CID);
|
||||
static NS_DEFINE_CID(kCGenericTransferableCID, NS_GENERICTRANSFERABLE_CID);
|
||||
static NS_DEFINE_IID(kCDataFlavorCID, NS_DATAFLAVOR_CID);
|
||||
static NS_DEFINE_CID(kCTransferableCID, NS_TRANSFERABLE_CID);
|
||||
static NS_DEFINE_IID(kCXIFConverterCID, NS_XIFFORMATCONVERTER_CID);
|
||||
|
||||
static PRBool gsNoisyRefs = PR_FALSE;
|
||||
@ -1545,43 +1540,33 @@ PresShell::DoCopy()
|
||||
|
||||
// Create a data flavor to tell the transferable
|
||||
// that it is about to receive XIF
|
||||
nsCOMPtr<nsIDataFlavor> flavor;
|
||||
rv = nsComponentManager::CreateInstance(kCDataFlavorCID,
|
||||
nsnull,
|
||||
nsIDataFlavor::GetIID(), (void**) getter_AddRefs(flavor));
|
||||
nsAutoString flavor(kXIFMime);
|
||||
|
||||
// Create a transferable for putting data on the Clipboard
|
||||
nsCOMPtr<nsITransferable> trans;
|
||||
rv = nsComponentManager::CreateInstance(kCTransferableCID, nsnull,
|
||||
nsITransferable::GetIID(),
|
||||
(void**) getter_AddRefs(trans));
|
||||
if (NS_OK == rv) {
|
||||
// Initialize data flavor to XIF
|
||||
flavor->Init(kXIFMime, "XIF");
|
||||
|
||||
// Create a transferable for putting data on the Clipboard
|
||||
nsCOMPtr<nsIGenericTransferable> genericTrans;
|
||||
rv = nsComponentManager::CreateInstance(kCGenericTransferableCID, nsnull,
|
||||
nsIGenericTransferable::GetIID(),
|
||||
(void**) getter_AddRefs(genericTrans));
|
||||
// The data on the clipboard will be in "XIF" format
|
||||
// so give the clipboard transferable a "XIFConverter" for
|
||||
// converting from XIF to other formats
|
||||
nsCOMPtr<nsIFormatConverter> xifConverter;
|
||||
rv = nsComponentManager::CreateInstance(kCXIFConverterCID, nsnull,
|
||||
nsIFormatConverter::GetIID(), (void**) getter_AddRefs(xifConverter));
|
||||
if (NS_OK == rv) {
|
||||
// The data on the clipboard will be in "XIF" format
|
||||
// so give the clipboard transferable a "XIFConverter" for
|
||||
// converting from XIF to other formats
|
||||
nsCOMPtr<nsIFormatConverter> xifConverter;
|
||||
rv = nsComponentManager::CreateInstance(kCXIFConverterCID, nsnull,
|
||||
nsIFormatConverter::GetIID(), (void**) getter_AddRefs(xifConverter));
|
||||
if (NS_OK == rv) {
|
||||
// Add the XIF DataFlavor to the transferable
|
||||
// this tells the transferable that it can handle receiving the XIF format
|
||||
genericTrans->AddDataFlavor(flavor);
|
||||
// Add the XIF DataFlavor to the transferable
|
||||
// this tells the transferable that it can handle receiving the XIF format
|
||||
trans->AddDataFlavor(&flavor);
|
||||
|
||||
// Add the converter for going from XIF to other formats
|
||||
genericTrans->SetConverter(xifConverter);
|
||||
// Add the converter for going from XIF to other formats
|
||||
trans->SetConverter(xifConverter);
|
||||
|
||||
// Now add the XIF data to the transferable
|
||||
genericTrans->SetTransferData(flavor, buffer.ToNewCString(), buffer.Length());
|
||||
// Now add the XIF data to the transferable
|
||||
trans->SetTransferData(&flavor, buffer.ToNewCString(), buffer.Length());
|
||||
|
||||
// put the transferable on the clipboard
|
||||
nsCOMPtr<nsITransferable> trans = do_QueryInterface(genericTrans);
|
||||
if (trans) {
|
||||
clipboard->SetData(trans, nsnull);
|
||||
}
|
||||
}
|
||||
// put the transferable on the clipboard
|
||||
clipboard->SetData(trans, nsnull);
|
||||
}
|
||||
}
|
||||
nsServiceManager::ReleaseService(kCClipboardCID, clipboard);
|
||||
|
||||
@ -20,10 +20,10 @@
|
||||
#define nsIClipboard_h__
|
||||
|
||||
#include "nsISupports.h"
|
||||
#include "nsString.h"
|
||||
|
||||
class nsITransferable;
|
||||
class nsIClipboardOwner;
|
||||
class nsIDataFlavor;
|
||||
|
||||
// {8B5314BA-DB01-11d2-96CE-0060B0FB9956}
|
||||
#define NS_ICLIPBOARD_IID \
|
||||
@ -54,14 +54,6 @@ class nsIClipboard : public nsISupports {
|
||||
|
||||
NS_IMETHOD GetData(nsITransferable * aTransferable) = 0;
|
||||
|
||||
/**
|
||||
* Check to set if ant of the native data on the clipboard matches this data flavor
|
||||
*
|
||||
* @result NS_OK if if the data flavor is supported and, NS_ERROR_FAILURE is it is not
|
||||
*/
|
||||
|
||||
NS_IMETHOD IsDataFlavorSupported(nsIDataFlavor * aDataFlavor) = 0;
|
||||
|
||||
/**
|
||||
* This empties the clipboard and notifies the clipboard owner
|
||||
* This empties the "logical" clipboard it does not clear the native clipboard
|
||||
|
||||
@ -20,8 +20,8 @@
|
||||
#define nsIDragSession_h__
|
||||
|
||||
#include "nsISupports.h"
|
||||
#include "nsString.h"
|
||||
|
||||
class nsIDataFlavor;
|
||||
class nsITransferable;
|
||||
struct nsSize;
|
||||
|
||||
@ -100,7 +100,7 @@ class nsIDragSession : public nsISupports {
|
||||
* @result NS_OK if if the data flavor is supported and, NS_ERROR_FAILURE is it is not
|
||||
*/
|
||||
|
||||
NS_IMETHOD IsDataFlavorSupported(nsIDataFlavor * aDataFlavor) = 0;
|
||||
NS_IMETHOD IsDataFlavorSupported(nsString * aDataFlavor) = 0;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@ -22,8 +22,6 @@
|
||||
#include "nsISupports.h"
|
||||
#include "nsString.h"
|
||||
|
||||
class nsIDataFlavor;
|
||||
class nsISupportsArray;
|
||||
class nsVoidArray;
|
||||
|
||||
#define FileListMime "filelist"
|
||||
|
||||
@ -20,9 +20,9 @@
|
||||
#define nsIFormatConverter_h__
|
||||
|
||||
#include "nsISupports.h"
|
||||
#include "nsString.h"
|
||||
|
||||
class nsIDataFlavor;
|
||||
class nsISupportsArray;
|
||||
class nsVoidArray;
|
||||
|
||||
// {948A0023-E3A7-11d2-96CF-0060B0FB9956}
|
||||
#define NS_IFORMATCONVERTER_IID \
|
||||
@ -40,7 +40,7 @@ class nsIFormatConverter : public nsISupports {
|
||||
*
|
||||
* @param aDataFlavorList fills list with supported flavors
|
||||
*/
|
||||
NS_IMETHOD GetInputDataFlavors(nsISupportsArray ** aDataFlavorList) = 0;
|
||||
NS_IMETHOD GetInputDataFlavors(nsVoidArray ** aDataFlavorList) = 0;
|
||||
|
||||
/**
|
||||
* Get the list of the "output" data flavors, in otherwords, the flavors
|
||||
@ -48,7 +48,7 @@ class nsIFormatConverter : public nsISupports {
|
||||
*
|
||||
* @param aDataFlavorList fills list with supported flavors
|
||||
*/
|
||||
NS_IMETHOD GetOutputDataFlavors(nsISupportsArray ** aDataFlavorList) = 0;
|
||||
NS_IMETHOD GetOutputDataFlavors(nsVoidArray ** aDataFlavorList) = 0;
|
||||
|
||||
/**
|
||||
* Determines whether a converion from one flavor to another is supported
|
||||
@ -57,7 +57,7 @@ class nsIFormatConverter : public nsISupports {
|
||||
* @param aFromFormatConverter flavor to convert to
|
||||
* @returns returns NS_OK if it can be converted
|
||||
*/
|
||||
NS_IMETHOD CanConvert(nsIDataFlavor * aFromDataFlavor, nsIDataFlavor * aToDataFlavor) = 0;
|
||||
NS_IMETHOD CanConvert(nsString * aFromDataFlavor, nsString * aToDataFlavor) = 0;
|
||||
|
||||
|
||||
/**
|
||||
@ -67,8 +67,8 @@ class nsIFormatConverter : public nsISupports {
|
||||
* @param aFromFormatConverter flavor to convert to (destination own the memory)
|
||||
* @returns returns NS_OK if it was converted
|
||||
*/
|
||||
NS_IMETHOD Convert(nsIDataFlavor * aFromDataFlavor, void * aFromData, PRUint32 aDataLen,
|
||||
nsIDataFlavor * aToDataFlavor, void ** aToData, PRUint32 * aDataToLen) = 0;
|
||||
NS_IMETHOD Convert(nsString * aFromDataFlavor, void * aFromData, PRUint32 aDataLen,
|
||||
nsString * aToDataFlavor, void ** aToData, PRUint32 * aDataToLen) = 0;
|
||||
|
||||
|
||||
|
||||
|
||||
@ -22,10 +22,21 @@
|
||||
#include "nsISupports.h"
|
||||
#include "nsString.h"
|
||||
|
||||
class nsIDataFlavor;
|
||||
class nsISupportsArray;
|
||||
class nsString;
|
||||
class nsVoidArray;
|
||||
class nsIFormatConverter;
|
||||
|
||||
#define kTextMime "text/plain"
|
||||
#define kXIFMime "text/xif"
|
||||
#define kUnicodeMime "text/unicode"
|
||||
#define kHTMLMime "text/html"
|
||||
#define kAOLMailMime "AOLMAIL"
|
||||
#define kPNGImageMime "image/png"
|
||||
#define kJPEGImageMime "image/jpg"
|
||||
#define kGIFImageMime "image/gif"
|
||||
#define kDropFilesMime "text/dropfiles"
|
||||
|
||||
|
||||
// {8B5314BC-DB01-11d2-96CE-0060B0FB9956}
|
||||
#define NS_ITRANSFERABLE_IID \
|
||||
{ 0x8b5314bc, 0xdb01, 0x11d2, { 0x96, 0xce, 0x0, 0x60, 0xb0, 0xfb, 0x99, 0x56 } }
|
||||
@ -43,7 +54,7 @@ class nsITransferable : public nsISupports {
|
||||
* @param aDataFlavorList fills list with supported flavors. This is a copy of
|
||||
* the internal list, so it may be edited w/out affecting the transferable.
|
||||
*/
|
||||
NS_IMETHOD FlavorsTransferableCanExport ( nsISupportsArray** outFlavorList ) = 0;
|
||||
NS_IMETHOD FlavorsTransferableCanExport ( nsVoidArray** outFlavorList ) = 0;
|
||||
|
||||
/**
|
||||
* Get the list of data flavors that this transferable supports (w/out conversion).
|
||||
@ -53,15 +64,7 @@ class nsITransferable : public nsISupports {
|
||||
* @param aDataFlavorList fills list with supported flavors. This is a copy of
|
||||
* the internal list, so it may be edited w/out affecting the transferable.
|
||||
*/
|
||||
NS_IMETHOD GetTransferDataFlavors(nsISupportsArray ** aDataFlavorList) = 0;
|
||||
|
||||
/**
|
||||
* See if the given flavor is supported
|
||||
*
|
||||
* @param aFlavor the flavor to check
|
||||
* @result Returns NS_OK if supported, return NS_ERROR_FAILURE if not
|
||||
*/
|
||||
NS_IMETHOD IsDataFlavorSupported(nsIDataFlavor * aFlavor) = 0;
|
||||
NS_IMETHOD GetTransferDataFlavors(nsVoidArray ** aDataFlavorList) = 0;
|
||||
|
||||
/**
|
||||
* Given a flavor retrieve the data.
|
||||
@ -70,7 +73,7 @@ class nsITransferable : public nsISupports {
|
||||
* @param aData the data. This is NOT a copy, so the caller MUST NOT DELETE it.
|
||||
* @param aDataLen the length of the data
|
||||
*/
|
||||
NS_IMETHOD GetTransferData(nsIDataFlavor * aFlavor, void ** aData, PRUint32 * aDataLen) = 0;
|
||||
NS_IMETHOD GetTransferData(nsString * aFlavor, void ** aData, PRUint32 * aDataLen) = 0;
|
||||
|
||||
/**
|
||||
* Returns PR_TRUE if the data is large.
|
||||
@ -78,6 +81,57 @@ class nsITransferable : public nsISupports {
|
||||
*/
|
||||
NS_IMETHOD_(PRBool) IsLargeDataSet() = 0;
|
||||
|
||||
///////////////////////////////
|
||||
// Setter part of interface
|
||||
///////////////////////////////
|
||||
|
||||
/**
|
||||
* Computes a list of flavors that the transferable can accept into it, either through
|
||||
* intrinsic knowledge or input data converters.
|
||||
*
|
||||
* @param outFlavorList fills list with supported flavors. This is a copy of
|
||||
* the internal list, so it may be edited w/out affecting the transferable.
|
||||
*/
|
||||
NS_IMETHOD FlavorsTransferableCanImport ( nsVoidArray** outFlavorList ) = 0;
|
||||
|
||||
/**
|
||||
* Gets the data from the transferable as a specified DataFlavor. The transferable still
|
||||
* owns the data, so the caller must NOT delete it.
|
||||
*
|
||||
* @param aFlavor the flavor of data that is being set
|
||||
* @param aData the data
|
||||
* @param aDataLen the length of the data
|
||||
*/
|
||||
NS_IMETHOD SetTransferData(nsString * aFlavor, void * aData, PRUint32 aDataLen) = 0;
|
||||
|
||||
/**
|
||||
* Add the data flavor, indicating that this transferable
|
||||
* can receive this type of flavor
|
||||
*
|
||||
* @param aDataFlavor a new data flavor to handle
|
||||
*/
|
||||
NS_IMETHOD AddDataFlavor(nsString * aDataFlavor) = 0;
|
||||
|
||||
/**
|
||||
* Removes the data flavor by MIME name (NOT by pointer addr)
|
||||
*
|
||||
* @param aDataFlavor a data flavor to remove
|
||||
*/
|
||||
NS_IMETHOD RemoveDataFlavor(nsString * aDataFlavor) = 0;
|
||||
|
||||
/**
|
||||
* Sets the converter for this transferable
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD SetConverter(nsIFormatConverter * aConverter) = 0;
|
||||
|
||||
/**
|
||||
* Gets the converter for this transferable
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD GetConverter(nsIFormatConverter ** aConverter) = 0;
|
||||
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@ -184,6 +184,10 @@
|
||||
#define NS_TREEVIEW_CID \
|
||||
{ 0xfaf80a1, 0x815c, 0x11d2, { 0x96, 0xed, 0x0, 0x10, 0x4b, 0x7b, 0x7d, 0xeb } }
|
||||
|
||||
// {285EF9B2-094A-11d3-9A87-0050046CDA96}
|
||||
#define NS_FONTRETRIEVERSERVICE_CID \
|
||||
{ 0x285ef9b2, 0x94a, 0x11d3, { 0x9a, 0x87, 0x0, 0x50, 0x4, 0x6c, 0xda, 0x96 } };
|
||||
|
||||
//-----------------------------------------------------------
|
||||
//Drag & Drop & Clipboard
|
||||
//-----------------------------------------------------------
|
||||
@ -191,9 +195,9 @@
|
||||
#define NS_DRAGSERVICE_CID \
|
||||
{ 0x8b5314bb, 0xdb01, 0x11d2, { 0x96, 0xce, 0x0, 0x60, 0xb0, 0xfb, 0x99, 0x56 } }
|
||||
|
||||
// {867AF703-F360-11D2-96D2-0060B0FB9956}
|
||||
#define NS_GENERICTRANSFERABLE_CID \
|
||||
{ 0x867af703, 0xf360, 0x11d2, { 0x96, 0xd2, 0x0, 0x60, 0xb0, 0xfb, 0x99, 0x56 } }
|
||||
// {8B5314BC-DB01-11d2-96CE-0060B0FB9956}
|
||||
#define NS_TRANSFERABLE_CID \
|
||||
{ 0x8b5314bc, 0xdb01, 0x11d2, { 0x96, 0xce, 0x0, 0x60, 0xb0, 0xfb, 0x99, 0x56 } }
|
||||
|
||||
// {8B5314BA-DB01-11d2-96CE-0060B0FB9956}
|
||||
#define NS_CLIPBOARD_CID \
|
||||
|
||||
@ -23,11 +23,9 @@
|
||||
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsDataObj.h"
|
||||
#include "nsISupportsArray.h"
|
||||
#include "nsIClipboardOwner.h"
|
||||
#include "nsIDataFlavor.h"
|
||||
#include "nsString.h"
|
||||
#include "nsIFormatConverter.h"
|
||||
#include "nsIGenericTransferable.h"
|
||||
#include "nsITransferable.h"
|
||||
|
||||
#include "nsIWidget.h"
|
||||
@ -39,14 +37,6 @@
|
||||
#include "nsVoidArray.h"
|
||||
#include "nsFileSpec.h"
|
||||
|
||||
// interface definitions
|
||||
static NS_DEFINE_IID(kIDataFlavorIID, NS_IDATAFLAVOR_IID);
|
||||
|
||||
//static NS_DEFINE_IID(kIWidgetIID, NS_IWIDGET_IID);
|
||||
//static NS_DEFINE_IID(kWindowCID, NS_WINDOW_CID);
|
||||
|
||||
NS_IMPL_ADDREF_INHERITED(nsClipboard, nsBaseClipboard)
|
||||
NS_IMPL_RELEASE_INHERITED(nsClipboard, nsBaseClipboard)
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
@ -80,30 +70,6 @@ nsClipboard::~nsClipboard()
|
||||
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
// * @param aIID The name of the class implementing the method
|
||||
// * @param _classiiddef The name of the #define symbol that defines the IID
|
||||
// * for the class (e.g. NS_ISUPPORTS_IID)
|
||||
//-------------------------------------------------------------------------
|
||||
nsresult nsClipboard::QueryInterface(const nsIID& aIID, void** aInstancePtr)
|
||||
{
|
||||
|
||||
if (NULL == aInstancePtr) {
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
}
|
||||
|
||||
nsresult rv = NS_NOINTERFACE;
|
||||
|
||||
static NS_DEFINE_IID(kIClipboard, NS_ICLIPBOARD_IID);
|
||||
if (aIID.Equals(kIClipboard)) {
|
||||
*aInstancePtr = (void*) ((nsIClipboard*)this);
|
||||
NS_ADDREF_THIS();
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
UINT nsClipboard::GetFormat(const nsString & aMimeStr)
|
||||
{
|
||||
@ -163,22 +129,17 @@ nsresult nsClipboard::SetupNativeDataObject(nsITransferable * aTransferable, IDa
|
||||
dObj->SetTransferable(aTransferable);
|
||||
|
||||
// Get the transferable list of data flavors
|
||||
nsISupportsArray * dfList;
|
||||
nsVoidArray * dfList;
|
||||
aTransferable->FlavorsTransferableCanExport(&dfList);
|
||||
|
||||
// Walk through flavors that contain data and register them
|
||||
// into the DataObj as supported flavors
|
||||
PRUint32 i;
|
||||
PRUint32 cnt = 0;
|
||||
nsresult rv = dfList->Count(&cnt);
|
||||
NS_ASSERTION(NS_SUCCEEDED(rv), "Count failed");
|
||||
PRUint32 cnt = dfList->Count();
|
||||
for (i=0;i<cnt;i++) {
|
||||
nsIDataFlavor * df;
|
||||
nsISupports * supports = dfList->ElementAt(i);
|
||||
if (NS_OK == supports->QueryInterface(kIDataFlavorIID, (void **)&df)) {
|
||||
nsString mime;
|
||||
df->GetMimeType(mime);
|
||||
UINT format = GetFormat(mime);
|
||||
nsString * df = (nsString *)dfList->ElementAt(i);
|
||||
if (nsnull != df) {
|
||||
UINT format = GetFormat(*df);
|
||||
|
||||
// check here to see if we can the data back from global member
|
||||
// XXX need IStream support, or file support
|
||||
@ -188,12 +149,10 @@ nsresult nsClipboard::SetupNativeDataObject(nsITransferable * aTransferable, IDa
|
||||
// Now tell the native IDataObject about both the DataFlavor and
|
||||
// the native data format
|
||||
dObj->AddDataFlavor(df, &fe);
|
||||
NS_RELEASE(df);
|
||||
}
|
||||
NS_RELEASE(supports);
|
||||
}
|
||||
// Delete the data flavors list
|
||||
NS_RELEASE(dfList);
|
||||
delete dfList;
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
@ -443,27 +402,18 @@ nsresult nsClipboard::GetDataFromDataObject(IDataObject * aDataObject,
|
||||
if (nsnull == aTransferable) {
|
||||
return res;
|
||||
}
|
||||
nsCOMPtr<nsIGenericTransferable> genericTrans(do_QueryInterface(aTransferable));
|
||||
if (!genericTrans) {
|
||||
return res;
|
||||
}
|
||||
|
||||
// Get the transferable list of data flavors
|
||||
nsISupportsArray * dfList;
|
||||
nsVoidArray * dfList;
|
||||
aTransferable->GetTransferDataFlavors(&dfList);
|
||||
|
||||
// Walk through flavors and see which flavor is on the clipboard them on the native clipboard,
|
||||
PRUint32 i;
|
||||
PRUint32 cnt = 0;
|
||||
nsresult rv = dfList->Count(&cnt);
|
||||
NS_ASSERTION(NS_SUCCEEDED(rv), "Count failed");
|
||||
PRUint32 cnt = dfList->Count();
|
||||
for (i=0;i<cnt;i++) {
|
||||
nsIDataFlavor * df;
|
||||
nsISupports * supports = dfList->ElementAt(i);
|
||||
if (NS_OK == supports->QueryInterface(kIDataFlavorIID, (void **)&df)) {
|
||||
nsString mime;
|
||||
df->GetMimeType(mime);
|
||||
UINT format = GetFormat(mime);
|
||||
nsString * df = (nsString *)dfList->ElementAt(i);
|
||||
if (nsnull != df) {
|
||||
UINT format = GetFormat(*df);
|
||||
|
||||
void * data;
|
||||
PRUint32 dataLen;
|
||||
@ -471,19 +421,17 @@ nsresult nsClipboard::GetDataFromDataObject(IDataObject * aDataObject,
|
||||
if (nsnull != aDataObject) {
|
||||
res = GetNativeDataOffClipboard(aDataObject, format, &data, &dataLen);
|
||||
if (NS_OK == res) {
|
||||
genericTrans->SetTransferData(df, data, dataLen);
|
||||
aTransferable->SetTransferData(df, data, dataLen);
|
||||
}
|
||||
} else if (nsnull != aWindow) {
|
||||
res = GetNativeDataOffClipboard(aWindow, format, &data, &dataLen);
|
||||
if (NS_OK == res) {
|
||||
genericTrans->SetTransferData(df, data, dataLen);
|
||||
aTransferable->SetTransferData(df, data, dataLen);
|
||||
}
|
||||
}
|
||||
NS_IF_RELEASE(df);
|
||||
}
|
||||
NS_RELEASE(supports);
|
||||
}
|
||||
|
||||
delete dfList;
|
||||
return res;
|
||||
|
||||
}
|
||||
@ -554,23 +502,16 @@ NS_IMETHODIMP nsClipboard::ForceDataToClipboard()
|
||||
::EmptyClipboard();
|
||||
|
||||
// Get the transferable list of data flavors
|
||||
nsISupportsArray * dfList;
|
||||
nsVoidArray * dfList;
|
||||
mTransferable->GetTransferDataFlavors(&dfList);
|
||||
|
||||
// Walk through flavors and see which flavor is on the native clipboard,
|
||||
PRUint32 i;
|
||||
PRUint32 cnt = 0;
|
||||
nsresult rv = dfList->Count(&cnt);
|
||||
NS_ASSERTION(NS_SUCCEEDED(rv), "Count failed");
|
||||
PRUint32 cnt = dfList->Count();
|
||||
for (i=0;i<cnt;i++) {
|
||||
nsIDataFlavor * df;
|
||||
nsISupports * supports = dfList->ElementAt(i);
|
||||
if (NS_OK == supports->QueryInterface(kIDataFlavorIID, (void **)&df)) {
|
||||
nsString mime;
|
||||
df->GetMimeType(mime);
|
||||
|
||||
// convert mime to native format identifier
|
||||
UINT format = GetFormat(mime);
|
||||
nsString * df = (nsString *)dfList->ElementAt(i);
|
||||
if (nsnull != df) {
|
||||
UINT format = GetFormat(*df);
|
||||
|
||||
void * data;
|
||||
PRUint32 dataLen;
|
||||
@ -582,11 +523,9 @@ NS_IMETHODIMP nsClipboard::ForceDataToClipboard()
|
||||
if (nsnull != data) {
|
||||
PlaceDataOnClipboard(format, (char *)data, dataLen);
|
||||
}
|
||||
NS_RELEASE(df);
|
||||
}
|
||||
NS_RELEASE(supports);
|
||||
}
|
||||
|
||||
delete dfList;
|
||||
::CloseClipboard();
|
||||
|
||||
return NS_OK;
|
||||
|
||||
@ -38,10 +38,6 @@ public:
|
||||
nsClipboard();
|
||||
virtual ~nsClipboard();
|
||||
|
||||
//nsISupports
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
|
||||
|
||||
// nsIClipboard
|
||||
NS_IMETHOD ForceDataToClipboard();
|
||||
|
||||
|
||||
@ -20,14 +20,10 @@
|
||||
//#include "DragDrop.h"
|
||||
#include "nsDataObj.h"
|
||||
#include "nsString.h"
|
||||
#include "nsISupportsArray.h"
|
||||
#include "nsIDataFlavor.h"
|
||||
#include "nsVoidArray.h"
|
||||
#include "nsITransferable.h"
|
||||
#include "IENUMFE.h"
|
||||
|
||||
// interface definitions
|
||||
static NS_DEFINE_IID(kIDataFlavorIID, NS_IDATAFLAVOR_IID);
|
||||
|
||||
//#include "OLEIDL.h"
|
||||
#include "OLE2.h"
|
||||
#include "URLMON.h"
|
||||
@ -59,8 +55,7 @@ nsDataObj::nsDataObj()
|
||||
{
|
||||
m_cRef = 0;
|
||||
mTransferable = nsnull;
|
||||
nsresult result = NS_NewISupportsArray(&mDataFlavors);
|
||||
NS_ADDREF(mDataFlavors);
|
||||
mDataFlavors = new nsVoidArray();
|
||||
|
||||
m_enumFE = new CEnumFormatEtc(32);
|
||||
m_enumFE->AddRef();
|
||||
@ -73,7 +68,11 @@ nsDataObj::nsDataObj()
|
||||
nsDataObj::~nsDataObj()
|
||||
{
|
||||
NS_IF_RELEASE(mTransferable);
|
||||
NS_IF_RELEASE(mDataFlavors);
|
||||
PRInt32 i;
|
||||
for (i=0;i<mDataFlavors->Count();i++) {
|
||||
nsString * df = (nsString *)mDataFlavors->ElementAt(i);
|
||||
delete df;
|
||||
}
|
||||
|
||||
m_cRef = 0;
|
||||
m_enumFE->Release();
|
||||
@ -151,9 +150,8 @@ STDMETHODIMP nsDataObj::GetData(LPFORMATETC pFE, LPSTGMEDIUM pSTM)
|
||||
FORMATETC fe;
|
||||
m_enumFE->Reset();
|
||||
while (NOERROR == m_enumFE->Next(1, &fe, &count)) {
|
||||
nsIDataFlavor * df;
|
||||
nsISupports * supports = mDataFlavors->ElementAt(dfInx);
|
||||
if (NS_OK == supports->QueryInterface(kIDataFlavorIID, (void **)&df)) {
|
||||
nsString * df = (nsString *)mDataFlavors->ElementAt(dfInx);
|
||||
if (nsnull != df) {
|
||||
if (FormatsMatch(fe, *pFE)) {
|
||||
pSTM->pUnkForRelease = NULL;
|
||||
CLIPFORMAT format = pFE->cfFormat;
|
||||
@ -172,9 +170,7 @@ STDMETHODIMP nsDataObj::GetData(LPFORMATETC pFE, LPSTGMEDIUM pSTM)
|
||||
break;
|
||||
} //switch
|
||||
} // if
|
||||
NS_RELEASE(df);
|
||||
}
|
||||
NS_RELEASE(supports);
|
||||
dfInx++;
|
||||
} // while
|
||||
|
||||
@ -329,7 +325,7 @@ HRESULT nsDataObj::GetDib(FORMATETC&, STGMEDIUM&)
|
||||
}
|
||||
|
||||
//-----------------------------------------------------
|
||||
HRESULT nsDataObj::GetText(nsIDataFlavor * aDF, FORMATETC& aFE, STGMEDIUM& aSTG)
|
||||
HRESULT nsDataObj::GetText(nsString * aDF, FORMATETC& aFE, STGMEDIUM& aSTG)
|
||||
{
|
||||
char * data;
|
||||
PRUint32 len;
|
||||
@ -451,13 +447,13 @@ CLSID nsDataObj::GetClassID() const
|
||||
//-----------------------------------------------------
|
||||
// Registers a the DataFlavor/FE pair
|
||||
//-----------------------------------------------------
|
||||
void nsDataObj::AddDataFlavor(nsIDataFlavor * aDataFlavor, LPFORMATETC aFE)
|
||||
void nsDataObj::AddDataFlavor(nsString * aDataFlavor, LPFORMATETC aFE)
|
||||
{
|
||||
// These two lists are the mapping to and from data flavors and FEs
|
||||
// Later, OLE will tell us it's needs a certain type of FORMATETC (text, unicode, etc)
|
||||
// so we will look up data flavor that corresponds to the FE
|
||||
// and then ask the transferable for that type of data
|
||||
mDataFlavors->AppendElement(aDataFlavor);
|
||||
mDataFlavors->AppendElement(new nsString(*aDataFlavor));
|
||||
m_enumFE->AddFE(aFE);
|
||||
|
||||
}
|
||||
|
||||
@ -26,8 +26,7 @@
|
||||
|
||||
#define MAX_FORMATS 32
|
||||
|
||||
class nsIDataFlavor;
|
||||
class nsISupportsArray;
|
||||
class nsVoidArray;
|
||||
class CEnumFormatEtc;
|
||||
class nsITransferable;
|
||||
|
||||
@ -61,10 +60,10 @@ class nsDataObj : public IDataObject
|
||||
virtual HRESULT SetMetafilePict(FORMATETC& FE, STGMEDIUM& STM);
|
||||
|
||||
// support for clipboard
|
||||
void AddDataFlavor(nsIDataFlavor * aDataFlavor, LPFORMATETC aFE);
|
||||
void AddDataFlavor(nsString * aDataFlavor, LPFORMATETC aFE);
|
||||
void SetTransferable(nsITransferable * aTransferable);
|
||||
|
||||
virtual HRESULT GetText(nsIDataFlavor * aDF, FORMATETC& FE, STGMEDIUM& STM);
|
||||
virtual HRESULT GetText(nsString * aDF, FORMATETC& FE, STGMEDIUM& STM);
|
||||
|
||||
// Return the registered OLE class ID of this object's CfDataObj.
|
||||
CLSID GetClassID() const;
|
||||
@ -139,7 +138,7 @@ class nsDataObj : public IDataObject
|
||||
static ULONG g_cRef; // the cum reference count of all instances
|
||||
ULONG m_cRef; // the reference count
|
||||
|
||||
nsISupportsArray * mDataFlavors; // we own and ref count the array
|
||||
nsVoidArray * mDataFlavors; // we own and its contents
|
||||
|
||||
nsITransferable * mTransferable; // nsDataObj owns and ref counts nsITransferable,
|
||||
// the nsITransferable does know anything about the nsDataObj
|
||||
|
||||
@ -24,7 +24,6 @@
|
||||
#include "nsNativeDragTarget.h"
|
||||
#include "nsNativeDragSource.h"
|
||||
#include "nsClipboard.h"
|
||||
#include "nsIDataFlavor.h"
|
||||
#include "nsISupportsArray.h"
|
||||
|
||||
#include <OLE2.h>
|
||||
@ -206,7 +205,7 @@ NS_IMETHODIMP nsDragService::SetIDataObject (IDataObject * aDataObj)
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
NS_IMETHODIMP nsDragService::IsDataFlavorSupported(nsIDataFlavor * aDataFlavor)
|
||||
NS_IMETHODIMP nsDragService::IsDataFlavorSupported(nsString * aDataFlavor)
|
||||
{
|
||||
if (nsnull == aDataFlavor || nsnull == mDataObject) {
|
||||
return NS_ERROR_FAILURE;
|
||||
@ -215,10 +214,7 @@ NS_IMETHODIMP nsDragService::IsDataFlavorSupported(nsIDataFlavor * aDataFlavor)
|
||||
//DWORD types[] = {TYMED_HGLOBAL, TYMED_FILE, TYMED_ISTREAM, TYMED_GDI};
|
||||
//PRInt32 numTypes = 4;
|
||||
|
||||
nsString mime;
|
||||
aDataFlavor->GetMimeType(mime);
|
||||
|
||||
UINT format = nsClipboard::GetFormat(mime);
|
||||
UINT format = nsClipboard::GetFormat(*aDataFlavor);
|
||||
|
||||
// XXX at the moment we only support global memory transfers
|
||||
// It is here where we will add support for native images
|
||||
|
||||
@ -47,7 +47,7 @@ public:
|
||||
|
||||
// nsIDragSession
|
||||
NS_IMETHOD GetData (nsITransferable * aTransferable);
|
||||
NS_IMETHOD IsDataFlavorSupported(nsIDataFlavor * aDataFlavor);
|
||||
NS_IMETHOD IsDataFlavorSupported(nsString * aDataFlavor);
|
||||
|
||||
// native impl.
|
||||
NS_IMETHOD SetIDataObject (IDataObject * aDataObj);
|
||||
|
||||
@ -18,17 +18,14 @@
|
||||
|
||||
#include "nsBaseClipboard.h"
|
||||
|
||||
#include "nsISupportsArray.h"
|
||||
#include "nsIClipboardOwner.h"
|
||||
#include "nsIDataFlavor.h"
|
||||
#include "nsString.h"
|
||||
|
||||
#include "nsIWidget.h"
|
||||
#include "nsIComponentManager.h"
|
||||
#include "nsWidgetsCID.h"
|
||||
|
||||
// interface definitions
|
||||
static NS_DEFINE_IID(kIDataFlavorIID, NS_IDATAFLAVOR_IID);
|
||||
|
||||
static NS_DEFINE_IID(kIWidgetIID, NS_IWIDGET_IID);
|
||||
static NS_DEFINE_IID(kWindowCID, NS_WINDOW_CID);
|
||||
|
||||
@ -74,12 +71,12 @@ nsresult nsBaseClipboard::QueryInterface(const nsIID& aIID, void** aInstancePtr)
|
||||
|
||||
nsresult rv = NS_NOINTERFACE;
|
||||
|
||||
/*static NS_DEFINE_IID(kIClipboard, NS_ICLIPBOARD_IID);
|
||||
static NS_DEFINE_IID(kIClipboard, NS_ICLIPBOARD_IID);
|
||||
if (aIID.Equals(kIClipboard)) {
|
||||
*aInstancePtr = (void*) ((nsIClipboard*)this);
|
||||
NS_ADDREF_THIS();
|
||||
return NS_OK;
|
||||
}*/
|
||||
}
|
||||
|
||||
return rv;
|
||||
}
|
||||
@ -132,22 +129,6 @@ NS_IMETHODIMP nsBaseClipboard::GetData(nsITransferable * aTransferable)
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* This checks to see if the transferable in the clipboard object supports
|
||||
* a particular data flavor
|
||||
*
|
||||
*/
|
||||
NS_IMETHODIMP nsBaseClipboard::IsDataFlavorSupported(nsIDataFlavor * aDataFlavor)
|
||||
{
|
||||
// make sure we have a good transferable
|
||||
if (nsnull == mTransferable) {
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
return mTransferable->IsDataFlavorSupported(aDataFlavor);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
|
||||
@ -45,7 +45,6 @@ public:
|
||||
NS_IMETHOD SetData(nsITransferable * aTransferable, nsIClipboardOwner * anOwner);
|
||||
NS_IMETHOD GetData(nsITransferable * aTransferable);
|
||||
|
||||
NS_IMETHOD IsDataFlavorSupported(nsIDataFlavor * aDataFlavor);
|
||||
NS_IMETHOD EmptyClipboard();
|
||||
NS_IMETHOD ForceDataToClipboard();
|
||||
|
||||
|
||||
@ -133,7 +133,7 @@ NS_IMETHODIMP nsBaseDragService::GetData (nsITransferable * aTransferable)
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
NS_IMETHODIMP nsBaseDragService::IsDataFlavorSupported(nsIDataFlavor * aDataFlavor)
|
||||
NS_IMETHODIMP nsBaseDragService::IsDataFlavorSupported(nsString * aDataFlavor)
|
||||
{
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
@ -58,7 +58,7 @@ public:
|
||||
NS_IMETHOD GetTargetSize (nsSize * aDragTargetSize);
|
||||
|
||||
NS_IMETHOD GetData (nsITransferable * aTransferable);
|
||||
NS_IMETHOD IsDataFlavorSupported(nsIDataFlavor * aDataFlavor);
|
||||
NS_IMETHOD IsDataFlavorSupported(nsString * aDataFlavor);
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
@ -18,9 +18,8 @@
|
||||
|
||||
#include "nsFileSpec.h"
|
||||
#include "nsFileListTransferable.h"
|
||||
#include "nsIDataFlavor.h"
|
||||
#include "nsString.h"
|
||||
#include "nsWidgetsCID.h"
|
||||
#include "nsISupportsArray.h"
|
||||
#include "nsVoidArray.h"
|
||||
#include "nsIComponentManager.h"
|
||||
#include "nsCOMPtr.h"
|
||||
@ -39,12 +38,7 @@ nsFileListTransferable::nsFileListTransferable()
|
||||
NS_INIT_REFCNT();
|
||||
mFileList = new nsVoidArray();
|
||||
|
||||
nsresult rv = nsComponentManager::CreateInstance(kCDataFlavorCID, nsnull,
|
||||
nsIDataFlavor::GetIID(),
|
||||
(void**) getter_AddRefs(mFileListDataFlavor));
|
||||
if (NS_OK == rv) {
|
||||
mFileListDataFlavor->Init(kDropFilesMime, "File List");
|
||||
}
|
||||
mFileListDataFlavor = kDropFilesMime;
|
||||
|
||||
}
|
||||
|
||||
@ -78,12 +72,6 @@ nsresult nsFileListTransferable::QueryInterface(const nsIID& aIID, void** aInsta
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
if (aIID.Equals(nsIGenericTransferable::GetIID())) {
|
||||
*aInstancePtr = (void*) ((nsIGenericTransferable*)this);
|
||||
NS_ADDREF_THIS();
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
if (aIID.Equals(nsIFileListTransferable::GetIID())) {
|
||||
*aInstancePtr = (void*) ((nsIFileListTransferable*)this);
|
||||
NS_ADDREF_THIS();
|
||||
@ -94,29 +82,30 @@ nsresult nsFileListTransferable::QueryInterface(const nsIID& aIID, void** aInsta
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
NS_IMETHODIMP nsFileListTransferable::GetTransferDataFlavors(nsISupportsArray ** aDataFlavorList)
|
||||
NS_IMETHODIMP nsFileListTransferable::GetTransferDataFlavors(nsVoidArray ** aDataFlavorList)
|
||||
{
|
||||
nsISupportsArray * array;
|
||||
nsresult rv = NS_NewISupportsArray(&array);
|
||||
if (NS_OK == rv) {
|
||||
array->AppendElement(mFileListDataFlavor); // this addref's for us
|
||||
nsVoidArray * array = new nsVoidArray();
|
||||
if (nsnull != array) {
|
||||
array->AppendElement(new nsString(mFileListDataFlavor)); // this addref's for us
|
||||
*aDataFlavorList = array;
|
||||
} else {
|
||||
aDataFlavorList = nsnull;
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
NS_IMETHODIMP nsFileListTransferable::IsDataFlavorSupported(nsIDataFlavor * aDataFlavor)
|
||||
NS_IMETHODIMP nsFileListTransferable::IsDataFlavorSupported(nsString * aDataFlavor)
|
||||
{
|
||||
return (mFileListDataFlavor->Equals(aDataFlavor)?NS_OK:NS_ERROR_FAILURE);
|
||||
return (mFileListDataFlavor.Equals(*aDataFlavor)?NS_OK:NS_ERROR_FAILURE);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
// The transferable owns the data (memory) and only gives the aData a copy of the pointer address to it.
|
||||
//-------------------------------------------------------------------------
|
||||
NS_IMETHODIMP nsFileListTransferable::GetTransferData(nsIDataFlavor * aDataFlavor, void ** aData, PRUint32 * aDataLen)
|
||||
NS_IMETHODIMP nsFileListTransferable::GetTransferData(nsString * aDataFlavor, void ** aData, PRUint32 * aDataLen)
|
||||
{
|
||||
if (nsnull != mFileList && mFileListDataFlavor->Equals(aDataFlavor)) {
|
||||
if (nsnull != mFileList && mFileListDataFlavor.Equals(*aDataFlavor)) {
|
||||
*aData = mFileList;
|
||||
*aDataLen = mFileList->Count();
|
||||
} else {
|
||||
@ -146,9 +135,9 @@ void nsFileListTransferable::ClearFileList()
|
||||
//---------------------------------------------------
|
||||
// The transferable now owns the data (the memory pointing to it)
|
||||
//---------------------------------------------------
|
||||
NS_IMETHODIMP nsFileListTransferable::SetTransferData(nsIDataFlavor * aDataFlavor, void * aData, PRUint32 aDataLen)
|
||||
NS_IMETHODIMP nsFileListTransferable::SetTransferData(nsString * aDataFlavor, void * aData, PRUint32 aDataLen)
|
||||
{
|
||||
if (aData == nsnull && mFileListDataFlavor->Equals(aDataFlavor)) {
|
||||
if (aData == nsnull && mFileListDataFlavor.Equals(*aDataFlavor)) {
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
@ -213,8 +202,7 @@ NS_IMETHODIMP nsFileListTransferable::GetFileList(nsVoidArray * aFileList)
|
||||
// Computes a list of flavors that the transferable can accept into it, either through
|
||||
// intrinsic knowledge or input data converters.
|
||||
//---------------------------------------------------
|
||||
NS_IMETHODIMP
|
||||
nsFileListTransferable::FlavorsTransferableCanImport( nsISupportsArray** aOutFlavorList )
|
||||
NS_IMETHODIMP nsFileListTransferable::FlavorsTransferableCanImport( nsVoidArray ** aOutFlavorList )
|
||||
{
|
||||
if ( !aOutFlavorList )
|
||||
return NS_ERROR_INVALID_ARG;
|
||||
@ -231,7 +219,7 @@ nsFileListTransferable::FlavorsTransferableCanImport( nsISupportsArray** aOutFla
|
||||
// intrinsic knowledge or output data converters.
|
||||
//---------------------------------------------------
|
||||
NS_IMETHODIMP
|
||||
nsFileListTransferable::FlavorsTransferableCanExport( nsISupportsArray** aOutFlavorList )
|
||||
nsFileListTransferable::FlavorsTransferableCanExport( nsVoidArray** aOutFlavorList )
|
||||
{
|
||||
if ( !aOutFlavorList )
|
||||
return NS_ERROR_INVALID_ARG;
|
||||
@ -241,13 +229,13 @@ nsFileListTransferable::FlavorsTransferableCanExport( nsISupportsArray** aOutFla
|
||||
} // FlavorsTransferableCanImport
|
||||
|
||||
//---------------------------------------------------
|
||||
NS_IMETHODIMP nsFileListTransferable::AddDataFlavor(nsIDataFlavor * aDataFlavor)
|
||||
NS_IMETHODIMP nsFileListTransferable::AddDataFlavor(nsString * aDataFlavor)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
//---------------------------------------------------
|
||||
NS_IMETHODIMP nsFileListTransferable::RemoveDataFlavor(nsIDataFlavor * aDataFlavor)
|
||||
NS_IMETHODIMP nsFileListTransferable::RemoveDataFlavor(nsString * aDataFlavor)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
@ -20,9 +20,8 @@
|
||||
#define nsFileListTransferable_h__
|
||||
|
||||
#include "nsITransferable.h"
|
||||
#include "nsIGenericTransferable.h"
|
||||
#include "nsIFileListTransferable.h"
|
||||
#include "nsIDataFlavor.h"
|
||||
#include "nsString.h"
|
||||
#include "nsCOMPtr.h"
|
||||
|
||||
|
||||
@ -35,7 +34,7 @@ class nsVoidArray;
|
||||
* XP FileListTransferable wrapper
|
||||
*/
|
||||
|
||||
class nsFileListTransferable : public nsIFileListTransferable, public nsITransferable, public nsIGenericTransferable
|
||||
class nsFileListTransferable : public nsIFileListTransferable, public nsITransferable
|
||||
{
|
||||
|
||||
public:
|
||||
@ -51,10 +50,9 @@ public:
|
||||
//////////////////////////
|
||||
NS_IMETHOD FlavorsTransferableCanExport ( nsISupportsArray** outFlavorList ) ;
|
||||
NS_IMETHOD GetTransferDataFlavors(nsISupportsArray ** aDataFlavorList);
|
||||
NS_IMETHOD IsDataFlavorSupported(nsIDataFlavor * aFlavor);
|
||||
|
||||
// Transferable still owns |aData|. Do not delete it.
|
||||
NS_IMETHOD GetTransferData(nsIDataFlavor * aFlavor, void ** aData, PRUint32 * aDataLen);
|
||||
NS_IMETHOD GetTransferData(nsString * aFlavor, void ** aData, PRUint32 * aDataLen);
|
||||
NS_IMETHOD_(PRBool) IsLargeDataSet();
|
||||
|
||||
//////////////////////////
|
||||
@ -64,14 +62,14 @@ public:
|
||||
NS_IMETHOD GetFileList(nsVoidArray * aFileList);
|
||||
|
||||
//////////////////////////
|
||||
//nsIGenericTransferable
|
||||
// Getter interface
|
||||
//////////////////////////
|
||||
NS_IMETHOD FlavorsTransferableCanImport ( nsISupportsArray** outFlavorList ) ;
|
||||
NS_IMETHOD FlavorsTransferableCanImport ( nsVoidArray** outFlavorList ) ;
|
||||
|
||||
NS_IMETHOD SetTransferData(nsIDataFlavor * aFlavor, void * aData, PRUint32 aDataLen); // Transferable consumes |aData|. Do not delete it.
|
||||
NS_IMETHOD SetTransferData(nsString * aFlavor, void * aData, PRUint32 aDataLen); // Transferable consumes |aData|. Do not delete it.
|
||||
|
||||
NS_IMETHOD AddDataFlavor(nsIDataFlavor * aDataFlavor);
|
||||
NS_IMETHOD RemoveDataFlavor(nsIDataFlavor * aDataFlavor);
|
||||
NS_IMETHOD AddDataFlavor(nsString * aDataFlavor);
|
||||
NS_IMETHOD RemoveDataFlavor(nsString * aDataFlavor);
|
||||
|
||||
NS_IMETHOD SetConverter(nsIFormatConverter * aConverter);
|
||||
NS_IMETHOD GetConverter(nsIFormatConverter ** aConverter);
|
||||
@ -82,8 +80,8 @@ protected:
|
||||
NS_IMETHODIMP nsFileListTransferable::CopyFileList(nsVoidArray * aFromFileList,
|
||||
nsVoidArray * aToFileList);
|
||||
|
||||
nsVoidArray * mFileList;
|
||||
nsCOMPtr<nsIDataFlavor> mFileListDataFlavor;
|
||||
nsVoidArray * mFileList;
|
||||
nsString mFileListDataFlavor;
|
||||
|
||||
};
|
||||
|
||||
|
||||
@ -17,10 +17,10 @@
|
||||
*/
|
||||
|
||||
#include "nsTransferable.h"
|
||||
#include "nsIDataFlavor.h"
|
||||
#include "nsString.h"
|
||||
#include "nsDataFlavor.h"
|
||||
#include "nsWidgetsCID.h"
|
||||
#include "nsISupportsArray.h"
|
||||
#include "nsVoidArray.h"
|
||||
#include "nsIFormatConverter.h"
|
||||
#include "nsVoidArray.h"
|
||||
#include "nsIComponentManager.h"
|
||||
@ -28,18 +28,15 @@
|
||||
|
||||
|
||||
static NS_DEFINE_IID(kITransferableIID, NS_ITRANSFERABLE_IID);
|
||||
static NS_DEFINE_IID(kIGenericTransferableIID, NS_IGENERICTRANSFERABLE_IID);
|
||||
static NS_DEFINE_IID(kIDataFlavorIID, NS_IDATAFLAVOR_IID);
|
||||
static NS_DEFINE_IID(kCDataFlavorCID, NS_DATAFLAVOR_CID);
|
||||
|
||||
|
||||
NS_IMPL_ADDREF(nsTransferable)
|
||||
NS_IMPL_RELEASE(nsTransferable)
|
||||
|
||||
typedef struct {
|
||||
nsIDataFlavor * mFlavor;
|
||||
char * mData;
|
||||
PRUint32 mDataLen;
|
||||
nsString * mFlavor;
|
||||
char * mData;
|
||||
PRUint32 mDataLen;
|
||||
} DataStruct;
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
@ -64,7 +61,7 @@ nsTransferable::~nsTransferable()
|
||||
for (i=0;i<mDataArray->Count();i++) {
|
||||
DataStruct * data = (DataStruct *)mDataArray->ElementAt(i);
|
||||
if (data) {
|
||||
NS_RELEASE(data->mFlavor);
|
||||
delete data->mFlavor;
|
||||
if (data->mData) {
|
||||
delete[] data->mData;
|
||||
}
|
||||
@ -95,12 +92,6 @@ nsresult nsTransferable::QueryInterface(const nsIID& aIID, void** aInstancePtr)
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
if (aIID.Equals(kIGenericTransferableIID)) {
|
||||
*aInstancePtr = (void*) ((nsIGenericTransferable*)this);
|
||||
NS_ADDREF_THIS();
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
@ -109,62 +100,38 @@ nsresult nsTransferable::QueryInterface(const nsIID& aIID, void** aInstancePtr)
|
||||
*
|
||||
*
|
||||
*/
|
||||
NS_IMETHODIMP nsTransferable::GetTransferDataFlavors(nsISupportsArray ** aDataFlavorList)
|
||||
NS_IMETHODIMP nsTransferable::GetTransferDataFlavors(nsVoidArray ** aDataFlavorList)
|
||||
{
|
||||
nsISupportsArray * array;
|
||||
nsresult rv = NS_NewISupportsArray(&array);
|
||||
if (NS_OK == rv) {
|
||||
nsVoidArray * array = new nsVoidArray();
|
||||
if (nsnull != array) {
|
||||
PRInt32 i;
|
||||
for (i=0;i<mDataArray->Count();i++) {
|
||||
DataStruct * data = (DataStruct *)mDataArray->ElementAt(i);
|
||||
array->AppendElement(data->mFlavor); // this addref's for us
|
||||
array->AppendElement(data->mFlavor);
|
||||
}
|
||||
*aDataFlavorList = array;
|
||||
} else {
|
||||
aDataFlavorList = nsnull;
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
*/
|
||||
NS_IMETHODIMP nsTransferable::IsDataFlavorSupported(nsIDataFlavor * aDataFlavor)
|
||||
{
|
||||
nsAutoString mimeInQuestion;
|
||||
aDataFlavor->GetMimeType(mimeInQuestion);
|
||||
|
||||
PRInt32 i;
|
||||
for (i=0;i<mDataArray->Count();i++) {
|
||||
DataStruct * data = (DataStruct *)mDataArray->ElementAt(i);
|
||||
nsAutoString mime;
|
||||
data->mFlavor->GetMimeType(mime);
|
||||
if (mimeInQuestion.Equals(mime)) {
|
||||
return NS_OK;
|
||||
}
|
||||
}
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
/**
|
||||
* The transferable owns the data (memory) and only gives the aData a copy of the pointer address to it.
|
||||
*
|
||||
*/
|
||||
NS_IMETHODIMP nsTransferable::GetTransferData(nsIDataFlavor * aDataFlavor, void ** aData, PRUint32 * aDataLen)
|
||||
NS_IMETHODIMP nsTransferable::GetTransferData(nsString * aDataFlavor, void ** aData, PRUint32 * aDataLen)
|
||||
{
|
||||
nsAutoString mimeInQuestion;
|
||||
aDataFlavor->GetMimeType(mimeInQuestion);
|
||||
|
||||
PRInt32 i;
|
||||
for (i=0;i<mDataArray->Count();i++) {
|
||||
DataStruct * data = (DataStruct *)mDataArray->ElementAt(i);
|
||||
nsAutoString mime;
|
||||
data->mFlavor->GetMimeType(mime);
|
||||
if (mimeInQuestion.Equals(mime)) {
|
||||
*aData = data->mData;
|
||||
*aDataLen = data->mDataLen;
|
||||
if (nsnull != data->mData && data->mDataLen > 0) {
|
||||
return NS_OK;
|
||||
}
|
||||
if (aDataFlavor->Equals(*data->mFlavor)) {
|
||||
*aData = data->mData;
|
||||
*aDataLen = data->mDataLen;
|
||||
if (nsnull != data->mData && data->mDataLen > 0) {
|
||||
return NS_OK;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -184,21 +151,16 @@ NS_IMETHODIMP nsTransferable::GetTransferData(nsIDataFlavor * aDataFlavor, void
|
||||
* The transferable now owns the data (the memory pointing to it)
|
||||
*
|
||||
*/
|
||||
NS_IMETHODIMP nsTransferable::SetTransferData(nsIDataFlavor * aDataFlavor, void * aData, PRUint32 aDataLen)
|
||||
NS_IMETHODIMP nsTransferable::SetTransferData(nsString * aDataFlavor, void * aData, PRUint32 aDataLen)
|
||||
{
|
||||
if (aData == nsnull) {
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
nsAutoString mimeInQuestion;
|
||||
aDataFlavor->GetMimeType(mimeInQuestion);
|
||||
|
||||
PRInt32 i;
|
||||
for (i=0;i<mDataArray->Count();i++) {
|
||||
DataStruct * data = (DataStruct *)mDataArray->ElementAt(i);
|
||||
nsAutoString mime;
|
||||
data->mFlavor->GetMimeType(mime);
|
||||
if (mimeInQuestion.Equals(mime)) {
|
||||
if (aDataFlavor->Equals(*data->mFlavor)) {
|
||||
if (nsnull != data->mData) {
|
||||
delete[] data->mData;
|
||||
}
|
||||
@ -215,34 +177,27 @@ NS_IMETHODIMP nsTransferable::SetTransferData(nsIDataFlavor * aDataFlavor, void
|
||||
*
|
||||
*
|
||||
*/
|
||||
NS_IMETHODIMP nsTransferable::AddDataFlavor(nsIDataFlavor * aDataFlavor)
|
||||
NS_IMETHODIMP nsTransferable::AddDataFlavor(nsString * aDataFlavor)
|
||||
{
|
||||
if (nsnull == aDataFlavor) {
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
nsAutoString mimeInQuestion;
|
||||
aDataFlavor->GetMimeType(mimeInQuestion);
|
||||
|
||||
// Do we have the data flavor already?
|
||||
PRInt32 i;
|
||||
for (i=0;i<mDataArray->Count();i++) {
|
||||
DataStruct * data = (DataStruct *)mDataArray->ElementAt(i);
|
||||
nsAutoString mime;
|
||||
data->mFlavor->GetMimeType(mime);
|
||||
if (mimeInQuestion.Equals(mime)) {
|
||||
if (aDataFlavor->Equals(*data->mFlavor)) {
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
}
|
||||
|
||||
// Create a new "slot" for the data
|
||||
DataStruct * data = new DataStruct;
|
||||
data->mFlavor = aDataFlavor;
|
||||
data->mFlavor = new nsString(*aDataFlavor);
|
||||
data->mData = nsnull;
|
||||
data->mDataLen = 0;
|
||||
|
||||
NS_ADDREF(aDataFlavor);
|
||||
|
||||
mDataArray->AppendElement((void *)data);
|
||||
|
||||
return NS_OK;
|
||||
@ -251,23 +206,21 @@ NS_IMETHODIMP nsTransferable::AddDataFlavor(nsIDataFlavor * aDataFlavor)
|
||||
*
|
||||
*
|
||||
*/
|
||||
NS_IMETHODIMP nsTransferable::RemoveDataFlavor(nsIDataFlavor * aDataFlavor)
|
||||
NS_IMETHODIMP nsTransferable::RemoveDataFlavor(nsString * aDataFlavor)
|
||||
{
|
||||
if (nsnull == aDataFlavor) {
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
nsAutoString mimeInQuestion;
|
||||
aDataFlavor->GetMimeType(mimeInQuestion);
|
||||
|
||||
// Do we have the data flavor already?
|
||||
PRInt32 i;
|
||||
for (i=0;i<mDataArray->Count();i++) {
|
||||
DataStruct * data = (DataStruct *)mDataArray->ElementAt(i);
|
||||
nsAutoString mime;
|
||||
data->mFlavor->GetMimeType(mime);
|
||||
if (mimeInQuestion.Equals(mime)) {
|
||||
delete data;
|
||||
if (aDataFlavor->Equals(*data->mFlavor)) {
|
||||
delete data->mFlavor;
|
||||
if (data->mData) {
|
||||
delete[] data->mData;
|
||||
}
|
||||
mDataArray->RemoveElementAt(i);
|
||||
return NS_OK;
|
||||
}
|
||||
@ -319,7 +272,7 @@ NS_IMETHODIMP nsTransferable::GetConverter(nsIFormatConverter ** aConverter)
|
||||
// intrinsic knowledge or input data converters.
|
||||
//
|
||||
NS_IMETHODIMP
|
||||
nsTransferable :: FlavorsTransferableCanImport ( nsISupportsArray** outFlavorList )
|
||||
nsTransferable :: FlavorsTransferableCanImport ( nsVoidArray** outFlavorList )
|
||||
{
|
||||
if ( !outFlavorList )
|
||||
return NS_ERROR_INVALID_ARG;
|
||||
@ -331,17 +284,16 @@ nsTransferable :: FlavorsTransferableCanImport ( nsISupportsArray** outFlavorLis
|
||||
nsCOMPtr<nsIFormatConverter> converter;
|
||||
GetConverter(getter_AddRefs(converter));
|
||||
if ( converter ) {
|
||||
nsCOMPtr<nsISupportsArray> convertedList;
|
||||
converter->GetInputDataFlavors(getter_AddRefs(convertedList));
|
||||
if ( convertedList ) {
|
||||
nsVoidArray * convertedList;
|
||||
converter->GetInputDataFlavors(&convertedList);
|
||||
if ( nsnull != convertedList ) {
|
||||
PRUint32 i;
|
||||
PRUint32 cnt;
|
||||
nsresult rv = convertedList->Count(&cnt);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
PRUint32 cnt = convertedList->Count();
|
||||
for (i=0;i<cnt;i++) {
|
||||
nsCOMPtr<nsISupports> temp = getter_AddRefs(convertedList->ElementAt(i));
|
||||
(*outFlavorList)->AppendElement(temp); // this addref's for us
|
||||
nsString * temp = (nsString *)convertedList->ElementAt(i);
|
||||
(*outFlavorList)->AppendElement(temp);
|
||||
} // foreach flavor that can be converted to
|
||||
delete convertedList;
|
||||
}
|
||||
} // if a converter exists
|
||||
|
||||
@ -357,7 +309,7 @@ nsTransferable :: FlavorsTransferableCanImport ( nsISupportsArray** outFlavorLis
|
||||
// intrinsic knowledge or output data converters.
|
||||
//
|
||||
NS_IMETHODIMP
|
||||
nsTransferable :: FlavorsTransferableCanExport ( nsISupportsArray** outFlavorList )
|
||||
nsTransferable :: FlavorsTransferableCanExport ( nsVoidArray** outFlavorList )
|
||||
{
|
||||
if ( !outFlavorList )
|
||||
return NS_ERROR_INVALID_ARG;
|
||||
@ -369,15 +321,13 @@ nsTransferable :: FlavorsTransferableCanExport ( nsISupportsArray** outFlavorLis
|
||||
nsCOMPtr<nsIFormatConverter> converter;
|
||||
GetConverter(getter_AddRefs(converter));
|
||||
if ( converter ) {
|
||||
nsCOMPtr<nsISupportsArray> convertedList;
|
||||
converter->GetOutputDataFlavors(getter_AddRefs(convertedList));
|
||||
if ( convertedList ) {
|
||||
nsVoidArray * convertedList;
|
||||
converter->GetOutputDataFlavors(&convertedList);
|
||||
if ( nsnull != convertedList ) {
|
||||
PRUint32 i;
|
||||
PRUint32 cnt;
|
||||
nsresult rv = convertedList->Count(&cnt);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
PRUint32 cnt = convertedList->Count();
|
||||
for (i=0;i<cnt;i++) {
|
||||
nsCOMPtr<nsISupports> temp = getter_AddRefs(convertedList->ElementAt(i));
|
||||
nsString * temp = (nsString *)convertedList->ElementAt(i);
|
||||
(*outFlavorList)->AppendElement(temp); // this addref's for us
|
||||
} // foreach flavor that can be converted to
|
||||
}
|
||||
|
||||
@ -25,8 +25,8 @@
|
||||
#include "nsCOMPtr.h"
|
||||
|
||||
|
||||
class nsISupportsArray;
|
||||
class nsIDataFlavor;
|
||||
class nsVoidArray;
|
||||
class nsString;
|
||||
class nsDataObj;
|
||||
class nsVoidArray;
|
||||
|
||||
@ -35,7 +35,7 @@ class nsVoidArray;
|
||||
* XP Transferable wrapper
|
||||
*/
|
||||
|
||||
class nsTransferable : public nsITransferable, public nsIGenericTransferable
|
||||
class nsTransferable : public nsITransferable
|
||||
{
|
||||
|
||||
public:
|
||||
@ -47,22 +47,20 @@ public:
|
||||
|
||||
|
||||
//nsITransferable
|
||||
NS_IMETHOD FlavorsTransferableCanExport ( nsISupportsArray** outFlavorList ) ;
|
||||
NS_IMETHOD GetTransferDataFlavors(nsISupportsArray ** aDataFlavorList);
|
||||
NS_IMETHOD IsDataFlavorSupported(nsIDataFlavor * aFlavor);
|
||||
NS_IMETHOD FlavorsTransferableCanExport ( nsVoidArray** outFlavorList ) ;
|
||||
NS_IMETHOD GetTransferDataFlavors(nsVoidArray ** aDataFlavorList);
|
||||
|
||||
// Transferable still owns |aData|. Do not delete it.
|
||||
NS_IMETHOD GetTransferData(nsIDataFlavor * aFlavor, void ** aData, PRUint32 * aDataLen);
|
||||
NS_IMETHOD GetTransferData(nsString * aFlavor, void ** aData, PRUint32 * aDataLen);
|
||||
NS_IMETHOD_(PRBool) IsLargeDataSet();
|
||||
|
||||
//nsIGenericTransferable
|
||||
NS_IMETHOD FlavorsTransferableCanImport ( nsISupportsArray** outFlavorList ) ;
|
||||
NS_IMETHOD FlavorsTransferableCanImport ( nsVoidArray** outFlavorList ) ;
|
||||
|
||||
// Transferable consumes |aData|. Do not delete it.
|
||||
NS_IMETHOD SetTransferData(nsIDataFlavor * aFlavor, void * aData, PRUint32 aDataLen);
|
||||
NS_IMETHOD SetTransferData(nsString * aFlavor, void * aData, PRUint32 aDataLen);
|
||||
|
||||
NS_IMETHOD AddDataFlavor(nsIDataFlavor * aDataFlavor);
|
||||
NS_IMETHOD RemoveDataFlavor(nsIDataFlavor * aDataFlavor);
|
||||
NS_IMETHOD AddDataFlavor(nsString * aDataFlavor);
|
||||
NS_IMETHOD RemoveDataFlavor(nsString * aDataFlavor);
|
||||
|
||||
NS_IMETHOD SetConverter(nsIFormatConverter * aConverter);
|
||||
NS_IMETHOD GetConverter(nsIFormatConverter ** aConverter);
|
||||
@ -70,7 +68,7 @@ public:
|
||||
|
||||
protected:
|
||||
|
||||
nsVoidArray * mDataArray;
|
||||
nsVoidArray * mDataArray;
|
||||
nsCOMPtr<nsIFormatConverter> mFormatConv;
|
||||
|
||||
};
|
||||
|
||||
@ -16,9 +16,9 @@
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
#include "nsIDataFlavor.h"
|
||||
#include "nsString.h"
|
||||
#include "nsWidgetsCID.h"
|
||||
#include "nsISupportsArray.h"
|
||||
#include "nsVoidArray.h"
|
||||
#include "nsRepository.h"
|
||||
|
||||
// These are temporary
|
||||
@ -37,7 +37,7 @@
|
||||
#include "nsHTMLToTXTSinkStream.h"
|
||||
#include "nsXIFDTD.h"
|
||||
|
||||
#include "nsIDataFlavor.h"
|
||||
#include "nsString.h"
|
||||
#include "nsWidgetsCID.h"
|
||||
#include "nsXIFFormatConverter.h"
|
||||
|
||||
@ -47,10 +47,6 @@ static NS_DEFINE_IID(kIXIFFormatConverterIID, NS_IFORMATCONVERTER_IID);
|
||||
static NS_DEFINE_IID(kCParserIID, NS_IPARSER_IID);
|
||||
static NS_DEFINE_IID(kCParserCID, NS_PARSER_IID);
|
||||
|
||||
static NS_DEFINE_IID(kIDataFlavorIID, NS_IDATAFLAVOR_IID);
|
||||
static NS_DEFINE_IID(kCDataFlavorCID, NS_DATAFLAVOR_CID);
|
||||
|
||||
|
||||
NS_IMPL_ADDREF(nsXIFFormatConverter)
|
||||
NS_IMPL_RELEASE(nsXIFFormatConverter)
|
||||
|
||||
@ -98,28 +94,15 @@ nsresult nsXIFFormatConverter::QueryInterface(const nsIID& aIID, void** aInstanc
|
||||
}
|
||||
|
||||
|
||||
static void AddFlavor(nsISupportsArray * aArray, const nsString & aMime, const nsString & aReadable)
|
||||
{
|
||||
nsIDataFlavor * flavor;
|
||||
nsresult rv = nsComponentManager::CreateInstance(kCDataFlavorCID, nsnull, kIDataFlavorIID, (void**) &flavor);
|
||||
if (NS_OK == rv) {
|
||||
flavor->Init(aMime, aReadable);
|
||||
if (nsnull != flavor) {
|
||||
aArray->AppendElement(flavor);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
*/
|
||||
NS_IMETHODIMP nsXIFFormatConverter::GetInputDataFlavors(nsISupportsArray ** aDataFlavorList)
|
||||
NS_IMETHODIMP nsXIFFormatConverter::GetInputDataFlavors(nsVoidArray ** aDataFlavorList)
|
||||
{
|
||||
nsISupportsArray * array;
|
||||
nsresult rv = NS_NewISupportsArray(&array);
|
||||
if (NS_OK == rv) {
|
||||
AddFlavor(array, kXIFMime, "XIF");
|
||||
nsVoidArray * array = new nsVoidArray();
|
||||
if (nsnull != array) {
|
||||
array->AppendElement(new nsString(kXIFMime));
|
||||
*aDataFlavorList = array;
|
||||
}
|
||||
return NS_OK;
|
||||
@ -129,15 +112,14 @@ NS_IMETHODIMP nsXIFFormatConverter::GetInputDataFlavors(nsISupportsArray ** aDat
|
||||
*
|
||||
*
|
||||
*/
|
||||
NS_IMETHODIMP nsXIFFormatConverter::GetOutputDataFlavors(nsISupportsArray ** aDataFlavorList)
|
||||
NS_IMETHODIMP nsXIFFormatConverter::GetOutputDataFlavors(nsVoidArray ** aDataFlavorList)
|
||||
{
|
||||
nsISupportsArray * array;
|
||||
nsresult rv = NS_NewISupportsArray(&array);
|
||||
if (NS_OK == rv) {
|
||||
AddFlavor(array, kXIFMime, "XIF");
|
||||
AddFlavor(array, kTextMime, "Text");
|
||||
AddFlavor(array, kAOLMailMime, "AOLMail");
|
||||
AddFlavor(array, kHTMLMime, "HTML");
|
||||
nsVoidArray * array = new nsVoidArray();
|
||||
if (nsnull != array) {
|
||||
array->AppendElement(new nsString(kXIFMime));
|
||||
array->AppendElement(new nsString(kTextMime));
|
||||
array->AppendElement(new nsString(kAOLMailMime));
|
||||
array->AppendElement(new nsString(kHTMLMime));
|
||||
*aDataFlavorList = array;
|
||||
}
|
||||
return NS_OK;
|
||||
@ -149,25 +131,19 @@ NS_IMETHODIMP nsXIFFormatConverter::GetOutputDataFlavors(nsISupportsArray ** aDa
|
||||
*
|
||||
*
|
||||
*/
|
||||
NS_IMETHODIMP nsXIFFormatConverter::CanConvert(nsIDataFlavor * aFromDataFlavor, nsIDataFlavor * aToDataFlavor)
|
||||
NS_IMETHODIMP nsXIFFormatConverter::CanConvert(nsString * aFromDataFlavor, nsString * aToDataFlavor)
|
||||
{
|
||||
|
||||
// This method currently only converts from XIF to the others
|
||||
nsAutoString fromMimeInQuestion;
|
||||
aFromDataFlavor->GetMimeType(fromMimeInQuestion);
|
||||
|
||||
if (!fromMimeInQuestion.Equals(kXIFMime)) {
|
||||
if (!aFromDataFlavor->Equals(kXIFMime)) {
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
nsAutoString toMimeInQuestion;
|
||||
aToDataFlavor->GetMimeType(toMimeInQuestion);
|
||||
|
||||
if (toMimeInQuestion.Equals(kTextMime)) {
|
||||
if (aToDataFlavor->Equals(kTextMime)) {
|
||||
return NS_OK;
|
||||
} else if (toMimeInQuestion.Equals(kHTMLMime)) {
|
||||
} else if (aToDataFlavor->Equals(kHTMLMime)) {
|
||||
return NS_OK;
|
||||
} else if (toMimeInQuestion.Equals(kAOLMailMime)) {
|
||||
} else if (aToDataFlavor->Equals(kAOLMailMime)) {
|
||||
return NS_OK;
|
||||
}
|
||||
return NS_ERROR_FAILURE;
|
||||
@ -177,36 +153,31 @@ NS_IMETHODIMP nsXIFFormatConverter::CanConvert(nsIDataFlavor * aFromDataFlavor,
|
||||
*
|
||||
*
|
||||
*/
|
||||
NS_IMETHODIMP nsXIFFormatConverter::Convert(nsIDataFlavor * aFromDataFlavor, void * aFromData, PRUint32 aDataLen,
|
||||
nsIDataFlavor * aToDataFlavor, void ** aToData, PRUint32 * aDataToLen)
|
||||
NS_IMETHODIMP nsXIFFormatConverter::Convert(nsString * aFromDataFlavor, void * aFromData, PRUint32 aDataLen,
|
||||
nsString * aToDataFlavor, void ** aToData, PRUint32 * aDataToLen)
|
||||
{
|
||||
|
||||
// This method currently only converts from XIF to the others
|
||||
nsAutoString fromMimeInQuestion;
|
||||
aFromDataFlavor->GetMimeType(fromMimeInQuestion);
|
||||
|
||||
if (!fromMimeInQuestion.Equals(kXIFMime)) {
|
||||
if (!aFromDataFlavor->Equals(kXIFMime)) {
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
nsAutoString toMimeInQuestion;
|
||||
aToDataFlavor->GetMimeType(toMimeInQuestion);
|
||||
|
||||
nsAutoString text;
|
||||
nsAutoString srcText;
|
||||
srcText.SetString((char *)aFromData, aDataLen);
|
||||
|
||||
if (toMimeInQuestion.Equals(kTextMime)) {
|
||||
if (aToDataFlavor->Equals(kTextMime)) {
|
||||
if (NS_OK == ConvertFromXIFToText(srcText, text)) {
|
||||
*aToData = (void *)text.ToNewCString();
|
||||
*aDataToLen = text.Length();
|
||||
}
|
||||
} else if (toMimeInQuestion.Equals(kHTMLMime)) {
|
||||
} else if (aToDataFlavor->Equals(kHTMLMime)) {
|
||||
if (NS_OK == ConvertFromXIFToHTML(srcText, text)) {
|
||||
*aToData = (void *)text.ToNewCString();
|
||||
*aDataToLen = text.Length();
|
||||
}
|
||||
} else if (toMimeInQuestion.Equals(kAOLMailMime)) {
|
||||
} else if (aToDataFlavor->Equals(kAOLMailMime)) {
|
||||
if (NS_OK == ConvertFromXIFToAOLMail(srcText, text)) {
|
||||
*aToData = (void *)text.ToNewCString();
|
||||
*aDataToLen = text.Length();
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
#include "nsIFormatConverter.h"
|
||||
#include "nsString.h"
|
||||
|
||||
class nsIDataFlavor;
|
||||
#include "nsITransferable.h" // for mime defs
|
||||
|
||||
class nsXIFFormatConverter : public nsIFormatConverter
|
||||
{
|
||||
@ -35,12 +35,12 @@ public:
|
||||
NS_DECL_ISUPPORTS
|
||||
|
||||
//nsIXIFConverter
|
||||
NS_IMETHOD GetInputDataFlavors(nsISupportsArray ** aDataFlavorList);
|
||||
NS_IMETHOD GetOutputDataFlavors(nsISupportsArray ** aDataFlavorList);
|
||||
NS_IMETHOD GetInputDataFlavors(nsVoidArray ** aDataFlavorList);
|
||||
NS_IMETHOD GetOutputDataFlavors(nsVoidArray ** aDataFlavorList);
|
||||
|
||||
NS_IMETHOD CanConvert(nsIDataFlavor * aFromDataFlavor, nsIDataFlavor * aToDataFlavor);
|
||||
NS_IMETHOD Convert(nsIDataFlavor * aFromDataFlavor, void * aFromData, PRUint32 aDataLen,
|
||||
nsIDataFlavor * aToDataFlavor, void ** aToData, PRUint32 * aDataToLen);
|
||||
NS_IMETHOD CanConvert(nsString * aFromDataFlavor, nsString * aToDataFlavor);
|
||||
NS_IMETHOD Convert(nsString * aFromDataFlavor, void * aFromData, PRUint32 aDataLen,
|
||||
nsString * aToDataFlavor, void ** aToData, PRUint32 * aDataToLen);
|
||||
|
||||
protected:
|
||||
|
||||
@ -48,7 +48,7 @@ protected:
|
||||
NS_IMETHOD ConvertFromXIFToText(const nsString & aFromStr, nsString & aToStr);
|
||||
NS_IMETHOD ConvertFromXIFToAOLMail(const nsString & aFromStr, nsString & aToStr);
|
||||
|
||||
nsISupportsArray * mDFList;
|
||||
//nsVoidArray * mDFList;
|
||||
|
||||
};
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user