libtaskmanager
tasklmbmenu.h
Go to the documentation of this file.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 __tasklmbmenu_h__
00026 #define __tasklmbmenu_h__
00027
00028 #include <QMenu>
00029 #include <QTimer>
00030 #include <QAction>
00031 #include <QDragEnterEvent>
00032 #include <QMouseEvent>
00033 #include <QDragLeaveEvent>
00034 #include <QDragMoveEvent>
00035 #include <QList>
00036
00037 #include "taskmanager.h"
00038
00039 #ifdef __GNUC__
00040 #warning "Need custom menu item support, which isn't there in Qt4!"
00041 #endif
00042 #if 0
00043 class TaskMenuItem : public QCustomMenuItem
00044 {
00045 public:
00046 TaskMenuItem(const QString &text,
00047 bool active, bool minimized, bool attention);
00048 ~TaskMenuItem();
00049
00050 void paint(QPainter*, const QColorGroup&, bool, bool, int, int, int, int);
00051 QSize sizeHint();
00052 void setAttentionState(bool state) { m_attentionState = state; }
00053
00054 private:
00055 QString m_text;
00056 bool m_isActive;
00057 bool m_isMinimized;
00058 bool m_demandsAttention;
00059 bool m_attentionState;
00060 };
00061 #endif
00062
00063 typedef QAction TaskMenuItem;
00064
00065
00066
00067
00068 class KDE_EXPORT TaskLMBMenu : public QMenu
00069 {
00070 Q_OBJECT
00071
00072 public:
00073 explicit TaskLMBMenu(const Task::List& list, QWidget *parent = 0, const char *name = 0);
00074
00075 protected Q_SLOTS:
00076 void dragSwitch();
00077 void attentionTimeout();
00078
00079 protected:
00080 void dragEnterEvent(QDragEnterEvent*);
00081 void dragLeaveEvent(QDragLeaveEvent*);
00082 void dragMoveEvent(QDragMoveEvent*);
00083 void mousePressEvent(QMouseEvent*);
00084 void mouseMoveEvent(QMouseEvent*);
00085 void mouseReleaseEvent(QMouseEvent*);
00086
00087 private:
00088 void fillMenu();
00089
00090 Task::List m_tasks;
00091 int m_lastDragId;
00092 bool m_attentionState;
00093 QTimer* m_attentionTimer;
00094 QTimer* m_dragSwitchTimer;
00095 QPoint m_dragStartPos;
00096 QList<TaskMenuItem*> m_attentionMap;
00097 };
00098
00099 #endif