summaryrefslogtreecommitdiff
path: root/muse_qt4_evolution/muse/trackdrag.cpp
blob: beab87dd55437c52f51f769c29557a96bae5ffe5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
//=============================================================================
//  MusE
//  Linux Music Editor
//  $Id:$
//
//  Copyright (C) 2002-2006 by Werner Schweer and others
//
//  This program is free software; you can redistribute it and/or modify
//  it under the terms of the GNU General Public License version 2.
//
//  This program is distributed in the hope that it will be useful,
//  but WITHOUT ANY WARRANTY; without even the implied warranty of
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//  GNU General Public License for more details.
//
//  You should have received a copy of the GNU General Public License
//  along with this program; if not, write to the Free Software
//  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
//=============================================================================

#include "trackdrag.h"

class Track;
const char TrackDrag::type[] = "application/muse/track";

//---------------------------------------------------------
//   TrackDrag
//---------------------------------------------------------

TrackDrag::TrackDrag(Track* track, QWidget* src)
   : QDrag(src)
      {
      QByteArray a((char*)&track, sizeof(track));
      QMimeData* mimeData = new QMimeData;
      mimeData->setData(type, a);
      setMimeData(mimeData);
      }

//---------------------------------------------------------
//   canDecode
//---------------------------------------------------------

bool TrackDrag::canDecode(const QMimeSource* s)
      {
      return !strcmp(s->format(0), type);
      }

//---------------------------------------------------------
//   decode
//---------------------------------------------------------

bool TrackDrag::decode(const QMimeSource* s, Track*& p)
      {
      QByteArray a = s->encodedData(type);
      p = (Track*)((a[0] & 0xff)
          | (a[1] & 0xff) << 8
          | (a[2] & 0xff) << 16
          | (a[3] & 0xff) << 24);
      return true;
      }