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

List:       kde-commits
Subject:    KDE/kdelibs/plasma/private
From:       Aaron J. Seigo <aseigo () kde ! org>
Date:       2008-11-18 0:12:06
Message-ID: 1226967126.690040.22897.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 885840 by aseigo:

make panel toolboxes position and paint properly; essentially do what i did earlier \
for the desktop one by caching the colors from the theme and getting rid of the \
negative coordinates


 M  +6 -5      desktoptoolbox.cpp  
 M  +41 -120   paneltoolbox.cpp  
 M  +1 -0      paneltoolbox_p.h  
 M  +7 -5      toolbox.cpp  


--- trunk/KDE/kdelibs/plasma/private/desktoptoolbox.cpp #885839:885840
@@ -113,17 +113,18 @@
     : ToolBox(parent),
       d(new DesktopToolBoxPrivate)
 {
-    connect(Plasma::Animator::self(), SIGNAL(movementFinished(QGraphicsItem*)),
-            this, SLOT(toolMoved(QGraphicsItem*)));
-    connect(this, SIGNAL(toggled()), this, SLOT(toggle()));
-    connect(Plasma::Theme::defaultTheme(), SIGNAL(themeChanged()),
-            this, SLOT(assignColors()));
     setZValue(10000000);
     setFlag(ItemClipsToShape, true);
     setFlag(ItemClipsChildrenToShape, false);
     setFlag(ItemIgnoresTransformations, true);
     setIsMovable(true);
     assignColors();
+
+    connect(Plasma::Animator::self(), SIGNAL(movementFinished(QGraphicsItem*)),
+            this, SLOT(toolMoved(QGraphicsItem*)));
+    connect(this, SIGNAL(toggled()), this, SLOT(toggle()));
+    connect(Plasma::Theme::defaultTheme(), SIGNAL(themeChanged()),
+            this, SLOT(assignColors()));
 }
 
 DesktopToolBox::~DesktopToolBox()
--- trunk/KDE/kdelibs/plasma/private/paneltoolbox.cpp #885839:885840
@@ -35,64 +35,25 @@
 namespace Plasma
 {
 
-class EmptyGraphicsItem : public QGraphicsItem
-{
-    public:
-        EmptyGraphicsItem(QGraphicsItem *parent)
-            : QGraphicsItem(parent)
-        {
-            setAcceptsHoverEvents(true);
-        }
-
-        QRectF boundingRect() const
-        {
-            return QRectF(QPointF(0, 0), m_rect.size());
-        }
-
-        QRectF rect() const
-        {
-            return m_rect;
-        }
-
-        void setRect(const QRectF &rect)
-        {
-            //kDebug() << "setting rect to" << rect;
-            prepareGeometryChange();
-            m_rect = rect;
-            setPos(rect.topLeft());
-        }
-
-        void paint(QPainter *p, const QStyleOptionGraphicsItem *, QWidget *)
-        {
-            Q_UNUSED(p)
-            //p->setPen(Qt::red);
-            //p->drawRect(boundingRect());
-        }
-
-    private:
-        QRectF m_rect;
-};
-
-// used with QGrahphicsItem::setData
-static const int ToolName = 7001;
-
 class PanelToolBoxPrivate
 {
 public:
     PanelToolBoxPrivate()
       : icon("plasma"),
-        toolBacker(0),
         animId(0),
         animFrame(0),
         toggled(false)
-    {}
+    {
+    }
 
+
     KIcon icon;
-    EmptyGraphicsItem *toolBacker;
     QTime stopwatch;
     int animId;
     qreal animFrame;
     bool toggled;
+    QColor fgColor;
+    QColor bgColor;
 };
 
 PanelToolBox::PanelToolBox(Containment *parent)
@@ -109,6 +70,9 @@
     //panel toolbox is allowed to zoom, otherwise a part of it will be displayed \
behind the desktop  //toolbox when the desktop is zoomed out
     setFlag(ItemIgnoresTransformations, false);
+    assignColors();
+    connect(Plasma::Theme::defaultTheme(), SIGNAL(themeChanged()),
+            this, SLOT(assignColors()));
 }
 
 PanelToolBox::~PanelToolBox()
@@ -116,17 +80,23 @@
     delete d;
 }
 
