[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