• Skip to content
  • Skip to link menu
Trinity API Reference
  • Trinity API Reference
  • kdecore
 

kdecore

kmultipledrag.cpp
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( TQWidget *dragSource, const char *name )
00026     : TQDragObject( dragSource, name )
00027 {
00028     m_dragObjects.setAutoDelete( true );
00029 }
00030 
00031 void KMultipleDrag::addDragObject( TQDragObject *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 TQByteArray 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     TQPtrListIterator<TQDragObject> 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 TQByteArray();
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     TQValueList<int>::ConstIterator nit = m_numberFormats.begin();
00068     TQValueList<int>::ConstIterator nend = m_numberFormats.end();
00069     TQPtrListIterator<TQDragObject> 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

kdecore

Skip menu "kdecore"
  • arts
  • dcop
  • dnssd
  • interfaces
  •     interface
  •     library
  •   kspeech
  •   ktexteditor
  • kabc
  • kate
  • kcmshell
  • kdecore
  • kded
  • kdefx
  • kdeprint
  • kdesu
  • kdeui
  • kdoctools
  • khtml
  • kimgio
  • kinit
  • kio
  •   bookmarks
  •   httpfilter
  •   kfile
  •   kio
  •   kioexec
  •   kpasswdserver
  •   kssl
  • kioslave
  •   http
  • kjs
  • kmdi
  •   kmdi
  • knewstuff
  • kparts
  • krandr
  • kresources
  • kspell2
  • kunittest
  • kutils
  • kwallet
  • libkmid
  • libkscreensaver
Generated for kdecore by doxygen 1.7.6.1
This website is maintained by Timothy Pearson.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. |