+void PanelToolBox::assignColors()
+{
+    d->bgColor = Plasma::Theme::defaultTheme()->color(Plasma::Theme::BackgroundColor);
 +    d->fgColor = Plasma::Theme::defaultTheme()->color(Plasma::Theme::TextColor);
+}
+
 QRectF PanelToolBox::boundingRect() const
 {
     QRectF r;
 
+    //Only Left,Right and Bottom supported, default to Right
     if (corner() == ToolBox::Bottom) {
-        r = QRectF(0, 0, size() * 2, -size());
+        r = QRectF(0, 0, size() * 2, size());
     } else if (corner() == ToolBox::Left) {
         r = QRectF(0, 0, size(), size() * 2);
-    //Only Left,Right and Bottom supported, default to Right
     } else {
-        r = QRectF(0, 0, -size(), size() * 2);
+        r = QRectF(0, 0, size(), size() * 2);
     }
 
     if (parentItem()) {
@@ -152,30 +122,23 @@
     const qreal progress = d->animFrame / size();
 
     QPoint gradientCenter;
+    QRectF rect = boundingRect();
     if (corner() == ToolBox::Bottom) {
-        gradientCenter = QPoint(boundingRect().center().x(), boundingRect().top());
+        gradientCenter = QPoint(rect.center().x(), rect.bottom());
     } else {
-        gradientCenter = QPoint(boundingRect().left(), boundingRect().center().y());
+        gradientCenter = QPoint(rect.right(), rect.center().y());
     }
 
     {
-        painter->translate(boundingRect().topLeft());
-
-        KColorScheme colors(QPalette::Active, KColorScheme::Window,
-                            Plasma::Theme::defaultTheme()->colorScheme());
-        QColor color1 = colors.background().color();
-        color1.setAlpha(64.0);
-
-        QColor color2 = colors.foreground().color();
-        color2.setAlpha(64.0);
-
         QRadialGradient gradient(gradientCenter, size() - 2);
         gradient.setFocalPoint(gradientCenter);
-        gradient.setColorAt(0, color1);
-        gradient.setColorAt(.85, color1);
-        gradient.setColorAt(.95, color2);
-        color2.setAlpha(0);
-        gradient.setColorAt(1, color2);
+        d->bgColor.setAlpha(64);
+        d->fgColor.setAlpha(64);
+        gradient.setColorAt(0, d->bgColor);
+        gradient.setColorAt(.85, d->bgColor);
+        gradient.setColorAt(.95, d->fgColor);
+        d->fgColor.setAlpha(0);
+        gradient.setColorAt(1, d->fgColor);
 
         painter->save();
         painter->setPen(Qt::NoPen);
@@ -188,14 +151,14 @@
 
     QRect iconRect;
 
+    //Only Left,Right and Bottom supported, default to Right
     if (corner() == ToolBox::Bottom) {
         iconRect = QRect(QPoint(gradientCenter.x() - iconSize().width() / 2,
-                                (int)boundingRect().top() - iconSize().height() - \
2), iconSize()); +                                (int)rect.bottom() - \
iconSize().height() - 2), iconSize());  } else if (corner() == ToolBox::Left) {
         iconRect = QRect(QPoint(2, gradientCenter.y() - iconSize().height() / 2), \
                iconSize());
-    //Only Left,Right and Bottom supported, default to Right
     } else {
-        iconRect = QRect(QPoint((int)boundingRect().left() - iconSize().width() + 1,
+        iconRect = QRect(QPoint((int)rect.right() - iconSize().width() + 1,
                                 gradientCenter.y() - iconSize().height() / 2), \
iconSize());  }
 
@@ -217,21 +180,24 @@
 {
     QPainterPath path;
     int toolSize = size();// + (int)d->animFrame;
+    QRectF rect = boundingRect();
 
+    //Only Left,Right and Bottom supported, default to Right
     if (corner() == ToolBox::Bottom) {
-        path.arcTo(QRectF(boundingRect().center().x() - toolSize,
-                          boundingRect().top() - toolSize,
+        path.moveTo(rect.bottomLeft());
+        path.arcTo(QRectF(rect.center().x() - toolSize,
+                          rect.bottom() - toolSize,
                           toolSize * 2,
                           toolSize * 2), 0, 180);
     } else if (corner() == ToolBox::Left) {
-        path.arcTo(QRectF(boundingRect().left() - toolSize,
-                          boundingRect().center().y() - toolSize,
+        path.arcTo(QRectF(rect.left(),
+                          rect.center().y() - toolSize,
                           toolSize * 2,
                           toolSize * 2), 90, -180);
-    //Only Left,Right and Bottom supported, default to Right
     } else {
-        path.arcTo(QRectF(boundingRect().left() - toolSize,
-                          boundingRect().center().y() - toolSize,
+        path.moveTo(rect.topRight());
+        path.arcTo(QRectF(rect.left(),
+                          rect.center().y() - toolSize,
                           toolSize * 2,
                           toolSize * 2), 90, 180);
     }
@@ -265,37 +231,8 @@
     }
 
     // put tools 5px from icon edge
-    const int iconWidth = 32;
-    int x = size() * 2 - maxwidth - iconWidth - 5;
-    int y = 5; // pos().y();
     Plasma::Animator *animdriver = Plasma::Animator::self();
-    foreach (QGraphicsItem *tool, QGraphicsItem::children()) {
-        if (tool == d->toolBacker) {
-            continue;
-        }
 
-        if (!tool->isEnabled()) {
-            if (tool->isVisible()) {
-                const int height = static_cast<int>(tool->boundingRect().height());
-                animdriver->moveItem(tool, Plasma::Animator::SlideOutMovement,
-                                     QPoint(size() * 2, -height));
-            }
-            continue;
-        }
-
-        //kDebug() << "let's show and move" << tool << tool->boundingRect();
-        tool->show();
-        animdriver->moveItem(tool, Plasma::Animator::SlideInMovement, QPoint(x, y));
-        //x += 0;
-        y += static_cast<int>(tool->boundingRect().height()) + 5;
-    }
-
-    if (!d->toolBacker) {
-        d->toolBacker = new EmptyGraphicsItem(this);
-    }
-    d->toolBacker->setRect(QRectF(QPointF(x, 0), QSizeF(maxwidth, y - 10)));
-    d->toolBacker->show();
-
     if (d->animId) {
         animdriver->stopCustomAnimation(d->animId);
     }
@@ -311,9 +248,7 @@
 void PanelToolBox::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
 {
     //kDebug() << event->pos() << event->scenePos()
-    //         << d->toolBacker->rect().contains(event->scenePos().toPoint());
-    if ((d->toolBacker && \
                d->toolBacker->rect().contains(event->scenePos().toPoint())) ||
-        d->stopwatch.elapsed() < 100 || d->toggled) {
+    if (d->stopwatch.elapsed() < 100 || d->toggled) {
         QGraphicsItem::hoverLeaveEvent(event);
         return;
     }
@@ -329,18 +264,8 @@
     }
 
     d->toggled = false;
-    int x = size() * 2;
-    int y = 0;
     Plasma::Animator *animdriver = Plasma::Animator::self();
-    foreach (QGraphicsItem *tool, QGraphicsItem::children()) {
-        if (tool == d->toolBacker) {
-            continue;
-        }
 
-        const int height = static_cast<int>(tool->boundingRect().height());
-        animdriver->moveItem(tool, Plasma::Animator::SlideOutMovement, QPoint(x, \
                y-height));
-    }
-
     if (d->animId) {
         animdriver->stopCustomAnimation(d->animId);
     }
@@ -349,10 +274,6 @@
     d->animId = animdriver->customAnimation(
         10, 240, Plasma::Animator::EaseOutCurve, this, "animate");
 
-    if (d->toolBacker) {
-        d->toolBacker->hide();
-    }
-
     d->stopwatch.restart();
 }
 
--- trunk/KDE/kdelibs/plasma/private/paneltoolbox_p.h #885839:885840
@@ -60,6 +60,7 @@
     void animate(qreal progress);
     void toolMoved(QGraphicsItem*);
     void toggle();
+    void assignColors();
 
 private:
     PanelToolBoxPrivate *d;
--- trunk/KDE/kdelibs/plasma/private/toolbox.cpp #885839:885840
@@ -373,22 +373,24 @@
     }
 
     if (d->containment->containmentType() == Containment::PanelContainment) {
+        QRectF rect = boundingRect();
         if (d->containment->formFactor() == Vertical) {
             setCorner(ToolBox::Bottom);
-            setPos(d->containment->geometry().width() / 2 - boundingRect().width() / \
                2,
-                            d->containment->geometry().height());
+            setPos(d->containment->geometry().width() / 2 - rect.width() / 2,
+                   d->containment->geometry().height() - rect.height());
         } else {
             //defaulting to Horizontal right now
             if (QApplication::layoutDirection() == Qt::RightToLeft) {
                 setPos(d->containment->geometry().left(),
-                                d->containment->geometry().height() / 2 - \
boundingRect().height() / 2); +                       \
d->containment->geometry().height() / 2 - rect.height() / 2);  \
setCorner(ToolBox::Left);  } else {
-                setPos(d->containment->geometry().width(),
-                                d->containment->geometry().height() / 2 - \
boundingRect().height() / 2); +                \
setPos(d->containment->geometry().width() - rect.width(), +                       \
d->containment->geometry().height() / 2 - rect.height() / 2);  \
setCorner(ToolBox::Right);  }
         }
+        //kDebug() << pos();
     } else if (d->containment->corona()) {
         //kDebug() << "desktop";
 


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

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