summaryrefslogtreecommitdiff
path: root/sot/source/base/filelist.cxx
blob: 95fdf83822eb22e4029426d8091b11e0e89d1218 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
 * This file is part of the LibreOffice project.
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 * This file incorporates work covered by the following license notice:
 *
 *   Licensed to the Apache Software Foundation (ASF) under one or more
 *   contributor license agreements. See the NOTICE file distributed
 *   with this work for additional information regarding copyright
 *   ownership. The ASF licenses this file to you under the Apache
 *   License, Version 2.0 (the "License"); you may not use this file
 *   except in compliance with the License. You may obtain a copy of
 *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
 */

#include <rtl/ustrbuf.hxx>
#include <tools/stream.hxx>
#include <tools/rtti.hxx>
#include <sot/exchange.hxx>
#include <sot/filelist.hxx>
#include <osl/diagnose.h>
#include <osl/thread.h>

TYPEINIT1_AUTOFACTORY( FileList, SvDataCopyStream );

/*************************************************************************
|*
|*    FileList - Ctor/Dtor
|*
\*************************************************************************/

FileList::~FileList()
{
    ClearAll();
}

void FileList::ClearAll()
{
    aStrList.clear();
}

/*************************************************************************
|*
|*    FileList - Zuweisungsoperator
|*
\*************************************************************************/

FileList& FileList::operator=( const FileList& rFileList )
{
    for ( size_t i = 0, n = rFileList.aStrList.size(); i < n; ++i )
        aStrList.push_back( rFileList.aStrList[ i ] );
    return *this;
}

/******************************************************************************
|*
|*  virtuelle SvData-Methoden
|*
\******************************************************************************/

void FileList::Load( SvStream& rIStm )
{
    ReadFileList( rIStm, *this );
}

void FileList::Save( SvStream& rOStm )
{
    WriteFileList( rOStm, *this );
}

void FileList::Assign( const SvDataCopyStream& rCopyStream )
{
    *this = static_cast<const FileList&>(rCopyStream);
}

/******************************************************************************
|*
|*  Stream-Operatoren
|*
\******************************************************************************/

/*
 * NOTE: to correctly handle this Protocol with Unicode, native Win32 must be called:
 * e.g. DropQueryFile
 */

SvStream& WriteFileList( SvStream& rOStm, SAL_UNUSED_PARAMETER const FileList& )
{
    OSL_FAIL("TODO: Not implemented!");
    return rOStm;
}

/* #i28176#
   The Windows clipboard bridge now provides a double '\0'
   terminated list of file names for format SotClipboardFormatId::FILE_LIST
   instead of the original Windows Sv_DROPFILES structure. All strings
   in this list are UTF16 strings. Shell link files will be already
   resolved by the Windows clipboard bridge.*/
SvStream& ReadFileList( SvStream& rIStm, FileList& rFileList )
{
    rFileList.ClearAll();

    OUStringBuffer sBuf(512);
    sal_uInt16 c;

    while (!rIStm.IsEof())
    {
        // read first character of filepath; c==0 > reach end of stream
        rIStm.ReadUInt16( c );
        if (!c)
            break;

        // read string till c==0
        while (c && !rIStm.IsEof())
        {
            sBuf.append((sal_Unicode)c);
            rIStm.ReadUInt16( c );
        }

        // append the filepath
        rFileList.AppendFile(sBuf.toString());
        sBuf.truncate();
    }
    return rIStm;
}

/******************************************************************************
|*
|*  Liste fuellen/abfragen
|*
\******************************************************************************/

void FileList::AppendFile( const OUString& rStr )
{
    aStrList.push_back( rStr );
}

OUString FileList::GetFile( size_t i ) const
{
    OUString aStr;
    if( i < aStrList.size() )
        aStr = aStrList[ i ];
    return aStr;
}

