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