summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPavel Grunt <pgrunt@redhat.com>2015-01-16 15:29:46 +0100
committerJeremy White <jwhite@codeweavers.com>2015-01-16 10:06:35 -0600
commitff42bc739948c5c83d5c9957ddc5d26104dfd465 (patch)
treefe8bfaddd53bee150faa1bde79a8ca7ec9e8983f
parent8d1ea67789e9fe2ebef981f0b292fbf6dd59d3c3 (diff)
Add button for cancelling file transfer
-rw-r--r--filexfer.js12
-rw-r--r--main.js9
2 files changed, 21 insertions, 0 deletions
diff --git a/filexfer.js b/filexfer.js
index 2887e14..beabfd8 100644
--- a/filexfer.js
+++ b/filexfer.js
@@ -26,9 +26,20 @@ function SpiceFileXferTask(id, file)
SpiceFileXferTask.prototype.create_progressbar = function()
{
+ var _this = this;
+ var cancel = document.createElement("input");
this.progressbar_container = document.createElement("div");
this.progressbar = document.createElement("progress");
+ cancel.type = 'button';
+ cancel.value = 'Cancel';
+ cancel.style.float = 'right';
+ cancel.onclick = function()
+ {
+ _this.cancelled = true;
+ _this.remove_progressbar();
+ };
+
this.progressbar.setAttribute('max', this.file.size);
this.progressbar.setAttribute('value', 0);
this.progressbar.style.width = '100%';
@@ -38,6 +49,7 @@ SpiceFileXferTask.prototype.create_progressbar = function()
this.progressbar_container.style.margin = 'auto';
this.progressbar_container.style.padding = '4px';
this.progressbar_container.textContent = this.file.name;
+ this.progressbar_container.appendChild(cancel);
this.progressbar_container.appendChild(this.progressbar);
document.getElementById('spice-xfer-area').appendChild(this.progressbar_container);
}
diff --git a/main.js b/main.js
index f9a463b..bfc102a 100644
--- a/main.js
+++ b/main.js
@@ -338,6 +338,15 @@ SpiceMainConn.prototype.file_xfer_read = function(file_xfer_task, start_byte)
return;
}
+ if (file_xfer_task.cancelled)
+ {
+ var xfer_status = new VDAgentFileXferStatusMessage(file_xfer_task.id,
+ VD_AGENT_FILE_XFER_STATUS_CANCELLED);
+ this.send_agent_message(VD_AGENT_FILE_XFER_STATUS, xfer_status);
+ delete this.file_xfer_tasks[file_xfer_task.id];
+ return;
+ }
+
sb = start_byte || 0,
eb = Math.min(sb + FILE_XFER_CHUNK_SIZE, file_xfer_task.file.size);