You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
92 lines
2.0 KiB
92 lines
2.0 KiB
14 years ago
|
/****************************************************************************
|
||
|
**
|
||
|
** 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++;
|
||
|
}
|