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

List:       kde-commits
Subject:    playground/base/plasma/shells/mobile/containments/mobiledesktop
From:       Marco Martin <notmart () gmail ! com>
Date:       2010-07-31 21:51:51
Message-ID: 20100731215151.31426AC7A9 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1157696 by mart:

a + button that moves around the containment after the last applet, tied to the "add \
widgets" action


 M  +42 -1     appletscontainer.cpp  
 M  +2 -0      appletscontainer.h  


--- trunk/playground/base/plasma/shells/mobile/containments/mobiledesktop/appletscontainer.cpp \
#1157695:1157696 @@ -32,15 +32,27 @@
 
 #include <Plasma/Applet>
 #include <Plasma/Containment>
+#include <Plasma/IconWidget>
 
 using namespace Plasma;
 
 AppletsContainer::AppletsContainer(QGraphicsItem *parent, Plasma::Containment \
*containment)  : QGraphicsWidget(parent),
    m_containment(containment),
+   m_addWidgetsButton(0),
    m_appletsOverlay(0),
    m_startupCompleted(false)
 {
+
+    QAction *a = containment->action("add widgets");
+    if (a) {
+        m_addWidgetsButton = new Plasma::IconWidget(this);
+        m_addWidgetsButton->setAction(a);
+        m_addWidgetsButton->setText(QString());
+        m_addWidgetsButton->setSvg("widgets/action-overlays", "add-normal");
+        m_addWidgetsButton->resize(KIconLoader::SizeMedium, \
KIconLoader::SizeMedium); +    }
+
     m_relayoutTimer = new QTimer(this);
     m_relayoutTimer->setSingleShot(true);
     connect(m_relayoutTimer, SIGNAL(timeout()), this, SLOT(relayout()));
@@ -101,6 +113,12 @@
 
 void AppletsContainer::relayout()
 {
+    if (m_applets.isEmpty()) {
+        resize(KIconLoader::SizeMedium, KIconLoader::SizeMedium);
+        m_addWidgetsButton->setPos(0,0);
+        return;
+    }
+
     const int squareSize = 350;
     int columns = qMax(1, (int)m_containment->size().width() / squareSize);
     int rows = qMax(1, (int)m_containment->size().height() / squareSize);
@@ -124,9 +142,32 @@
         applet->setGeometry((i%columns)*maximumAppletSize.width() + offset.width(), \
(i/columns)*maximumAppletSize.height() + offset.height(), appletSize.width(), \
appletSize.height());  i++;
     }
-    resize(size().width(), \
(ceil((qreal)m_containment->applets().count()/columns))*maximumAppletSize.height()); \
+ +    int extraHeight = 0;
+
+    if (m_addWidgetsButton) {
+        QRectF buttonGeom = m_addWidgetsButton->geometry();
+
+        if (m_applets.count() % columns != 0) {
+            QRectF geom = m_applets.last()->geometry();
+            geom = QRectF(geom.topRight(),
+                        QSizeF(size().width() - geom.right(), geom.height()));
+
+            buttonGeom.moveCenter(geom.center());
+        } else {
+           QRectF geom(QPointF(0, maximumAppletSize.height() * rows), 
+                       QSizeF(size().width(), maximumAppletSize.height()));
+           buttonGeom.moveCenter(geom.center());
+           extraHeight = maximumAppletSize.height();
 }
 
+        m_addWidgetsButton->setPos(buttonGeom.topLeft());
+        
+    }
+
+    resize(size().width(), \
(ceil((qreal)m_containment->applets().count()/columns))*maximumAppletSize.height() + \
extraHeight); +}
+
 void AppletsContainer::resizeEvent(QGraphicsSceneResizeEvent *event)
 {
     if (!qFuzzyCompare(event->oldSize().width(), event->newSize().width()) && \
                !m_relayoutTimer->isActive()) {
--- trunk/playground/base/plasma/shells/mobile/containments/mobiledesktop/appletscontainer.h \
#1157695:1157696 @@ -28,6 +28,7 @@
 {
     class Applet;
     class Containment;
+    class IconWidget;
 }
 
 class QGraphicsLinearLayout;
@@ -71,6 +72,7 @@
 private:
     QGraphicsLinearLayout *m_layout;
     Plasma::Containment *m_containment;
+    Plasma::IconWidget *m_addWidgetsButton;
     QTimer *m_relayoutTimer;
     QWeakPointer<Plasma::Applet> m_currentApplet;
     AppletsOverlay *m_appletsOverlay;


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

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