[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdelibs/plasma
From:       Artur Duque de Souza <morpheuz () gmail ! com>
Date:       2009-02-28 22:52:18
Message-ID: 1235861538.002016.32560.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 933444 by asouza:

Changes inside Plasma::Applet to test if we have a popup
and if this is true, if we should use widget() or graphicsWidget()
to show the BusyWidget.



 M  +40 -7     applet.cpp  
 M  +3 -0      private/applet_p.h  


--- trunk/KDE/kdelibs/plasma/applet.cpp #933443:933444
@@ -523,8 +523,6 @@
 void AppletPrivate::destroyMessageOverlay()
 {
     //TODO: fade out? =)
-    QGraphicsWidget *w = messageOverlay;
-
     messageOverlay->destroy();
 
     messageOverlay = 0;
@@ -663,19 +661,53 @@
 void Applet::setBusy(bool busy)
 {
     if (busy) {
+        PopupApplet *popup = qobject_cast<Plasma::PopupApplet*>(this);
+
         if (!d->busyWidget) {
-            d->busyWidget = new Plasma::BusyWidget(this);
+            if (popup && popup->widget()) {
+                d->popupBusyWidgetProxy = new QGraphicsProxyWidget(this);
+                d->popupBusyWidgetProxy->setWidget(popup->widget());
+                d->busyWidget = new Plasma::BusyWidget(d->popupBusyWidgetProxy);
+            } else if (popup && popup->graphicsWidget()) {
+                d->busyWidget = new Plasma::BusyWidget(popup->graphicsWidget());
+            } else {
+                d->busyWidget = new Plasma::BusyWidget(this);
+            }
         } else {
             d->busyWidget->show();
         }
-        int busySize = qMin(size().width(), size().height())/3;
-        QRect busyRect(0, 0, busySize, busySize);
-        busyRect.moveCenter(boundingRect().center().toPoint());
-        d->busyWidget->setGeometry(busyRect);
+
+        if (popup && popup->widget()) {
+            // popupapplet with widget()
+            int busySize = qMin(popup->widget()->size().width(),
+                                popup->widget()->size().height())/3;
+            QRect busyRect(0, 0, busySize, busySize);
+            busyRect.moveCenter(popup->widget()->contentsRect().center());
+            d->busyWidget->setGeometry(busyRect);
+        } else if (popup && popup->graphicsWidget()) {
+            // popupapplet with graphicsWidget()
+            int busySize = qMin(popup->graphicsWidget()->size().width(),
+                                popup->graphicsWidget()->size().height())/3;
+            QRect busyRect(0, 0, busySize, busySize);
+            busyRect.moveCenter(popup->graphicsWidget()->boundingRect().center().toPoint());
+            d->busyWidget->setGeometry(busyRect);
+        } else {
+            // normal applet
+            int busySize = qMin(size().width(), size().height())/3;
+            QRect busyRect(0, 0, busySize, busySize);
+            busyRect.moveCenter(boundingRect().center().toPoint());
+            d->busyWidget->setGeometry(busyRect);
+        }
+
     } else if (d->busyWidget) {
         d->busyWidget->hide();
         d->busyWidget->deleteLater();
         d->busyWidget = 0;
+
+        if (d->popupBusyWidgetProxy) {
+            delete d->popupBusyWidgetProxy;
+            d->popupBusyWidgetProxy = 0;
+        }
     }
 }
 
@@ -1995,6 +2027,7 @@
           actions(applet),
           activationAction(0),
           shortcutEditor(0),
+          popupBusyWidgetProxy(0),
           constraintsTimerId(0),
           modificationsTimerId(-1),
           hasConfigurationInterface(false),
--- trunk/KDE/kdelibs/plasma/private/applet_p.h #933443:933444
@@ -22,6 +22,8 @@
 #ifndef PLASMA_APPLET_P_H
 #define PLASMA_APPLET_P_H
 
+#include <QGraphicsProxyWidget>
+
 #include <kactioncollection.h>
 
 class KKeySequenceWidget;
@@ -116,6 +118,7 @@
     KActionCollection actions;
     KAction *activationAction;
     KKeySequenceWidget *shortcutEditor; //TODO: subclass KConfigDialog and encapsulate this in there
+    QGraphicsProxyWidget *popupBusyWidgetProxy;
     int constraintsTimerId;
     int modificationsTimerId;
     bool hasConfigurationInterface : 1;
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic