1 /*************************************************************************** 2 Drag.h - Drag&Drop container for Kwave's audio data 3 ------------------- 4 begin : Jan 24 2002 5 copyright : (C) 2002 by Thomas Eschenbacher 6 email : Thomas Eschenbacher <thomas.eschenbacher@gmx.de> 7 ***************************************************************************/ 8 9 /*************************************************************************** 10 * * 11 * This program is free software; you can redistribute it and/or modify * 12 * it under the terms of the GNU General Public License as published by * 13 * the Free Software Foundation; either version 2 of the License, or * 14 * (at your option) any later version. * 15 * * 16 ***************************************************************************/ 17 18 #ifndef DRAG_H 19 #define DRAG_H 20 21 #include "config.h" 22 23 #include <QtGlobal> 24 #include <QByteArray> 25 #include <QDrag> 26 #include <QObject> 27 #include <QString> 28 29 #include "libkwave/Sample.h" 30 31 class QMimeData; 32 class QWidget; 33 34 namespace Kwave 35 { 36 37 class MetaDataList; 38 class MultiTrackReader; 39 class SignalManager; 40 41 /** 42 * Simple class for drag & drop of wav data. 43 * @todo the current storage mechanism is straight-forward and stupid, it 44 * should be extended to use virtual memory 45 */ 46 class Q_DECL_EXPORT Drag: public QDrag 47 { 48 Q_OBJECT 49 50 public: 51 /** 52 * Constructor 53 * @see QDragObject 54 */ 55 explicit Drag(QWidget *dragSource = Q_NULLPTR); 56 57 /** Destructor */ 58 virtual ~Drag(); 59 60 /** 61 * Encodes wave data received from a MultiTrackReader into a byte 62 * array that is compatible with the format of a wav file. 63 * @param widget the widget used for displaying error messages 64 * @param src source of the samples 65 * @param meta_data information about the signal, sample rate, 66 * resolution and other meta data 67 * @return true if successful 68 */ 69 bool encode(QWidget *widget, Kwave::MultiTrackReader &src, 70 const Kwave::MetaDataList &meta_data); 71 72 /** Returns true if the mime type of the given source can be decoded */ 73 static bool canDecode(const QMimeData *data); 74 75 /** 76 * Decodes the encoded byte data of the given mime source and 77 * initializes a MultiTrackReader. 78 * @param widget the widget used for displaying error messages 79 * @param e mime source 80 * @param sig signal that receives the mime data 81 * @param pos position within the signal where to insert the data 82 * @return number of decoded samples if successful, zero if failed 83 */ 84 static sample_index_t decode(QWidget *widget, const QMimeData *e, 85 Kwave::SignalManager &sig, 86 sample_index_t pos); 87 88 }; 89 } 90 91 #endif /* DRAG_H */ 92 93 //*************************************************************************** 94 //*************************************************************************** 95