From kde-commits Thu Jul 30 23:48:22 2009 From: Abner Silva Date: Thu, 30 Jul 2009 23:48:22 +0000 To: kde-commits Subject: playground/base/plasma/applets/presence Message-Id: <1248997702.807246.5735.nullmailer () svn ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=124899771525883 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 #include +#include +#include // Kde #include @@ -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 #include +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;