[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-08-05 15:20:16
Message-ID: 1249485616.412921.23576.nullmailer () svn ! kde ! org
[Download RAW message or body]

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
[prev in list] [next in list] [prev in thread] [next in thread] 

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