size_t FileList::Count() const
{
    return aStrList.size();
}

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
ranslation of german commentUrs Fässler Change-Id: I2876e33ccfd5dd7b33747d77a4cdaaa03bd01de9 2013-02-12fdo#46808, use constructor for datatransfer::DataFormatTranslatorNoel Grandin Change-Id: I68fd87ae71f764099b00b05a29cf5194d24da58d 2013-02-12fdo#46808, use constructor for datatransfer::MimeContentTypeFactoryNoel Grandin Change-Id: I576a472e22ad0e3798f4b34d808ac320f13d3e6d 2013-01-30Removed several useless macros: A2OU, A2S, C2U, C2S, OUSTR, OUSTRINGJean-Noël Rouvignac Change-Id: Ie859cb2dfdc7103c379fce56be88eef8fe390afd Reviewed-on: https://gerrit.libreoffice.org/1924 Tested-by: Luboš Luňák <l.lunak@suse.cz> Reviewed-by: Luboš Luňák <l.lunak@suse.cz> 2013-01-26gbuild: remove various pointless calls that don't add anythingMichael Stahl Change-Id: I7eccac4fa8890c2873c6bbd7f8f5bf5b0dd006d2 2013-01-15fdo#46808, Adapt SystemClipboard UNO service to new styleNoel Grandin this is the datatransfer::clipboard::SystemClipboard service Change-Id: I00227a2d84e2f1eaf9ca1ebb4fbe1f1548a6621d 2012-12-25Get rid of (most uses of) GUITor Lillqvist GUI only takes values UNX or WNT, so it is fairly pointless. One can check whether OS is WNT or not instead. Change-Id: I78ae32c03536a496a563e5deeb0fca78aebf9c34 Reviewed-on: https://gerrit.libreoffice.org/1304 Reviewed-by: Peter Foley <pefoley2@verizon.net> Tested-by: Peter Foley <pefoley2@verizon.net> 2012-12-21Missing includesStephan Bergmann Change-Id: Iad4deb829f71a9824e881d9f5782a474167d7a28 2012-12-21Remove unused cppuhelper/servicefactory.hxx includesStephan Bergmann Change-Id: I27fd4d1f1dfafccaa7936defb5cd687d6266e0a2 2012-11-28We only support MSVC 2008 (_MSC_VER 1500) or laterTor Lillqvist We can drop or simplify many conditionals. Change-Id: I37e820e515cc09845c30b62c89ddb3b6ff370f97 2012-11-11Update dtrans commented code to use string.h function instead of rtl/memoryArnaud Versini Change-Id: I244e436086746420cc66b0ed7d59bfcdc6606076 Reviewed-on: https://gerrit.libreoffice.org/1025 Reviewed-by: Tor Lillqvist <tml@iki.fi> Tested-by: Tor Lillqvist <tml@iki.fi> 2012-10-22drop rdbmaker completelyMatúš Kukan Change-Id: I313afb391562adae4f91c55480a036c228e0b540 2012-10-01Replace usage of rtl_*Memory with equivalent from string.hArnaud Versini Change-Id: I50ffc10f007f03c3252ef0196b59b881429cc159 Reviewed-on: https://gerrit.libreoffice.org/734 Reviewed-by: Norbert Thiebaud <nthiebaud@gmail.com> Tested-by: Norbert Thiebaud <nthiebaud@gmail.com> 2012-09-28gbuild: invert handling of standard system libraries:Michael Stahl Always link in gb_STDLIBS, except when the library explicitly opts out with gb_LinkTarget_disable_standard_system_libs. Change-Id: I489a99114fbfa46d0421a27cf6c7b899dc268a4a 2012-09-28gbuild: gb_Library_PLAINLIBS_NONE cleanup for WNT:Michael Stahl add a new gb_LinkTarget_use_system_win32_libs to abstract different linker options on MSVC and GCC. Change-Id: Ic9bf2545f59bf7871e6fc06b290c486ddfbec03d 2012-09-28gbuild: replace direct gb_STDLIBS use with ...Michael Stahl ... new gb_LinkTarget_add_standard_system_libs Change-Id: Ib2bc843098db3d8c6822b45a3d21724e67f57d69 2012-09-28gbuild: split uwinapi out of gb_STDLIBSMichael Stahl Change-Id: I53316e0b9369d806197bccb42cf22d3497af43e7