diff options
Diffstat (limited to 'svtools/source/misc/stringtransfer.cxx')
-rw-r--r-- | svtools/source/misc/stringtransfer.cxx | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/svtools/source/misc/stringtransfer.cxx b/svtools/source/misc/stringtransfer.cxx new file mode 100644 index 000000000000..fa216b27f99c --- /dev/null +++ b/svtools/source/misc/stringtransfer.cxx @@ -0,0 +1,112 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +// MARKER(update_precomp.py): autogen include statement, do not remove +#include "precompiled_svtools.hxx" +#include <svtools/stringtransfer.hxx> + +//........................................................................ +namespace svt +{ +//........................................................................ + + using namespace ::com::sun::star::uno; + using namespace ::com::sun::star::datatransfer; + + //==================================================================== + //= OStringTransferable + //==================================================================== + //-------------------------------------------------------------------- + OStringTransferable::OStringTransferable(const ::rtl::OUString& _rContent) + :TransferableHelper() + ,m_sContent( _rContent ) + { + } + + //-------------------------------------------------------------------- + void OStringTransferable::AddSupportedFormats() + { + AddFormat(SOT_FORMAT_STRING); + } + + //-------------------------------------------------------------------- + sal_Bool OStringTransferable::GetData( const DataFlavor& _rFlavor ) + { + sal_uInt32 nFormat = SotExchange::GetFormat( _rFlavor ); + if (SOT_FORMAT_STRING == nFormat) + return SetString( m_sContent, _rFlavor ); + + return sal_False; + } + + //==================================================================== + //= OStringTransfer + //==================================================================== + //-------------------------------------------------------------------- + void OStringTransfer::CopyString( const ::rtl::OUString& _rContent, Window* _pWindow ) + { + OStringTransferable* pTransferable = new OStringTransferable( _rContent ); + Reference< XTransferable > xTransfer = pTransferable; + pTransferable->CopyToClipboard( _pWindow ); + } + + //-------------------------------------------------------------------- + sal_Bool OStringTransfer::PasteString( ::rtl::OUString& _rContent, Window* _pWindow ) + { + TransferableDataHelper aClipboardData = TransferableDataHelper::CreateFromSystemClipboard( _pWindow ); + + // check for a string format + const DataFlavorExVector& rFormats = aClipboardData.GetDataFlavorExVector(); + for ( DataFlavorExVector::const_iterator aSearch = rFormats.begin(); + aSearch != rFormats.end(); + ++aSearch + ) + { + if (SOT_FORMAT_STRING == aSearch->mnSotId) + { + String sContent; + sal_Bool bSuccess = aClipboardData.GetString( SOT_FORMAT_STRING, sContent ); + _rContent = sContent; + return bSuccess; + } + } + + return sal_False; + } + + //-------------------------------------------------------------------- + void OStringTransfer::StartStringDrag( const ::rtl::OUString& _rContent, Window* _pWindow, sal_Int8 _nDragSourceActions ) + { + OStringTransferable* pTransferable = new OStringTransferable( _rContent ); + Reference< XTransferable > xTransfer = pTransferable; + pTransferable->StartDrag(_pWindow, _nDragSourceActions); + } + +//........................................................................ +} // namespace svt +//........................................................................ + |