home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / qt3_emx.zip / include / qdragobject.h < prev    next >
C/C++ Source or Header  |  2001-10-11  |  7KB  |  234 lines

  1. /****************************************************************************
  2. ** $Id:  qt/qdragobject.h   3.0.0   edited Jun 22 12:24 $
  3. **
  4. ** Definition of QDragObject
  5. **
  6. ** Copyright (C) 1992-2000 Trolltech AS.  All rights reserved.
  7. **
  8. ** This file is part of the kernel module of the Qt GUI Toolkit.
  9. **
  10. ** This file may be distributed under the terms of the Q Public License
  11. ** as defined by Trolltech AS of Norway and appearing in the file
  12. ** LICENSE.QPL included in the packaging of this file.
  13. **
  14. ** This file may be distributed and/or modified under the terms of the
  15. ** GNU General Public License version 2 as published by the Free Software
  16. ** Foundation and appearing in the file LICENSE.GPL included in the
  17. ** packaging of this file.
  18. **
  19. ** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition
  20. ** licenses may use this file in accordance with the Qt Commercial License
  21. ** Agreement provided with the Software.
  22. **
  23. ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
  24. ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  25. **
  26. ** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
  27. **   information about Qt Commercial License Agreements.
  28. ** See http://www.trolltech.com/qpl/ for QPL licensing information.
  29. ** See http://www.trolltech.com/gpl/ for GPL licensing information.
  30. **
  31. ** Contact info@trolltech.com if any conditions of this licensing are
  32. ** not clear to you.
  33. **
  34. **********************************************************************/
  35.  
  36. #ifndef QDRAGOBJECT_H
  37. #define QDRAGOBJECT_H
  38.  
  39. class QWidget;
  40. class QTextDragPrivate;
  41. class QDragObjectData;
  42. class QStoredDragData;
  43. class QImageDragData;
  44.  
  45. #ifndef QT_H
  46. #include "qobject.h"
  47. #include "qimage.h"
  48. #include "qstrlist.h"
  49. #include "qcolor.h"
  50. #endif // QT_H
  51.  
  52. #ifndef QT_NO_MIME
  53.  
  54. class Q_EXPORT QDragObject: public QObject, public QMimeSource {
  55.     Q_OBJECT
  56. public:
  57.     QDragObject( QWidget * dragSource = 0, const char * name = 0 );
  58.     virtual ~QDragObject();
  59.  
  60. #ifndef QT_NO_DRAGANDDROP
  61.     bool drag();
  62.     bool dragMove();
  63.     void dragCopy();
  64.     void dragLink();
  65.  
  66.     virtual void setPixmap(QPixmap);
  67.     virtual void setPixmap(QPixmap, const QPoint& hotspot);
  68.     QPixmap pixmap() const;
  69.     QPoint pixmapHotSpot() const;
  70. #endif
  71.  
  72.     QWidget * source();
  73.     static QWidget * target();
  74.  
  75.     static void setTarget(QWidget*);
  76.  
  77. #ifndef QT_NO_DRAGANDDROP
  78.     enum DragMode { DragDefault, DragCopy, DragMove, DragLink, DragCopyOrMove };
  79.  
  80. protected:
  81.     virtual bool drag(DragMode);
  82. #endif
  83.  
  84. private:
  85.     QDragObjectData * d;
  86. };
  87.  
  88. class Q_EXPORT QStoredDrag: public QDragObject {
  89.     Q_OBJECT
  90.     QStoredDragData * d;
  91.  
  92. public:
  93.     QStoredDrag( const char * mimeType,
  94.          QWidget * dragSource = 0, const char * name = 0 );
  95.     ~QStoredDrag();
  96.  
  97.     virtual void setEncodedData( const QByteArray & );
  98.  
  99.     const char * format(int i) const;
  100.     virtual QByteArray encodedData(const char*) const;
  101. };
  102.  
  103. class Q_EXPORT QTextDrag: public QDragObject {
  104.     Q_OBJECT
  105.     QTextDragPrivate* d;
  106. public:
  107.     QTextDrag( const QString &,
  108.            QWidget * dragSource = 0, const char * name = 0 );
  109.     QTextDrag( QWidget * dragSource = 0, const char * name = 0 );
  110.     ~QTextDrag();
  111.  
  112.     virtual void setText( const QString &);
  113.     virtual void setSubtype( const QCString &);
  114.  
  115.     const char * format(int i) const;
  116.     virtual QByteArray encodedData(const char*) const;
  117.  
  118.     static bool canDecode( const QMimeSource* e );
  119.     static bool decode( const QMimeSource* e, QString& s );
  120.     static bool decode( const QMimeSource* e, QString& s, QCString& subtype );
  121. };
  122.  
  123. class Q_EXPORT QImageDrag: public QDragObject {
  124.     Q_OBJECT
  125.     QImage img;
  126.     QStrList ofmts;
  127.     QImageDragData* d;
  128.  
  129. public:
  130.     QImageDrag( QImage image, QWidget * dragSource = 0, const char * name = 0 );
  131.     QImageDrag( QWidget * dragSource = 0, const char * name = 0 );
  132.     ~QImageDrag();
  133.  
  134.     virtual void setImage( QImage image );
  135.  
  136.     const char * format(int i) const;
  137.     virtual QByteArray encodedData(const char*) const;
  138.  
  139.     static bool canDecode( const QMimeSource* e );
  140.     static bool decode( const QMimeSource* e, QImage& i );
  141.     static bool decode( const QMimeSource* e, QPixmap& i );
  142. };
  143.  
  144.  
  145. class Q_EXPORT QUriDrag: public QStoredDrag {
  146.     Q_OBJECT
  147.  
  148. public:
  149.     QUriDrag( QStrList uris, QWidget * dragSource = 0, const char * name = 0 );
  150.     QUriDrag( QWidget * dragSource = 0, const char * name = 0 );
  151.     ~QUriDrag();
  152.  
  153.     void setFilenames( const QStringList & fnames ) { setFileNames( fnames ); }
  154.     void setFileNames( const QStringList & fnames );
  155.     void setUnicodeUris( const QStringList & uuris );
  156.     virtual void setUris( QStrList uris );
  157.  
  158.     static QString uriToLocalFile(const char*);
  159.     static QCString localFileToUri(const QString&);
  160.     static QString uriToUnicodeUri(const char*);
  161.     static QCString unicodeUriToUri(const QString&);
  162.     static bool canDecode( const QMimeSource* e );
  163.     static bool decode( const QMimeSource* e, QStrList& i );
  164.     static bool decodeToUnicodeUris( const QMimeSource* e, QStringList& i );
  165.     static bool decodeLocalFiles( const QMimeSource* e, QStringList& i );
  166. };
  167.  
  168. class Q_EXPORT QColorDrag : public QStoredDrag
  169. {
  170.     Q_OBJECT
  171.     QColor color;
  172.  
  173. public:
  174.     QColorDrag( const QColor &col, QWidget *dragsource = 0, const char *name = 0 );
  175.     QColorDrag( QWidget * dragSource = 0, const char * name = 0 );
  176.     void setColor( const QColor &col );
  177.  
  178.     static bool canDecode( QMimeSource * );
  179.     static bool decode( QMimeSource *, QColor &col );
  180. };
  181.  
  182. #ifndef QT_NO_COMPAT
  183. typedef QUriDrag QUrlDrag;
  184. #endif
  185.  
  186. #ifndef QT_NO_DRAGANDDROP
  187.  
  188. // QDragManager is not part of the public API.  It is defined in a
  189. // header file simply so different .cpp files can implement different
  190. // member functions.
  191. //
  192.  
  193. class Q_EXPORT QDragManager: public QObject {
  194.     Q_OBJECT
  195.  
  196. private:
  197.     QDragManager();
  198.     ~QDragManager();
  199.     // only friend classes can use QDragManager.
  200.     friend class QDragObject;
  201.     friend class QDragMoveEvent;
  202.     friend class QDropEvent;
  203.  
  204.     bool eventFilter( QObject *, QEvent * );
  205.     void timerEvent( QTimerEvent* );
  206.  
  207.     bool drag( QDragObject *, QDragObject::DragMode );
  208.  
  209.     void cancel( bool deleteSource = TRUE );
  210.     void move( const QPoint & );
  211.     void drop();
  212.     void updatePixmap();
  213.  
  214. private:
  215.     QDragObject * object;
  216.     void updateMode( ButtonState newstate );
  217.     void updateCursor();
  218.  
  219.     QWidget * dragSource;
  220.     QWidget * dropWidget;
  221.     bool beingCancelled;
  222.     bool restoreCursor;
  223.     bool willDrop;
  224.  
  225.     QPixmap *pm_cursor;
  226.     int n_cursor;
  227. };
  228.  
  229. #endif
  230.  
  231. #endif // QT_NO_MIME
  232.  
  233. #endif // QDRAGOBJECT_H
  234.