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
|
/****************************************************************************
**
** Custom MIME type implementation example
**
** Created : 979899
**
** Copyright (C) 1997-2008 Trolltech ASA. All rights reserved.
**
** This file is part of an example program for Qt. This example
** program may be used, distributed and modified without limitation.
**
*****************************************************************************/
#include "secret.h"
#include <qevent.h>
//create the object withe the secret byte
SecretDrag::SecretDrag( uchar secret, QWidget * parent, const char * name )
: QStoredDrag( "secret/magic", parent, name )
{
QByteArray data(1);
data[0]= secret;
setEncodedData( data );
}
bool SecretDrag::canDecode( QDragMoveEvent* e )
{
return e->provides( "secret/magic" );
}
//decode it into a string
bool SecretDrag::decode( QDropEvent* e, QString& str )
{
QByteArray payload = e->data( "secret/magic" );
if ( payload.size() ) {
e->accept();
QString msg;
msg.sprintf("The secret number is %d", payload[0] );
str = msg;
return TRUE;
}
return FALSE;
}
SecretSource::SecretSource( int secret, QWidget *parent, const char * name )
: QLabel( "Secret", parent, name )
{
setBackgroundColor( blue.light() );
setFrameStyle( Box | Sunken );
setMinimumHeight( sizeHint().height()*2 );
setAlignment( AlignCenter );
mySecret = secret;
}
SecretSource::~SecretSource()
{
}
/* XPM */
static const char * picture_xpm[] = {
"16 16 3 1",
" c None",
". c #000000",
"X c #FFFF00",
" ..... ",
" ..XXXXX.. ",
" .XXXXXXXXX. ",
" .XXXXXXXXXXX. ",
" .XX..XXX..XX. ",
".XXXXXXXXXXXXX. ",
".XX...XXX...XX. ",
".XXX..XXX..XXX. ",
".XXXXXXXXXXXXX. ",
".XXXXXX.XXXXXX. ",
" .XX.XX.XX.XX. ",
" .XXX..X..XXX. ",
" .XXXXXXXXX. ",
" ..XXXXX.. ",
" ..... ",
" "};
void SecretSource::mousePressEvent( QMouseEvent * /*e*/ )
{
SecretDrag *sd = new SecretDrag( mySecret, this );
sd->setPixmap(QPixmap(picture_xpm),QPoint(8,8));
sd->dragCopy();
mySecret++;
}
|