SVN commit 1007345 by abnerf: For global presence we must have a way to set and get presence status and message individually. So now global is setting and emiting status and message in separated methods. M +40 -24 globalpresencewidget.cpp M +6 -3 globalpresencewidget.h --- trunk/playground/base/plasma/applets/presence/globalpresencewidget.cpp #1007344:1007345 @@ -37,7 +37,9 @@ GlobalPresenceWidget::GlobalPresenceWidget(QGraphicsWidget *parent) : Frame(parent), m_layout(0), - m_presenceWidget(0) + m_presenceWidget(0), + m_status(PresenceWidget::Offline), + m_statusMessage("") { init(); setMinimumHeight(55); @@ -68,7 +70,7 @@ setLayout(m_layout); } -/*void GlobalPresenceWidget::setPresence(const QString &presence, const QString &msg) +void GlobalPresenceWidget::setPresenceStatus(const QString &presence) { PresenceWidget::PresenceStatus status = PresenceWidget::Offline; @@ -83,34 +85,48 @@ else if (presence.contains("offline")) status = PresenceWidget::Offline; - m_presenceWidget->setPresenceStatusWithMsg(status, msg); + m_presenceWidget->setPresenceStatus(status); + m_status = status; } -*/ + +void GlobalPresenceWidget::setPresenceMessage(const QString &msg) +{ + m_presenceWidget->setPresenceMessage(msg); + m_statusMessage = msg; +} + void GlobalPresenceWidget::onPresenceStatusChanged(PresenceWidget::PresenceStatus status, const QString &text) { - QString ret; + if (m_status != status) { + QString ret; - switch(status) { - case PresenceWidget::Online: - ret = "available"; - break; - case PresenceWidget::Away: - ret = "away"; - break; - case PresenceWidget::Busy: - ret = "busy"; - break; - case PresenceWidget::Invisible: - ret = "invisible"; - break; - case PresenceWidget::Offline: - ret = "offline"; - break; - default: - break; + switch(status) { + case PresenceWidget::Online: + ret = "available"; + break; + case PresenceWidget::Away: + ret = "away"; + break; + case PresenceWidget::Busy: + ret = "busy"; + break; + case PresenceWidget::Invisible: + ret = "invisible"; + break; + case PresenceWidget::Offline: + ret = "offline"; + break; + default: + break; + } + m_status = status; + emit presenceStatusChanged(ret); } - emit presenceChanged(ret, text); + if (m_statusMessage != text) { + m_statusMessage = text; + emit presenceMessageChanged(text); + } } #include "globalpresencewidget.moc" --- trunk/playground/base/plasma/applets/presence/globalpresencewidget.h #1007344:1007345 @@ -26,7 +26,6 @@ #include "presencewidget.h" -class PresenceWidget; class QGraphicsLinearLayout; class GlobalPresenceWidget : public Plasma::Frame @@ -39,10 +38,12 @@ void init(); -// void setPresence(const QString &presence, const QString &msg); + void setPresenceStatus(const QString &presence); + void setPresenceMessage(const QString &msg); Q_SIGNALS: - void presenceChanged(const QString &presence, const QString &msg); + void presenceStatusChanged(const QString &presence); + void presenceMessageChanged(const QString &msg); private Q_SLOTS: void onPresenceStatusChanged(PresenceWidget::PresenceStatus status, @@ -51,6 +52,8 @@ private: QGraphicsLinearLayout* m_layout; PresenceWidget *m_presenceWidget; + PresenceWidget::PresenceStatus m_status; + QString m_statusMessage; }; #endif