summaryrefslogtreecommitdiffstats
path: root/khexedit/hexdrag.cc
diff options
context:
space:
mode:
Diffstat (limited to 'khexedit/hexdrag.cc')
-rw-r--r--khexedit/hexdrag.cc130
1 files changed, 130 insertions, 0 deletions
diff --git a/khexedit/hexdrag.cc b/khexedit/hexdrag.cc
new file mode 100644
index 0000000..d09b28d
--- /dev/null
+++ b/khexedit/hexdrag.cc
@@ -0,0 +1,130 @@
+/*
+ * khexedit - Versatile hex editor
+ * Copyright (C) 1999 Espen Sand, espensa@online.no
+ *
+ * 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.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+
+#include "hexdrag.h"
+static const char *mediaString = "application/octet-stream";
+
+
+CHexDrag::CHexDrag( const QByteArray &data, QWidget *dragSource,
+ const char *name )
+ :QDragObject(dragSource,name)
+{
+ setData( data );
+ prepPixmap();
+}
+
+
+CHexDrag::CHexDrag( QWidget *dragSource, const char *name )
+ :QDragObject(dragSource,name)
+{
+ prepPixmap();
+}
+
+
+void CHexDrag::setData( const QByteArray &data )
+{
+ mData = data;
+}
+
+
+
+void CHexDrag::prepPixmap(void)
+{
+ //
+ // Wont use it yet,
+ //
+ /*
+ KIconLoader &loader = *KGlobal::iconLoader();
+ QPixmap pix = loader.loadIcon( "binary.xpm" );
+
+ QPoint hotspot( pix.width()-20,pix.height()/2 );
+ setPixmap( pix, hotspot );
+ */
+}
+
+
+const char *CHexDrag::format( int i ) const
+{
+ if( i == 0 )
+ {
+ return( mediaString );
+ }
+ else
+ {
+ return( 0 );
+ }
+ return( i == 0 ? mediaString : 0 );
+}
+
+
+QByteArray CHexDrag::encodedData( const char *fmt ) const
+{
+ if( fmt != 0 )
+ {
+ if( strcmp( fmt, mediaString) == 0 )
+ {
+ return( mData );
+ }
+ }
+
+ QByteArray buf;
+ return( buf );
+}
+
+
+bool CHexDrag::canDecode( const QMimeSource *e )
+{
+ return( e->provides(mediaString) );
+}
+
+
+bool CHexDrag::decode( const QMimeSource *e, QByteArray &dest )
+{
+ dest = e->encodedData(mediaString);
+ return( dest.size() == 0 ? false : true );
+
+ //
+ // I get an
+ // "X Error: BadAtom (invalid Atom parameter) 5
+ // Major opcode: 17"
+ //
+ // if I try to use the code below on a source that has been
+ // collected from QClipboard. It is the e->provides(mediaString)
+ // that fail (Qt-2.0). Sometimes it works :(
+ //
+ // printf("0: %s\n", e->format(0) ); No problem.
+ // printf("1: %s\n", e->format(1) ); Crash.
+ //
+ #if 0
+ if( e->provides(mediaString) == true )
+ {
+ dest = e->encodedData(mediaString);
+ return( true );
+ }
+ else
+ {
+ return( false );
+ }
+ #endif
+}
+
+
+#include "hexdrag.moc"