forked from ElvishArtisan/rivendell
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrdcartdrag.cpp
104 lines (84 loc) · 2.51 KB
/
rdcartdrag.cpp
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
// rdcartdrag.cpp
//
// Stored value drag object for Rivendell carts.
//
// (C) Copyright 2013-2021 Fred Gleason <[email protected]>
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License version 2 as
// published by the Free Software Foundation.
//
// 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 <QMimeData>
#include <QPixmap>
#include "rd.h"
#include "rdcartdrag.h"
#include "rdprofile.h"
RDCartDrag::RDCartDrag(unsigned cartnum,const QString &title,
const QColor &color)
: QMimeData()
{
SetData(cartnum,color,title);
d_formats.push_back(RDMIMETYPE_CART);
}
QStringList RDCartDrag::formats() const
{
return d_formats;
}
bool RDCartDrag::hasFormat(const QString &mimetype) const
{
return d_formats.contains(mimetype);
}
bool RDCartDrag::canDecode(const QMimeData *e)
{
return e->hasFormat(RDMIMETYPE_CART);
}
bool RDCartDrag::decode(const QMimeData *e,unsigned *cartnum,QColor *color,
QString *title)
{
RDProfile *p=new RDProfile();
p->setSourceString(QString::fromUtf8(e->data(RDMIMETYPE_CART)));
*cartnum=p->intValue("Rivendell-Cart","Number");
if(color!=NULL) {
color->setNamedColor(p->stringValue("Rivendell-Cart","Color"));
}
if(title!=NULL) {
*title=p->stringValue("Rivendell-Cart","ButtonText");
}
return true;
}
bool RDCartDrag::decode(const QMimeData *e,RDLogLine *ll,
RDLogLine::TransType next_trans,int log_mach,
bool timescale,RDLogLine::TransType trans)
{
unsigned cartnum;
RDCartDrag::decode(e,&cartnum);
ll->loadCart(cartnum,next_trans,log_mach,timescale,trans);
return true;
}
QVariant RDCartDrag::retrieveData(const QString &mimetype,QVariant::Type type)
const
{
return d_data.value(mimetype,QVariant());
}
void RDCartDrag::SetData(unsigned cartnum,const QColor &color,
const QString &title)
{
QString str="[Rivendell-Cart]\n";
str+="Number="+QString::asprintf("%06u",cartnum)+"\n";
if(color.isValid()) {
str+="Color="+color.name()+"\n";
}
if(!title.isEmpty()) {
str+="ButtonText="+title+"\n";
}
d_data[RDMIMETYPE_CART]=str;
}