SVN commit 1103582 by ereslibre: Change interface to use a checkbox that loads/unloads the kded module M +19 -20 bluedevil.cpp M +5 -3 bluedevil.h --- trunk/playground/base/bluedevil/src/kcmodule/bluedevil.cpp #1103581:1103582 @@ -19,7 +19,7 @@ #include "bluedevil.h" -#include +#include #include #include @@ -34,15 +34,16 @@ KCMBlueDevil::KCMBlueDevil(QWidget *parent, const QVariantList&) : KCModule(BlueDevilFactory::componentData(), parent) - , m_kdedNotRunningWarning(new QWidget(this)) + , m_enable(new QCheckBox(i18n("Enable Bluetooth"), this)) { - generateUi(); checkKDEDModuleLoaded(); QVBoxLayout *layout = new QVBoxLayout; - layout->addWidget(m_kdedNotRunningWarning); + layout->addWidget(m_enable); layout->addStretch(); setLayout(layout); + + connect(m_enable, SIGNAL(stateChanged(int)), SLOT(stateChanged(int))); } KCMBlueDevil::~KCMBlueDevil() @@ -55,26 +56,23 @@ void KCMBlueDevil::save() { -} + if (!m_isEnabled && m_enable->isChecked()) { + QDBusMessage msg = QDBusMessage::createMethodCall("org.kde.kded", "/kded", QString(), "loadModule"); + msg.setArguments(QVariantList() << "bluedevil"); + QDBusConnection::sessionBus().call(msg); + } else if (m_isEnabled && !m_enable->isChecked()) { + QDBusMessage msg = QDBusMessage::createMethodCall("org.kde.kded", "/kded", QString(), "unloadModule"); + msg.setArguments(QVariantList() << "bluedevil"); + QDBusConnection::sessionBus().call(msg); + } -void KCMBlueDevil::launchService() -{ - QDBusMessage msg = QDBusMessage::createMethodCall("org.kde.kded", "/kded", QString(), "loadModule"); - msg.setArguments(QVariantList() << "bluedevil"); - QDBusConnection::sessionBus().call(msg); - checkKDEDModuleLoaded(); } -void KCMBlueDevil::generateUi() +void KCMBlueDevil::stateChanged(int) { - { - QHBoxLayout *layout = new QHBoxLayout; - layout->addWidget(new QLabel(i18n("Bluetooth backend is not running"), this)); - KPushButton *launch = new KPushButton(i18n("Launch"), this); - connect(launch, SIGNAL(clicked()), this, SLOT(launchService())); - layout->addWidget(launch); - m_kdedNotRunningWarning->setLayout(layout); + if (sender() == m_enable) { + emit changed(m_enable->isChecked() != m_isEnabled); } } @@ -89,5 +87,6 @@ break; } } - m_kdedNotRunningWarning->setVisible(!moduleLoaded); + m_enable->setChecked(moduleLoaded); + m_isEnabled = moduleLoaded; } --- trunk/playground/base/bluedevil/src/kcmodule/bluedevil.h #1103581:1103582 @@ -22,6 +22,8 @@ #include +class QCheckBox; + class KCMBlueDevil : public KCModule { @@ -35,14 +37,14 @@ virtual void save(); private Q_SLOTS: - void launchService(); + void stateChanged(int state); private: - void generateUi(); void checkKDEDModuleLoaded(); private: - QWidget *m_kdedNotRunningWarning; + QCheckBox *m_enable; + bool m_isEnabled; }; #endif