summaryrefslogtreecommitdiffstats
path: root/src/app/Panel/krdrag.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/app/Panel/krdrag.cpp')
-rw-r--r--src/app/Panel/krdrag.cpp103
1 files changed, 103 insertions, 0 deletions
diff --git a/src/app/Panel/krdrag.cpp b/src/app/Panel/krdrag.cpp
new file mode 100644
index 0000000..d886404
--- /dev/null
+++ b/src/app/Panel/krdrag.cpp
@@ -0,0 +1,103 @@
+/***************************************************************************
+ krdrag.cpp
+ -------------------
+copyright : (C) 2003 by Heiner Eichmann
+e-mail : krusader@users.sourceforge.net
+web site : http://krusader.sourceforge.net
+---------------------------------------------------------------------------
+Description
+***************************************************************************
+
+A
+
+db dD d8888b. db db .d8888. .d8b. d8888b. d88888b d8888b.
+88 ,8P' 88 `8D 88 88 88' YP d8' `8b 88 `8D 88' 88 `8D
+88,8P 88oobY' 88 88 `8bo. 88ooo88 88 88 88ooooo 88oobY'
+88`8b 88`8b 88 88 `Y8b. 88~~~88 88 88 88~~~~~ 88`8b
+88 `88. 88 `88. 88b d88 db 8D 88 88 88 .8D 88. 88 `88.
+YP YD 88 YD ~Y8888P' `8888Y' YP YP Y8888D' Y88888P 88 YD
+
+ H e a d e r F i l e
+
+***************************************************************************
+* *
+* 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. *
+* *
+***************************************************************************/
+
+#include "krdrag.h"
+#include <kurldrag.h>
+
+KRDrag * KRDrag::newDrag( const KURL::List & urls, bool move, TQWidget * dragSource, const char* name )
+{
+ // See KURLDrag::newDrag
+ TQStrList uris;
+ KURL::List::ConstIterator uit = urls.begin();
+ KURL::List::ConstIterator uEnd = urls.end();
+ // Get each URL encoded in utf8 - and since we get it in escaped
+ // form on top of that, .latin1() is fine.
+ for ( ; uit != uEnd ; ++uit )
+ uris.append( KURLDrag::urlToString( *uit ).latin1() );
+ return new KRDrag( uris, move, dragSource, name );
+}
+
+KRDrag::KRDrag( const TQStrList & urls, bool move, TQWidget * dragSource, const char* name )
+ : TQUriDrag( urls, dragSource, name ),
+ m_bCutSelection( move ), m_urls( urls )
+{}
+
+const char* KRDrag::format( int i ) const
+{
+ if ( i == 0 )
+ return "text/uri-list";
+ else if ( i == 1 )
+ return "application/x-tde-cutselection";
+ else if ( i == 2 )
+ return "text/plain";
+ else return 0;
+}
+
+TQByteArray KRDrag::encodedData( const char* mime ) const
+{
+ TQByteArray a;
+ TQCString mimetype( mime );
+ if ( mimetype == "text/uri-list" )
+ return TQUriDrag::encodedData( mime );
+ else if ( mimetype == "application/x-tde-cutselection" ) {
+ TQCString s ( m_bCutSelection ? "1" : "0" );
+ a.resize( s.length() + 1 ); // trailing zero
+ memcpy( a.data(), s.data(), s.length() + 1 );
+ }
+ else if ( mimetype == "text/plain" )
+ {
+ TQStringList uris;
+ for (TQStrListIterator it(m_urls); *it; ++it)
+ uris.append(KURLDrag::stringToUrl(*it).prettyURL());
+ TQCString s = uris.join( "\n" ).local8Bit();
+ if( uris.count() > 1 )
+ s.append( "\n" );
+ a.resize( s.length() + 1 ); // trailing zero
+ memcpy( a.data(), s.data(), s.length() + 1 );
+ }
+ return a;
+}
+
+//
+
+// Used for KonqIconDrag too
+
+bool KRDrag::decodeIsCutSelection( const TQMimeSource *e )
+{
+ TQByteArray a = e->encodedData( "application/x-tde-cutselection" );
+ if ( a.isEmpty() )
+ return false;
+ else
+ {
+ return (a.at(0) == '1'); // true if "1", or similar
+ }
+ }
+
+#include "krdrag.moc"