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
|
/***************************************************************************
copytodlg.cpp - description
-------------------
begin : Mon Mar 27 2000
copyright : (C) 2000 by Yacovlev Alexander & Dmitry Poplavsky <dima@mail.univ.kiev.ua>
(C) 2001-2002 Andras Mantia <amantia@kde.org>
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
// qt includes
// kde includes
#include <kio/job.h>
#include <kio/netaccess.h>
//app includes
#include "copyto.h"
#include "qextfileinfo.h"
CopyTo::CopyTo(const KURL& dirURL)
{
m_InitialDirUrl = dirURL;
}
CopyTo::~CopyTo(){
}
KURL CopyTo::copy(const KURL& urlToCopy, const KURL& destination)
{
m_destList.clear();
KURL targetDirURL = KURL();
if ( destination.isEmpty() )
{
targetDirURL = m_InitialDirUrl;
} else
{
targetDirURL = destination;
}
targetDirURL.adjustPath(1);
bool doCopy = true;
if (!QExtFileInfo::exists(targetDirURL, false, 0L))
{
doCopy = QExtFileInfo::createDir(targetDirURL, 0L);
}
KURL destURL;
if (doCopy)
{
KIO::UDSEntry entry;
KIO::NetAccess::stat(urlToCopy, entry, 0);
KFileItem item(entry, urlToCopy, false, true);
destURL = targetDirURL;
destURL.setPath(destURL.path(1) + urlToCopy.fileName(false));
if (item.isDir())
destURL.adjustPath(1);
KIO::CopyJob *job = KIO::copy(urlToCopy, destURL, true);
connect( job, SIGNAL(result( KIO::Job *)),
SLOT (slotResult( KIO::Job *)));
QString path = destURL.path();
if (path != "." && path != "..")
m_destList.append(destURL);
}
return destURL;
}
void CopyTo::slotResult( KIO::Job *)
{
emit addFilesToProject(m_destList);
emit deleteDialog(this);
}
KURL::List CopyTo::copy(const KURL::List& sourceList, const KURL& destination )
{
m_listCopy = true;
m_destList.clear();
KURL targetDirURL = KURL();
if ( destination.isEmpty() )
{
targetDirURL = m_InitialDirUrl;
} else
{
targetDirURL = destination;
}
bool doCopy = true;
if (!QExtFileInfo::exists(targetDirURL, false, 0L))
{
doCopy = QExtFileInfo::createDir(targetDirURL, 0L);
}
KIO::UDSEntry entry;
if (doCopy)
{
QString path;
for (uint i = 0; i < sourceList.count(); i++)
{
KURL srcURL = sourceList[i];
KIO::NetAccess::stat(srcURL, entry, 0);
KFileItem item(entry, srcURL, false, true);
KURL u = targetDirURL;
u.setPath(targetDirURL.path(1) + srcURL.fileName());
if (item.isDir())
u.adjustPath(1);
path = u.path();
if (path != "." && path != "..")
m_destList.append(u);
}
KIO::CopyJob *job = KIO::copy(sourceList, targetDirURL, true);
connect( job, SIGNAL(result( KIO::Job *)),
SLOT (slotResult( KIO::Job *)));
}
return m_destList;
}
#include "copyto.moc"
|