예제 #1
0
        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);
            }
        }
예제 #2
0
        private void runAgainToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FileTransferViewItem item = GetSelectedItem <FileTransferViewItem>();

            if (item != null)
            {
                this.Presenter.Restart(item.Id);
            }
        }
예제 #3
0
        private void deleteToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FileTransferViewItem item = GetSelectedItem <FileTransferViewItem>();

            if (item != null)
            {
                Presenter.Remove(item.Id);
            }
        }
예제 #4
0
        /// <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);
                }
            }
        }
예제 #5
0
        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);
        }
예제 #6
0
        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;
            }
        }