Port to the new pasteMimeData/pasteClipboard

When pasting/dropping raw data, this creates the file with the right
permission and makes undo work (deletes the file).
Needs kdelibs > 92e4dfab0d589d0ee663fb600a2cb2a046017b19 (April 20)
This commit is contained in:
David Faure 2011-04-20 19:13:14 +02:00
parent 6b5271fa5f
commit 48afcff729
2 changed files with 16 additions and 12 deletions

View file

@ -140,12 +140,17 @@ void KonqOperations::doPaste( QWidget * parent, const KUrl & destUrl, const QPoi
KIO::Job *job = KIO::pasteClipboard( destUrl, parent, move );
if (job) {
KonqOperations * op = new KonqOperations( parent );
KIO::CopyJob * copyJob = static_cast<KIO::CopyJob *>(job);
KIOPasteInfo * pi = new KIOPasteInfo;
pi->mousePos = pos;
op->setPasteInfo( pi );
op->setOperation( job, move ? MOVE : COPY, copyJob->destUrl() );
KIO::FileUndoManager::self()->recordJob( move ? KIO::FileUndoManager::Move : KIO::FileUndoManager::Copy, KUrl::List(), destUrl, job );
KIO::CopyJob * copyJob = qobject_cast<KIO::CopyJob *>(job);
if (copyJob) {
op->setOperation( job, move ? MOVE : COPY, copyJob->destUrl() );
KIO::FileUndoManager::self()->recordJob( move ? KIO::FileUndoManager::Move : KIO::FileUndoManager::Copy, KUrl::List(), destUrl, job );
} else if (KIO::SimpleJob* simpleJob = qobject_cast<KIO::SimpleJob *>(job)) {
op->setOperation(job, PUT, simpleJob->url());
KIO::FileUndoManager::self()->recordJob(KIO::FileUndoManager::Put, KUrl::List(), simpleJob->url(), job);
}
}
}
@ -328,13 +333,12 @@ KonqOperations *KonqOperations::doDrop( const KFileItem & destItem, const KUrl &
{
//kDebug(1203) << "Pasting to " << dest.url();
KonqOperations * op = new KonqOperations(parent);
KIO::Job* job = KIO::pasteMimeData( ev->mimeData(), dest,
i18n( "File name for dropped contents:" ),
parent );
if ( job ) // 0 if canceled by user
{
op->setOperation( job, COPY, dest );
KIO::FileUndoManager::self()->recordJob( KIO::FileUndoManager::Copy, KUrl::List(), dest, job );
KIO::Job* job = KIO::pasteMimeData(ev->mimeData(), dest,
i18n( "File name for dropped contents:" ),
parent);
if (KIO::SimpleJob* simpleJob = qobject_cast<KIO::SimpleJob *>(job)) {
op->setOperation(job, PUT, simpleJob->url());
KIO::FileUndoManager::self()->recordJob(KIO::FileUndoManager::Put, KUrl::List(), simpleJob->url(), simpleJob);
}
ev->acceptProposedAction();
return op;

View file

@ -37,7 +37,7 @@ class KFileItemListProperties;
/**
* Implements file operations (move,del,trash,paste,copy,move,link...)
* for konqueror and kdesktop whatever the view mode is (icon, tree, ...)
* for file managers
*/
class LIBKONQ_EXPORT KonqOperations : public QObject
{
@ -53,7 +53,7 @@ public:
*/
static void editMimeType( const QString & mimeType, QWidget* parent );
enum Operation { TRASH, DEL, COPY, MOVE, LINK, EMPTYTRASH, STAT, MKDIR, RESTORE, UNKNOWN };
enum Operation { TRASH, DEL, COPY, MOVE, LINK, EMPTYTRASH, STAT, MKDIR, RESTORE, UNKNOWN, PUT };
/**
* Delete the @p selectedUrls if possible.
*