From kde-commits Wed Aug 05 18:24:03 2009 From: Abner Silva Date: Wed, 05 Aug 2009 18:24:03 +0000 To: kde-commits Subject: playground/base/plasma/applets/presence Message-Id: <1249496643.191384.6542.nullmailer () svn ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=124949668308176 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(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(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();