Blame view
static/plugins/spice-html5/filexfer.js
2.71 KB
831eac332 add file |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
"use strict"; /* Copyright (C) 2014 Red Hat, Inc. This file is part of spice-html5. spice-html5 is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. spice-html5 is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with spice-html5. If not, see <http://www.gnu.org/licenses/>. */ function SpiceFileXferTask(id, file) { this.id = id; this.file = 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%'; this.progressbar.style.margin = '4px auto'; this.progressbar.style.display = 'inline-block'; this.progressbar_container.style.width = '90%'; 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); } SpiceFileXferTask.prototype.update_progressbar = function(value) { this.progressbar.setAttribute('value', value); } SpiceFileXferTask.prototype.remove_progressbar = function() { if (this.progressbar_container && this.progressbar_container.parentNode) this.progressbar_container.parentNode.removeChild(this.progressbar_container); } function handle_file_dragover(e) { e.stopPropagation(); e.preventDefault(); e.dataTransfer.dropEffect = 'copy'; } function handle_file_drop(e) { var sc = window.spice_connection; var files = e.dataTransfer.files; e.stopPropagation(); e.preventDefault(); for (var i = files.length - 1; i >= 0; i--) { if (files[i].type); // do not copy a directory sc.file_xfer_start(files[i]); } } |