Author: jruchaud Date: 2015-05-26 15:59:19 +0000 (Tue, 26 May 2015) New Revision: 1499 Url: http://forge.nuiton.org/projects/sandbox/repository/revisions/1499 Log: Create GuiManager Added: wit/js/GuiManager.js Removed: wit/js/gui.js wit/pages/test.html Modified: wit/js/main.js wit/pages/activityChange.html wit/pages/idle.html Added: wit/js/GuiManager.js =================================================================== --- wit/js/GuiManager.js (rev 0) +++ wit/js/GuiManager.js 2015-05-26 15:59:19 UTC (rev 1499) @@ -0,0 +1,85 @@ +"use strict"; + +var gui = global.window.nwDispatcher.requireNwGui(); +//var timer = require("./services/TimerService.js"); +//var user = require("./services/UserActivityService.js"); + +class GuiManager { + + constructor() { + this.createTray(); + + this.popups = []; + + // Subscriptions to services + //timer.subscribeIdle(this.openWindow.bind(this, "idle.html")); + //user.subscribeActivityChange(this.openWindow.bind(this, "activityChange.html")); + } + + createTray() { + // Reference to window and tray + var win = gui.Window.get(); + win.removeAllListeners("minimize"); + + var tray; + + // Get the minimize event + win.on("minimize", function() { + tray = new gui.Tray({icon: "img/stopwatch-34108_640.png"}); + + var menu = new gui.Menu(); + menu.append(new gui.MenuItem({label: "play"})); + menu.append(new gui.MenuItem({label: "stop"})); + tray.menu = menu; + + // Show window and remove tray when clicked + tray.on("click", function() { + win.show(); + this.remove(); + tray = null; + }); + + // Hide window + this.hide(); + }); + + win.on("focus", function() { + if (tray) { + tray.remove(); + tray = null; + } + }); + } + + // global.guiManager.openWindow("idle.html") + openWindow(file) { + var current = gui.Window.get(); + current.hide(); + + user.suspendActivityDetection(); + + var window = gui.Window.open(file, { + position: "center", + focus: true, + toolbar: false, + frame: true, + width: 480, + height: 300 + }); + + this.popups.push(window); + + window.on("close", function() { + this.hide(); // Pretend to be closed already + this.close(true); + + this.popups.splice(this.popups.indexOf(window), 1); + + if (!this.popups.length) { + current.show(); + } + }); + } +} + +module.exports = GuiManager; Deleted: wit/js/gui.js =================================================================== --- wit/js/gui.js 2015-05-26 15:35:57 UTC (rev 1498) +++ wit/js/gui.js 2015-05-26 15:59:19 UTC (rev 1499) @@ -1,73 +0,0 @@ -"use strict"; - -// Load library -var gui = require("nw.gui"); - -// Reference to window and tray -var win = gui.Window.get(); -win.removeAllListeners("minimize"); - -var tray; - -// Get the minimize event -win.on("minimize", function() { - tray = new gui.Tray({icon: "img/stopwatch-34108_640.png"}); - - var menu = new gui.Menu(); - menu.append(new gui.MenuItem({label: "play"})); - menu.append(new gui.MenuItem({label: "stop"})); - tray.menu = menu; - - // Show window and remove tray when clicked - tray.on("click", function() { - win.show(); - this.remove(); - tray = null; - }); - - // Hide window - this.hide(); -}); - -win.on("focus", function() { - if (tray) { - tray.remove(); - tray = null; - } -}); - -var popups = []; -var openWindow = function(file) { - var gui = global.window.nwDispatcher.requireNwGui(); - - var current = gui.Window.get(); - current.hide(); - - scope.user.suspendActivityDetection(); - - var window = gui.Window.open(file, { - position: "center", - focus: true, - toolbar: false, - frame: true, - width: 480, - height: 300 - }); - - popups.push(window); - - window.on("close", function() { - this.hide(); // Pretend to be closed already - this.close(true); - - popups.splice(popups.indexOf(window), 1); - - if (!popups.length) { - current.show(); - } - }); -}; - -// Subscriptions to services -scope.timer.subscribeIdle(openWindow.bind(null, "idle.html")); -scope.user.subscribeActivityChange(openWindow.bind(null, "activityChange.html")); Modified: wit/js/main.js =================================================================== --- wit/js/main.js 2015-05-26 15:35:57 UTC (rev 1498) +++ wit/js/main.js 2015-05-26 15:59:19 UTC (rev 1499) @@ -7,16 +7,16 @@ // Alias // Total time during day -var noTimer = require("./services/NoTimerService.js"); +var noTimer = require("./services/NoTimerService"); noTimer.detect(); -//var printer = require("./js/services/PrinterService.js"); -//scope.printer = printer; +var GuiManager = require("./GuiManager"); +global.guiManager = new GuiManager(); // React conf // window.onload = function() { var React = require("react"); - var App = require("./App.js"); + var App = require("./App"); React.render(<App/>, document.body); }; Modified: wit/pages/activityChange.html =================================================================== --- wit/pages/activityChange.html 2015-05-26 15:35:57 UTC (rev 1498) +++ wit/pages/activityChange.html 2015-05-26 15:59:19 UTC (rev 1499) @@ -1,7 +1,7 @@ <html> <head> <title>WIT activity</title> - <link rel="stylesheet" href="./node_modules/bootstrap/dist/css/bootstrap.min.css"> + <link rel="stylesheet" href="../node_modules/bootstrap/dist/css/bootstrap.min.css"> <style> h1 { @@ -12,8 +12,8 @@ <script> var gui = require('nw.gui'); var window = gui.Window.get(); - var timer = global.scope.timer; - var user = global.user; + var timer = require("../build/services/TimerService.js"); + var user = require("../build/services/UserActivityService.js"); var keepTiming = function() { user.resumeActivityDetection(); Modified: wit/pages/idle.html =================================================================== --- wit/pages/idle.html 2015-05-26 15:35:57 UTC (rev 1498) +++ wit/pages/idle.html 2015-05-26 15:59:19 UTC (rev 1499) @@ -1,7 +1,7 @@ <html> <head> <title>WIT idle</title> - <link rel="stylesheet" href="./node_modules/bootstrap/dist/css/bootstrap.min.css"> + <link rel="stylesheet" href="../node_modules/bootstrap/dist/css/bootstrap.min.css"> <style> h1 { @@ -12,7 +12,7 @@ <script> var gui = require('nw.gui'); var window = gui.Window.get(); - var timer = global.scope.timer; + var timer = require("../build/services/TimerService.js"); var keepIdle = function() { timer.keepIdle(); Deleted: wit/pages/test.html =================================================================== --- wit/pages/test.html 2015-05-26 15:35:57 UTC (rev 1498) +++ wit/pages/test.html 2015-05-26 15:59:19 UTC (rev 1499) @@ -1,69 +0,0 @@ -<html> - <head> - <link rel="stylesheet" href="./node_modules/bootstrap/dist/css/bootstrap.min.css"> - <style> - @font-face { - font-family: Digital; - src: url(../font/DIGITALDREAM.ttf); - } - - .digit { - font-family: Digital; - text-align: center; - } - - .nav > li > a { - padding: 15px; - } - - </style> - </head> - <body> - <div class="container-fluid"> - - <div class="navbar navbar-default"> - <div class="navbar-header pull-left"> - <a class="navbar-brand" href="#">WIT</a> - </div> - - <div class="nav navbar-header pull-right"> - <ul class="nav pull-right"> - <li class="pull-left"><a href="#">Timer</a></li> - <li class="pull-left"><a href="#">Rapport</a></li> - <li class="pull-left"><a href="#">Tags</a></li> - <li class="pull-left"><a href="#">Options</a></li> - </ul> - </div> - </div> - - <h1 class="digit">00:00:00</h1> - - <ul class="list-group"> - <li class="list-group-item">Cras justo odio</li> - <li class="list-group-item">Dapibus ac facilisis in</li> - <li class="list-group-item">Morbi leo risus</li> - <li class="list-group-item">Porta ac consectetur ac</li> - <li class="list-group-item">Vestibulum at eros</li> - </ul> - - <div class="text-center"> - <div class="btn-group" role="group"> - <button type="button" class="btn btn-primary btn-lg"> - <span class="glyphicon glyphicon-backward" aria-hidden="true"></span> - </button> - <button type="button" class="btn btn-primary btn-lg"> - <span class="glyphicon glyphicon-play" aria-hidden="true"></span> - </button> - <button type="button" class="btn btn-primary btn-lg"> - <span class="glyphicon glyphicon-stop" aria-hidden="true"></span> - </button> - <button type="button" class="btn btn-primary btn-lg"> - <span class="glyphicon glyphicon-forward" aria-hidden="true"></span> - </button> - </div> - </div> - - </div> - - </body> -</html> \ No newline at end of file