Diffstat (limited to 'library/backend/rohfeedback.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | library/backend/rohfeedback.cpp | 19 |
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 |