[Spice-devel] [PATCH spice-html5 2/2] Add button for cancelling file transfer

Pavel Grunt pgrunt at redhat.com
Fri Jan 16 06:29:46 PST 2015


---
 filexfer.js | 12 ++++++++++++
 main.js     |  9 +++++++++
 2 files changed, 21 insertions(+)

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);
 
-- 
1.9.3



More information about the Spice-devel mailing list