summaryrefslogtreecommitdiffstats
path: root/examples/iconview/simple_dd/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'examples/iconview/simple_dd/main.cpp')
-rw-r--r--examples/iconview/simple_dd/main.cpp187
1 files changed, 187 insertions, 0 deletions
diff --git a/examples/iconview/simple_dd/main.cpp b/examples/iconview/simple_dd/main.cpp
new file mode 100644
index 000000000..3093e89a9
--- /dev/null
+++ b/examples/iconview/simple_dd/main.cpp
@@ -0,0 +1,187 @@
+/****************************************************************************
+**
+** Copyright (C) 1992-2008 Trolltech ASA. All rights reserved.
+**
+** This file is part of an example program for TQt. This example
+** program may be used, distributed and modified without limitation.
+**
+*****************************************************************************/
+
+#include "main.h"
+
+const char* red_icon[]={
+"16 16 2 1",
+"r c red",
+". c None",
+"................",
+"................",
+"..rrrrrrrrrrrr..",
+"..rrrrrrrrrrrr..",
+"..rrrrrrrrrrrr..",
+"..rrr......rrr..",
+"..rrr......rrr..",
+"..rrr......rrr..",
+"..rrr......rrr..",
+"..rrr......rrr..",
+"..rrr......rrr..",
+"..rrrrrrrrrrrr..",
+"..rrrrrrrrrrrr..",
+"..rrrrrrrrrrrr..",
+"................",
+"................"};
+
+const char* blue_icon[]={
+"16 16 2 1",
+"b c blue",
+". c None",
+"................",
+"................",
+"..bbbbbbbbbbbb..",
+"..bbbbbbbbbbbb..",
+"..bbbbbbbbbbbb..",
+"..bbb......bbb..",
+"..bbb......bbb..",
+"..bbb......bbb..",
+"..bbb......bbb..",
+"..bbb......bbb..",
+"..bbb......bbb..",
+"..bbbbbbbbbbbb..",
+"..bbbbbbbbbbbb..",
+"..bbbbbbbbbbbb..",
+"................",
+"................"};
+
+const char* green_icon[]={
+"16 16 2 1",
+"g c green",
+". c None",
+"................",
+"................",
+"..gggggggggggg..",
+"..gggggggggggg..",
+"..gggggggggggg..",
+"..ggg......ggg..",
+"..ggg......ggg..",
+"..ggg......ggg..",
+"..ggg......ggg..",
+"..ggg......ggg..",
+"..ggg......ggg..",
+"..gggggggggggg..",
+"..gggggggggggg..",
+"..gggggggggggg..",
+"................",
+"................"};
+
+
+// ListBox -- low level drag and drop
+
+DDListBox::DDListBox( TQWidget * parent, const char * name, WFlags f ) :
+ TQListBox( parent, name, f )
+{
+ setAcceptDrops( TRUE );
+ dragging = FALSE;
+}
+
+
+void DDListBox::dragEnterEvent( TQDragEnterEvent *evt )
+{
+ if ( TQTextDrag::canDecode( evt ) )
+ evt->accept();
+}
+
+
+void DDListBox::dropEvent( TQDropEvent *evt )
+{
+ TQString text;
+
+ if ( TQTextDrag::decode( evt, text ) )
+ insertItem( text );
+}
+
+
+void DDListBox::mousePressEvent( TQMouseEvent *evt )
+{
+ TQListBox::mousePressEvent( evt );
+ dragging = TRUE;
+}
+
+
+void DDListBox::mouseMoveEvent( TQMouseEvent * )
+{
+ if ( dragging ) {
+ TQDragObject *d = new TQTextDrag( currentText(), this );
+ d->dragCopy(); // do NOT delete d.
+ dragging = FALSE;
+ }
+}
+
+
+// IconViewIcon -- high level drag and drop
+
+
+bool DDIconViewItem::acceptDrop( const TQMimeSource *mime ) const
+{
+ if ( mime->provides( "text/plain" ) )
+ return TRUE;
+ return FALSE;
+}
+
+
+void DDIconViewItem::dropped( TQDropEvent *evt, const TQValueList<TQIconDragItem>& )
+{
+ TQString label;
+
+ if ( TQTextDrag::decode( evt, label ) )
+ setText( label );
+}
+
+
+// IconView -- high level drag and drop
+
+TQDragObject *DDIconView::dragObject()
+{
+ return new TQTextDrag( currentItem()->text(), this );
+}
+
+void DDIconView::slotNewItem( TQDropEvent *evt, const TQValueList<TQIconDragItem>& )
+{
+ TQString label;
+
+ if ( TQTextDrag::decode( evt, label ) ) {
+ DDIconViewItem *item = new DDIconViewItem( this, label );
+ item->setRenameEnabled( TRUE );
+ }
+}
+
+
+
+int main( int argc, char *argv[] )
+{
+ TQApplication app( argc, argv );
+
+ // Create and show the widgets
+ TQSplitter *split = new TQSplitter();
+ DDIconView *iv = new DDIconView( split );
+ (void) new DDListBox( split );
+ app.setMainWidget( split );
+ split->resize( 600, 400 );
+ split->show();
+
+ // Set up the connection so that we can drop items into the icon view
+ TQObject::connect(
+ iv, SIGNAL(dropped(TQDropEvent*, const TQValueList<TQIconDragItem>&)),
+ iv, SLOT(slotNewItem(TQDropEvent*, const TQValueList<TQIconDragItem>&)));
+
+ // Populate the TQIconView with icons
+ DDIconViewItem *item;
+ item = new DDIconViewItem( iv, "Red", TQPixmap( red_icon ) );
+ item->setRenameEnabled( TRUE );
+ item = new DDIconViewItem( iv, "Green", TQPixmap( green_icon ) );
+ item->setRenameEnabled( TRUE );
+ item = new DDIconViewItem( iv, "Blue", TQPixmap( blue_icon ) );
+ item->setRenameEnabled( TRUE );
+
+ return app.exec();
+}
+
+