Skip to content

Commit 215602b

Browse files
committed
update UI with more options
1 parent 6971f1c commit 215602b

File tree

9 files changed

+333
-60
lines changed

9 files changed

+333
-60
lines changed

background.js

Lines changed: 46 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,13 @@ function onchoosefolder(entry) {
3131
}
3232
function settings_ready(d) {
3333
window.localOptions = d
34-
chrome.alarms.getAll( onAllAlarms )
34+
console.log('settings:',d)
35+
maybeStartup()
36+
//chrome.alarms.getAll( onAllAlarms )
3537
}
3638
chrome.storage.local.get(null, settings_ready)
37-
function sendWSCAwakeMessage() {
39+
40+
function maybeStartup() {
3841
if (localOptions.optBackground && localOptions.optAutoStart) {
3942
console.log('background && autostart. wake up!')
4043
get_webapp(window.localOptions)
@@ -48,11 +51,11 @@ function sendWSCAwakeMessage() {
4851
function onAlarm( alarm ) {
4952
console.log('alarm fired',alarm)
5053
if (alarm.name == ALARMID) {
51-
sendWSCAwakeMessage()
54+
//sendWSCAwakeMessage()
5255
}
5356
}
5457

55-
chrome.alarms.onAlarm.addListener( onAlarm )
58+
//chrome.alarms.onAlarm.addListener( onAlarm )
5659
function backgroundSettingChange( opts ) {
5760
if (opts.optBackground !== undefined) {
5861
localOptions.optBackground = opts.optBackground
@@ -63,13 +66,15 @@ function backgroundSettingChange( opts ) {
6366
if (opts.optBackground !== undefined) {
6467
localOptions.optAutoStart = opts.optAutoStart
6568
}
69+
/*
6670
if (localOptions.optBackground && localOptions.optAutoStart) {
6771
chrome.alarms.getAll( onAllAlarms )
6872
} else {
6973
chrome.alarms.clearAll()
70-
}
74+
}*/
7175
}
7276
function onAllAlarms( alarms ) {
77+
return
7378
if (! localOptions.optBackground) {
7479
return
7580
}
@@ -127,10 +132,37 @@ function triggerKeepAwake() {
127132
xhr.send()
128133
}
129134

135+
chrome.sockets.tcpServer.onAccept.addListener(backgroundAccept)
136+
var bgacceptqueue = []
137+
var getting_settings = false
138+
function backgroundAccept(sockInfo) {
139+
if (window.webapp && webapp.started) {
140+
return
141+
}
142+
HADEVENT = true
143+
144+
bgacceptqueue.push(sockInfo)
145+
146+
if (getting_settings) return
147+
getting_settings = true
148+
chrome.storage.local.get(null, function(d) {
149+
console.log('got settings',d)
150+
console.log('starting')
151+
get_webapp(d).start( function(result) {
152+
console.log('started.')
153+
webapp.acceptQueue = bgacceptqueue
154+
bgacceptqueue = []
155+
webapp.processAcceptQueue()
156+
})
157+
})
158+
}
159+
130160
chrome.runtime.onSuspend.addListener( function(evt) {
131161
//createNotification("onSuspend")
132162
console.warn('onSuspend')
133-
163+
return
164+
165+
// using a persistent socket now...
134166
if (localOptions.optBackground) {
135167
triggerKeepAwake()
136168
} else {
@@ -153,7 +185,10 @@ function launch(launchData) {
153185

154186
var info = {type:'onLaunched',
155187
launchData: launchData}
156-
var opts = {id:'index'}
188+
var opts = {id:'index',
189+
outerBounds: { width: 410,
190+
height: 700 }
191+
}
157192
//var page = 'index.html'
158193
var page = 'polymer-ui/index.html'
159194
chrome.app.window.create(page,
@@ -252,8 +287,7 @@ function create_hidden() {
252287
})
253288
}
254289
var opts = {id:'hidden',
255-
hidden:true,
256-
290+
hidden:true
257291
}
258292

259293
chrome.app.window.create("hidden.html",
@@ -263,7 +297,7 @@ function create_hidden() {
263297
}
264298

265299
function window_closed(win) {
266-
console.log('window closed',win)
300+
console.log('main window closed')
267301
if (window.app) {
268302
if (app.opts && app.opts.optBackground) {
269303
setTimeout( function() {
@@ -289,7 +323,8 @@ window.reload = chrome.runtime.reload
289323

290324
setTimeout( function() {
291325
if (! HADEVENT) {
292-
console.log('background page was manually reloaded in devtools')
326+
console.log('background page was manually reloaded in devtools? or resumed from suspended state...')
327+
return
293328
var testimg = new Image();
294329
var triggered = false
295330
testimg.__defineGetter__('id', devtools_open)

common.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
(function() {
22

33
window.WSC = {store_id:"ofhbbkphhbklhfoeikjpcbhemlocgigb"}
4-
WSC.DEBUG = true
4+
WSC.DEBUG = false
5+
WSC.VERBOSE = false
56

67
function getchromeversion() {
78
var version

handlers.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,8 @@
231231
}
232232
}
233233
if (this.request.arguments && this.request.arguments.static == '1' ||
234-
this.request.arguments.static == 'true'
234+
this.request.arguments.static == 'true' ||
235+
this.app.opts.optStatic
235236
) {
236237
this.renderDirectoryListing(results)
237238
} else {
@@ -385,7 +386,6 @@
385386
}
386387
html.push('</ul></html>')
387388
this.setHeader('content-type','text/html; charset=utf-8')
388-
this.setHeader('test-foo-bar','999')
389389
this.write(html.join('\n'))
390390
},
391391
onReadEntry: function(evt) {

manifest.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,9 @@
1818
"unlimitedStorage",
1919
"storage",
2020
"notifications",
21+
"browser",
2122
"power",
22-
"system.network",
23+
"system.network",
2324
{"fileSystem":["write","directory","retainEntries"]}
2425
],
2526
"optional_permissions": [

polymer-ui/index.html

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ <h1 id="polymerWarning" style="display:none">ERROR: Polymer library not found. Y
5555
<!--paper-spinner active hidden$="[[!starting]]" id="status-spinner"></paper-spinner-->
5656
<h3>Web Server URL(s)</h3>
5757

58-
<ul>
58+
<ul style="-webkit-user-select:text">
5959
<template is="dom-repeat" items="{{interfaces}}">
6060
<li><a href="{{item.url}}" target="_blank">{{item.url}}</a> </li>
6161
</template>
@@ -82,14 +82,14 @@ <h4>Options (needs restart)</h4>
8282
<div>
8383
<paper-checkbox checked="{{optBackground}}">Run in background</paper-checkbox>
8484
</div>
85-
<div>
86-
<paper-checkbox disabled="{{!optBackground}}" checked="{{optAutoStart}}">Start automatically in background</paper-checkbox>
85+
<div style="margin-left:24px">
86+
<paper-checkbox disabled="{{!optBackground}}" checked="{{optAutoStart}}" id="start-background" on-click="onClickStartBackground">Start on login</paper-checkbox>
8787
</div>
8888
<div>
8989
<paper-checkbox checked="{{optAllInterfaces}}">Accessible on local network</paper-checkbox>
9090
</div>
91-
<div>
92-
<paper-checkbox disabled="{{!optAllInterfaces}}" checked="{{optDoPortMapping}}" >Accessible on internet</paper-checkbox>
91+
<div style="margin-left:24px">
92+
<paper-checkbox disabled="{{!optAllInterfaces}}" checked="{{optDoPortMapping}}" >Also on internet</paper-checkbox>
9393
</div>
9494
<div>
9595
<paper-checkbox checked="{{optPreventSleep}}" >Prevent computer from sleeping</paper-checkbox>
@@ -107,6 +107,32 @@ <h4>Options (needs restart)</h4>
107107
value="{{port}}">
108108
</paper-input>
109109
</div>
110+
111+
<div style="margin-bottom:1em">
112+
<a href="#" on-click="toggleShowAdvanced">
113+
<template is="dom-if" if="{{showAdvanced}}">
114+
Hide Advanced Settings
115+
</template>
116+
<template is="dom-if" if="{{!showAdvanced}}">
117+
Show Advanced Settings
118+
</template>
119+
</a>
120+
</div>
121+
122+
<template is="dom-if" if="{{showAdvanced}}">
123+
124+
<div>
125+
<paper-checkbox checked="{{optCORS}}" >Set CORS headers</paper-checkbox>
126+
</div>
127+
<div>
128+
<paper-checkbox checked="{{optIPV6}}" >Listen on IPV6</paper-checkbox>
129+
</div>
130+
<div>
131+
<paper-checkbox checked="{{optStatic}}" >Plain (static) files view</paper-checkbox>
132+
</div>
133+
134+
</template>
135+
110136
</paper-card>
111137
</template>
112138

polymer-ui/index.js

Lines changed: 71 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,8 @@ function create_polymer_elements() {
143143
Polymer({
144144
is: 'wsc-options',
145145
properties: {
146+
showAdvanced: { type: Boolean,
147+
value: false },
146148
port: { type: Number,
147149
value: webapp.port },
148150
optAllInterfaces: {
@@ -157,8 +159,19 @@ function create_polymer_elements() {
157159
},
158160
optIPV6: {
159161
type: Boolean,
162+
observer: 'optIPV6Change',
160163
value: appOptions.options['optIPV6']
161164
},
165+
optCORS: {
166+
type: Boolean,
167+
observer: 'optCORSChange',
168+
value: appOptions.options['optCORS']
169+
},
170+
optStatic: {
171+
type: Boolean,
172+
observer: 'optStaticChange',
173+
value: appOptions.options['optStatic']
174+
},
162175
optTryOtherPorts: {
163176
type: Boolean,
164177
value: false
@@ -192,6 +205,33 @@ function create_polymer_elements() {
192205
value: appOptions.options['optRenderIndex']
193206
}
194207
},
208+
optStaticChange: function(val) {
209+
var k = 'optStatic'
210+
this.updateAndSave(k,val)
211+
},
212+
optCORSChange: function(val) {
213+
var k = 'optCORS'
214+
this.updateAndSave(k,val)
215+
},
216+
optIPV6Change: function(val) {
217+
var k = 'optIPV6'
218+
this.updateAndSave(k,val)
219+
},
220+
updateAndSave: function(k,v) {
221+
console.log('update and save',k,v)
222+
webapp.updateOption(k,v)
223+
appOptions.set(k,v)
224+
},
225+
ready: function() {
226+
console.log('wsc-options ready')
227+
window.opts = this
228+
},
229+
attributeChanged: function(name, type) {
230+
console.log("attribute change",name,type)
231+
},
232+
propertyObserver: function() {
233+
console.log('property observer',arguments)
234+
},
195235
portmapChange: function(val) {
196236
console.log('persist setting portmapping',val)
197237
webapp.updateOption('optDoPortMapping',val)
@@ -203,6 +243,10 @@ function create_polymer_elements() {
203243
webapp.interfaces = []
204244
appOptions.set('optAllInterfaces',val)
205245
},
246+
toggleShowAdvanced: function(evt) {
247+
this.showAdvanced = ! this.showAdvanced
248+
evt.preventDefault()
249+
},
206250
preventSleepChange: function(val) {
207251
/*
208252
maybe make power an optional permission? only, it is automatically granted without user gesture...
@@ -214,14 +258,13 @@ function create_polymer_elements() {
214258
},
215259
autoStartChange: function(val) {
216260
console.log('persist setting autostart')
217-
webapp.opts.optAutoStart = val
218261
appOptions.set('optAutoStart', val)
219262
bg.backgroundSettingChange({'optAutoStart':val})
220263
},
221264
backgroundChange: function(val) {
222-
console.log('persist setting background')
223-
webapp.opts.optBackground = val
224-
appOptions.set('optBackground',val)
265+
console.log('background setting changed',val)
266+
webapp.updateOption('optBackground',val)
267+
appOptions.set('optBackground', val)
225268
bg.backgroundSettingChange({'optBackground':val})
226269
},
227270
optRenderIndexChange: function(val) {
@@ -236,6 +279,29 @@ function create_polymer_elements() {
236279
webapp.opts.port = port
237280
webapp.port = port
238281
appOptions.set('port',port)
239-
}
282+
},
283+
onClickStartBackground: function(evt) {
284+
var val = this.$$('#start-background').active
285+
if (val) {
286+
chrome.permissions.request({permissions:['background']}, function(result) {
287+
console.log('request perm bg',result)
288+
if (result) {
289+
success()
290+
}
291+
})
292+
} else {
293+
chrome.permissions.remove({permissions:['background']}, function(result) {
294+
console.log('drop perm bg',result)
295+
success()
296+
})
297+
}
298+
function success() {
299+
console.log('persist setting start in background',val)
300+
webapp.opts.optBackground = val
301+
appOptions.set('optBackground',val)
302+
bg.backgroundSettingChange({'optBackground':val})
303+
}
304+
}
305+
240306
})
241307
}

0 commit comments

Comments
 (0)