1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 24 #ifndef _SOT_EXCHANGE_HXX 25 #define _SOT_EXCHANGE_HXX 26 27 #ifndef __SGI_STL_LIST 28 #include <list> 29 #endif 30 #ifndef __SGI_STL_VECTOR 31 #include <vector> 32 #endif 33 #include <tools/string.hxx> 34 #include <com/sun/star/uno/Reference.hxx> 35 #include <com/sun/star/datatransfer/DataFlavor.hpp> 36 #ifndef _COM_SUN_STAR_DATATRANSFER_DND_DNDCONSTANTS_HDL_ 37 #include <com/sun/star/datatransfer/dnd/DNDConstants.hdl> 38 #endif 39 #include "sot/sotdllapi.h" 40 41 class SotDataObject; 42 43 namespace com { namespace sun { namespace star { namespace datatransfer { 44 class XTransferable; 45 } } } } 46 47 // --------------------- 48 // - SotFormatStringId - 49 // --------------------- 50 51 typedef sal_uLong SotFormatStringId; 52 53 // ---------------- 54 // - DataFlavorEx - 55 // ---------------- 56 57 struct DataFlavorEx : public ::com::sun::star::datatransfer::DataFlavor 58 { 59 SotFormatStringId mnSotId; 60 }; 61 62 typedef ::std::vector< ::com::sun::star::datatransfer::DataFlavor > DataFlavorVector; 63 typedef ::std::vector< DataFlavorEx > _DataFlavorExVector; 64 65 // JP 23.03.2001 - this struct is only for "hide" the STD of the vetor, 66 // because our makefile filter all this symbols and so nowbody can use 67 // these struct in any interfacses. 68 struct DataFlavorExVector : public _DataFlavorExVector 69 { 70 }; 71 72 typedef ::std::list< ::com::sun::star::datatransfer::DataFlavor > DataFlavorList; 73 typedef ::std::list< DataFlavorEx > DataFlavorExList; 74 75 SOT_DLLPUBLIC sal_Bool IsFormatSupported( const DataFlavorExVector& rDataFlavorExVector, 76 sal_uLong nId ); 77 78 // ------------------------- 79 // - Vordefinierte Formate - 80 // ------------------------- 81 82 // Die Reihenfolge und die Werte d�rfen nicht ge�ndert werden, 83 // da die Implementation sich darauf verl��t. 84 // Standard-Formate fuer die es auch Copy/Paste-Methoden gibt 85 #define FORMAT_STRING 1 86 #define FORMAT_BITMAP 2 87 #define FORMAT_GDIMETAFILE 3 88 #define FORMAT_PRIVATE 4 89 #define FORMAT_FILE 5 90 #define FORMAT_FILE_LIST 6 91 92 // Weitere Standardformate (diese gehen nur ueber CopyData/PasteData) 93 #define FORMAT_RTF 10 94 95 // Source-Options 96 #define EXCHG_SOURCE_MOVEABLE ((sal_uInt16)0x0001) 97 #define EXCHG_SOURCE_COPYABLE ((sal_uInt16)0x0002) 98 #define EXCHG_SOURCE_LINKABLE ((sal_uInt16)0x0004) 99 #define EXCHG_SOURCE_PRINTABLE ((sal_uInt16)0x0008) 100 #define EXCHG_SOURCE_DISCARDABLE ((sal_uInt16)0x0010) 101 #define EXCHG_SOURCE_ALL ((sal_uInt16)0x001F) 102 #define EXCHG_SOURCE_DEF_COPYABLE ((sal_uInt16)0x0020) 103 104 // Aktionen 105 #define EXCHG_ACTION_MASK ((sal_uInt16)0x00FF) 106 #define EXCHG_INOUT_ACTION_NONE ((sal_uInt16)com::sun::star::datatransfer::dnd::DNDConstants::ACTION_NONE) 107 #define EXCHG_IN_ACTION_DEFAULT EXCHG_INOUT_ACTION_NONE 108 #define EXCHG_IN_ACTION_MOVE ((sal_uInt16)com::sun::star::datatransfer::dnd::DNDConstants::ACTION_MOVE) 109 #define EXCHG_IN_ACTION_COPY ((sal_uInt16)com::sun::star::datatransfer::dnd::DNDConstants::ACTION_COPY) 110 #define EXCHG_IN_ACTION_LINK ((sal_uInt16)com::sun::star::datatransfer::dnd::DNDConstants::ACTION_LINK) 111 #define EXCHG_INOUT_ACTION_PRINT ((sal_uInt16)8) 112 #define EXCHG_INOUT_ACTION_DISCARD ((sal_uInt16)16) 113 #define EXCHG_OUT_ACTION_INSERT_OBJ ((sal_uInt16)17) 114 #define EXCHG_OUT_ACTION_INSERT_BOOKMARK ((sal_uInt16)18) 115 #define EXCHG_OUT_ACTION_INSERT_FILELINK ((sal_uInt16)19) 116 #define EXCHG_OUT_ACTION_INSERT_FILE ((sal_uInt16)20) 117 #define EXCHG_OUT_ACTION_INSERT_FILELIST ((sal_uInt16)21) 118 #define EXCHG_OUT_ACTION_INSERT_IMAGEMAP ((sal_uInt16)22) 119 #define EXCHG_OUT_ACTION_INSERT_OLE ((sal_uInt16)23) 120 #define EXCHG_OUT_ACTION_INSERT_INTERACTIVE ((sal_uInt16)24) 121 #define EXCHG_OUT_ACTION_INSERT_URLBUTTON ((sal_uInt16)25) 122 #define EXCHG_OUT_ACTION_INSERT_CHAOSOBJ ((sal_uInt16)26) // OBSOLET ab 500.b ? 123 #define EXCHG_OUT_ACTION_REPLACE_OBJ ((sal_uInt16)27) 124 #define EXCHG_OUT_ACTION_REPLACE_LINK ((sal_uInt16)28) 125 #define EXCHG_OUT_ACTION_REPLACE_IMAGEMAP ((sal_uInt16)29) 126 #define EXCHG_OUT_ACTION_GET_ATTRIBUTES ((sal_uInt16)30) 127 #define EXCHG_OUT_ACTION_UPLOAD ((sal_uInt16)31) // OBSOLET ab 500.b ? 128 #define EXCHG_OUT_ACTION_MOVE_FILE ((sal_uInt16)32) 129 #define EXCHG_OUT_ACTION_MOVE_FILELIST ((sal_uInt16)33) 130 #define EXCHG_OUT_ACTION_UPDATE_RANGE ((sal_uInt16)34) 131 #define EXCHG_OUT_ACTION_INSERT_PRIVATE ((sal_uInt16)35) 132 #define EXCHG_OUT_ACTION_INSERT_HTML ((sal_uInt16)36) 133 #define EXCHG_OUT_ACTION_MOVE_PRIVATE ((sal_uInt16)37) 134 #define EXCHG_OUT_ACTION_INSERT_STRING ((sal_uInt16)38) 135 #define EXCHG_OUT_ACTION_INSERT_DRAWOBJ ((sal_uInt16)39) 136 #define EXCHG_OUT_ACTION_INSERT_SVXB ((sal_uInt16)40) 137 #define EXCHG_OUT_ACTION_INSERT_GDIMETAFILE ((sal_uInt16)41) 138 #define EXCHG_OUT_ACTION_INSERT_BITMAP ((sal_uInt16)42) 139 #define EXCHG_OUT_ACTION_INSERT_DDE ((sal_uInt16)43) 140 #define EXCHG_OUT_ACTION_INSERT_HYPERLINK ((sal_uInt16)44) 141 #define EXCHG_OUT_ACTION_REPLACE_DRAWOBJ ((sal_uInt16)45) 142 #define EXCHG_OUT_ACTION_REPLACE_SVXB ((sal_uInt16)46) 143 #define EXCHG_OUT_ACTION_REPLACE_GDIMETAFILE ((sal_uInt16)47) 144 #define EXCHG_OUT_ACTION_REPLACE_BITMAP ((sal_uInt16)48) 145 #define EXCHG_OUT_ACTION_REPLACE_GRAPH ((sal_uInt16)49) 146 #define EXCHG_OUT_ACTION_INSERT_GRAPH ((sal_uInt16)50) 147 #define EXCHG_OUT_ACTION_INSERT_MSGATTACH ((sal_uInt16)51) // obsolet ab 500.b ? 148 #define EXCHG_OUT_ACTION_COPY_CHAOSOBJ ((sal_uInt16)52) 149 #define EXCHG_OUT_ACTION_MOVE_CHAOSOBJ ((sal_uInt16)53) 150 #define EXCHG_OUT_ACTION_COPY_MSGATTACH ((sal_uInt16)54) 151 #define EXCHG_OUT_ACTION_COPY_BOOKMARK ((sal_uInt16)55) 152 #define EXCHG_OUT_ACTION_COPY_FILE ((sal_uInt16)56) 153 154 #define EXCHG_OUT_ACTION_FLAG_CREATE_THEME ((sal_uInt16)0x0100) 155 #define EXCHG_OUT_ACTION_FLAG_KEEP_POSSIZE ((sal_uInt16)0x0200) 156 #define EXCHG_OUT_ACTION_FLAG_INSERT_IMAGEMAP ((sal_uInt16)0x0400) 157 #define EXCHG_OUT_ACTION_FLAG_REPLACE_IMAGEMAP ((sal_uInt16)0x0800) 158 #define EXCHG_OUT_ACTION_FLAG_FILL ((sal_uInt16)0x1000) 159 #define EXCHG_OUT_ACTION_FLAG_INSERT_TARGETURL ((sal_uInt16)0x2000) 160 161 // Ziele 162 #define EXCHG_DEST_DOC_OLEOBJ 1 163 #define EXCHG_DEST_CHARTDOC_OLEOBJ 2 164 #define EXCHG_DEST_DOC_TEXTFRAME 3 165 #define EXCHG_DEST_DOC_GRAPHOBJ 4 166 #define EXCHG_DEST_DOC_LNKD_GRAPHOBJ 5 167 #define EXCHG_DEST_DOC_GRAPH_W_IMAP 6 168 #define EXCHG_DEST_DOC_LNKD_GRAPH_W_IMAP 7 169 #define EXCHG_DEST_DOC_IMAPREGION 8 170 #define EXCHG_DEST_DOC_DRAWOBJ 9 171 #define EXCHG_DEST_DOC_URLBUTTON 10 172 #define EXCHG_DEST_DOC_URLFIELD 11 173 #define EXCHG_DEST_DOC_GROUPOBJ 12 174 #define EXCHG_DEST_SWDOC_FREE_AREA 13 175 #define EXCHG_DEST_SCDOC_FREE_AREA 14 176 #define EXCHG_DEST_SDDOC_FREE_AREA 15 177 #define EXCHG_DEST_DOC_TEXTFRAME_WEB 16 178 #define EXCHG_DEST_SWDOC_FREE_AREA_WEB 17 179 180 // ------------ 181 // - Exchange - 182 // ------------ 183 class SvGlobalName; 184 class SOT_DLLPUBLIC SotExchange 185 { 186 public: 187 static sal_uLong RegisterFormat( const ::com::sun::star::datatransfer::DataFlavor& rFlavor ); 188 static sal_uLong RegisterFormatName( const String& rName ); 189 static sal_uLong RegisterFormatMimeType( const String& rMimeType ); 190 191 static sal_uLong GetFormat( const ::com::sun::star::datatransfer::DataFlavor& rFlavor ); 192 static String GetFormatName( sal_uLong nFormat ); 193 static sal_Bool GetFormatDataFlavor( sal_uLong nFormat, ::com::sun::star::datatransfer::DataFlavor& rFlavor ); 194 static String GetFormatMimeType( sal_uLong nFormat ); 195 static sal_Bool IsInternal( const SvGlobalName& ); 196 static sal_uLong GetFormatIdFromMimeType( const String& rMimeType ); 197 198 // bestimme die SotFormatStringId von dem registrierten Format 199 //JP 12.11.98: diese 3 Methoden sind ab sofort ueberfluessig, da 200 // die ClipboardIds statisch sind und aequivalent zur 201 // SotFormatStringId ist! GetFormatStringId(sal_uLong nFormat)202 static SotFormatStringId GetFormatStringId( sal_uLong nFormat ) 203 { return nFormat; } GetFormatStringId(const String & rName)204 static SotFormatStringId GetFormatStringId( const String& rName ) 205 { return SotExchange::RegisterFormatMimeType( rName ); } RegisterSotFormatName(SotFormatStringId nId)206 static sal_uLong RegisterSotFormatName( SotFormatStringId nId ) 207 { return nId; } 208 209 // same for XTransferable interface 210 static sal_uInt16 GetExchangeAction( 211 // XTransferable 212 const DataFlavorExVector& rDataFlavorExVector, 213 // Ziel der Aktion (EXCHG_DEST_*) 214 sal_uInt16 nDestination, 215 // Aktionen, die Quelle unterstuetzt (EXCHG_SOURCE_...) 216 sal_uInt16 nSourceOptions, 217 // vom Anwender gewaehlte Aktion (EXCHG_IN_*, EXCHG_INOUT_*) 218 sal_uInt16 nUserAction, 219 // In:- Out: Zu benutzendes Format 220 sal_uLong& rFormat, 221 // In:- Out: Default-Action (EXCHG_IN_*, EXCHG_INOUT_*) 222 sal_uInt16& rDefaultAction, 223 // In:- optional - check only for this specific format 224 sal_uLong nOnlyTestFormat = 0, 225 // In:- optional - check the contents of Xtransferable 226 const ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::XTransferable >* pxTransferable = NULL ); 227 228 // same for XTransferable interface 229 static sal_uInt16 GetExchangeAction( 230 // XTransferable 231 const ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::XTransferable >& rxTransferable, 232 // Ziel der Aktion (EXCHG_DEST_*) 233 sal_uInt16 nDestination, 234 // Aktionen, die Quelle unterstuetzt (EXCHG_SOURCE_...) 235 sal_uInt16 nSourceOptions, 236 // vom Anwender gewaehlte Aktion (EXCHG_IN_*, EXCHG_INOUT_*) 237 sal_uInt16 nUserAction, 238 // In:- Out: Zu benutzendes Format 239 sal_uLong& rFormat, 240 // In:- Out: Default-Action (EXCHG_IN_*, EXCHG_INOUT_*) 241 sal_uInt16& rDefaultAction, 242 // In:- optional - check only for this specific format 243 sal_uLong nOnlyTestFormat = 0 ); 244 245 static sal_uInt16 IsChart( const SvGlobalName& rName ); 246 static sal_uInt16 IsMath( const SvGlobalName& rName ); 247 }; 248 249 #endif // _EXCHANGE_HXX 250