[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-28 18:33:53
Message-ID: 1248806033.064735.4589.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 1003752 by abnerf:

Changed to use the new presence widget instead of the old combobox.

 M  +46 -35    accountwidget.cpp  
 M  +6 -2      accountwidget.h  


--- trunk/playground/base/plasma/applets/presence/accountwidget.cpp #1003751:1003752
@@ -26,13 +26,11 @@
 #include <Plasma/Theme>
 #include <Plasma/Label>
 #include <Plasma/Frame>
-#include <Plasma/ComboBox>
 
 // Kde
 #include <KColorScheme>
 #include <KDebug>
 #include <KIconLoader>
-#include <KComboBox>
 
 //Qt
 #include <QGraphicsGridLayout>
@@ -48,11 +46,11 @@
       m_layout(0),
       m_accountNameLabel(0),
       m_accountAliasLabel(0),
-      m_presenceStatus(0)
+      m_presenceWidget(0)
 {
     init();
     setMinimumHeight(75);
-    setMinimumWidth(250);
+    setMinimumWidth(230);
     setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
 }
 
@@ -90,18 +88,16 @@
     m_accountAliasLabel->setText("Mr. Presence Plasmoid");
     m_layout->addItem(m_accountAliasLabel, 1, 1, 1, 2, Qt::AlignCenter | Qt::AlignTop);
 
-    m_presenceStatus = new Plasma::ComboBox(this);
-    m_presenceStatus->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
-    m_presenceStatus->setMinimumWidth(m*2);
-    m_presenceStatus->addItem("Online - Available");
-    m_presenceStatus->addItem("Away - I am gone right now");
-    m_presenceStatus->addItem("Busy - Sorry, I'm busy right now");
-    m_presenceStatus->addItem("Invisible - Hidden");
-    m_presenceStatus->addItem("Offline - Offline");
-    connect (m_presenceStatus->nativeWidget(),
-            SIGNAL(activated(const QString&)),
-            this, SLOT(onActivated(const QString&)));
-    m_layout->addItem(m_presenceStatus, 2, 0, 1, 3, Qt::AlignTop);
+    m_presenceWidget = new PresenceWidget(this);
+    //m_presenceWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
+    //m_presenceWidget->setMinimumWidth(m*2);
+    connect (m_presenceWidget,
+            SIGNAL(presenceStatusChanged(PresenceWidget::PresenceStatus,
+                                         const QString&)),
+            this, SLOT(onPresenceStatusChanged(PresenceWidget::PresenceStatus,
+                                               const QString&)));
+    m_layout->addItem(m_presenceWidget, 2, 0, 1, 3,
+            Qt::AlignBottom | Qt::AlignCenter);
 
     setLayout(m_layout);
 }
@@ -143,32 +139,47 @@
 
 void AccountWidget::setPresence(const QString &presence, const QString &msg)
 {
-    Q_UNUSED(msg);
+    PresenceWidget::PresenceStatus status = PresenceWidget::Offline;
 
-    int pos = m_presenceStatus->nativeWidget()->findText(presence, Qt::MatchContains);
+    if (presence.contains("available"))
+        status = PresenceWidget::Online;
+    else if (presence.contains("away"))
+        status = PresenceWidget::Away;
+    else if (presence.contains("busy"))
+        status = PresenceWidget::Busy;
+    else if (presence.contains("invisible"))
+        status = PresenceWidget::Invisible;
+    else if (presence.contains("offline"))
+        status = PresenceWidget::Offline;
 
-    if (pos == -1)
-        pos = m_presenceStatus->nativeWidget()->findText("Offline", Qt::MatchContains);
-
-    m_presenceStatus->nativeWidget()->setCurrentIndex(pos);
+    m_presenceWidget->setPresenceStatusWithMsg(status, msg);
 }
 
-void AccountWidget::onActivated(const QString &text)
+void AccountWidget::onPresenceStatusChanged(PresenceWidget::PresenceStatus status,
+        const QString &text)
 {
     QString ret;
 
-    if (text.contains("Available"))
-        ret = "available";
-    else if (text.contains("Away"))
-        ret = "away";
-    else if (text.contains("Busy"))
-        ret = "busy";
-    else if (text.contains("Invisible"))
-        ret = "invisible";
-    else if (text.contains("Offline"))
-        ret = "offline";
+    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;
+    }
 
-    // FIXME - Send the presence msg
-    emit presenceChanged(ret, "");
+    emit presenceChanged(ret, text);
 }
 #include "accountwidget.moc"
--- trunk/playground/base/plasma/applets/presence/accountwidget.h #1003751:1003752
@@ -24,6 +24,8 @@
 // Plasma
 #include <Plasma/Frame>
 
+#include "presencewidget.h"
+
 namespace Plasma
 {
     class IconWidget;
@@ -34,6 +36,7 @@
 class QGraphicsPixmapItem;
 class QGraphicsGridLayout;
 class AccountImage;
+class PresenceWidget;
 
 class AccountWidget : public Plasma::Frame
 {
@@ -62,7 +65,8 @@
     void presenceChanged(const QString &presence, const QString &msg);
 
 private Q_SLOTS:
-    void onActivated(const QString &text);
+    void onPresenceStatusChanged(PresenceWidget::PresenceStatus status,
+            const QString &text);
 
 private:
     QString m_id;
@@ -70,7 +74,7 @@
     QGraphicsGridLayout* m_layout;
     Plasma::Label *m_accountNameLabel;
     Plasma::Label *m_accountAliasLabel;
-    Plasma::ComboBox *m_presenceStatus;
+    PresenceWidget *m_presenceWidget;
 };
 
 #endif
[prev in list] [next in list] [prev in thread] [next in thread] 

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