summaryrefslogtreecommitdiff
path: root/library/backend/rohfeedback.cpp
Side-by-side diff
Diffstat (limited to 'library/backend/rohfeedback.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--library/backend/rohfeedback.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/library/backend/rohfeedback.cpp b/library/backend/rohfeedback.cpp
index 21aad34..9a19aac 100644
--- a/library/backend/rohfeedback.cpp
+++ b/library/backend/rohfeedback.cpp
@@ -1,125 +1,144 @@
+/**********************************************************************
+** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
+**
+** This file is part of the Qtopia Environment.
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+** See http://www.trolltech.com/gpl/ for GPL licensing information.
+**
+** Contact info@trolltech.com if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
#ifdef OPIE_WITHROHFEEDBACK
#include <rohfeedback.h>
#include <stdio.h>
#include <qpeapplication.h>
#include <qevent.h>
#include <resource.h>
#include <qpixmap.h>
#include <qbitmap.h>
#define SPEED 600
#define DELAY 500
namespace Opie {
namespace Internal {
/*
RightOnHold feedback
*/
QPixmap * RoHFeedback::Imgs[NOOFICONS] = { 0, 0, 0, 0, 0 };
QBitmap * RoHFeedback::Masks[NOOFICONS];
int RoHFeedback::IconWidth;
int RoHFeedback::IconHeight;
RoHFeedback::RoHFeedback() :
QLabel( 0, 0, Qt::WType_Popup ), Timer() {
Receiver = 0l;
connect( &Timer, SIGNAL( timeout() ), this, SLOT( iconShow() ) );
if( Imgs[0] == 0 ) {
QString S;
for( int i = 0; i < NOOFICONS ; i ++ ) {
Imgs[i] = new QPixmap( Resource::loadPixmap(
"RoH/star/"+ QString::number(i+1) + ".png" ));
Masks[i] = new QBitmap();
(*Masks[i]) = Resource::loadPixmap(
"RoH/star/"+QString::number(i+1) + "-mask.png" );
}
}
IconWidth = Imgs[0]->size().width();
IconHeight = Imgs[0]->size().height();
resize( IconWidth, IconHeight );
}
int RoHFeedback::delay( void ) {
return DELAY+SPEED+50;
}
RoHFeedback::~RoHFeedback() {
for ( int i = 0; i < NOOFICONS; ++i ) {
delete Imgs [i];
delete Masks[i];
}
}
void RoHFeedback::init( const QPoint & P, QWidget* wid ) {
if( ! IconWidth )
return;
Receiver = wid;
IconNr = FeedbackTimerStart;
move( P.x()-IconWidth/2, P.y() - IconHeight/2 );
// to initialize
Timer.start( DELAY );
}
void RoHFeedback::stop( void ) {
IconNr = FeedbackStopped; // stop
}
bool RoHFeedback::event( QEvent * E ) {
if( E->type() >= QEvent::MouseButtonPress &&
E->type() <= QEvent::MouseMove ) {
// pass the event to the receiver with translated coord
QMouseEvent QME( ((QMouseEvent *)E)->type(),
Receiver->mapFromGlobal(
((QMouseEvent *)E)->globalPos() ),
((QMouseEvent *)E)->globalPos(),
((QMouseEvent *)E)->button(),
((QMouseEvent *)E)->state()
);
return QPEApplication::sendEvent( Receiver, &QME );
}
// first let the label treat the event
return QLabel::event( E );
}
void RoHFeedback::iconShow( void ) {
switch( IconNr ) {
case FeedbackTimerStart:
IconNr = FeedbackShow;
Timer.start( SPEED/NOOFICONS );
break;
case FeedbackStopped:
// stopped
IconNr = FeedbackTimerStart;
hide();
Timer.stop();
break;
case FeedbackShow: // first
show();
// FT
default :
// show
setPixmap( *(Imgs[IconNr]) );
setMask( *(Masks[IconNr]) );
IconNr = (IconNr+1)%NOOFICONS; // rotate
break;
}
}
}
}
#endif