Skip to content

Commit

Permalink
Refactor anonymous delegate into named method, such that
Browse files Browse the repository at this point in the history
we can remove them when the method finishes its work.

Prior to the change, upon re-entry of ServiceList, the
services entry are added more once because we did not
remove previous added delegate.
  • Loading branch information
smoy committed May 15, 2015
1 parent d34e05c commit 8ccc702
Showing 1 changed file with 21 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,29 +21,7 @@ public ServiceList (IAdapter adapter, IDevice device)
this.device = device;
this.services = new ObservableCollection<IService> ();
listView.ItemsSource = services;

// when device is connected
adapter.DeviceConnected += (s, e) => {
device = e.Device; // do we need to overwrite this?
// when services are discovered
device.ServicesDiscovered += (object se, EventArgs ea) => {
Debug.WriteLine("device.ServicesDiscovered");
//services = (List<IService>)device.Services;
if (services.Count == 0)
Device.BeginInvokeOnMainThread(() => {
foreach (var service in device.Services) {
services.Add(service);
}
});
};
// start looking for services
device.DiscoverServices ();
};
// TODO: add to IAdapter first
//adapter.DeviceFailedToConnect += (sender, else) => {};

adapter.DeviceConnected += this.OnDeviceConnected;
DisconnectButton.Activated += (sender, e) => {
adapter.DisconnectDevice (device);
Navigation.PopToRootAsync(); // disconnect means start over
Expand Down Expand Up @@ -71,6 +49,26 @@ protected override void OnAppearing ()

((ListView)sender).SelectedItem = null; // clear selection
}

public void OnDeviceConnected(object sender, EventArgs args)
{
this.adapter.DeviceConnected -= this.OnDeviceConnected;
this.device.ServicesDiscovered += this.ServicesDiscovered;
this.device.DiscoverServices ();
}

public void ServicesDiscovered(object sender, EventArgs args)
{
this.device.ServicesDiscovered -= this.ServicesDiscovered;
Debug.WriteLine("device.ServicesDiscovered");
if (services.Count == 0) {
Device.BeginInvokeOnMainThread (() => {
foreach (var service in device.Services) {
services.Add (service);
}
});
}
}
}
}

0 comments on commit 8ccc702

Please sign in to comment.