merge the formfield patch from ooo-build
[ooovba.git] / svtools / source / misc / stringtransfer.cxx
blobcee34809d7f3a89e465104b1167569e99b706438
1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: stringtransfer.cxx,v $
10 * $Revision: 1.8 $
12 * This file is part of OpenOffice.org.
14 * OpenOffice.org is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU Lesser General Public License version 3
16 * only, as published by the Free Software Foundation.
18 * OpenOffice.org is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU Lesser General Public License version 3 for more details
22 * (a copy is included in the LICENSE file that accompanied this code).
24 * You should have received a copy of the GNU Lesser General Public License
25 * version 3 along with OpenOffice.org. If not, see
26 * <http://www.openoffice.org/license.html>
27 * for a copy of the LGPLv3 License.
29 ************************************************************************/
31 // MARKER(update_precomp.py): autogen include statement, do not remove
32 #include "precompiled_svtools.hxx"
33 #include <svtools/stringtransfer.hxx>
35 //........................................................................
36 namespace svt
38 //........................................................................
40 using namespace ::com::sun::star::uno;
41 using namespace ::com::sun::star::datatransfer;
43 //====================================================================
44 //= OStringTransferable
45 //====================================================================
46 //--------------------------------------------------------------------
47 OStringTransferable::OStringTransferable(const ::rtl::OUString& _rContent)
48 :TransferableHelper()
49 ,m_sContent( _rContent )
53 //--------------------------------------------------------------------
54 void OStringTransferable::AddSupportedFormats()
56 AddFormat(SOT_FORMAT_STRING);
59 //--------------------------------------------------------------------
60 sal_Bool OStringTransferable::GetData( const DataFlavor& _rFlavor )
62 sal_uInt32 nFormat = SotExchange::GetFormat( _rFlavor );
63 if (SOT_FORMAT_STRING == nFormat)
64 return SetString( m_sContent, _rFlavor );
66 return sal_False;
69 //====================================================================
70 //= OStringTransfer
71 //====================================================================
72 //--------------------------------------------------------------------
73 void OStringTransfer::CopyString( const ::rtl::OUString& _rContent, Window* _pWindow )
75 OStringTransferable* pTransferable = new OStringTransferable( _rContent );
76 Reference< XTransferable > xTransfer = pTransferable;
77 pTransferable->CopyToClipboard( _pWindow );
80 //--------------------------------------------------------------------
81 sal_Bool OStringTransfer::PasteString( ::rtl::OUString& _rContent, Window* _pWindow )
83 TransferableDataHelper aClipboardData = TransferableDataHelper::CreateFromSystemClipboard( _pWindow );
85 // check for a string format
86 const DataFlavorExVector& rFormats = aClipboardData.GetDataFlavorExVector();
87 for ( DataFlavorExVector::const_iterator aSearch = rFormats.begin();
88 aSearch != rFormats.end();
89 ++aSearch
92 if (SOT_FORMAT_STRING == aSearch->mnSotId)
94 String sContent;
95 sal_Bool bSuccess = aClipboardData.GetString( SOT_FORMAT_STRING, sContent );
96 _rContent = sContent;
97 return bSuccess;
101 return sal_False;
104 //--------------------------------------------------------------------
105 void OStringTransfer::StartStringDrag( const ::rtl::OUString& _rContent, Window* _pWindow, sal_Int8 _nDragSourceActions )
107 OStringTransferable* pTransferable = new OStringTransferable( _rContent );
108 Reference< XTransferable > xTransfer = pTransferable;
109 pTransferable->StartDrag(_pWindow, _nDragSourceActions);
112 //........................................................................
113 } // namespace svt
114 //........................................................................