|
|
|
/***************************************************************************
|
|
|
|
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, TQT_SIGNAL(result( KIO::Job *)),
|
|
|
|
TQT_SLOT (slotResult( KIO::Job *)));
|
|
|
|
|
|
|
|
TQString 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)
|
|
|
|
{
|
|
|
|
TQString 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, TQT_SIGNAL(result( KIO::Job *)),
|
|
|
|
TQT_SLOT (slotResult( KIO::Job *)));
|
|
|
|
}
|
|
|
|
|
|
|
|
return m_destList;
|
|
|
|
|
|
|
|
}
|
|
|
|
#include "copyto.moc"
|