You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdewebdev/quanta/dialogs/copyto.cpp

128 lines
3.5 KiB

/***************************************************************************
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 <tdeio/job.h>
#include <tdeio/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)
{
TDEIO::UDSEntry entry;
TDEIO::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);
TDEIO::CopyJob *job = TDEIO::copy(urlToCopy, destURL, true);
connect( job, TQT_SIGNAL(result( TDEIO::Job *)),
TQT_SLOT (slotResult( TDEIO::Job *)));
TQString path = destURL.path();
if (path != "." && path != "..")
m_destList.append(destURL);
}
return destURL;
}
void CopyTo::slotResult( TDEIO::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);
}
TDEIO::UDSEntry entry;
if (doCopy)
{
TQString path;
for (uint i = 0; i < sourceList.count(); i++)
{
KURL srcURL = sourceList[i];
TDEIO::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);
}
TDEIO::CopyJob *job = TDEIO::copy(sourceList, targetDirURL, true);
connect( job, TQT_SIGNAL(result( TDEIO::Job *)),
TQT_SLOT (slotResult( TDEIO::Job *)));
}
return m_destList;
}
#include "copyto.moc"