• Skip to content
  • Skip to link menu
KDE 3.5 API Reference
  • KDE API Reference
  • API Reference
  • Sitemap
  • Contact Us
 

KDECore

kmultipledrag.cpp

Go to the documentation of this file.
00001 /* This file is part of the KDE project
00002    Copyright (C) 2001 David Faure <faure@kde.org>
00003 
00004    This program is free software; you can redistribute it and/or
00005    modify it under the terms of the GNU Library General Public
00006    License as published by the Free Software Foundation; either
00007    version 2 of the License.
00008 
00009    This program is distributed in the hope that it will be useful,
00010    but WITHOUT ANY WARRANTY; without even the implied warranty of
00011    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012    Library General Public License for more details.
00013 
00014    You should have received a copy of the GNU Library General Public License
00015    along with this program; see the file COPYING.  If not, write to
00016    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
00017    Boston, MA 02110-1301, USA.
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     //kdDebug() << "KMultipleDrag::addDragObject" << endl;
00034     m_dragObjects.append( dragObject );
00035     // We need to find out how many formats this dragObject supports
00036     int i = 0;
00037     while ( dragObject->format( i ) )
00038         ++i;
00039     m_numberFormats.append( i ); // e.g. if it supports two formats, 0 and 1, store 2.
00040 }
00041 
00042 QByteArray KMultipleDrag::encodedData( const char *mime ) const
00043 {
00044     //kdDebug() << "KMultipleDrag::encodedData " << mime << endl;
00045     // Iterate over the drag objects, and find the format in the right one
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     //kdDebug() << "KMultipleDrag::format " << i << endl;
00061     // example: m_numberFormats: 1, 4
00062     //          m_dragObjects: storeddrag, textdrag
00063     // i=0 -> storeddrag->format( 0 )
00064     // i=1 -> textdrag->format( 0 )
00065     // i=2 -> textdrag->format( 1 )
00066     // etc.
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 { /*BASE::virtual_hook( id, data );*/ }
00079 
00080 #include "kmultipledrag.moc"
00081 
00082 #endif

KDECore

Skip menu "KDECore"
  • Main Page
  • Modules
  • Namespace List
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Namespace Members
  • Class Members
  • Related Pages

API Reference

Skip menu "API Reference"
  • dcop
  • DNSSD
  • interfaces
  • Kate
  • kconf_update
  • KDECore
  • KDED
  • kdefx
  • KDEsu
  • kdeui
  • KDocTools
  • KHTML
  • KImgIO
  • KInit
  • kio
  • kioslave
  • KJS
  • KNewStuff
  • KParts
  • KUtils
Generated for API Reference by doxygen 1.5.9
This website is maintained by Adriaan de Groot and Allen Winter.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal