Blob Blame History Raw
From c3d56a68858ce53d311da66f926379354d648b6f Mon Sep 17 00:00:00 2001
From: "Lamarque V. Souza" <lamarque@kde.org>
Date: Sat, 3 Dec 2011 20:35:41 -0200
Subject: [PATCH 10/10] Change mobile broadband (wwan) checkbox into a
 tristate checkbox. I do not know why NM sends a wwan
 disabled signal right after we send an enable wwan
 command, the checkbox bounces for while until NM
 finally decides to enable or not the mobile broadband
 state.

The third state is "partically checked", represented by a dashed tick
mark.

BUG: 287794
---
 applet/nmpopup.cpp |    8 +++++---
 1 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/applet/nmpopup.cpp b/applet/nmpopup.cpp
index db0d932..840e1e0 100644
--- a/applet/nmpopup.cpp
+++ b/applet/nmpopup.cpp
@@ -27,6 +27,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #include <QGraphicsGridLayout>
 #include <QTimer>
 #include <QDBusConnection>
+#include <QCheckBox>
 
 // KDE
 #include <KDebug>
@@ -129,6 +130,7 @@ void NMPopup::init()
     m_wwanCheckBox = new Plasma::CheckBox(m_leftWidget);
     m_wwanCheckBox->setText(i18nc("CheckBox to enable or disable wwan (mobile broadband) interface)", "Enable mobile broadband"));
     m_wwanCheckBox->hide();
+    m_wwanCheckBox->nativeWidget()->setTristate(true);
     checkboxLayout->addItem(m_wwanCheckBox, 0, 1);
 
     connect(m_wwanCheckBox, SIGNAL(toggled(bool)), SLOT(wwanEnabledToggled(bool)));
@@ -299,7 +301,7 @@ void NMPopup::readConfig()
     m_showMoreButton->setEnabled(Solid::Control::NetworkManagerNm09::isNetworkingEnabled() &&
                                  Solid::Control::NetworkManagerNm09::isWirelessEnabled());
 
-    m_wwanCheckBox->setChecked(Solid::Control::NetworkManagerNm09::isWwanEnabled());
+    m_wwanCheckBox->nativeWidget()->setCheckState(Solid::Control::NetworkManagerNm09::isWwanEnabled() ? Qt::Checked : Qt::Unchecked);
     m_wwanCheckBox->setEnabled(Solid::Control::NetworkManagerNm09::isWwanHardwareEnabled());
 
     foreach(InterfaceItem * i, m_interfaces) {
@@ -526,7 +528,7 @@ kDebug() << "Wireless hardware enabled ==" << Solid::Control::NetworkManagerNm09
     m_wifiCheckBox->setEnabled(Solid::Control::NetworkManagerNm09::isWirelessHardwareEnabled() || Solid::Control::NetworkManagerNm09::isWirelessEnabled());
 #endif
 
-    m_wwanCheckBox->setChecked(Solid::Control::NetworkManagerNm09::isWwanEnabled());
+    m_wwanCheckBox->nativeWidget()->setCheckState(Solid::Control::NetworkManagerNm09::isWwanEnabled() ? Qt::Checked : Qt::Unchecked);
     m_wwanCheckBox->setEnabled(Solid::Control::NetworkManagerNm09::isWwanHardwareEnabled() || Solid::Control::NetworkManagerNm09::isWwanEnabled());
 
     updateHasWireless(checked);
@@ -618,7 +620,7 @@ void NMPopup::managerNetworkingEnabledChanged(bool enabled)
 void NMPopup::managerWwanEnabledChanged(bool enabled)
 {
     kDebug() << "NM daemon changed wwan enable state" << enabled;
-    m_wwanCheckBox->setChecked(enabled);
+    m_wwanCheckBox->nativeWidget()->setCheckState(enabled ? Qt::Checked : Qt::Unchecked);
     if (enabled) {
         m_wwanCheckBox->setEnabled(enabled);
     }
-- 
1.7.7.4