00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
#ifndef GUI_ALABEL_H
00012
#define GUI_ALABEL_H
00013
00014 #define APPEAR_IMMEDIATELY 1
00015 #define DISAPPEAR_IMMEDIATELY 2
00016 #define SLIDE_IN_LEFT 3
00017 #define SLIDE_OUT_LEFT 4
00018 #define SLIDE_IN_RIGHT 5
00019 #define SLIDE_OUT_RIGHT 6
00020 #define FADE_TRANSITION 7
00021
00022
00023
00024
class QTimer;
00025
class QPixmap;
00026
class QPainter;
00027
class QImage;
00028
class Action;
00029
00030
00031
#include <qlabel.h>
00032
#include <qpixmap.h>
00033
#include <qdatetime.h>
00034
#include <qmutex.h>
00035
00036
00037 class ALabel :
public QLabel
00038 {
00039 Q_OBJECT
00040
00041
public:
00043
ALabel(
QWidget *parent=0,
const char* name=0,
00044 QPixmap*
hoverOverImage = NULL,
00045
int setMethod =
APPEAR_IMMEDIATELY,
00046
int removalMethod =
DISAPPEAR_IMMEDIATELY,
00047
int resetMethod =
APPEAR_IMMEDIATELY,
00048
int removalBeforeResetMethod =
DISAPPEAR_IMMEDIATELY,
00049
int initDelay = 130,
int accel = 50);
00050
00052
void setAnimationMethods(
int setMethod =
APPEAR_IMMEDIATELY,
00053
int removalMethod =
DISAPPEAR_IMMEDIATELY,
00054
int resetMethod =
APPEAR_IMMEDIATELY,
00055
int removalBeforeResetMethod =
DISAPPEAR_IMMEDIATELY);
00056
00058
void setPixmap (
const QPixmap &p );
00059
00061
void removePixmap(
bool forceImmediate =
false);
00062
protected:
00064
void animatePixmap( );
00065
00066
void drawContents( QPainter* p);
00067
00068
void enterEvent( QEvent* e);
00069
void leaveEvent( QEvent* e);
00070
00071
void mousePressEvent( QMouseEvent* );
00072
void mouseReleaseEvent( QMouseEvent* );
00073
void mouseDoubleClickEvent( QMouseEvent* );
00074
void mouseMoveEvent( QMouseEvent* );
00075
00076 signals:
00077
void dropEventOccured( QDropEvent* e);
00078
00080
void mousePress();
00081
void mouseRelease();
00082
void mouseDoubleClick();
00083
00084
void pixmapRemoved();
00085
00086
private slots:
00087
void animate();
00088
00089
private:
00090
void internalRemovePixmap(
bool forceImmediate =
false );
00091
void internalSetPixmap (
const QPixmap &p );
00092
void appendJob(QPixmap* pix);
00093
void cleanStack();
00094
00095
00096 QImage *
pixStore, *
resetPixStore;
00097
00098
00099 int setMethod;
00100 int removalMethod;
00101 int removalBeforeResetMethod;
00102 int resetMethod;
00103
00104
00105 int initDelay, accel,
minDelay,
delay,
animationType;
00106 int step;
00107
00108
00109 QTimer*
timer;
00110 QTime
lastTime,
currentTime;
00111
00112
00113 bool drawHoverOverImage;
00114 QRect
hoverOverRect;
00115
00116
00117 QPixmap*
hoverOverImage;
00118
00119
00120 bool imageShown;
00121
00122
00123 bool handCursorShown;
00124
00125
00126 bool animating;
00127 QMutex
animatingBoolMutex;
00128
00129
00130 bool resettingImage;
00131
00132
00133 Action*
delayedActionHead;
00134 Action*
delayedActionTail;
00135 QMutex
queueMutex;
00136
00137 };
00138
00139
00140
00141
00142 class Action
00143 {
00144
public:
00145
Action(QPixmap*
image);
00146
~Action();
00147
Action*
getNext();
00148
void setNext(
Action*
next);
00149 QPixmap*
getImage();
00150
00151
private:
00152 QPixmap* image;
00153 Action* next;
00154 };
00155
00156
00157
00158
#endif //GUI_ALABEL_H