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

List:       kde-commits
Subject:    playground/base/plasma/applets/presence
From:       Abner Silva <abner.silva () kdemail ! net>
Date:       2009-07-30 23:48:22
Message-ID: 1248997702.807246.5735.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 1004813 by abnerf:

Implemented initial extender support.

 M  +27 -7     presence.cpp  
 M  +8 -2      presence.h  


--- trunk/playground/base/plasma/applets/presence/presence.cpp #1004812:1004813
@@ -27,6 +27,8 @@
 // Plasma
 #include <Plasma/Theme>
 #include <Plasma/Service>
+#include <Plasma/Extender>
+#include <Plasma/ExtenderItem>
 
 // Kde
 #include <KColorScheme>
@@ -52,8 +54,6 @@
     setPassivePopup(false);
 
     setPopupIcon("user-offline");
-
-    (void) graphicsWidget();
 }
 
 PresenceApplet::~PresenceApplet()
@@ -70,6 +70,13 @@
             KColorScheme::View,
             Plasma::Theme::defaultTheme()->colorScheme());
 
+    // Create a new extender item for accounts
+    if (!extender()->hasItem("Accounts")) {
+        ExtenderItem *item = new ExtenderItem(extender());
+        item->setName("Accounts");
+        initExtenderItem(item);
+    }
+
     // Set up the data engine
     m_engine = dataEngine("presence");
 
@@ -85,17 +92,19 @@
             SLOT(onSourceRemoved(const QString &)));
 }
 
-QGraphicsWidget *PresenceApplet::graphicsWidget()
+void PresenceApplet::initExtenderItem(Plasma::ExtenderItem *item)
 {
-    if (!m_widget) {
-        m_widget = new QGraphicsWidget(this);
+    // Set up user accounts
+    if (item->name() == "Accounts") {
+        m_widget = new QGraphicsWidget(item);
         m_layout = new QGraphicsLinearLayout(Qt::Vertical, m_widget);
         m_layout->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
         m_widget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
         m_widget->setLayout (m_layout);
+
+        item->setWidget(m_widget);
+        item->setTitle(i18n("User accounts"));
     }
-
-    return m_widget;
 }
 
 void PresenceApplet::onSourceAdded(const QString &source)
@@ -112,6 +121,7 @@
         m_layout->addItem(account);
 
         updateConstraints();
+        updateSize();
     }
 }
 
@@ -127,6 +137,7 @@
         m_engine->disconnectSource(source, this);
 
         updateConstraints();
+        updateSize();
     }
 }
 
@@ -321,5 +332,14 @@
     if (service)
         service->deleteLater();
 }
+
+void PresenceApplet::updateSize()
+{
+    ExtenderItem *item = extender()->item("Accounts");
+
+    item->setMinimumSize(m_widget->minimumSize());
+    item->resize(m_widget->contentsRect().size().toSize());
+    item->adjustSize();
+}
 #include "presence.moc"
 
--- trunk/playground/base/plasma/applets/presence/presence.h #1004812:1004813
@@ -31,6 +31,10 @@
 #include <plasma/popupapplet.h>
 #include <plasma/dataengine.h>
 
+namespace Plasma {
+    class ExtenderItem;
+}
+
 class KColorScheme;
 
 class AccountWidget;
@@ -44,8 +48,6 @@
     ~PresenceApplet();
     void init();
 
-    QGraphicsWidget *graphicsWidget();
-
 private Q_SLOTS:
     void onSourceAdded(const QString &source);
     void onSourceRemoved(const QString &source);
@@ -55,10 +57,14 @@
             const QString &msg);
     void onJobCompleted();
 
+protected:
+    void initExtenderItem(Plasma::ExtenderItem *item);
+
 private:
     void updateMasterIcon();
     void setMasterStatusMessage(const QString &message);
     void updateMasterPresence();
+    void updateSize();
 
     Plasma::DataEngine *m_engine;
     QGraphicsWidget *m_widget;
[prev in list] [next in list] [prev in thread] [next in thread] 

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