diff options
author | Kai Ahrens <ka@openoffice.org> | 2001-01-17 14:20:25 +0000 |
---|---|---|
committer | Kai Ahrens <ka@openoffice.org> | 2001-01-17 14:20:25 +0000 |
commit | 5c3c76af992e859e745df1d292df46bb5c8e7c7e (patch) | |
tree | 4c118976fc374c9cd7ae6fc42beeb9f3451cdc04 /sot/source/base/exchange.cxx | |
parent | 249a3980727bffd52a534214c8776d58d6d1a48f (diff) |
added support for new XTransferable interface (DataFlavors)
Diffstat (limited to 'sot/source/base/exchange.cxx')
-rw-r--r-- | sot/source/base/exchange.cxx | 418 |
1 files changed, 262 insertions, 156 deletions
diff --git a/sot/source/base/exchange.cxx b/sot/source/base/exchange.cxx index 2db9935c6520..be5d304ef9e0 100644 --- a/sot/source/base/exchange.cxx +++ b/sot/source/base/exchange.cxx @@ -2,9 +2,9 @@ * * $RCSfile: exchange.cxx,v $ * - * $Revision: 1.3 $ + * $Revision: 1.4 $ * - * last change: $Author: dl $ $Date: 2000-12-11 15:56:43 $ + * last change: $Author: ka $ $Date: 2001-01-17 15:20:25 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -68,7 +68,6 @@ #ifndef _SOLAR_H #include <tools/solar.h> #endif - #include <tools/string.hxx> #include <sotdata.hxx> #include <exchange.hxx> @@ -76,155 +75,167 @@ #pragma hdrstop +#ifndef _COM_SUN_STAR_UNO_SEQUENCE_HXX_ +#include <com/sun/star/uno/Sequence.hxx> +#endif +#ifndef _COM_SUN_STAR_DATATRANSFER_DATAFLAVOR_HPP_ +#include <com/sun/star/datatransfer/DataFlavor.hpp> +#endif + +using namespace::com::sun::star::uno; +using namespace::com::sun::star::datatransfer; + /* - In dieser Tabelle stehen alle im Office verwendeten Format-Bezeichner. + In diesen Tabellen stehen alle im Office verwendeten MimeTypes, + Format-Bezeichner und Types. Die Tabelle ist nach den Formatstring-Ids sortiert und jede Id ist um genau 1 groesser als ihre Vorgaenger-Id, damit die Id als Tabellenindex benutzt werden kann. */ - -static const sal_Char* aFormatArray_Impl[] = +struct DataFlavorRepresentation { -/* 0 SOT_FORMAT_SYSTEM_START*/ "", -/* 1 SOT_FORMAT_STRING*/ "Text", -/* 2 SOT_FORMAT_BITMAP*/ "Bitmap", -/* 3 SOT_FORMAT_GDIMETAFILE*/ "GDIMetaFile", -/* 4 SOT_FORMAT_PRIVATE*/ "Private", -/* 5 SOT_FORMAT_FILE*/ "FileName", -/* 6 SOT_FORMAT_FILE_LIST*/ "FileList", -/* 7 EMPTY*/ "", -/* 8 EMPTY*/ "", -/* 9 EMPTY*/ "", -/* 10 SOT_FORMAT_RTF*/ "Rich Text Format", - -/* 11 SOT_FORMATSTR_ID_DRAWING*/ "Drawing Format", -/* 12 SOT_FORMATSTR_ID_SVXB*/ "SVXB (StarView Bitmap/Animation)", -/* 13 SOT_FORMATSTR_ID_SVIM*/ "SVIM (StarView ImageMap)", -/* 14 SOT_FORMATSTR_ID_XFA*/ "XFA (XOutDev FillAttr)", -/* 15 SOT_FORMATSTR_ID_EDITENGINE*/ "EditEngineFormat", -/* 16 SOT_FORMATSTR_ID_INTERNALLINK_STATE*/ "StatusInfo vom SvxInternalLink", -/* 17 SOT_FORMATSTR_ID_SOLK*/ "SOLK (StarOffice Link)", -/* 18 SOT_FORMATSTR_ID_NETSCAPE_BOOKMARK*/ "Netscape Bookmark", -/* 19 SOT_FORMATSTR_ID_TREELISTBOX*/ "SV_LBOX_DD_FORMAT", -/* 20 SOT_FORMATSTR_ID_NATIVE*/ "Native", -/* 21 SOT_FORMATSTR_ID_OWNERLINK*/ "OwnerLink", -/* 22 SOT_FORMATSTR_ID_STARSERVER*/ "StarServerFormat", -/* 23 SOT_FORMATSTR_ID_STAROBJECT*/ "StarObjectFormat", -/* 24 SOT_FORMATSTR_ID_APPLETOBJECT*/ "Applet Object", -/* 25 SOT_FORMATSTR_ID_PLUGIN_OBJECT*/ "PlugIn Object", -/* 26 SOT_FORMATSTR_ID_STARWRITER_30*/ "StarWriter 3.0", -/* 27 SOT_FORMATSTR_ID_STARWRITER_40*/ "StarWriter 4.0", -/* 28 SOT_FORMATSTR_ID_STARWRITER_50*/ "StarWriter 5.0", -/* 29 SOT_FORMATSTR_ID_STARWRITERWEB_40*/ "StarWriter/Web 4.0", -/* 30 SOT_FORMATSTR_ID_STARWRITERWEB_50*/ "StarWriter/Web 5.0", -/* 31 SOT_FORMATSTR_ID_STARWRITERGLOB_40*/ "StarWriter/Global 4.0", -/* 32 SOT_FORMATSTR_ID_STARWRITERGLOB_50*/ "StarWriter/Global 5.0", -/* 33 SOT_FORMATSTR_ID_STARDRAW*/ "StarDrawDocument", -/* 34 SOT_FORMATSTR_ID_STARDRAW_40*/ "StarDrawDocument 4.0", -/* 35 SOT_FORMATSTR_ID_STARIMPRESS_50*/ "StarImpress 5.0", -/* 36 SOT_FORMATSTR_ID_STARDRAW_50*/ "StarDraw 5.0", -/* 37 SOT_FORMATSTR_ID_STARCALC*/ "StarCalcDocument", -/* 38 SOT_FORMATSTR_ID_STARCALC_40*/ "StarCalc 4.0", -/* 39 SOT_FORMATSTR_ID_STARCALC_50*/ "StarCalc 5.0", -/* 40 SOT_FORMATSTR_ID_STARCHART*/ "StarChartDocument", -/* 41 SOT_FORMATSTR_ID_STARCHART_40*/ "StarChartDocument 4.0", -/* 42 SOT_FORMATSTR_ID_STARCHART_50*/ "StarChart 5.0", -/* 43 SOT_FORMATSTR_ID_STARIMAGE*/ "StarImageDocument", -/* 44 SOT_FORMATSTR_ID_STARIMAGE_40*/ "StarImageDocument 4.0", -/* 45 SOT_FORMATSTR_ID_STARIMAGE_50*/ "StarImage 5.0", -/* 46 SOT_FORMATSTR_ID_STARMATH*/ "StarMath", -/* 47 SOT_FORMATSTR_ID_STARMATH_40*/ "StarMathDocument 4.0", -/* 48 SOT_FORMATSTR_ID_STARMATH_50*/ "StarMath 5.0", -/* 49 SOT_FORMATSTR_ID_STAROBJECT_PAINTDOC*/ "StarObjectPaintDocument", -/* 50 SOT_FORMATSTR_ID_FILLED_AREA*/ "FilledArea", -/* 51 SOT_FORMATSTR_ID_HTML*/ "HTML (HyperText Markup Language)", -/* 52 SOT_FORMATSTR_ID_HTML_SIMPLE*/ "HTML Format", -/* 53 SOT_FORMATSTR_ID_CHAOS*/ "FORMAT_CHAOS", -/* 54 SOT_FORMATSTR_ID_CNT_MSGATTACHFILE*/ "CNT_MSGATTACHFILE_FORMAT", -/* 55 SOT_FORMATSTR_ID_BIFF_5*/ "Biff5", -/* 56 SOT_FORMATSTR_ID_BIFF__5*/ "Biff 5", -/* 57 SOT_FORMATSTR_ID_SYLK*/ "Sylk", -/* 58 SOT_FORMATSTR_ID_SYLK_BIGCAPS*/ "SYLK", -/* 59 SOT_FORMATSTR_ID_LINK*/ "Link", -/* 60 SOT_FORMATSTR_ID_DIF*/ "DIF", -/* 61 SOT_FORMATSTR_ID_STARDRAW_TABBAR*/ "StarDraw TabBar", -/* 62 SOT_FORMATSTR_ID_SONLK*/ "SONLK (StarOffice Navi Link)", -/* 63 SOT_FORMATSTR_ID_MSWORD_DOC*/ "MSWordDoc", -/* 64 SOT_FORMATSTR_ID_STAR_FRAMESET_DOC*/ "StarFrameSetDocument", -/* 65 SOT_FORMATSTR_ID_OFFICE_DOC*/ "OfficeDocument", -/* 66 SOT_FORMATSTR_ID_NOTES_DOCINFO*/ "NotesDocInfo", -/* 67 SOT_FORMATSTR_ID_NOTES_HNOTE*/ "NoteshNote", -/* 68 SOT_FORMATSTR_ID_NOTES_NATIVE*/ "Native", -/* 69 SOT_FORMATSTR_ID_SFX_DOC*/ "SfxDocument", -/* 70 SOT_FORMATSTR_ID_EVDF*/ "EVDF (Explorer View Dummy Format)", -/* 71 SOT_FORMATSTR_ID_ESDF*/ "ESDF (Explorer Search Dummy Format)", -/* 72 SOT_FORMATSTR_ID_IDF*/ "IDF (Iconview Dummy Format)", -/* 73 SOT_FORMATSTR_ID_EFTP*/ "EFTP (Explorer Ftp File)", -/* 74 SOT_FORMATSTR_ID_EFD*/ "EFD (Explorer Ftp Dir)", -/* 75 SOT_FORMATSTR_ID_SVX_FORMFIELDEXCH*/ "SvxFormFieldExch", -/* 76 SOT_FORMATSTR_ID_EXTENDED_TABBAR*/ "ExtendedTabBar", -/* 77 SOT_FORMATSTR_ID_SBA_DATAEXCHANGE*/ "SBA-DATAFORMAT", -/* 78 SOT_FORMATSTR_ID_SBA_FIELDDATAEXCHANGE*/ "SBA-FIELDFORMAT", -/* 79 SOT_FORMATSTR_ID_SBA_PRIVATE_URL*/ "SBA-PRIVATEURLFORMAT", -/* 80 SOT_FORMATSTR_ID_SBA_TABED*/ "Tabed", -/* 81 SOT_FORMATSTR_ID_SBA_TABID*/ "Tabid", -/* 82 SOT_FORMATSTR_ID_SBA_JOIN*/ "SBA-JOINFORMAT", + const char* pMimeType; + const char* pName; + const ::com::sun::star::uno::Type* pType; +}; + +// ----------------------------------------------------------------------------- +static const DataFlavorRepresentation aFormatArray_Impl[] = +{ +/* 0 SOT_FORMAT_SYSTEM_START*/ { "", "", &::getCppuType( (const ::rtl::OUString*) 0 ) }, +/* 1 SOT_FORMAT_STRING*/ { "text/plain;charset=utf-16", "Text", &::getCppuType( (const ::rtl::OUString*) 0 ) }, +/* 2 SOT_FORMAT_BITMAP*/ { "image/x-cf-dib", "Bitmap", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 3 SOT_FORMAT_GDIMETAFILE*/ { "GDIMetaFile", "GDIMetaFile", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 4 SOT_FORMAT_PRIVATE*/ { "Private", "Private", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 5 SOT_FORMAT_FILE*/ { "FileName", "FileName", &::getCppuType( (const ::rtl::OUString*) 0 ) }, +/* 6 SOT_FORMAT_FILE_LIST*/ { "FileList", "FileList", &::getCppuType( (const Sequence< ::rtl::OUString >*) 0 ) }, +/* 7 EMPTY*/ { "", "", &::getCppuType( (const ::rtl::OUString*) 0 ) }, +/* 8 EMPTY*/ { "", "", &::getCppuType( (const ::rtl::OUString*) 0 ) }, +/* 9 EMPTY*/ { "", "", &::getCppuType( (const ::rtl::OUString*) 0 ) }, +/* 10 SOT_FORMAT_RTF*/ { "text/richtext", "Rich Text Format", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 11 SOT_FORMATSTR_ID_DRAWING*/ { "Drawing Format", "Drawing Format", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 12 SOT_FORMATSTR_ID_SVXB*/ { "SVXB (StarView Bitmap/Animation)", "SVXB (StarView Bitmap/Animation)", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 13 SOT_FORMATSTR_ID_SVIM*/ { "SVIM (StarView ImageMap)", "SVIM (StarView ImageMap)", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 14 SOT_FORMATSTR_ID_XFA*/ { "XFA (XOutDev FillAttr)", "XFA (XOutDev FillAttr)", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 15 SOT_FORMATSTR_ID_EDITENGINE*/ { "EditEngineFormat", "EditEngineFormat", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, //Type??? +/* 16 SOT_FORMATSTR_ID_INTERNALLINK_STATE*/ { "StatusInfo vom SvxInternalLink", "StatusInfo vom SvxInternalLink", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, //Type??? +/* 17 SOT_FORMATSTR_ID_SOLK*/ { "SOLK (StarOffice Link)", "SOLK (StarOffice Link)", &::getCppuType( (const ::rtl::OUString*) 0 ) }, +/* 18 SOT_FORMATSTR_ID_NETSCAPE_BOOKMARK*/ { "Netscape Bookmark", "Netscape Bookmark", &::getCppuType( (const ::rtl::OUString*) 0 ) }, +/* 19 SOT_FORMATSTR_ID_TREELISTBOX*/ { "SV_LBOX_DD_FORMAT", "SV_LBOX_DD_FORMAT", &::getCppuType( (const ::rtl::OUString*) 0 ) }, //Type??? +/* 20 SOT_FORMATSTR_ID_NATIVE*/ { "Native", "Native", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, //Type??? +/* 21 SOT_FORMATSTR_ID_OWNERLINK*/ { "OwnerLink", "OwnerLink", &::getCppuType( (const ::rtl::OUString*) 0 ) }, +/* 22 SOT_FORMATSTR_ID_STARSERVER*/ { "StarServerFormat", "StarServerFormat", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, //Type??? +/* 23 SOT_FORMATSTR_ID_STAROBJECT*/ { "StarObjectFormat", "StarObjectFormat", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, //Type??? +/* 24 SOT_FORMATSTR_ID_APPLETOBJECT*/ { "Applet Object", "Applet Object", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, //Type??? +/* 25 SOT_FORMATSTR_ID_PLUGIN_OBJECT*/ { "PlugIn Object", "PlugIn Object", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, //Type??? +/* 26 SOT_FORMATSTR_ID_STARWRITER_30*/ { "StarWriter 3.0", "StarWriter 3.0", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 27 SOT_FORMATSTR_ID_STARWRITER_40*/ { "StarWriter 4.0", "StarWriter 4.0", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 28 SOT_FORMATSTR_ID_STARWRITER_50*/ { "StarWriter 5.0", "StarWriter 5.0", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 29 SOT_FORMATSTR_ID_STARWRITERWEB_40*/ { "StarWriter/Web 4.0", "StarWriter/Web 4.0", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 30 SOT_FORMATSTR_ID_STARWRITERWEB_50*/ { "StarWriter/Web 5.0", "StarWriter/Web 5.0", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 31 SOT_FORMATSTR_ID_STARWRITERGLOB_40*/ { "StarWriter/Global 4.0", "StarWriter/Global 4.0", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 32 SOT_FORMATSTR_ID_STARWRITERGLOB_50*/ { "StarWriter/Global 5.0", "StarWriter/Global 5.0", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 33 SOT_FORMATSTR_ID_STARDRAW*/ { "StarDrawDocument", "StarDrawDocument", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 34 SOT_FORMATSTR_ID_STARDRAW_40*/ { "StarDrawDocument 4.0", "StarDrawDocument 4.0", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 35 SOT_FORMATSTR_ID_STARIMPRESS_50*/ { "StarImpress 5.0", "StarImpress 5.0", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 36 SOT_FORMATSTR_ID_STARDRAW_50*/ { "StarDraw 5.0", "StarDraw 5.0", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 37 SOT_FORMATSTR_ID_STARCALC*/ { "StarCalcDocument", "StarCalcDocument", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 38 SOT_FORMATSTR_ID_STARCALC_40*/ { "StarCalc 4.0", "StarCalc 4.0", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 39 SOT_FORMATSTR_ID_STARCALC_50*/ { "StarCalc 5.0", "StarCalc 5.0", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 40 SOT_FORMATSTR_ID_STARCHART*/ { "StarChartDocument", "StarChartDocument", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 41 SOT_FORMATSTR_ID_STARCHART_40*/ { "StarChartDocument 4.0", "StarChartDocument 4.0", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 42 SOT_FORMATSTR_ID_STARCHART_50*/ { "StarChart 5.0", "StarChart 5.0", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 43 SOT_FORMATSTR_ID_STARIMAGE*/ { "StarImageDocument", "StarImageDocument", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 44 SOT_FORMATSTR_ID_STARIMAGE_40*/ { "StarImageDocument 4.0", "StarImageDocument 4.0", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 45 SOT_FORMATSTR_ID_STARIMAGE_50*/ { "StarImage 5.0", "StarImage 5.0", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 46 SOT_FORMATSTR_ID_STARMATH*/ { "StarMath", "StarMath", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 47 SOT_FORMATSTR_ID_STARMATH_40*/ { "StarMathDocument 4.0", "StarMathDocument 4.0", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 48 SOT_FORMATSTR_ID_STARMATH_50*/ { "StarMath 5.0", "StarMath 5.0", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 49 SOT_FORMATSTR_ID_STAROBJECT_PAINTDOC*/ { "StarObjectPaintDocument", "StarObjectPaintDocument", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 50 SOT_FORMATSTR_ID_FILLED_AREA*/ { "FilledArea", "FilledArea", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 51 SOT_FORMATSTR_ID_HTML*/ { "HTML (HyperText Markup Language)", "HTML (HyperText Markup Language)", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 52 SOT_FORMATSTR_ID_HTML_SIMPLE*/ { "text/html", "HTML Format", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 53 SOT_FORMATSTR_ID_CHAOS*/ { "FORMAT_CHAOS", "FORMAT_CHAOS", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 54 SOT_FORMATSTR_ID_CNT_MSGATTACHFILE*/ { "CNT_MSGATTACHFILE_FORMAT", "CNT_MSGATTACHFILE_FORMAT", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, //Type??? +/* 55 SOT_FORMATSTR_ID_BIFF_5*/ { "Biff5", "Biff5", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 56 SOT_FORMATSTR_ID_BIFF__5*/ { "Biff 5", "Biff 5", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 57 SOT_FORMATSTR_ID_SYLK*/ { "Sylk", "Sylk", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 58 SOT_FORMATSTR_ID_SYLK_BIGCAPS*/ { "SYLK", "SYLK", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 59 SOT_FORMATSTR_ID_LINK*/ { "Link", "Link", &::getCppuType( (const ::rtl::OUString*) 0 ) }, +/* 60 SOT_FORMATSTR_ID_DIF*/ { "DIF", "DIF", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 61 SOT_FORMATSTR_ID_STARDRAW_TABBAR*/ { "StarDraw TabBar", "StarDraw TabBar", &::getCppuType( (const ::rtl::OUString*) 0 ) }, +/* 62 SOT_FORMATSTR_ID_SONLK*/ { "SONLK (StarOffice Navi Link)", "SONLK (StarOffice Navi Link)", &::getCppuType( (const ::rtl::OUString*) 0 ) }, +/* 63 SOT_FORMATSTR_ID_MSWORD_DOC*/ { "MSWordDoc", "MSWordDoc", &::getCppuType( (const ::rtl::OUString*) 0 ) }, +/* 64 SOT_FORMATSTR_ID_STAR_FRAMESET_DOC*/ { "StarFrameSetDocument", "StarFrameSetDocument", &::getCppuType( (const ::rtl::OUString*) 0 ) }, +/* 65 SOT_FORMATSTR_ID_OFFICE_DOC*/ { "OfficeDocument", "OfficeDocument", &::getCppuType( (const ::rtl::OUString*) 0 ) }, +/* 66 SOT_FORMATSTR_ID_NOTES_DOCINFO*/ { "NotesDocInfo", "NotesDocInfo", &::getCppuType( (const ::rtl::OUString*) 0 ) }, +/* 67 SOT_FORMATSTR_ID_NOTES_HNOTE*/ { "NoteshNote", "NoteshNote", &::getCppuType( (const ::rtl::OUString*) 0 ) }, +/* 68 SOT_FORMATSTR_ID_NOTES_NATIVE*/ { "Native", "Native", &::getCppuType( (const ::rtl::OUString*) 0 ) }, +/* 69 SOT_FORMATSTR_ID_SFX_DOC*/ { "SfxDocument", "SfxDocument", &::getCppuType( (const ::rtl::OUString*) 0 ) }, +/* 70 SOT_FORMATSTR_ID_EVDF*/ { "EVDF (Explorer View Dummy Format)", "EVDF (Explorer View Dummy Format)", &::getCppuType( (const ::rtl::OUString*) 0 ) }, +/* 71 SOT_FORMATSTR_ID_ESDF*/ { "ESDF (Explorer Search Dummy Format)", "ESDF (Explorer Search Dummy Format)", &::getCppuType( (const ::rtl::OUString*) 0 ) }, +/* 72 SOT_FORMATSTR_ID_IDF*/ { "IDF (Iconview Dummy Format)", "IDF (Iconview Dummy Format)", &::getCppuType( (const ::rtl::OUString*) 0 ) }, +/* 73 SOT_FORMATSTR_ID_EFTP*/ { "EFTP (Explorer Ftp File)", "EFTP (Explorer Ftp File)", &::getCppuType( (const ::rtl::OUString*) 0 ) }, +/* 74 SOT_FORMATSTR_ID_EFD*/ { "EFD (Explorer Ftp Dir)", "EFD (Explorer Ftp Dir)", &::getCppuType( (const ::rtl::OUString*) 0 ) }, +/* 75 SOT_FORMATSTR_ID_SVX_FORMFIELDEXCH*/ { "SvxFormFieldExch", "SvxFormFieldExch", &::getCppuType( (const ::rtl::OUString*) 0 ) }, +/* 76 SOT_FORMATSTR_ID_EXTENDED_TABBAR*/ { "ExtendedTabBar", "ExtendedTabBar", &::getCppuType( (const ::rtl::OUString*) 0 ) }, +/* 77 SOT_FORMATSTR_ID_SBA_DATAEXCHANGE*/ { "SBA-DATAFORMAT", "SBA-DATAFORMAT", &::getCppuType( (const ::rtl::OUString*) 0 ) }, +/* 78 SOT_FORMATSTR_ID_SBA_FIELDDATAEXCHANGE*/ { "SBA-FIELDFORMAT", "SBA-FIELDFORMAT", &::getCppuType( (const ::rtl::OUString*) 0 ) }, +/* 79 SOT_FORMATSTR_ID_SBA_PRIVATE_URL*/ { "SBA-PRIVATEURLFORMAT", "SBA-PRIVATEURLFORMAT", &::getCppuType( (const ::rtl::OUString*) 0 ) }, +/* 80 SOT_FORMATSTR_ID_SBA_TABED*/ { "Tabed", "Tabed", &::getCppuType( (const ::rtl::OUString*) 0 ) }, +/* 81 SOT_FORMATSTR_ID_SBA_TABID*/ { "Tabid", "Tabid", &::getCppuType( (const ::rtl::OUString*) 0 ) }, +/* 82 SOT_FORMATSTR_ID_SBA_JOIN*/ { "SBA-JOINFORMAT", "SBA-JOINFORMAT", &::getCppuType( (const ::rtl::OUString*) 0 ) }, #ifdef MAC -/* 83 SOT_FORMATSTR_ID_OBJECTDESCRIPTOR*/ "Star OBJD", -/* 84 SOT_FORMATSTR_ID_LINKSRCDESCRIPTOR*/ "Star LKSD", -/* 85 SOT_FORMATSTR_ID_EMBED_SOURCE*/ "Star EMBS", -/* 86 SOT_FORMATSTR_ID_LINK_SOURCE*/ "Star LNKS", -/* 87 SOT_FORMATSTR_ID_EMBEDDED_OBJ*/ "Star EMBO", -#else -/* 83 SOT_FORMATSTR_ID_OBJECTDESCRIPTOR*/ "Star Object Descriptor", -/* 84 SOT_FORMATSTR_ID_LINKSRCDESCRIPTOR*/ "Star Link Source Descriptor", -/* 85 SOT_FORMATSTR_ID_EMBED_SOURCE*/ "Star Embed Source", -/* 86 SOT_FORMATSTR_ID_LINK_SOURCE*/ "Star Link Source", -/* 87 SOT_FORMATSTR_ID_EMBEDDED_OBJ*/ "Star Embedded Object", +/* 83 SOT_FORMATSTR_ID_OBJECTDESCRIPTOR*/ { "Star OBJD", "Star OBJD", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 84 SOT_FORMATSTR_ID_LINKSRCDESCRIPTOR*/ { "Star LKSD", "Star LKSD", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 85 SOT_FORMATSTR_ID_EMBED_SOURCE*/ { "Star EMBS", "Star EMBS", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 86 SOT_FORMATSTR_ID_LINK_SOURCE*/ { "Star LNKS", "Star LNKS", &::getCppuType( (const ::rtl::OUString*) 0 ) }, +/* 87 SOT_FORMATSTR_ID_EMBEDDED_OBJ*/ { "Star EMBO", "Star EMBO", &::getCppuType( (const ::rtl::OUString*) 0 ) }, +#else ;; +/* 83 SOT_FORMATSTR_ID_OBJECTDESCRIPTOR*/ { "Star Object Descriptor", "Star Object Descriptor", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 84 SOT_FORMATSTR_ID_LINKSRCDESCRIPTOR*/ { "Star Link Source Descriptor", "Star Link Source Descriptor", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 85 SOT_FORMATSTR_ID_EMBED_SOURCE*/ { "Star Embed Source", "Star Embed Source", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 86 SOT_FORMATSTR_ID_LINK_SOURCE*/ { "Star Link Source", "Star Link Source", &::getCppuType( (const ::rtl::OUString*) 0 ) }, +/* 87 SOT_FORMATSTR_ID_EMBEDDED_OBJ*/ { "Star Embedded Object", "Star Embedded Object", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, #endif - #ifdef WNT -/* 88 SOT_FORMATSTR_ID_FILECONTENT*/ CFSTR_FILECONTENTS, -/* 89 SOT_FORMATSTR_ID_FILEGRPDESCRIPTOR*/ CFSTR_FILEDESCRIPTOR, -/* 90 SOT_FORMATSTR_ID_FILENAME*/ CFSTR_FILENAME, +/* 88 SOT_FORMATSTR_ID_FILECONTENT*/ { CFSTR_FILECONTENTS, CFSTR_FILECONTENTS, &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 89 SOT_FORMATSTR_ID_FILEGRPDESCRIPTOR*/ { CFSTR_FILEDESCRIPTOR, CFSTR_FILEDESCRIPTOR, &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 90 SOT_FORMATSTR_ID_FILENAME*/ { CFSTR_FILENAME, CFSTR_FILENAME, &::getCppuType( (const ::rtl::OUString*) 0 ) }, #else -/* 88 SOT_FORMATSTR_ID_FILECONTENT*/ "FileContents", -/* 89 SOT_FORMATSTR_ID_FILEGRPDESCRIPTOR*/ "FileGroupDescriptor", -/* 90 SOT_FORMATSTR_ID_FILENAME*/ "FileName", +/* 88 SOT_FORMATSTR_ID_FILECONTENT*/ { "FileContents", "FileContents", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 89 SOT_FORMATSTR_ID_FILEGRPDESCRIPTOR*/ { "FileGroupDescriptor", "FileGroupDescriptor", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 90 SOT_FORMATSTR_ID_FILENAME*/ { "FileName", "FileName", &::getCppuType( (const ::rtl::OUString*) 0 ) }, #endif - -/* 91 SOT_FORMATSTR_ID_SD_OLE*/ "SD-OLE", -/* 92 SOT_FORMATSTR_ID_EMBEDDED_OBJ_OLE*/ "Embedded Object", -/* 93 SOT_FORMATSTR_ID_EMBED_SOURCE_OLE*/ "Embed Source", -/* 94 SOT_FORMATSTR_ID_OBJECTDESCRIPTOR_OLE*/ "Object Descriptor", -/* 95 SOT_FORMATSTR_ID_LINKSRCDESCRIPTOR_OLE*/ "Link Source Descriptor", -/* 96 SOT_FORMATSTR_ID_LINK_SOURCE_OLE*/ "Link Source", - -/* 97 SOT_FORMATSTR_ID_SBA_CTRLDATAEXCHANGE*/ "SBA-CTRLFORMAT", -/* 98 SOT_FORMATSTR_ID_OUTPLACE_OBJ*/ "OutPlace Object", -/* 99 SOT_FORMATSTR_ID_CNT_OWN_CLIP*/ "CntOwnClipboard", -/*100 SOT_FORMATSTR_ID_INET_IMAGE*/ "SO-INet-Image", -/*101 SOT_FORMATSTR_ID_NETSCAPE_IMAGE*/ "Netscape Image Format", -/*102 SOT_FORMATSTR_ID_SBA_FORMEXCHANGE*/ "SBA_FORMEXCHANGE", -/*103 SOT_FORMATSTR_ID_SBA_REPORTEXCHANGE*/ "SBA_REPORTEXCHANGE", -/*104 SOT_FORMATSTR_ID_UNIFORMRESOURCELOCATOR*/ "UniformResourceLocator", - -/*105 SOT_FORMATSTR_ID_STARCHARTDOCUMENT_50*/"StarChartDocument 5.0", -/*106 SOT_FORMATSTR_ID_GRAPHOBJ*/ "Graphic Object", -/*107 SOT_FORMATSTR_ID_DUMMY3*/ "SO_DUMMYFORMAT_3", -/*108 SOT_FORMATSTR_ID_DUMMY4*/ "SO_DUMMYFORMAT_4" +/* 91 SOT_FORMATSTR_ID_SD_OLE*/ { "SD-OLE", "SD-OLE", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 92 SOT_FORMATSTR_ID_EMBEDDED_OBJ_OLE*/ { "Embedded Object", "Embedded Object", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 93 SOT_FORMATSTR_ID_EMBED_SOURCE_OLE*/ { "Embed Source", "Embed Source", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 94 SOT_FORMATSTR_ID_OBJECTDESCRIPTOR_OLE*/ { "Object Descriptor", "Object Descriptor", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 95 SOT_FORMATSTR_ID_LINKSRCDESCRIPTOR_OLE*/ { "Link Source Descriptor", "Link Source Descriptor", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 96 SOT_FORMATSTR_ID_LINK_SOURCE_OLE*/ { "Link Source", "Link Source", &::getCppuType( (const ::rtl::OUString*) 0 ) }, +/* 97 SOT_FORMATSTR_ID_SBA_CTRLDATAEXCHANGE*/ { "SBA-CTRLFORMAT", "SBA-CTRLFORMAT", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 98 SOT_FORMATSTR_ID_OUTPLACE_OBJ*/ { "OutPlace Object", "OutPlace Object", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/* 99 SOT_FORMATSTR_ID_CNT_OWN_CLIP*/ { "CntOwnClipboard", "CntOwnClipboard", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/*100 SOT_FORMATSTR_ID_INET_IMAGE*/ { "SO-INet-Image", "SO-INet-Image", &::getCppuType( (const ::rtl::OUString*) 0 ) }, +/*101 SOT_FORMATSTR_ID_NETSCAPE_IMAGE*/ { "Netscape Image Format", "Netscape Image Format", &::getCppuType( (const ::rtl::OUString*) 0 ) }, +/*102 SOT_FORMATSTR_ID_SBA_FORMEXCHANGE*/ { "SBA_FORMEXCHANGE", "SBA_FORMEXCHANGE", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/*103 SOT_FORMATSTR_ID_SBA_REPORTEXCHANGE*/ { "SBA_REPORTEXCHANGE", "SBA_REPORTEXCHANGE", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/*104 SOT_FORMATSTR_ID_UNIFORMRESOURCELOCATOR*/ { "UniformResourceLocator", "UniformResourceLocator", &::getCppuType( (const ::rtl::OUString*) 0 ) }, +/*105 SOT_FORMATSTR_ID_STARCHARTDOCUMENT_50*/ { "StarChartDocument 5.0", "StarChartDocument 5.0", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/*106 SOT_FORMATSTR_ID_GRAPHOBJ*/ { "Graphic Object", "Graphic Object", &::getCppuType( (const Sequence< sal_Int8 >*) 0 ) }, +/*107 SOT_FORMATSTR_ID_DUMMY3*/ { "SO_DUMMYFORMAT_3", "SO_DUMMYFORMAT_3", &::getCppuType( (const ::rtl::OUString*) 0 ) }, +/*108 SOT_FORMATSTR_ID_DUMMY4*/ { "SO_DUMMYFORMAT_4", "SO_DUMMYFORMAT_4", &::getCppuType( (const ::rtl::OUString*) 0 ) } }; - //----------------------------------------------------------------------- -//----------------------------------------------------------------------- -static StringList & Init_Impl() + +static List& InitFormats_Impl() { SotData_Impl * pSotData = SOTDATA(); - if( !pSotData->pAtomList ) - StringList * pSL = pSotData->pAtomList = new StringList(); - return *pSotData->pAtomList; + if( !pSotData->pDataFlavorList ) + List* pL = pSotData->pDataFlavorList = new List(); + return *pSotData->pDataFlavorList; } /************************************************************************* @@ -238,59 +249,154 @@ ULONG SotExchange::RegisterFormatName( const String& rName ) // teste zuerst die Standard - Name ULONG i, nMax = SOT_FORMAT_FILE_LIST; for( i = SOT_FORMAT_STRING; i <= nMax; ++i ) - if( COMPARE_EQUAL == rName.CompareToAscii( *(aFormatArray_Impl + i ) ) ) + if( COMPARE_EQUAL == rName.CompareToAscii( aFormatArray_Impl[ i ].pName ) ) return i; nMax = SOT_FORMATSTR_ID_USER_END; for( i = SOT_FORMAT_RTF; i <= nMax; ++i ) - if( COMPARE_EQUAL == rName.CompareToAscii( *(aFormatArray_Impl + i ) ) ) + if( COMPARE_EQUAL == rName.CompareToAscii( aFormatArray_Impl[ i ].pName ) ) return i; // dann in der dynamischen Liste - StringList & rSL = Init_Impl(); - nMax = rSL.Count(); - for( i = 0; i < nMax; i++ ) + List& rL = InitFormats_Impl(); + for( i = 0, nMax = rL.Count(); i < nMax; i++ ) { - String * pStr = rSL.GetObject( i ); - if( pStr && *pStr == rName ) + DataFlavor* pFlavor = (DataFlavor*) rL.GetObject( i ); + if( pFlavor && rName == String( pFlavor->HumanPresentableName ) ) return i + SOT_FORMATSTR_ID_USER_END + 1; } + // nMax ist der neue Platz - rSL.Insert( new String( rName ), LIST_APPEND ); + DataFlavor* pNewFlavor = new DataFlavor; + + pNewFlavor->MimeType = rName; + pNewFlavor->HumanPresentableName = rName; + pNewFlavor->DataType = ::getCppuType( (const ::rtl::OUString*) 0 ); + + rL.Insert( pNewFlavor, LIST_APPEND ); + return nMax + SOT_FORMATSTR_ID_USER_END + 1; } /************************************************************************* |* -|* SotExchange::GetFormatName() +|* SotExchange::RegisterFormatName() |* |* Beschreibung CLIP.SDW *************************************************************************/ -String SotExchange::GetFormatName( ULONG nFormat ) +ULONG SotExchange::RegisterFormat( const DataFlavor& rFlavor ) +{ + ULONG nRet = GetFormat( rFlavor ); + + if( !nRet ) + { + List& rL = InitFormats_Impl(); + nRet = rL.Count() + SOT_FORMATSTR_ID_USER_END + 1; + rL.Insert( new DataFlavor( rFlavor ), LIST_APPEND ); + } + + return nRet; +} + +/************************************************************************* +|* +|* SotExchange::GetFormatDataFlavor() +|* +*************************************************************************/ + +sal_Bool SotExchange::GetFormatDataFlavor( ULONG nFormat, DataFlavor& rFlavor ) { - String sRet; + sal_Bool bRet; + if( SOT_FORMATSTR_ID_USER_END >= nFormat ) - sRet.AppendAscii( *( aFormatArray_Impl + nFormat ) ); + { + const DataFlavorRepresentation& rData = *( aFormatArray_Impl + nFormat ); + + rFlavor.MimeType = ::rtl::OUString::createFromAscii( rData.pMimeType ); + rFlavor.HumanPresentableName = ::rtl::OUString::createFromAscii( rData.pName ); + rFlavor.DataType = *rData.pType; + + bRet = sal_True; + } else { + List& rL = InitFormats_Impl(); + nFormat -= SOT_FORMATSTR_ID_USER_END + 1; - StringList & rSL = Init_Impl(); - String* pStr; - if( rSL.Count() > nFormat && (pStr = rSL.GetObject( nFormat )) ) - sRet = *pStr; + + if( rL.Count() > nFormat ) + { + rFlavor = *(DataFlavor*) rL.GetObject( nFormat ); + bRet = sal_True; + } + else + { + rFlavor = DataFlavor(); + bRet = sal_False; + } } - return sRet; + + DBG_ASSERT( bRet, "SotExchange::GetFormatDataFlavor(): DataFlavor not initialized" ); + + return bRet; } /************************************************************************* |* -|* SotExchange::GetMaxFormat() +|* SotExchange::GetFormatName() |* +|* Beschreibung CLIP.SDW *************************************************************************/ -ULONG SotExchange::GetMaxFormat( void ) +ULONG SotExchange::GetFormat( const DataFlavor& rFlavor ) { - StringList & rSL = Init_Impl(); - return SOT_FORMATSTR_ID_USER_END + rSL.Count(); + // teste zuerst die Standard - Name + const String aMimeType( rFlavor.MimeType ); + ULONG i, nMax = SOT_FORMAT_FILE_LIST; + for( i = SOT_FORMAT_STRING; i <= nMax; ++i ) + if( COMPARE_EQUAL == aMimeType.CompareToAscii( aFormatArray_Impl[ i ].pMimeType ) ) + return i; + + nMax = SOT_FORMATSTR_ID_USER_END; + for( i = SOT_FORMAT_RTF; i <= nMax; ++i ) + if( COMPARE_EQUAL == aMimeType.CompareToAscii( aFormatArray_Impl[ i ].pMimeType ) ) + return i; + + // dann in der dynamischen Liste + List& rL = InitFormats_Impl(); + for( i = 0, nMax = rL.Count(); i < nMax; i++ ) + { + DataFlavor* pFlavor = (DataFlavor*) rL.GetObject( i ); + if( pFlavor && rFlavor.MimeType == pFlavor->MimeType ) + return i + SOT_FORMATSTR_ID_USER_END + 1; + } + + return 0; } +/************************************************************************* +|* +|* SotExchange::GetFormatName() +|* +|* Beschreibung CLIP.SDW +*************************************************************************/ +String SotExchange::GetFormatName( ULONG nFormat ) +{ + DataFlavor aFlavor; + String aRet; + + if( GetFormatDataFlavor( nFormat, aFlavor ) ) + aRet = aFlavor.HumanPresentableName; + + return aRet; +} + +/************************************************************************* +|* +|* SotExchange::GetMaxFormat() +|* +*************************************************************************/ +ULONG SotExchange::GetMaxFormat( void ) +{ + return( SOT_FORMATSTR_ID_USER_END + InitFormats_Impl().Count() ); +} |