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 // MARKER(update_precomp.py): autogen include statement, do not remove 25 #include "precompiled_svtools.hxx" 26 #include <svtools/stringtransfer.hxx> 27 28 //........................................................................ 29 namespace svt 30 { 31 //........................................................................ 32 33 using namespace ::com::sun::star::uno; 34 using namespace ::com::sun::star::datatransfer; 35 36 //==================================================================== 37 //= OStringTransferable 38 //==================================================================== 39 //-------------------------------------------------------------------- OStringTransferable(const::rtl::OUString & _rContent)40 OStringTransferable::OStringTransferable(const ::rtl::OUString& _rContent) 41 :TransferableHelper() 42 ,m_sContent( _rContent ) 43 { 44 } 45 46 //-------------------------------------------------------------------- AddSupportedFormats()47 void OStringTransferable::AddSupportedFormats() 48 { 49 AddFormat(SOT_FORMAT_STRING); 50 } 51 52 //-------------------------------------------------------------------- GetData(const DataFlavor & _rFlavor)53 sal_Bool OStringTransferable::GetData( const DataFlavor& _rFlavor ) 54 { 55 sal_uInt32 nFormat = SotExchange::GetFormat( _rFlavor ); 56 if (SOT_FORMAT_STRING == nFormat) 57 return SetString( m_sContent, _rFlavor ); 58 59 return sal_False; 60 } 61 62 //==================================================================== 63 //= OStringTransfer 64 //==================================================================== 65 //-------------------------------------------------------------------- CopyString(const::rtl::OUString & _rContent,Window * _pWindow)66 void OStringTransfer::CopyString( const ::rtl::OUString& _rContent, Window* _pWindow ) 67 { 68 OStringTransferable* pTransferable = new OStringTransferable( _rContent ); 69 Reference< XTransferable > xTransfer = pTransferable; 70 pTransferable->CopyToClipboard( _pWindow ); 71 } 72 73 //-------------------------------------------------------------------- PasteString(::rtl::OUString & _rContent,Window * _pWindow)74 sal_Bool OStringTransfer::PasteString( ::rtl::OUString& _rContent, Window* _pWindow ) 75 { 76 TransferableDataHelper aClipboardData = TransferableDataHelper::CreateFromSystemClipboard( _pWindow ); 77 78 // check for a string format 79 const DataFlavorExVector& rFormats = aClipboardData.GetDataFlavorExVector(); 80 for ( DataFlavorExVector::const_iterator aSearch = rFormats.begin(); 81 aSearch != rFormats.end(); 82 ++aSearch 83 ) 84 { 85 if (SOT_FORMAT_STRING == aSearch->mnSotId) 86 { 87 String sContent; 88 sal_Bool bSuccess = aClipboardData.GetString( SOT_FORMAT_STRING, sContent ); 89 _rContent = sContent; 90 return bSuccess; 91 } 92 } 93 94 return sal_False; 95 } 96 97 //-------------------------------------------------------------------- StartStringDrag(const::rtl::OUString & _rContent,Window * _pWindow,sal_Int8 _nDragSourceActions)98 void OStringTransfer::StartStringDrag( const ::rtl::OUString& _rContent, Window* _pWindow, sal_Int8 _nDragSourceActions ) 99 { 100 OStringTransferable* pTransferable = new OStringTransferable( _rContent ); 101 Reference< XTransferable > xTransfer = pTransferable; 102 pTransferable->StartDrag(_pWindow, _nDragSourceActions); 103 } 104 105 //........................................................................ 106 } // namespace svt 107 //........................................................................ 108 109