diff --git a/res/include/script/file_viewer/QRCodeWindow.js b/res/include/script/file_viewer/QRCodeWindow.js
new file mode 100644
index 0000000..f4b8e2f
--- /dev/null
+++ b/res/include/script/file_viewer/QRCodeWindow.js
@@ -0,0 +1,35 @@
+function QRCodeWindow(viewer) {
+ this.viewer = viewer
+ this.visible = false
+ this.modal = new Modal(
+ document.getElementById("file_viewer"),
+ () => { this.toggle() },
+ "QR code", "500px", "auto",
+ )
+
+ this.img = document.createElement("img")
+ this.img.style.display = "block"
+ this.img.style.width = "100%"
+ this.modal.setBody(this.img)
+
+ this.btnQRCode = document.getElementById("btn_qr_code")
+ this.btnQRCode.addEventListener("click", () => { this.toggle() })
+
+ this.setFile()
+}
+
+QRCodeWindow.prototype.toggle = function () {
+ if (this.visible) {
+ this.modal.close()
+ this.btnQRCode.classList.remove("button_highlight")
+ this.visible = false
+ } else {
+ this.modal.open()
+ this.btnQRCode.classList.add("button_highlight")
+ this.visible = true
+ }
+}
+
+QRCodeWindow.prototype.setFile = function () {
+ this.img.src = "/api/misc/qr?text=" + encodeURIComponent(window.location.href)
+}
diff --git a/res/include/script/file_viewer/Viewer.js b/res/include/script/file_viewer/Viewer.js
index 576cedf..f650e63 100644
--- a/res/include/script/file_viewer/Viewer.js
+++ b/res/include/script/file_viewer/Viewer.js
@@ -17,6 +17,7 @@ function Viewer(type, viewToken, data) {
this.toolbar = new Toolbar(this)
this.detailsWindow = new DetailsWindow(this)
this.editWindow = new EditWindow()
+ this.qrCodeWindow = new QRCodeWindow(this)
this.divFilepreview = document.getElementById("filepreview")
@@ -117,6 +118,7 @@ Viewer.prototype.setFile = function (file) {
this.detailsWindow.setFile(file)
this.editWindow.setFile(file)
this.toolbar.setFile(file)
+ this.qrCodeWindow.setFile()
// Register a new view. We don't care what this returns becasue we can't
// do anything about it anyway
diff --git a/res/template/file_viewer.html b/res/template/file_viewer.html
index 553a2bd..3e0da7e 100644
--- a/res/template/file_viewer.html
+++ b/res/template/file_viewer.html
@@ -69,6 +69,10 @@
share
Share
+