00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef __taskcontainer_h__
00026 #define __taskcontainer_h__
00027
00028 #include <tqpixmap.h>
00029 #include <tqtimer.h>
00030 #include <tqtoolbutton.h>
00031
00032 #include "kickertip.h"
00033 #include "taskmanager.h"
00034
00035 class TaskBar;
00036
00037 typedef TQValueList<TQPixmap*> PixmapList;
00038
00039 class TaskContainer : public TQToolButton, public KickerTip::Client
00040 {
00041 Q_OBJECT
00042
00043 public:
00044 typedef TQValueList<TaskContainer*> List;
00045 typedef TQValueList<TaskContainer*>::iterator Iterator;
00046
00047 TaskContainer(Task::Ptr, TaskBar*, TQWidget *parent = 0, const char *name = 0);
00048 TaskContainer(Startup::Ptr, PixmapList&, TaskBar*,
00049 TQWidget *parent = 0, const char *name = 0);
00050 virtual ~TaskContainer();
00051
00052 void setArrowType( Qt::ArrowType at );
00053
00054 void init();
00055
00056 void add(Task::Ptr);
00057 void remove(Task::Ptr);
00058 void remove(Startup::Ptr);
00059
00060 bool contains(Task::Ptr);
00061 bool contains(Startup::Ptr);
00062 bool contains(WId);
00063
00064 bool isEmpty();
00065 bool onCurrentDesktop();
00066 bool isIconified();
00067 bool isOnScreen();
00068
00069 TQString id();
00070 int desktop();
00071 TQString name();
00072
00073 virtual TQSizePolicy sizePolicy () const;
00074
00075 void publishIconGeometry( TQPoint );
00076 void desktopChanged( int );
00077 void windowChanged(Task::Ptr);
00078 void settingsChanged();
00079 bool eventFilter( TQObject *o, TQEvent *e );
00080
00081 int taskCount() const { return tasks.count(); }
00082 int filteredTaskCount() const { return m_filteredTasks.count(); }
00083
00084 bool activateNextTask( bool forward, bool& forcenext );
00085
00086 void updateKickerTip(KickerTip::Data&);
00087
00088 void finish();
00089
00090 void setBackground();
00091
00092 public slots:
00093 void updateNow();
00094
00095 signals:
00096 void showMe(TaskContainer*);
00097
00098 protected:
00099 void paintEvent(TQPaintEvent*);
00100 void drawButton(TQPainter*);
00101 void resizeEvent(TQResizeEvent*);
00102 void mousePressEvent(TQMouseEvent*);
00103 void mouseReleaseEvent(TQMouseEvent*);
00104 void mouseMoveEvent(TQMouseEvent*);
00105 void dragEnterEvent(TQDragEnterEvent*);
00106 void dragLeaveEvent(TQDragLeaveEvent*);
00107 void enterEvent(TQEvent*);
00108 void leaveEvent(TQEvent*);
00109 bool startDrag(const TQPoint& pos);
00110 void stopTimers();
00111
00112 void performAction(int);
00113 void popupMenu(int);
00114
00115 void updateFilteredTaskList();
00116
00117 protected slots:
00118 void animationTimerFired();
00119 void attentionTimerFired();
00120 void dragSwitch();
00121 void iconChanged();
00122 void setLastActivated();
00123 void taskChanged(bool geometryChangeOnly);
00124 void showMe();
00125
00126 private:
00127 void checkAttention(const Task::Ptr changed_task = NULL);
00128 TQString sid;
00129 TQTimer animationTimer;
00130 TQTimer dragSwitchTimer;
00131 TQTimer attentionTimer;
00132 TQTimer m_paintEventCompressionTimer;
00133 int currentFrame;
00134 PixmapList frames;
00135 int attentionState;
00136 TQRect iconRect;
00137 TQPixmap animBg;
00138 Task::List tasks;
00139 Task::List m_filteredTasks;
00140 Task::Ptr lastActivated;
00141 TQPopupMenu* m_menu;
00142 Startup::Ptr m_startup;
00143 ArrowType arrowType;
00144 TaskBar* taskBar;
00145 bool discardNextMouseEvent;
00146 bool aboutToActivate;
00147 bool m_mouseOver;
00148 bool m_paintEventCompression;
00149 enum { ATTENTION_BLINK_TIMEOUT = 4 };
00150 TQPoint m_dragStartPos;
00151 };
00152
00153 #endif