From e73c47e3c6d4a4c538bddbe4aad45cf4b116a71e Mon Sep 17 00:00:00 2001 From: Antoine Martin Date: Tue, 25 Oct 2016 09:47:06 +0000 Subject: [PATCH] #1341: * add notification support * move css to a dedicated client.css file * expand server dbus and control channel for testing notifications: support notification id and close requests git-svn-id: https://xpra.org/svn/Xpra/trunk@14281 3bb7dfac-3a0b-4e04-842a-767bc560f471 --- src/html5/css/client.css | 211 ++++++++++++++++++++++++++++ src/html5/css/signin.css | 42 +++--- src/html5/index.html | 129 +---------------- src/html5/js/Client.js | 37 ++++- src/html5/js/Notifications.js | 55 ++++++++ src/xpra/server/dbus/dbus_server.py | 12 +- src/xpra/server/server_base.py | 25 +++- 7 files changed, 354 insertions(+), 157 deletions(-) create mode 100644 src/html5/css/client.css create mode 100644 src/html5/js/Notifications.js diff --git a/src/html5/css/client.css b/src/html5/css/client.css new file mode 100644 index 0000000000..8f37a93a22 --- /dev/null +++ b/src/html5/css/client.css @@ -0,0 +1,211 @@ +html, body { + height: 100%; + width: 100%; + padding: 0; + margin: 0; + overflow: hidden; +} +div#connect_form { + display: none; +} +div#disconnect_form { + display: none; +} +canvas { + border: none; + padding: 0; + margin: 0; +} +#pasteboard { + position: fixed; + top: -30px; + left: 1px; +} +.undecorated { + position: absolute; + padding: 0; + overflow: hidden; +} +.override-redirect { + z-index: 15000; +} +.window { + border: 1px; + position: absolute; + box-shadow: 0px 10px 25px rgba(0, 0, 0, 0.5); + padding: 0; + overflow: hidden; /* required for radius clip */ +} +.window-NORMAL { + border-radius: 6px; +} +.window-DROPDOWN_MENU { + z-index: 20000; +} +.window-TOOLTIP { + z-index: 20000; +} +.window-POPUP_MENU { + z-index: 20000; +} +.window-MENU { + z-index: 20000; +} +.window-COMBO { + z-index: 20000; +} +.window-UTILITY { + z-index: 15000; +} +.window-DIALOG { + z-index: 15000; +} +.windowhead { + height: 30px; + color: #000000; + background-color: #c0c0c0; +} +.windowicon { + display: inline-block; + float: left; + width: 30px; + height: 30px; + overflow: hidden; + cursor: default; +} +.windowtitle { + display: inline-block; + float: left; + width: 70%; + overflow: hidden; + text-overflow:ellipsis; + white-space: nowrap; + padding: 5px; + cursor: default; +} +.windowbuttons { + display: inline-block; + float: right; + padding-right: 5px; + cursor: pointer; + padding-top: 7px; +} +.windowinfocus { + z-index: 10000; +} +.spinneroverlay { + width: 100%; + height: 100%; + display: none; + background-color: black; + opacity: 0.5; + position: absolute; +} +.spinnermiddle { + display: table-cell; + vertical-align: middle; +} +.ui-resizable-helper { + border: 2px dotted #00F; + z-index: 30000 !important; +} +.ui-resizable-handle { position: absolute;font-size: 0.1px; display: block; } +.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; } +.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; } +.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; } +.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; } +.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; } +.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; } +.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; } +.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; } +.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;} + + +.notifications { + position: absolute; + left: auto; + right: 0; + top: 0; + bottom: auto; + width: 600px; + height: auto; + z-index: 10001; + transition: height 0.5s, opacity 0.5s, top 0.5s, box-shadow 0.5s, bottom 0.5s; + box-shadow: 0 1rem 2rem rgba(21, 36, 48, 0.75); + overflow: hidden; +} +@media screen and (max-width: 600px) { + .notifications { + bottom: 0; + box-shadow: none; + padding-top: 5rem; + } +} +@media screen { + .notifications .alert { + border-radius: 10; + text-align: center; + padding: .5rem; + opacity: 1; + margin-top: -2rem; + position: relative; + transform: translateY(2rem); + transition: left 0.5s, margin 0.5s, opacity 0.5s, transform 0.5s; + } +} +@media screen and (max-width: 600px) { + .notifications .alert { + opacity: 0; + margin-top: 0; + transform: translateY(0); + } +} +.notifications .alert span { + display: block; + padding: 0; + margin: 0 3rem; + font-weight: 300; + font-size: .9rem; + text-overflow: ellipsis; + line-height: 1rem; + max-height: 2rem; + overflow: hidden; +} +.notifications .alert span.title{ + margin: 1rem; + font-weight: 600; + font-size: 1.3rem; +} +.notifications .alert span a { + text-decoration: none; +} +.notifications .alert .dismiss { + width: 2rem; + position: absolute; + right: 1rem; + top: 50%; + transform: scale(1, 1) translateY(-50%); + font-size: 1.5rem; + transition: margin 0.5s, opacity 0.5s, transform 0.5s; + text-align: center; + cursor: pointer; + color: inherit; + font-weight: 300; + transform-origin: center center; +} +@media screen { + .notifications .alert.visible { + margin-top: 0; + opacity: 1; + transform: translateY(0); + } + .notifications .alert.hidden { + margin-top: -2.125rem; + z-index: -1; + } +} +@media screen and (max-width: 600px) { + .notifications .alert.hidden { + transform: translateY(0) translateX(-10rem); + } +} diff --git a/src/html5/css/signin.css b/src/html5/css/signin.css index aa3db84208..25eb01e364 100644 --- a/src/html5/css/signin.css +++ b/src/html5/css/signin.css @@ -1,43 +1,43 @@ body { - padding-top: 40px; - padding-bottom: 40px; - background-color: #eee; + padding-top: 40px; + padding-bottom: 40px; + background-color: #eee; } .form-signin { - max-width: 530px; - padding: 15px; - margin: 0 auto; + max-width: 530px; + padding: 15px; + margin: 0 auto; } .form-or-heading { - text-align: center; + text-align: center; } .form-signin .form-signin-heading, .form-signin .checkbox { - margin-bottom: 10px; + margin-bottom: 10px; } .form-signin .checkbox, .form-signin .radiobox { - font-weight: normal; + font-weight: normal; } .form-signin .form-control { - position: relative; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - padding: 10px; - font-size: 16px; + position: relative; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 10px; + font-size: 16px; } .form-signin .form-control:focus { - z-index: 2; + z-index: 2; } .form-signin .panel-group { - padding-top:8px; + padding-top:8px; } .form-signin .list-style-none { - list-style-type:none; + list-style-type:none; } .form-signin .action input { - font-size: 12px; - padding: 2px; -} \ No newline at end of file + font-size: 12px; + padding: 2px; +} diff --git a/src/html5/index.html b/src/html5/index.html index d29ae55f71..df1aa293af 100644 --- a/src/html5/index.html +++ b/src/html5/index.html @@ -14,130 +14,7 @@ - - + @@ -158,6 +35,7 @@ + @@ -167,6 +45,9 @@
+
+
+