29#include <com/sun/star/datatransfer/DataFlavor.hpp>
30#include <com/sun/star/datatransfer/UnsupportedFlavorException.hpp>
31#include <com/sun/star/datatransfer/XTransferable.hpp>
37#define FILEGRPDSC_ONLY_URL 1
52struct SotDestinationEntry_Impl
1203SotDestinationEntry_Impl
const aDestinationArray[] =
1206 aEXCHG_DEST_DOC_OLEOBJ_Def,
1207 aEXCHG_DEST_DOC_OLEOBJ_Move,
1209 aEXCHG_DEST_DOC_OLEOBJ_Link
1212 aEXCHG_DEST_CHARTDOC_OLEOBJ_Def,
1213 aEXCHG_DEST_CHARTDOC_OLEOBJ_Move,
1215 aEXCHG_DEST_CHARTDOC_OLEOBJ_Link
1218 aEXCHG_DEST_DOC_TEXTFRAME_Def,
1219 aEXCHG_DEST_DOC_TEXTFRAME_Move,
1220 aEXCHG_DEST_DOC_TEXTFRAME_Copy,
1221 aEXCHG_DEST_DOC_TEXTFRAME_Link
1224 aEXCHG_DEST_DOC_GRAPHOBJ_Def,
1225 aEXCHG_DEST_DOC_GRAPHOBJ_Move,
1226 aEXCHG_DEST_DOC_GRAPHOBJ_Copy,
1227 aEXCHG_DEST_DOC_GRAPHOBJ_Link
1230 aEXCHG_DEST_DOC_LNKD_GRAPHOBJ_Def,
1231 aEXCHG_DEST_DOC_LNKD_GRAPHOBJ_Move,
1232 aEXCHG_DEST_DOC_LNKD_GRAPHOBJ_Copy,
1233 aEXCHG_DEST_DOC_LNKD_GRAPHOBJ_Link
1236 aEXCHG_DEST_DOC_GRAPH_W_IMAP_Def,
1237 aEXCHG_DEST_DOC_GRAPH_W_IMAP_Move,
1238 aEXCHG_DEST_DOC_GRAPH_W_IMAP_Copy,
1239 aEXCHG_DEST_DOC_GRAPH_W_IMAP_Link
1242 aEXCHG_DEST_DOC_LNKD_GRAPH_W_IMAP_Def,
1243 aEXCHG_DEST_DOC_LNKD_GRAPH_W_IMAP_Move,
1244 aEXCHG_DEST_DOC_LNKD_GRAPH_W_IMAP_Copy,
1245 aEXCHG_DEST_DOC_LNKD_GRAPH_W_IMAP_Link
1248 aEXCHG_DEST_DOC_IMAPREGION_Def,
1249 aEXCHG_DEST_DOC_IMAPREGION_Copy,
1254 aEXCHG_DEST_DOC_DRAWOBJ_Def,
1255 aEXCHG_DEST_DOC_DRAWOBJ_Copy,
1256 aEXCHG_DEST_DOC_DRAWOBJ_Move,
1257 aEXCHG_DEST_DOC_DRAWOBJ_Link
1260 aEXCHG_DEST_DOC_URLBUTTON_Def,
1261 aEXCHG_DEST_DOC_URLBUTTON_Move,
1262 aEXCHG_DEST_DOC_URLBUTTON_Copy,
1266 aEXCHG_DEST_DOC_URLFIELD_Def,
1268 aEXCHG_DEST_DOC_URLFIELD_Copy,
1269 aEXCHG_DEST_DOC_URLFIELD_Link
1272 aEXCHG_DEST_DOC_GROUPOBJ_Def,
1273 aEXCHG_DEST_DOC_GROUPOBJ_Move,
1274 aEXCHG_DEST_DOC_GROUPOBJ_Copy,
1275 aEXCHG_DEST_DOC_GROUPOBJ_Link
1278 aEXCHG_DEST_SWDOC_FREE_AREA_Def,
1279 aEXCHG_DEST_SWDOC_FREE_AREA_Move,
1280 aEXCHG_DEST_SWDOC_FREE_AREA_Copy,
1281 aEXCHG_DEST_SWDOC_FREE_AREA_Link
1284 aEXCHG_DEST_SCDOC_FREE_AREA_Def,
1285 aEXCHG_DEST_SCDOC_FREE_AREA_Move,
1286 aEXCHG_DEST_SCDOC_FREE_AREA_Copy,
1287 aEXCHG_DEST_SCDOC_FREE_AREA_Link
1290 aEXCHG_DEST_SDDOC_FREE_AREA_Def,
1291 aEXCHG_DEST_SDDOC_FREE_AREA_Move,
1292 aEXCHG_DEST_SDDOC_FREE_AREA_Copy,
1293 aEXCHG_DEST_SDDOC_FREE_AREA_Link
1296 aEXCHG_DEST_DOC_TEXTFRAME_WEB_Def,
1297 aEXCHG_DEST_DOC_TEXTFRAME_WEB_Move,
1298 aEXCHG_DEST_DOC_TEXTFRAME_WEB_Copy,
1299 aEXCHG_DEST_DOC_TEXTFRAME_WEB_Link
1302 aEXCHG_DEST_SWDOC_FREE_AREA_WEB_Def,
1303 aEXCHG_DEST_SWDOC_FREE_AREA_WEB_Move,
1304 aEXCHG_DEST_SWDOC_FREE_AREA_WEB_Copy,
1305 aEXCHG_DEST_SWDOC_FREE_AREA_WEB_Link
1308 static_cast<SotExchangeDest>(0xffff),
nullptr,
nullptr,
nullptr,
nullptr
1318 return aEXCHG_DEST_SWDOC_FREE_AREA_Copy;
1326 return std::any_of(rDataFlavorExVector.begin(), rDataFlavorExVector.end(),
1327 [
nId](
const DataFlavorEx& rDataFlavorEx) { return nId == rDataFlavorEx.mnSotId; });
1338 if( pxTransferable && (*pxTransferable).is() &&
1340 (*pxTransferable)->isDataFlavorSupported( aFlavor ) )
1350 (*pxTransferable)->isDataFlavorSupported( aFlavor ) &&
1352 (*pxTransferable)->isDataFlavorSupported( aFlavor ) )
1354 Any aAny( (*pxTransferable)->getTransferData( aFlavor ) );
1356 if( aAny.hasValue() )
1360 if(
aSeq.getLength() )
1362 FILEGROUPDESCRIPTORW
const * pFDesc =
reinterpret_cast<FILEGROUPDESCRIPTORW
const *
>(
aSeq.getConstArray());
1364 if( pFDesc->cItems )
1366 OUString sDesc( o3tl::toU(pFDesc->fgd[ 0 ].cFileName) );
1367 bRet = 4 < sDesc.getLength() && sDesc.endsWithIgnoreAsciiCase(
".URL");
1380 catch(
const UnsupportedFlavorException& )
1397 const Reference< XTransferable >* pxTransferable,
1402 if( !rDataFlavorExVector.empty() )
1419 DataFlavor aFileListFlavor;
1421 Any aAny( (*pxTransferable)->getTransferData( aFileListFlavor ) );
1423 if( aAny.hasValue() )
1441 *pActionFlags = pCur->
nFlags;
1451 *pActionFlags = pArray->
nFlags;
1459 catch(
const UnsupportedFlavorException& )
1472 sal_uInt16 nSourceOptions,
1477 const Reference< XTransferable >* pxTransferable,
1483 const SotDestinationEntry_Impl* pEntry = aDestinationArray;
1486 if( pEntry->nDestination == nDestination )
1509 rDataFlavorExVector, pEntry->aDefaultActions,
1510 rFormat, nOnlyTestFormat, pxTransferable, pActionFlags );
1512 if( !(nUserAction & nSourceOptions ))
1516 if( rDefaultAction )
1519 rDataFlavorExVector, pEntry->aCopyActions,
1520 rFormat, nOnlyTestFormat, pxTransferable, pActionFlags );
1525 if( rDefaultAction )
1528 rDataFlavorExVector, pEntry->aLinkActions,
1529 rFormat, nOnlyTestFormat, pxTransferable, pActionFlags );
1534 if( rDefaultAction )
1537 rDataFlavorExVector, pEntry->aMoveActions,
1538 rFormat, nOnlyTestFormat, pxTransferable, pActionFlags );
1545 rDefaultAction = nUserAction;
1548 rDefaultAction = nUserAction;
1550 switch( nUserAction )
1554 rDataFlavorExVector, pEntry->aMoveActions,
1555 rFormat, nOnlyTestFormat, pxTransferable, pActionFlags );
1560 rDataFlavorExVector, pEntry->aCopyActions,
1561 rFormat, nOnlyTestFormat, pxTransferable, pActionFlags );
1566 rDataFlavorExVector, pEntry->aLinkActions,
1567 rFormat, nOnlyTestFormat, pxTransferable, pActionFlags );
static sal_uInt16 IsChart(const SvGlobalName &rName)
static bool GetFormatDataFlavor(SotClipboardFormatId nFormat, css::datatransfer::DataFlavor &rFlavor)
static sal_uInt8 GetExchangeAction(const DataFlavorExVector &rDataFlavorExVector, SotExchangeDest nDestination, sal_uInt16 nSourceOptions, sal_uInt8 nUserAction, SotClipboardFormatId &rFormat, sal_uInt8 &rDefaultAction, SotClipboardFormatId nOnlyTestFormat=SotClipboardFormatId::NONE, const css::uno::Reference< css::datatransfer::XTransferable > *pxTransferable=nullptr, SotExchangeActionFlags *pActionFlags=nullptr)
static sal_uInt16 IsMath(const SvGlobalName &rName)
#define SO3_SCH_CLASSID_40
#define SO3_SM_CLASSID_50
#define SO3_SM_CLASSID_60
#define SO3_SCH_CLASSID_30
#define SO3_SCH_CLASSID_50
#define SO3_SCH_CLASSID_60
#define SO3_SM_CLASSID_30
#define SO3_SM_CLASSID_40
#define EXCHG_OUT_ACTION_INSERT_INTERACTIVE
#define EXCHG_OUT_ACTION_INSERT_GDIMETAFILE
#define EXCHG_OUT_ACTION_INSERT_HTML
#define EXCHG_OUT_ACTION_INSERT_BITMAP
#define EXCHG_IN_ACTION_LINK
#define EXCHG_INOUT_ACTION_NONE
#define EXCHG_OUT_ACTION_INSERT_DRAWOBJ
::std::vector< DataFlavorEx > DataFlavorExVector
#define EXCHG_OUT_ACTION_REPLACE_GDIMETAFILE
#define EXCHG_OUT_ACTION_INSERT_GRAPH
#define EXCHG_OUT_ACTION_INSERT_IMAGEMAP
#define EXCHG_OUT_ACTION_REPLACE_BITMAP
#define EXCHG_OUT_ACTION_REPLACE_SVXB
#define EXCHG_IN_ACTION_COPY
#define EXCHG_OUT_ACTION_REPLACE_GRAPH
#define EXCHG_OUT_ACTION_INSERT_OLE
#define EXCHG_OUT_ACTION_INSERT_HYPERLINK
#define EXCHG_OUT_ACTION_INSERT_DDE
#define EXCHG_OUT_ACTION_REPLACE_DRAWOBJ
#define EXCHG_OUT_ACTION_INSERT_STRING
#define EXCHG_IN_ACTION_MOVE
#define EXCHG_OUT_ACTION_INSERT_SVXB
#define EXCHG_IN_ACTION_DEFAULT
#define EXCHG_OUT_ACTION_GET_ATTRIBUTES
#define EXCHG_OUT_ACTION_INSERT_FILE
SvStream & ReadFileList(SvStream &rIStm, FileList &rFileList)
Sequence< sal_Int8 > aSeq
const SotAction_Impl * GetExchangeDestinationWriterFreeAreaCopy()
sal_uInt8 nContextCheckId
SotExchangeActionFlags nFlags
SotClipboardFormatId nFormatId