KDE3Support
k3multipledrag.cpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include "k3multipledrag.h"
00021 #include "kdebug.h"
00022
00023 #ifndef QT_NO_DRAGANDDROP
00024
00025 K3MultipleDrag::K3MultipleDrag( QWidget *dragSource, const char *name )
00026 : Q3DragObject( dragSource, name )
00027 {
00028 m_dragObjects.setAutoDelete( true );
00029 }
00030
00031 void K3MultipleDrag::addDragObject( Q3DragObject *dragObject )
00032 {
00033
00034 m_dragObjects.append( dragObject );
00035
00036 int i = 0;
00037 while ( dragObject->format( i ) )
00038 ++i;
00039 m_numberFormats.append( i );
00040 }
00041
00042 QByteArray K3MultipleDrag::encodedData( const char *mime ) const
00043 {
00044
00045
00046 Q3PtrListIterator<Q3DragObject> it( m_dragObjects );
00047 for ( ; it.current(); ++it )
00048 {
00049 for ( int i = 0; it.current()->format( i ); ++i )
00050 {
00051 if ( ::qstrcmp( it.current()->format( i ), mime ) == 0 )
00052 return it.current()->encodedData( mime );
00053 }
00054 }
00055 return QByteArray();
00056 }
00057
00058 const char* K3MultipleDrag::format( int i ) const
00059 {
00060
00061
00062
00063
00064
00065
00066
00067 QList<int>::ConstIterator nit = m_numberFormats.begin();
00068 QList<int>::ConstIterator nend = m_numberFormats.end();
00069 Q3PtrListIterator<Q3DragObject> it( m_dragObjects );
00070 for ( ; nit != nend && i >= *nit ; ++nit, ++it )
00071 i -= *nit;
00072 if ( it.current() )
00073 return it.current()->format( i );
00074 return 0;
00075 }
00076
00077 void K3MultipleDrag::virtual_hook( int, void* )
00078 { }
00079
00080 #include "k3multipledrag.moc"
00081
00082 #endif