void ProcessTransferUpdate(FileTransfer transfer) { int idx = this.ViewModel.FindIndexById(transfer.Id); if (idx == -1) { Log.WarnFormat("Could not notify ViewModel, id={0}", transfer.Id); } else { // update items FileTransferViewItem viewItem = this.ViewModel.FileTransfers[idx]; viewItem.Progress = transfer.PercentComplete; viewItem.Status = transfer.TransferStatus; viewItem.Message = transfer.TransferStatusMsg; viewItem.Start = transfer.StartTime; viewItem.End = transfer.EndTime; viewItem.CanCancel = FileTransfer.CanCancel(viewItem.Status); viewItem.CanRestart = FileTransfer.CanRestart(viewItem.Status); viewItem.CanDelete = FileTransfer.CanRestart(viewItem.Status); // notify on update this.ViewModel.FileTransfers.ResetItem(idx); } }
private void runAgainToolStripMenuItem_Click(object sender, EventArgs e) { FileTransferViewItem item = GetSelectedItem <FileTransferViewItem>(); if (item != null) { this.Presenter.Restart(item.Id); } }
private void deleteToolStripMenuItem_Click(object sender, EventArgs e) { FileTransferViewItem item = GetSelectedItem <FileTransferViewItem>(); if (item != null) { Presenter.Remove(item.Id); } }
/// <summary>Updates the <seealso cref="BrowserViewModel"/> when a change to the file transfers list is detected</summary> /// <param name="sender">The <seealso cref="IBindingList"/> of <seealso cref="FileTransferViewItem"/> items</param> /// <param name="e">The <seealso cref="ListChangedEventArgs"/> items containing the type of change detected and the index of the item</param> private void FileTransfers_ListChanged(object sender, ListChangedEventArgs e) { if (e.ListChangedType == ListChangedType.ItemChanged) { BindingList <FileTransferViewItem> list = (BindingList <FileTransferViewItem>)sender; FileTransferViewItem item = list[e.NewIndex]; if (item.Status == FileTransfer.Status.Complete && item.Target == this.CurrentPath.Path) { Log.InfoFormat("Refreshing for FileTransferUpdate, path={0}", this.CurrentPath.Path); this.ViewModel.Context.Post((x) => this.Refresh(), null); } } }
public int FindIndexById(int id) { int idx = -1; for (int i = 0; i < this.FileTransfers.Count; i++) { FileTransferViewItem item = this.FileTransfers[i]; if (item.Id == id) { idx = i; break; } } return(idx); }
private void contextMenu_Opening(object sender, CancelEventArgs e) { Point p = PointToClient(MousePosition); DataGridView.HitTestInfo hit = this.grid.HitTest(p.X, p.Y); if (hit.Type == DataGridViewHitTestType.Cell) { // toggle on/off the actions based on view model FileTransferViewItem item = (FileTransferViewItem)((DataGridViewRow)grid.Rows[hit.RowIndex]).DataBoundItem; this.runAgainToolStripMenuItem.Enabled = item.CanRestart; this.cancelToolStripMenuItem.Enabled = item.CanCancel; this.deleteToolStripMenuItem.Enabled = item.CanDelete; } else { // Only open on cells e.Cancel = true; } }