summaryrefslogtreecommitdiffstats
path: root/kio/kio/paste.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kio/kio/paste.cpp')
-rw-r--r--kio/kio/paste.cpp308
1 files changed, 0 insertions, 308 deletions
diff --git a/kio/kio/paste.cpp b/kio/kio/paste.cpp
deleted file mode 100644
index 472f4e313..000000000
--- a/kio/kio/paste.cpp
+++ /dev/null
@@ -1,308 +0,0 @@
-/* This file is part of the KDE libraries
- Copyright (C) 2000 David Faure <faure@kde.org>
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public
- License version 2 as published by the Free Software Foundation.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public License
- along with this library; see the file COPYING.LIB. If not, write to
- the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA.
-*/
-
-#include "paste.h"
-#include "pastedialog.h"
-
-#include "kio/job.h"
-#include "kio/global.h"
-#include "kio/netaccess.h"
-#include "kio/observer.h"
-#include "kio/renamedlg.h"
-#include "kio/kprotocolmanager.h"
-
-#include <kurl.h>
-#include <kurldrag.h>
-#include <kdebug.h>
-#include <klocale.h>
-#include <kinputdialog.h>
-#include <kmessagebox.h>
-#include <kmimetype.h>
-#include <ktempfile.h>
-
-#include <tqapplication.h>
-#include <tqclipboard.h>
-#include <tqdragobject.h>
-#include <tqtextstream.h>
-#include <tqvaluevector.h>
-
-static KURL getNewFileName( const KURL &u, const TQString& text )
-{
- bool ok;
- TQString dialogText( text );
- if ( dialogText.isEmpty() )
- dialogText = i18n( "Filename for clipboard content:" );
- TQString file = KInputDialog::getText( TQString::null, dialogText, TQString::null, &ok );
- if ( !ok )
- return KURL();
-
- KURL myurl(u);
- myurl.addPath( file );
-
- if (TDEIO::NetAccess::exists(myurl, false, 0))
- {
- kdDebug(7007) << "Paste will overwrite file. Prompting..." << endl;
- TDEIO::RenameDlg_Result res = TDEIO::R_OVERWRITE;
-
- TQString newPath;
- // Ask confirmation about resuming previous transfer
- res = Observer::self()->open_RenameDlg(
- 0L, i18n("File Already Exists"),
- u.pathOrURL(),
- myurl.pathOrURL(),
- (TDEIO::RenameDlg_Mode) (TDEIO::M_OVERWRITE | TDEIO::M_SINGLE), newPath);
-
- if ( res == TDEIO::R_RENAME )
- {
- myurl = newPath;
- }
- else if ( res == TDEIO::R_CANCEL )
- {
- return KURL();
- }
- }
-
- return myurl;
-}
-
-// The finaly step: write _data to tempfile and move it to neW_url
-static TDEIO::CopyJob* pasteDataAsyncTo( const KURL& new_url, const TQByteArray& _data )
-{
- KTempFile tempFile;
- tempFile.dataStream()->writeRawBytes( _data.data(), _data.size() );
- tempFile.close();
-
- KURL orig_url;
- orig_url.setPath(tempFile.name());
-
- return TDEIO::move( orig_url, new_url );
-}
-
-#ifndef QT_NO_MIMECLIPBOARD
-static TDEIO::CopyJob* chooseAndPaste( const KURL& u, TQMimeSource* data,
- const TQValueVector<TQCString>& formats,
- const TQString& text,
- TQWidget* widget,
- bool clipboard )
-{
- TQStringList formatLabels;
- for ( uint i = 0; i < formats.size(); ++i ) {
- const TQCString& fmt = formats[i];
- KMimeType::Ptr mime = KMimeType::mimeType( fmt );
- if ( mime != KMimeType::defaultMimeTypePtr() )
- formatLabels.append( i18n( "%1 (%2)" ).arg( mime->comment() ).arg( fmt.data() ) );
- else
- formatLabels.append( fmt );
- }
-
- TQString dialogText( text );
- if ( dialogText.isEmpty() )
- dialogText = i18n( "Filename for clipboard content:" );
- TDEIO::PasteDialog dlg( TQString::null, dialogText, TQString::null, formatLabels, widget, clipboard );
-
- if ( dlg.exec() != KDialogBase::Accepted )
- return 0;
-
- if ( clipboard && dlg.clipboardChanged() ) {
- KMessageBox::sorry( widget,
- i18n( "The clipboard has changed since you used 'paste': "
- "the chosen data format is no longer applicable. "
- "Please copy again what you wanted to paste." ) );
- return 0;
- }
-
- const TQString result = dlg.lineEditText();
- const TQCString chosenFormat = formats[ dlg.comboItem() ];
-
- kdDebug() << " result=" << result << " chosenFormat=" << chosenFormat << endl;
- KURL new_url( u );
- new_url.addPath( result );
- // if "data" came from TQClipboard, then it was deleted already - by a nice 0-seconds timer
- // In that case, get it again. Let's hope the user didn't copy something else meanwhile :/
- if ( clipboard ) {
- data = TQApplication::clipboard()->data();
- }
- const TQByteArray ba = data->encodedData( chosenFormat );
- return pasteDataAsyncTo( new_url, ba );
-}
-#endif
-
-// KDE4: remove
-TDEIO_EXPORT bool TDEIO::isClipboardEmpty()
-{
-#ifndef QT_NO_MIMECLIPBOARD
- TQMimeSource *data = TQApplication::clipboard()->data();
- if ( data->provides( "text/uri-list" ) && data->encodedData( "text/uri-list" ).size() > 0 )
- return false;
-#else
- // Happens with some versions of Qt Embedded... :/
- // Guess.
- TQString data = TQApplication::clipboard()->text();
- if(data.contains("://"))
- return false;
-#endif
- return true;
-}
-
-#ifndef QT_NO_MIMECLIPBOARD
-// The main method for dropping
-TDEIO::CopyJob* TDEIO::pasteMimeSource( TQMimeSource* data, const KURL& dest_url,
- const TQString& dialogText, TQWidget* widget, bool clipboard )
-{
- TQByteArray ba;
-
- // Now check for plain text
- // We don't want to display a mimetype choice for a TQTextDrag, those mimetypes look ugly.
- TQString text;
- if ( TQTextDrag::canDecode( data ) && TQTextDrag::decode( data, text ) )
- {
- TQTextStream txtStream( ba, IO_WriteOnly );
- txtStream << text;
- }
- else
- {
- TQValueVector<TQCString> formats;
- const char* fmt;
- for ( int i = 0; ( fmt = data->format( i ) ); ++i ) {
- if ( qstrcmp( fmt, "application/x-qiconlist" ) == 0 ) // see QIconDrag
- continue;
- if ( qstrcmp( fmt, "application/x-kde-cutselection" ) == 0 ) // see KonqDrag
- continue;
- if ( strchr( fmt, '/' ) == 0 ) // e.g. TARGETS, MULTIPLE, TIMESTAMP
- continue;
- formats.append( fmt );
- }
-
- if ( formats.size() == 0 )
- return 0;
-
- if ( formats.size() > 1 ) {
- return chooseAndPaste( dest_url, data, formats, dialogText, widget, clipboard );
- }
- ba = data->encodedData( formats.first() );
- }
- if ( ba.size() == 0 )
- {
- KMessageBox::sorry(0, i18n("The clipboard is empty"));
- return 0;
- }
-
- return pasteDataAsync( dest_url, ba, dialogText );
-}
-#endif
-
-// The main method for pasting
-TDEIO_EXPORT TDEIO::Job *TDEIO::pasteClipboard( const KURL& dest_url, bool move )
-{
- if ( !dest_url.isValid() ) {
- KMessageBox::error( 0L, i18n( "Malformed URL\n%1" ).arg( dest_url.url() ) );
- return 0;
- }
-
-#ifndef QT_NO_MIMECLIPBOARD
- TQMimeSource *data = TQApplication::clipboard()->data();
-
- // First check for URLs.
- KURL::List urls;
- if ( KURLDrag::canDecode( data ) && KURLDrag::decode( data, urls ) ) {
- if ( urls.count() == 0 ) {
- KMessageBox::error( 0L, i18n("The clipboard is empty"));
- return 0;
- }
-
- TDEIO::Job *res = 0;
- if ( move )
- res = TDEIO::move( urls, dest_url );
- else
- res = TDEIO::copy( urls, dest_url );
-
- // If moving, erase the clipboard contents, the original files don't exist anymore
- if ( move )
- TQApplication::clipboard()->clear();
- return res;
- }
- return pasteMimeSource( data, dest_url, TQString::null, 0 /*TODO parent widget*/, true /*clipboard*/ );
-#else
- TQByteArray ba;
- TQTextStream txtStream( ba, IO_WriteOnly );
- TQStringList data = TQStringList::split("\n", TQApplication::clipboard()->text());
- KURL::List urls;
- KURLDrag::decode(data, urls);
- TQStringList::Iterator end(data.end());
- for(TQStringList::Iterator it=data.begin(); it!=end; ++it)
- txtStream << *it;
- if ( ba.size() == 0 )
- {
- KMessageBox::sorry(0, i18n("The clipboard is empty"));
- return 0;
- }
- return pasteDataAsync( dest_url, ba );
-#endif
-}
-
-
-TDEIO_EXPORT void TDEIO::pasteData( const KURL& u, const TQByteArray& _data )
-{
- KURL new_url = getNewFileName( u, TQString::null );
- // We could use TDEIO::put here, but that would require a class
- // for the slotData call. With NetAccess, we can do a synchronous call.
-
- if (new_url.isEmpty())
- return;
-
- KTempFile tempFile;
- tempFile.setAutoDelete( true );
- tempFile.dataStream()->writeRawBytes( _data.data(), _data.size() );
- tempFile.close();
-
- (void) TDEIO::NetAccess::upload( tempFile.name(), new_url, 0 );
-}
-
-TDEIO_EXPORT TDEIO::CopyJob* TDEIO::pasteDataAsync( const KURL& u, const TQByteArray& _data )
-{
- return pasteDataAsync( u, _data, TQString::null );
-}
-
-TDEIO_EXPORT TDEIO::CopyJob* TDEIO::pasteDataAsync( const KURL& u, const TQByteArray& _data, const TQString& text )
-{
- KURL new_url = getNewFileName( u, text );
-
- if (new_url.isEmpty())
- return 0;
-
- return pasteDataAsyncTo( new_url, _data );
-}
-
-TDEIO_EXPORT TQString TDEIO::pasteActionText()
-{
- TQMimeSource *data = TQApplication::clipboard()->data();
- KURL::List urls;
- if ( KURLDrag::canDecode( data ) && KURLDrag::decode( data, urls ) ) {
- if ( urls.isEmpty() )
- return TQString::null; // nothing to paste
- else if ( urls.first().isLocalFile() )
- return i18n( "&Paste File", "&Paste %n Files", urls.count() );
- else
- return i18n( "&Paste URL", "&Paste %n URLs", urls.count() );
- } else if ( data->format(0) != 0 ) {
- return i18n( "&Paste Clipboard Contents" );
- } else {
- return TQString::null;
- }
-}
-