[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdebase/workspace/plasma/applets/tasks
From: Aaron J. Seigo <aseigo () kde ! org>
Date: 2009-04-30 5:21:51
Message-ID: 1241068911.375425.26738.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 961393 by aseigo:
move the window highlighting to AbstractTaskItem so we can support multiple groups
M +57 -6 abstracttaskitem.cpp
M +1 -0 abstracttaskitem.h
M +3 -3 taskgroupitem.h
M +0 -29 windowtaskitem.cpp
M +0 -2 windowtaskitem.h
--- trunk/KDE/kdebase/workspace/plasma/applets/tasks/abstracttaskitem.cpp \
#961392:961393 @@ -23,13 +23,15 @@
#include "abstracttaskitem.h"
// Qt
+#include <QApplication>
+#include <QGraphicsLinearLayout>
#include <QGraphicsSceneContextMenuEvent>
+#include <QGraphicsView>
#include <QStyleOptionGraphicsItem>
-#include <QGraphicsView>
+#include <QTextLayout>
#include <QTimer>
-#include <QApplication>
-#include <QTextLayout>
-#include <QGraphicsLinearLayout>
+#include <QVarLengthArray>
+#include <QX11Info>
// KDE
#include <KAuthorized>
@@ -55,6 +57,8 @@
#include "tasks.h"
#include "taskgroupitem.h"
+static const int HOVER_EFFECT_TIMEOUT = 500;
+
AbstractTaskItem::AbstractTaskItem(QGraphicsWidget *parent, Tasks *applet, const \
bool showTooltip) : QGraphicsWidget(parent),
m_abstractItem(0),
@@ -65,6 +69,7 @@
m_alpha(1),
m_backgroundPrefix("normal"),
m_updateTimerId(0),
+ m_hoverEffectTimerId(0),
m_attentionTimerId(0),
m_attentionTicks(0),
m_fadeIn(true),
@@ -266,8 +271,8 @@
void AbstractTaskItem::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
{
Q_UNUSED(event)
-
fadeBackground("hover", 175, true);
+ m_hoverEffectTimerId = startTimer(HOVER_EFFECT_TIMEOUT);
}
void AbstractTaskItem::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
@@ -275,7 +280,18 @@
Q_UNUSED(event)
QString backgroundPrefix;
+ if (m_hoverEffectTimerId) {
+ killTimer(m_hoverEffectTimerId);
+ m_hoverEffectTimerId = 0;
+ }
+#ifdef Q_WS_X11
+ Display *dpy = QX11Info::display();
+ const WId rootWin = QX11Info::appRootWindow();
+ Atom atom = XInternAtom(dpy, "_KDE_WINDOW_HIGHLIGHT", False);
+ XDeleteProperty(dpy, rootWin, atom);
+#endif
+
if (m_flags & TaskWantsAttention) {
backgroundPrefix = "attention";
} else if (m_flags & TaskIsMinimized) {
@@ -336,8 +352,8 @@
{
if (event->timerId() == m_updateTimerId) {
killTimer(m_updateTimerId);
+ m_updateTimerId = 0;
update();
- m_updateTimerId = 0;
} else if (event->timerId() == m_attentionTimerId) {
++m_attentionTicks;
if (m_attentionTicks > 6) {
@@ -353,6 +369,41 @@
}
update();
+ } else if (event->timerId() == m_hoverEffectTimerId) {
+#ifdef Q_WS_X11
+ QList<TaskManager::TaskItem *> windows;
+
+ if (m_abstractItem->isGroupItem()) {
+ foreach (AbstractGroupableItem *item,
+ \
static_cast<TaskManager::TaskGroup*>(m_abstractItem)->members()) { + \
if (item->isGroupItem()) { + //TODO: recurse through sub-groups?
+ } else {
+ windows.append(static_cast<TaskManager::TaskItem*>(item));
+ }
+ }
+ } else {
+ windows.append(static_cast<TaskManager::TaskItem*>(m_abstractItem));
+ }
+
+ const int numWindows = windows.count();
+ QVarLengthArray<long, 1024> data(1 + numWindows);
+ data[0] = numWindows;
+
+ kDebug() << "setting for" << numWindows;
+ for (int i = 0; i < numWindows; ++i) {
+ data[i + 1] = windows.at(i)->task()->window();
+ }
+
+ Display *dpy = QX11Info::display();
+ const WId rootWin = QX11Info::appRootWindow();
+ Atom atom = XInternAtom(dpy, "_KDE_WINDOW_HIGHLIGHT", False);
+ XChangeProperty(dpy, rootWin, atom, atom, 32, PropModeReplace,
+ reinterpret_cast<unsigned char *>(data.data()), \
data.size()); +#endif
+
+ killTimer(m_hoverEffectTimerId);
+ m_hoverEffectTimerId = 0;
} else {
QGraphicsWidget::timerEvent(event);
}
--- trunk/KDE/kdebase/workspace/plasma/applets/tasks/abstracttaskitem.h \
#961392:961393 @@ -225,6 +225,7 @@
QPointF _dragOffset;
QTime m_lastUpdate;
int m_updateTimerId;
+ int m_hoverEffectTimerId;
int m_attentionTimerId;
int m_attentionTicks;
--- trunk/KDE/kdebase/workspace/plasma/applets/tasks/taskgroupitem.h #961392:961393
@@ -64,7 +64,7 @@
virtual void close();
- QList <AbstractTaskItem*> memberList() const;
+ QList<AbstractTaskItem*> memberList() const;
AbstractTaskItem * activeSubTask();
virtual bool isWindowItem() const;
@@ -100,7 +100,7 @@
TaskItemLayout *tasksLayout();
- int indexOf (AbstractTaskItem *task);
+ int indexOf(AbstractTaskItem *task);
int optimumCapacity();
@@ -191,7 +191,7 @@
TaskItemLayout *m_tasksLayout;
QTimer *m_popupMenuTimer;
- QHash <int, Order> m_taskOrder;
+ QHash<int, Order> m_taskOrder;
int m_lastActivated;
int m_activeTaskIndex;
int m_maximumRows;
--- trunk/KDE/kdebase/workspace/plasma/applets/tasks/windowtaskitem.cpp \
#961392:961393 @@ -99,35 +99,6 @@
event->accept();
}
-void WindowTaskItem::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
-{
- Q_UNUSED(event)
-
-#ifdef Q_WS_X11
- QVarLengthArray<long, 1024> data(1);
- data[0] = m_task->task()->window();
-
- Display *dpy = QX11Info::display();
- Atom atom = XInternAtom(dpy, "_KDE_WINDOW_HIGHLIGHT", False);
- XChangeProperty(dpy, m_task->task()->window(), atom, atom, 32, PropModeReplace, \
reinterpret_cast<unsigned char *>(data.data()), data.size());
-#endif
-
- AbstractTaskItem::hoverEnterEvent(event);
-}
-
-void WindowTaskItem::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
-{
- Q_UNUSED(event)
-
-#ifdef Q_WS_X11
- Display *dpy = QX11Info::display();
- Atom atom = XInternAtom(dpy, "_KDE_WINDOW_HIGHLIGHT", False);
- XDeleteProperty(dpy, m_task->task()->window(), atom);
-#endif
-
- AbstractTaskItem::hoverLeaveEvent(event);
-}
-
//destroy this item
void WindowTaskItem::close()
{
--- trunk/KDE/kdebase/workspace/plasma/applets/tasks/windowtaskitem.h #961392:961393
@@ -64,8 +64,6 @@
void close();
protected:
- void hoverEnterEvent(QGraphicsSceneHoverEvent *event);
- void hoverLeaveEvent(QGraphicsSceneHoverEvent *event);
void contextMenuEvent(QGraphicsSceneContextMenuEvent *event);
void mousePressEvent(QGraphicsSceneMouseEvent *event);
void updateToolTip();
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic