[kmobiletools] branches/extragear/kde3/pim/kmobiletools/kmobiletools/mainpart

Marco Gulino marco at kmobiletools.org
Sun Jun 17 17:50:39 CEST 2007


SVN commit 676739 by gulino:

Avoid crashing when there's not a bluetooth adapter (with kdebluetooth 1.0-beta3)


 M  +5 -1      bluemonitor.cpp  
 M  +2 -0      bluemonitor.h  
 M  +8 -0      newdevicewizard.cpp  


--- branches/extragear/kde3/pim/kmobiletools/kmobiletools/mainpart/bluemonitor.cpp #676738:676739
@@ -37,13 +37,16 @@
 
 
 
-BlueMonitor::BlueMonitor(QListView *listview) : QObject()
+BlueMonitor::BlueMonitor(QListView *listview) : QObject(), b_connected(false)
 {
     p_listview=listview;
     KBluetooth::DBusInit *dbus = new KBluetooth::DBusInit();
     conn = dbus->getDBus();
     manager = new KBluetooth::Manager(conn);
+    if(manager->defaultAdapter().isEmpty()) return;
+    b_connected=true;
     adapter = new KBluetooth::Adapter(manager->defaultAdapter(), conn);
+    kdDebug() << "BlueMonitor(); manager  =" << manager << "; adapter=" << adapter << endl;
 
     if (!adapter->isPeriodicDiscovery()) {
         adapter->startPeriodicDiscovery();
@@ -73,6 +76,7 @@
 BlueMonitor::~BlueMonitor() {
 
     kdDebug() << k_funcinfo << endl;
+    if(!isConnected() ) return;
     if (adapter->isPeriodicDiscovery() && selfstart)
         adapter->stopPeriodicDiscovery();
 }
--- branches/extragear/kde3/pim/kmobiletools/kmobiletools/mainpart/bluemonitor.h #676738:676739
@@ -84,12 +84,14 @@
     KBluetooth::Manager *manager;
     QRegExp rx;
     bool selfstart;	
+    bool b_connected;
     QListView *p_listview;
 public:
     BlueMonitor(QListView*);
     ~BlueMonitor();
     void getServices(RemoteDevice* add);
     RemoteDevice* getDetails(const QString& addr, short rssi );
+    bool isConnected() { return b_connected; }
 
 public slots:
     void newdev(const QString&, int, short);
--- branches/extragear/kde3/pim/kmobiletools/kmobiletools/mainpart/newdevicewizard.cpp #676738:676739
@@ -496,6 +496,14 @@
     connect(inquiry, SIGNAL(neighbourFound (const KBluetooth::DeviceAddress&, int)), this, SLOT(btScanItemFound(const KBluetooth::DeviceAddress&, int)));
 #else
     if(!monitor) monitor=new BlueMonitor(btDevicesLV);
+    if(!monitor->isConnected() ) {
+        KMessageBox::error(this, i18n("The bluetooth connection could not start.\nPlease check if you have a bluetooth adaptor connected, and retry.") );
+        delete monitor;
+        monitor=0;
+        btenable->setChecked(false);
+        bt_checked(false);
+        return;
+    }
 #endif
     btStatusLabel->setText( i18n("Searching for bluetooth devices.") );
     btsvcLV->clear();


More information about the kmobiletools mailing list