From kde-commits Thu Jul 30 01:35:21 2009 From: Peter Pan Date: Thu, 30 Jul 2009 01:35:21 +0000 To: kde-commits Subject: KDE/kdebase/workspace/plasma/applets/tasks Message-Id: <1248917721.341387.21908.nullmailer () svn ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=124891773805184 SVN commit 1004385 by peterpan: animate while the application is starting up. BUG:189643 M +23 -15 abstracttaskitem.cpp M +1 -0 tasks.cpp M +15 -1 windowtaskitem.cpp M +3 -0 windowtaskitem.h --- trunk/KDE/kdebase/workspace/plasma/applets/tasks/abstracttaskitem.cpp #1004384:1004385 @@ -586,26 +586,34 @@ QRectF bounds = boundingRect().adjusted(m_applet->itemLeftMargin(), m_applet->itemTopMargin(), -m_applet->itemRightMargin(), -m_applet->itemBottomMargin()); - if ((!m_animId && ~option->state & QStyle::State_MouseOver) || - (m_oldBackgroundPrefix != "hover" && m_backgroundPrefix != "hover")) { - m_icon.paint(painter, iconRect(bounds).toRect()); + WindowTaskItem *window = qobject_cast(this); + QGraphicsWidget *busyWidget; + busyWidget = window ? window->busyWidget() : 0; + + if (busyWidget) { + busyWidget->setGeometry(iconRect(bounds)); + busyWidget->show(); } else { - KIconEffect *effect = KIconLoader::global()->iconEffect(); - QPixmap result = m_icon.pixmap(iconRect(bounds).toRect().size()); + if ((!m_animId && ~option->state & QStyle::State_MouseOver) + ||(m_oldBackgroundPrefix != "hover" && m_backgroundPrefix != "hover")) { + m_icon.paint(painter, iconRect(bounds).toRect()); + } else { + KIconEffect *effect = KIconLoader::global()->iconEffect(); + QPixmap result = m_icon.pixmap(iconRect(bounds).toRect().size()); - if (effect->hasEffect(KIconLoader::Desktop, KIconLoader::ActiveState)) { - if (qFuzzyCompare(qreal(1.0), m_alpha)) { - result = effect->apply(result, KIconLoader::Desktop, KIconLoader::ActiveState); - } else { - result = Plasma::PaintUtils::transition( - result, - effect->apply(result, KIconLoader::Desktop, - KIconLoader::ActiveState), m_fadeIn?m_alpha:1-m_alpha); + if (effect->hasEffect(KIconLoader::Desktop, KIconLoader::ActiveState)) { + if (qFuzzyCompare(qreal(1.0), m_alpha)) { + result = effect->apply(result, KIconLoader::Desktop, KIconLoader::ActiveState); + } else { + result = Plasma::PaintUtils::transition(result, + effect->apply(result, KIconLoader::Desktop, + KIconLoader::ActiveState), m_fadeIn?m_alpha:1-m_alpha); + } } + painter->drawPixmap(iconRect(bounds).topLeft(), result); } - painter->drawPixmap(iconRect(bounds).topLeft(), result); } - + painter->setPen(QPen(textColor(), 1.0)); QRect rect = textRect(bounds).toRect(); --- trunk/KDE/kdebase/workspace/plasma/applets/tasks/tasks.cpp #1004384:1004385 @@ -399,6 +399,7 @@ void Tasks::setPopupDialog(bool status) { + Q_UNUSED(status) QWidget *widget = qobject_cast(sender()); if (widget->isVisible()) { --- trunk/KDE/kdebase/workspace/plasma/applets/tasks/windowtaskitem.cpp #1004384:1004385 @@ -60,7 +60,8 @@ WindowTaskItem::WindowTaskItem(QGraphicsWidget *parent, Tasks *applet) : AbstractTaskItem(parent, applet), - m_task(0) + m_task(0), + m_busyWidget(0) { } @@ -239,6 +240,11 @@ connect(task, SIGNAL(gotTaskPointer()), this, SLOT(gotTaskPointer())); setText(task->startup()->text()); setIcon(KIcon(task->startup()->icon())); + + if (!m_busyWidget) { + m_busyWidget = new Plasma::BusyWidget(this); + m_busyWidget->hide(); + } } void WindowTaskItem::gotTaskPointer() @@ -246,6 +252,9 @@ //kDebug(); TaskManager::TaskItem *item = qobject_cast(sender()); if (item) { + delete m_busyWidget; + m_busyWidget = 0; + setWindowTask(item); } } @@ -342,5 +351,10 @@ } } +QGraphicsWidget *WindowTaskItem::busyWidget() const +{ + return m_busyWidget; +} + #include "windowtaskitem.moc" --- trunk/KDE/kdebase/workspace/plasma/applets/tasks/windowtaskitem.h #1004384:1004385 @@ -22,6 +22,7 @@ #ifndef WINDOWTASKITEM_H #define WINDOWTASKITEM_H +#include #include "abstracttaskitem.h" // Own #include @@ -54,6 +55,7 @@ virtual bool isWindowItem() const; virtual bool isActive() const; virtual void setAdditionalMimeData(QMimeData* mimeData); + QGraphicsWidget *busyWidget() const; signals: /** Emitted when a window is selected for activation, minimization, iconification */ @@ -80,6 +82,7 @@ void setWindowTask(TaskManager::TaskItem* taskItem); TaskManager::TaskItem *m_task; + Plasma::BusyWidget *m_busyWidget; }; #endif