public override NSObject GetObjectValue(NSTableView tableView, NSTableColumn tableColumn, int row) {
Transmission transmission = null;
lock (lockTransmissionItems) {
if (row >= TransmissionItems.Count) {
return new NSNull();
}
transmission = TransmissionItems[row];
transmission.PropertyChanged += (object sender, PropertyChangedEventArgs e) => {
var t = sender as Transmission;
if (e.PropertyName == Utils.NameOf(() => t.Percent)) {
BeginInvokeOnMainThread(delegate {
var widget = tableView.GetView(0, row, true) as TransmissionWidgetItem;
this.UpdateViewProgress(widget, t);
this.UpdateViewLastModificationDate(widget, t.LastModification);
});
} else if (e.PropertyName == Utils.NameOf(() => t.BitsPerSecond)) {
BeginInvokeOnMainThread(delegate {
this.UpdateWidgetStatus(tableView.GetView(0, row, true) as TransmissionWidgetItem, t);
});
}
};
}
BeginInvokeOnMainThread(delegate {
var widget = tableView.GetView(0, row, false) as TransmissionWidgetItem;
if (widget != null) {
widget.labelName.StringValue = transmission.FileName;
widget.labelName.ToolTip = transmission.Path;
this.UpdateViewLastModificationDate(widget, transmission.LastModification);
this.UpdateWidgetStatus(widget, transmission);
this.UpdateViewProgress(widget, transmission);
}
});
return new NSNull();
}