1*cc13e73eSYuri Dario /************************************************************** 2*cc13e73eSYuri Dario * 3*cc13e73eSYuri Dario * Licensed to the Apache Software Foundation (ASF) under one 4*cc13e73eSYuri Dario * or more contributor license agreements. See the NOTICE file 5*cc13e73eSYuri Dario * distributed with this work for additional information 6*cc13e73eSYuri Dario * regarding copyright ownership. The ASF licenses this file 7*cc13e73eSYuri Dario * to you under the Apache License, Version 2.0 (the 8*cc13e73eSYuri Dario * "License"); you may not use this file except in compliance 9*cc13e73eSYuri Dario * with the License. You may obtain a copy of the License at 10*cc13e73eSYuri Dario * 11*cc13e73eSYuri Dario * http://www.apache.org/licenses/LICENSE-2.0 12*cc13e73eSYuri Dario * 13*cc13e73eSYuri Dario * Unless required by applicable law or agreed to in writing, 14*cc13e73eSYuri Dario * software distributed under the License is distributed on an 15*cc13e73eSYuri Dario * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*cc13e73eSYuri Dario * KIND, either express or implied. See the License for the 17*cc13e73eSYuri Dario * specific language governing permissions and limitations 18*cc13e73eSYuri Dario * under the License. 19*cc13e73eSYuri Dario * 20*cc13e73eSYuri Dario *************************************************************/ 21*cc13e73eSYuri Dario 22*cc13e73eSYuri Dario 23*cc13e73eSYuri Dario #ifndef _OTRANSFERABLE_HXX_ 24*cc13e73eSYuri Dario #define _OTRANSFERABLE_HXX_ 25*cc13e73eSYuri Dario 26*cc13e73eSYuri Dario #include <svpm.h> 27*cc13e73eSYuri Dario 28*cc13e73eSYuri Dario #include <cppuhelper/implbase1.hxx> 29*cc13e73eSYuri Dario #include <rtl/ustring.hxx> 30*cc13e73eSYuri Dario #include <rtl/unload.h> 31*cc13e73eSYuri Dario #include <com/sun/star/datatransfer/DataFlavor.hpp> 32*cc13e73eSYuri Dario #include <com/sun/star/datatransfer/XTransferable.hpp> 33*cc13e73eSYuri Dario 34*cc13e73eSYuri Dario using namespace cppu; 35*cc13e73eSYuri Dario using namespace osl; 36*cc13e73eSYuri Dario using namespace rtl; 37*cc13e73eSYuri Dario using namespace com::sun::star::io; 38*cc13e73eSYuri Dario using namespace com::sun::star::uno; 39*cc13e73eSYuri Dario using namespace com::sun::star::datatransfer; 40*cc13e73eSYuri Dario 41*cc13e73eSYuri Dario 42*cc13e73eSYuri Dario // undocumented(?) 43*cc13e73eSYuri Dario #ifndef DC_PREPAREITEM 44*cc13e73eSYuri Dario #define DC_PREPAREITEM 0x0040 45*cc13e73eSYuri Dario #endif 46*cc13e73eSYuri Dario 47*cc13e73eSYuri Dario // rendering mechanism 48*cc13e73eSYuri Dario #define DTSHARE_NAME "\\SHAREMEM\\AOO_DND" 49*cc13e73eSYuri Dario #define DTSHARE_RMF "<DRM_DTSHARE,DRF_TEXT>" 50*cc13e73eSYuri Dario 51*cc13e73eSYuri Dario #define SHAREDMEM_RMF "<DRM_SHAREDMEM,DRF_TEXT>" 52*cc13e73eSYuri Dario 53*cc13e73eSYuri Dario #define OS2FILE_NAME "AOO_TGT.TMP" 54*cc13e73eSYuri Dario #define OS2FILE_TXTRMF "<DRM_OS2FILE,DRF_TEXT>" 55*cc13e73eSYuri Dario #define OS2FILE_UNKRMF "<DRM_OS2FILE,DRF_UNKNOWN>" 56*cc13e73eSYuri Dario 57*cc13e73eSYuri Dario 58*cc13e73eSYuri Dario class OTransferable: public ::cppu::WeakImplHelper1<XTransferable> 59*cc13e73eSYuri Dario { 60*cc13e73eSYuri Dario com::sun::star::uno::Sequence<DataFlavor> m_aFlavorList; 61*cc13e73eSYuri Dario 62*cc13e73eSYuri Dario private: 63*cc13e73eSYuri Dario HWND mHwndTarget; 64*cc13e73eSYuri Dario PDRAGINFO mDragInfo; 65*cc13e73eSYuri Dario bool removeOnExit; 66*cc13e73eSYuri Dario char fullpath[CCHMAXPATH]; 67*cc13e73eSYuri Dario void *pDTShare; 68*cc13e73eSYuri Dario char *pSharedMem; 69*cc13e73eSYuri Dario enum _DRM { DRM_NULL, DRM_ATOM, DRM_DTSHARE, DRM_OS2FILE, DRM_SHAREDMEM}; 70*cc13e73eSYuri Dario _DRM renderDRM; 71*cc13e73eSYuri Dario enum _MIMETYPE { MIMETYPE_NULL, MIMETYPE_TEXT, MIMETYPE_FILE}; 72*cc13e73eSYuri Dario _MIMETYPE mimeType; 73*cc13e73eSYuri Dario 74*cc13e73eSYuri Dario public: 75*cc13e73eSYuri Dario 76*cc13e73eSYuri Dario public: 77*cc13e73eSYuri Dario OTransferable( HWND hwnd, PDRAGINFO dragInfo); 78*cc13e73eSYuri Dario ~OTransferable(); 79*cc13e73eSYuri Dario 80*cc13e73eSYuri Dario virtual Any SAL_CALL getTransferData( const DataFlavor& aFlavor) 81*cc13e73eSYuri Dario throw(UnsupportedFlavorException, IOException, RuntimeException); 82*cc13e73eSYuri Dario virtual Sequence< DataFlavor > SAL_CALL getTransferDataFlavors() 83*cc13e73eSYuri Dario throw(RuntimeException); 84*cc13e73eSYuri Dario virtual sal_Bool SAL_CALL isDataFlavorSupported( const DataFlavor& aFlavor) 85*cc13e73eSYuri Dario throw(RuntimeException); 86*cc13e73eSYuri Dario 87*cc13e73eSYuri Dario bool renderComplete( PDRAGTRANSFER pdxfer); 88*cc13e73eSYuri Dario bool requestRendering( void); 89*cc13e73eSYuri Dario 90*cc13e73eSYuri Dario private: 91*cc13e73eSYuri Dario bool RequestFileRendering( PDRAGITEM pditem, HWND hwnd, PCSZ pRMF, PCSZ pName); 92*cc13e73eSYuri Dario bool RenderToOS2File( PDRAGITEM pditem, HWND hwnd); 93*cc13e73eSYuri Dario bool RenderToDTShare( PDRAGITEM pditem, HWND hwnd); 94*cc13e73eSYuri Dario bool RenderToSharedMem( PDRAGITEM pditem, HWND hwnd); 95*cc13e73eSYuri Dario 96*cc13e73eSYuri Dario }; 97*cc13e73eSYuri Dario 98*cc13e73eSYuri Dario #endif // _OTRANSFERABLE_HXX_ 99