Skip to content
This repository has been archived by the owner on Jun 19, 2024. It is now read-only.

Ensure the same item only appears once on the list #38

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ public partial class CharacteristicList : ContentPage
IService service;

ObservableCollection<ICharacteristic> characteristics;
Dictionary<Guid, ICharacteristic> guidToCharacteristic;

public CharacteristicList (IAdapter adapter, IDevice device, IService service)
{
Expand All @@ -22,6 +23,7 @@ public CharacteristicList (IAdapter adapter, IDevice device, IService service)
this.device = device;
this.service = service;
this.characteristics = new ObservableCollection<ICharacteristic> ();
this.guidToCharacteristic = new Dictionary<Guid, ICharacteristic> ();

listView.ItemsSource = characteristics;

Expand All @@ -31,7 +33,11 @@ public CharacteristicList (IAdapter adapter, IDevice device, IService service)
if (characteristics.Count == 0)
Device.BeginInvokeOnMainThread(() => {
foreach (var characteristic in service.Characteristics) {
characteristics.Add(characteristic);
if (!guidToCharacteristic.ContainsKey(characteristic.ID))
{
characteristics.Add(characteristic);
guidToCharacteristic.Add(characteristic.ID, characteristic);
}
}
});
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,23 @@ public partial class DeviceList : ContentPage
{
IAdapter adapter;
ObservableCollection<IDevice> devices;
Dictionary<Guid, IDevice> guidToDevices;

public DeviceList (IAdapter adapter)
{
InitializeComponent ();
this.adapter = adapter;
this.devices = new ObservableCollection<IDevice> ();
this.guidToDevices = new Dictionary<Guid, IDevice> ();
listView.ItemsSource = devices;

adapter.DeviceDiscovered += (object sender, DeviceDiscoveredEventArgs e) => {
Device.BeginInvokeOnMainThread(() => {
devices.Add (e.Device);
if (!guidToDevices.ContainsKey(e.Device.ID))
{
devices.Add (e.Device);
guidToDevices.Add(e.Device.ID, e.Device);
}
});
};

Expand Down Expand Up @@ -66,6 +72,7 @@ void StartScanning (Guid forService) {
Debug.WriteLine ("adapter.StopScanningForDevices()");
} else {
devices.Clear();
guidToDevices.Clear ();
adapter.StartScanningForDevices(forService);
Debug.WriteLine ("adapter.StartScanningForDevices("+forService+")");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,15 @@ public partial class ServiceList : ContentPage
IDevice device;

ObservableCollection<IService> services;
Dictionary<Guid, IService> guidToServices;

public ServiceList (IAdapter adapter, IDevice device)
{
InitializeComponent ();
this.adapter = adapter;
this.device = device;
this.services = new ObservableCollection<IService> ();
this.guidToServices = new Dictionary<Guid, IService> ();
listView.ItemsSource = services;

// when device is connected
Expand All @@ -33,7 +35,11 @@ public ServiceList (IAdapter adapter, IDevice device)
if (services.Count == 0)
Device.BeginInvokeOnMainThread(() => {
foreach (var service in device.Services) {
services.Add(service);
if (!guidToServices.ContainsKey(service.ID))
{
services.Add(service);
guidToServices.Add(service.ID, service);
}
}
});
};
Expand Down