kmultipledrag.cpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include "kmultipledrag.h"
00021 #include "kdebug.h"
00022
00023 #ifndef QT_NO_DRAGANDDROP
00024
00025 KMultipleDrag::KMultipleDrag( QWidget *dragSource, const char *name )
00026 : QDragObject( dragSource, name )
00027 {
00028 m_dragObjects.setAutoDelete( true );
00029 }
00030
00031 void KMultipleDrag::addDragObject( QDragObject *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 KMultipleDrag::encodedData( const char *mime ) const
00043 {
00044
00045
00046 QPtrListIterator<QDragObject> 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* KMultipleDrag::format( int i ) const
00059 {
00060
00061
00062
00063
00064
00065
00066
00067 QValueList<int>::ConstIterator nit = m_numberFormats.begin();
00068 QValueList<int>::ConstIterator nend = m_numberFormats.end();
00069 QPtrListIterator<QDragObject> 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 KMultipleDrag::virtual_hook( int, void* )
00078 { }
00079
00080 #include "kmultipledrag.moc"
00081
00082 #endif
This file is part of the documentation for kdecore Library Version 3.4.0.