[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 18:24:03
Message-ID: 1249496643.191384.6542.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 1007412 by abnerf:

Bug fixed. When presence widget is on 'choose new presence status' and the
presence status is changed by another client (external peer), the view must
change back to 'current presence status'.

 M  +19 -13    presencewidget.cpp  
 M  +2 -1      presencewidget.h  


--- trunk/playground/base/plasma/applets/presence/presencewidget.cpp #1007411:1007412
@@ -84,7 +84,7 @@
     icon->setMaximumWidth(s);
 
     connect(icon, SIGNAL(clicked()),
-            this, SLOT(onCurrentStatusClicked()));
+            this, SLOT(onNewStatusClicked()));
 
     m_status[PresenceWidget::Online] = icon;
     m_iconsLayout->addItem(icon);
@@ -98,7 +98,7 @@
     icon->setMaximumWidth(s);
 
     connect(icon, SIGNAL(clicked()),
-            this, SLOT(onCurrentStatusClicked()));
+            this, SLOT(onNewStatusClicked()));
 
     m_status[PresenceWidget::Away] = icon;
     m_iconsLayout->addItem(icon);
@@ -112,7 +112,7 @@
     icon->setMaximumWidth(s);
 
     connect(icon, SIGNAL(clicked()),
-            this, SLOT(onCurrentStatusClicked()));
+            this, SLOT(onNewStatusClicked()));
 
     m_status[PresenceWidget::Busy] = icon;
     m_iconsLayout->addItem(icon);
@@ -126,7 +126,7 @@
     icon->setMaximumWidth(s);
 
     connect(icon, SIGNAL(clicked()),
-            this, SLOT(onCurrentStatusClicked()));
+            this, SLOT(onNewStatusClicked()));
 
     m_status[PresenceWidget::Invisible] = icon;
     m_iconsLayout->addItem(icon);
@@ -140,7 +140,7 @@
     icon->setMaximumWidth(s);
 
     connect(icon, SIGNAL(clicked()),
-            this, SLOT(onCurrentStatusClicked()));
+            this, SLOT(onNewStatusClicked()));
 
     m_status[PresenceWidget::Offline] = icon;
     m_iconsLayout->addItem(icon);
@@ -167,7 +167,7 @@
     m_currentStatusIcon->setMaximumWidth(85);
 
     connect(m_currentStatusIcon, SIGNAL(clicked()),
-            this, SLOT(onCurrentStatusClicked()));
+            this, SLOT(onPresenceStatusSwitch()));
 
     m_currentStatusLayout->addItem(m_currentStatusIcon);
     m_currentStatusWidget->setLayout(m_currentStatusLayout);
@@ -213,8 +213,17 @@
     setLayout(m_layout);
 }
 
-void PresenceWidget::onCurrentStatusClicked()
+void PresenceWidget::onNewStatusClicked()
 {
+    PresenceStatus status = m_status.key(
+            static_cast<IconWidget *>(sender()));
+    setPresenceStatus(status);
+
+    emit presenceStatusChanged(m_currentStatus, m_presenceMsg);
+}
+
+void PresenceWidget::onPresenceStatusSwitch()
+{
     if (m_currentStatusIcon->isVisible()) {
         m_currentStatusIcon->hide();
         m_currentStatusLayout->removeItem(m_currentStatusIcon);
@@ -223,17 +232,11 @@
         m_iconsWidget->show();
     }
     else {
-        PresenceStatus status = m_status.key(
-                static_cast<IconWidget *>(sender()));
-        setPresenceStatus(status);
-
         m_iconsWidget->hide();
         m_currentStatusLayout->removeItem(m_iconsWidget);
 
         m_currentStatusLayout->addItem(m_currentStatusIcon);
         m_currentStatusIcon->show();
-
-        emit presenceStatusChanged(m_currentStatus, m_presenceMsg);
     }
 }
 
@@ -299,6 +302,9 @@
     m_currentStatusIcon->setText(icon->toolTip());
 
     m_currentStatus = status;
+
+    if (m_iconsWidget->isVisible())
+        onPresenceStatusSwitch();
 }
 
 PresenceWidget::PresenceStatus PresenceWidget::presenceStatus() const
--- trunk/playground/base/plasma/applets/presence/presencewidget.h #1007411:1007412
@@ -66,7 +66,8 @@
             const QString &msg);
 
 private Q_SLOTS:
-    void onCurrentStatusClicked();
+    void onNewStatusClicked();
+    void onPresenceStatusSwitch();
     void onPresenceMsgReturn();
     void onPresenceMsgSwitch();
 
[prev in list] [next in list] [prev in thread] [next in thread] 

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