LibreOffice Module dbaccess (master) 1
TableRowExchange.cxx
Go to the documentation of this file.
1/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2/*
3 * This file is part of the LibreOffice project.
4 *
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 *
9 * This file incorporates work covered by the following license notice:
10 *
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 */
19
20#include <TableRowExchange.hxx>
21#include <sot/formats.hxx>
22#include <sot/storage.hxx>
23#include <TableRow.hxx>
24
25namespace dbaui
26{
27 constexpr sal_uInt32 FORMAT_OBJECT_ID_SBA_TABED = 1;
28
29 using namespace ::com::sun::star::uno;
30 OTableRowExchange::OTableRowExchange(std::vector< std::shared_ptr<OTableRow> >&& _rvTableRow)
31 : m_vTableRow(std::move(_rvTableRow))
32 {
33 }
34 bool OTableRowExchange::WriteObject( tools::SvRef<SotTempStream>& rxOStm, void* pUserObject, sal_uInt32 nUserObjectId, const css::datatransfer::DataFlavor& /*rFlavor*/ )
35 {
36 if(nUserObjectId == FORMAT_OBJECT_ID_SBA_TABED)
37 {
38 std::vector< std::shared_ptr<OTableRow> >* pRows = static_cast< std::vector< std::shared_ptr<OTableRow> >* >(pUserObject);
39 if(pRows)
40 {
41 (*rxOStm).WriteInt32( pRows->size() ); // first stream the size
42 for (auto const& row : *pRows)
43 WriteOTableRow(*rxOStm, *row);
44 return true;
45 }
46 }
47 return false;
48 }
50 {
51 if ( !m_vTableRow.empty() )
52 AddFormat(SotClipboardFormatId::SBA_TABED);
53 }
54 bool OTableRowExchange::GetData( const css::datatransfer::DataFlavor& rFlavor, const OUString& /*rDestDoc*/ )
55 {
57 if(nFormat == SotClipboardFormatId::SBA_TABED)
59 return false;
60 }
62 {
63 m_vTableRow.clear();
64 }
65}
66
67/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
static SotClipboardFormatId GetFormat(const css::datatransfer::DataFlavor &rFlavor)
bool SetObject(void *pUserObject, sal_uInt32 nUserObjectId, const css::datatransfer::DataFlavor &rFlavor)
void AddFormat(SotClipboardFormatId nFormat)
OTableRowExchange(std::vector< std::shared_ptr< OTableRow > > &&_rvTableRow)
virtual bool GetData(const css::datatransfer::DataFlavor &rFlavor, const OUString &rDestDoc) override
virtual void AddSupportedFormats() override
std::vector< std::shared_ptr< OTableRow > > m_vTableRow
virtual bool WriteObject(tools::SvRef< SotTempStream > &rxOStm, void *pUserObject, sal_uInt32 nUserObjectId, const css::datatransfer::DataFlavor &rFlavor) override
virtual void ObjectReleased() override
SotClipboardFormatId
constexpr sal_uInt32 FORMAT_OBJECT_ID_SBA_TABED
SvStream & WriteOTableRow(SvStream &_rStr, const OTableRow &_rRow)
Definition: TableRow.cxx:90