From f988be6fbcf7ec3dc1fd7c9cbccefd2a886a5556 Mon Sep 17 00:00:00 2001 From: Oliver Ruiz Dorantes Date: Sun, 1 Mar 2009 14:48:11 +0000 Subject: [PATCH] - Add the retrieval of remote names to the discovered devices git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29366 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/preferences/bluetooth/DeviceListItem.h | 3 +- src/preferences/bluetooth/InquiryPanel.cpp | 54 ++++++++++++++++------ src/preferences/bluetooth/InquiryPanel.h | 1 + 3 files changed, 42 insertions(+), 16 deletions(-) diff --git a/src/preferences/bluetooth/DeviceListItem.h b/src/preferences/bluetooth/DeviceListItem.h index ca2298e5d6..c01ca769fa 100644 --- a/src/preferences/bluetooth/DeviceListItem.h +++ b/src/preferences/bluetooth/DeviceListItem.h @@ -27,10 +27,9 @@ class DeviceListItem : public BListItem void Update(BView *owner, const BFont *font); static int Compare(const void *firstArg, const void *secondArg); - - private: void SetDevice(BluetoothDevice* bDevice); + private: BluetoothDevice* fDevice; bdaddr_t fAddress; DeviceClass fClass; diff --git a/src/preferences/bluetooth/InquiryPanel.cpp b/src/preferences/bluetooth/InquiryPanel.cpp index 256281b9cc..28bca24424 100644 --- a/src/preferences/bluetooth/InquiryPanel.cpp +++ b/src/preferences/bluetooth/InquiryPanel.cpp @@ -85,6 +85,7 @@ InquiryPanel::InquiryPanel(BRect frame, LocalDevice* lDevice) : BWindow(frame, "Bluetooth", B_FLOATING_WINDOW, B_NOT_ZOOMABLE | B_AUTO_UPDATE_SIZE_LIMITS, B_ALL_WORKSPACES ), fScanning(false) + , fRetrieving(false) , fLocalDevice(lDevice) { // BRect iDontCare(0,0,0,0); @@ -157,6 +158,7 @@ InquiryPanel::MessageReceived(BMessage *message) { static float timer = 0; // expected time of the inquiry process static float scanningTime = 0; + static int32 retrievalIndex = 0; switch (message->what) { case kMsgInquiry: @@ -194,19 +196,19 @@ InquiryPanel::MessageReceived(BMessage *message) case kMsgStart: fRemoteList->MakeEmpty(); - fScanProgress->Reset(); - + fScanProgress->Reset(); scanningTime = 0; - fScanning = true; - UpdateUIStatus(); + fScanning = true; + UpdateUIStatus(); break; case kMsgFinish: - + retrievalIndex = 0; fScanning = false; + fRetrieving = true; + UpdateUIStatus(); - break; case kMsgSecond: @@ -221,11 +223,28 @@ InquiryPanel::MessageReceived(BMessage *message) scanningTime = scanningTime + 1; } - - if (fRemoteList->CurrentSelection() < 0 || fScanning) - fAddButton->SetEnabled(false); - else - fAddButton->SetEnabled(true); + + if (fRetrieving) { + + if (retrievalIndex < fDiscoveryAgent->RetrieveDevices(0).CountItems()) { + + ((DeviceListItem*)fRemoteList->ItemAt(retrievalIndex))-> + SetDevice((BluetoothDevice*)fDiscoveryAgent->RetrieveDevices(0).ItemAt(retrievalIndex)); + + fRemoteList->Invalidate(); + retrievalIndex++; + + } else { + + fRetrieving = false; + retrievalIndex = 0; + + fScanProgress->SetBarColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + fScanProgress->SetTrailingText("Scanning completed ..."); + } + } + + UpdateUIStatus(); } break; @@ -244,12 +263,19 @@ InquiryPanel::UpdateUIStatus(void) fInquiryButton->SetEnabled(false); fScanProgress->SetBarColor(activeColor); - } else { + } else if (fRetrieving) { fInquiryButton->SetEnabled(true); - fScanProgress->SetBarColor(ui_color(B_PANEL_BACKGROUND_COLOR)); fScanProgress->SetTo(100); - fScanProgress->SetText("Scan completed"); + fScanProgress->SetTrailingText("Retrieving names ..."); + } else { + } + + if (fRemoteList->CurrentSelection() < 0 || fScanning) + fAddButton->SetEnabled(false); + else + fAddButton->SetEnabled(true); + } diff --git a/src/preferences/bluetooth/InquiryPanel.h b/src/preferences/bluetooth/InquiryPanel.h index 70068db5e5..33c522eb36 100644 --- a/src/preferences/bluetooth/InquiryPanel.h +++ b/src/preferences/bluetooth/InquiryPanel.h @@ -37,6 +37,7 @@ private: BMessageRunner* fRunner; bool fScanning; + bool fRetrieving; LocalDevice* fLocalDevice; DiscoveryAgent* fDiscoveryAgent; DiscoveryListener* fDiscoveryListener;