25 #include <com/sun/star/datatransfer/UnsupportedFlavorException.hpp>
26 #include <com/sun/star/datatransfer/clipboard/XClipboard.hpp>
27 #include <com/sun/star/datatransfer/clipboard/XFlushableClipboard.hpp>
29 #include <boost/property_tree/json_parser.hpp>
31 #include <LibreOfficeKit/LibreOfficeKitEnums.h>
46 const uno::Reference< datatransfer::clipboard::XClipboard >& rxClipboard,
47 const vcl::ILibreOfficeKitNotifier* pNotifier)
49 SAL_WARN_IF( !rxClipboard.is(),
"vcl",
"TextDataObject::CopyStringTo: invalid clipboard!" );
50 if ( !rxClipboard.is() )
58 rxClipboard->setContents( pDataObj,
nullptr );
60 uno::Reference< datatransfer::clipboard::XFlushableClipboard > xFlushableClipboard( rxClipboard, uno::UNO_QUERY );
61 if( xFlushableClipboard.is() )
62 xFlushableClipboard->flushClipboard();
66 boost::property_tree::ptree aTree;
67 aTree.put(
"content", rContent);
68 aTree.put(
"mimeType",
"text/plain");
69 std::stringstream aStream;
70 boost::property_tree::write_json(aStream, aTree);
71 pNotifier->libreOfficeKitViewCallback(LOK_CALLBACK_CLIPBOARD_CHANGED, aStream.str().c_str());
74 catch(
const uno::Exception& )
82 uno::Any aRet = ::cppu::queryInterface( rType, static_cast< datatransfer::XTransferable* >(
this) );
83 return (aRet.
hasValue() ? aRet : OWeakObject::queryInterface( rType ));
90 if ( nT != SotClipboardFormatId::STRING )
92 throw datatransfer::UnsupportedFlavorException();
99 uno::Sequence< datatransfer::DataFlavor > aDataFlavors(1);
107 return ( nT == SotClipboardFormatId::STRING );
static void CopyStringTo(const OUString &rContent, const css::uno::Reference< css::datatransfer::clipboard::XClipboard > &rxClipboard, const vcl::ILibreOfficeKitNotifier *pNotifier=nullptr)
copies a given string to a given clipboard
virtual ~TextDataObject() override
TextDataObject(const OUString &rText)
css::uno::Any SAL_CALL queryInterface(const css::uno::Type &rType) override
A helper class that calls Application::ReleaseSolarMutex() in its constructor and restores the mutex ...
css::uno::Any SAL_CALL getTransferData(const css::datatransfer::DataFlavor &aFlavor) override
css::uno::Sequence< css::datatransfer::DataFlavor > SAL_CALL getTransferDataFlavors() override
static SotClipboardFormatId GetFormat(const css::datatransfer::DataFlavor &rFlavor)
#define SAL_WARN_IF(condition, area, stream)
sal_Bool SAL_CALL isDataFlavorSupported(const css::datatransfer::DataFlavor &aFlavor) override
static bool GetFormatDataFlavor(SotClipboardFormatId nFormat, css::datatransfer::DataFlavor &rFlavor)