OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 /** | 5 /** |
6 * @fileoverview 'settings-cups-add-printer-dialog' includes multiple dialogs to | 6 * @fileoverview 'settings-cups-add-printer-dialog' includes multiple dialogs to |
7 * set up a new CUPS printer. | 7 * set up a new CUPS printer. |
8 * Subdialogs include: | 8 * Subdialogs include: |
9 * - 'add-printer-discovery-dialog' is a dialog showing discovered printers on | 9 * - 'add-printer-discovery-dialog' is a dialog showing discovered printers on |
10 * the network that are available for setup. | 10 * the network that are available for setup. |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
95 this.$$('add-printer-dialog').close(); | 95 this.$$('add-printer-dialog').close(); |
96 this.fire('open-discovery-printers-dialog'); | 96 this.fire('open-discovery-printers-dialog'); |
97 }, | 97 }, |
98 | 98 |
99 /** @private */ | 99 /** @private */ |
100 onCancelTap_: function() { | 100 onCancelTap_: function() { |
101 this.$$('add-printer-dialog').close(); | 101 this.$$('add-printer-dialog').close(); |
102 }, | 102 }, |
103 | 103 |
104 /** @private */ | 104 /** @private */ |
105 switchToManufacturerDialog_: function() { | 105 switchToConfiguringDialog_: function() { |
106 this.$$('add-printer-dialog').close(); | 106 this.$$('add-printer-dialog').close(); |
107 this.fire('open-manufacturer-model-dialog'); | 107 this.fire('open-configuring-printer-dialog'); |
108 }, | 108 }, |
109 | 109 |
110 /** @private */ | 110 /** @private */ |
111 onAddressChanged_: function() { | 111 onAddressChanged_: function() { |
112 this.$.searchInProgress.hidden = false; | 112 // TODO(xdai): Check if the printer address exists and then show the |
113 this.$.searchFound.hidden = true; | 113 // corresponding message after the API is ready. |
114 this.$.searchNotFound.hidden = true; | 114 // The format of address is: ip-address-or-hostname:port-number. |
115 | |
116 var value = this.$.printerAddressInput.value; | |
117 if (this.isValidIpAddress_(value)) { | |
118 // TODO(xdai): Check if the printer address exists after the API is ready. | |
119 this.$.searchInProgress.hidden = true; | |
120 this.$.searchFound.hidden = false; | |
121 this.$.searchNotFound.hidden = true; | |
122 } else { | |
123 this.$.searchInProgress.hidden = true; | |
124 this.$.searchFound.hidden = true; | |
125 this.$.searchNotFound.hidden = false; | |
126 } | |
127 }, | |
128 | |
129 /** | |
130 * @param {string} ip | |
131 * @return {boolean} | |
132 * @private | |
133 */ | |
134 isValidIpAddress_: function(ip) { | |
135 var addressRegex = RegExp('^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.' + | |
136 '([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.' + | |
137 '([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.' + | |
138 '([01]?\\d\\d?|2[0-4]\\d|25[0-5])$'); | |
139 return addressRegex.test(ip); | |
140 }, | |
141 | |
142 /** | |
143 * @param {string} printerName | |
144 * @param {string} printerAddress | |
145 * @return {boolean} | |
146 * @private | |
147 */ | |
148 addPrinterNotAllowed_: function(printerName, printerAddress) { | |
149 return !printerName || !printerAddress || | |
150 !this.isValidIpAddress_(printerAddress); | |
151 }, | 115 }, |
152 }); | 116 }); |
153 | 117 |
154 Polymer({ | 118 Polymer({ |
155 is: 'add-printer-manufacturer-model-dialog', | 119 is: 'add-printer-manufacturer-model-dialog', |
156 | 120 |
157 properties: { | 121 properties: { |
158 /** @type {!CupsPrinterInfo} */ | 122 /** @type {!CupsPrinterInfo} */ |
159 newPrinter: { | 123 newPrinter: { |
160 type: Object, | 124 type: Object, |
161 notify: true, | 125 notify: true, |
162 }, | 126 }, |
163 | 127 |
164 /** @type {!Array<string>} */ | 128 /** @type {!Array<string>} */ |
165 manufacturerList: { | 129 manufacturerList: { |
166 type: Array, | 130 type: Array, |
167 }, | 131 }, |
168 | 132 |
169 /** @type {!Array<string>} */ | 133 /** @type {!Array<string>} */ |
170 modelList: { | 134 modelList: { |
171 type: Array, | 135 type: Array, |
172 }, | 136 }, |
| 137 |
| 138 setupFailed: { |
| 139 type: Boolean, |
| 140 value: false, |
| 141 }, |
173 }, | 142 }, |
174 | 143 |
175 observers: [ | 144 observers: [ |
176 'selectedManufacturerChanged_(newPrinter.printerManufacturer)', | 145 'selectedManufacturerChanged_(newPrinter.printerManufacturer)', |
177 ], | 146 ], |
178 | 147 |
179 /** @override */ | 148 /** @override */ |
180 ready: function() { | 149 ready: function() { |
181 // TODO(xdai): Get available manufacturerList after the API is ready. | 150 // TODO(xdai): Get available manufacturerList after the API is ready. |
182 }, | 151 }, |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
240 attached: function() { | 209 attached: function() { |
241 this.$.configuringMessage.textContent = loadTimeData.getStringF( | 210 this.$.configuringMessage.textContent = loadTimeData.getStringF( |
242 'printerConfiguringMessage', this.printerName); | 211 'printerConfiguringMessage', this.printerName); |
243 }, | 212 }, |
244 | 213 |
245 /** @private */ | 214 /** @private */ |
246 onCancelConfiguringTap_: function() { | 215 onCancelConfiguringTap_: function() { |
247 this.$$('add-printer-dialog').close(); | 216 this.$$('add-printer-dialog').close(); |
248 this.fire('configuring-dialog-closed'); | 217 this.fire('configuring-dialog-closed'); |
249 }, | 218 }, |
| 219 |
| 220 close: function() { |
| 221 this.$$('add-printer-dialog').close(); |
| 222 }, |
250 }); | 223 }); |
251 | 224 |
252 Polymer({ | 225 Polymer({ |
253 is: 'settings-cups-add-printer-dialog', | 226 is: 'settings-cups-add-printer-dialog', |
254 | 227 |
| 228 behaviors: [WebUIListenerBehavior], |
| 229 |
255 properties: { | 230 properties: { |
256 /** @type {!CupsPrinterInfo} */ | 231 /** @type {!CupsPrinterInfo} */ |
257 selectedPrinter: { | 232 selectedPrinter: { |
258 type: Object, | 233 type: Object, |
259 }, | 234 }, |
260 | 235 |
261 /** @type {!CupsPrinterInfo} */ | 236 /** @type {!CupsPrinterInfo} */ |
262 newPrinter: { | 237 newPrinter: { |
263 type: Object, | 238 type: Object, |
264 }, | 239 }, |
265 | 240 |
| 241 /** @type {boolean} whether the new printer setup is failed. */ |
| 242 setupFailed: { |
| 243 type: Boolean, |
| 244 value: false, |
| 245 }, |
| 246 |
266 /** @private {string} */ | 247 /** @private {string} */ |
267 previousDialog_: String, | 248 previousDialog_: String, |
268 | 249 |
269 /** @private {string} */ | 250 /** @private {string} */ |
270 currentDialog_: String, | 251 currentDialog_: String, |
271 | 252 |
272 /** @private {boolean} */ | 253 /** @private {boolean} */ |
273 showDiscoveryDialog_: Boolean, | 254 showDiscoveryDialog_: Boolean, |
274 | 255 |
275 /** @private {boolean} */ | 256 /** @private {boolean} */ |
276 showManuallyAddDialog_: Boolean, | 257 showManuallyAddDialog_: Boolean, |
277 | 258 |
278 /** @private {boolean} */ | 259 /** @private {boolean} */ |
279 showConfiguringDialog_: Boolean, | 260 showConfiguringDialog_: Boolean, |
280 | 261 |
281 /** @private {boolean} */ | 262 /** @private {boolean} */ |
282 showManufacturerDialog_: Boolean, | 263 showManufacturerDialog_: Boolean, |
283 }, | 264 }, |
284 | 265 |
285 listeners: { | 266 listeners: { |
286 'configuring-dialog-closed': 'configuringDialogClosed_', | 267 'configuring-dialog-closed': 'configuringDialogClosed_', |
287 'open-manually-add-printer-dialog': 'openManuallyAddPrinterDialog_', | 268 'open-manually-add-printer-dialog': 'openManuallyAddPrinterDialog_', |
288 'open-configuring-printer-dialog': 'openConfiguringPrinterDialog_', | 269 'open-configuring-printer-dialog': 'openConfiguringPrinterDialog_', |
289 'open-discovery-printers-dialog': 'openDiscoveryPrintersDialog_', | 270 'open-discovery-printers-dialog': 'openDiscoveryPrintersDialog_', |
290 'open-manufacturer-model-dialog': 'openManufacturerModelDialog_', | 271 'open-manufacturer-model-dialog': 'openManufacturerModelDialog_', |
291 }, | 272 }, |
292 | 273 |
| 274 /** @override */ |
| 275 ready: function() { |
| 276 this.addWebUIListener('on-add-cups-printer', this.onAddPrinter_.bind(this)); |
| 277 }, |
| 278 |
293 /** Opens the Add printer discovery dialog. */ | 279 /** Opens the Add printer discovery dialog. */ |
294 open: function() { | 280 open: function() { |
| 281 this.resetData_(); |
295 this.switchDialog_('', AddPrinterDialogs.DISCOVERY, 'showDiscoveryDialog_'); | 282 this.switchDialog_('', AddPrinterDialogs.DISCOVERY, 'showDiscoveryDialog_'); |
296 }, | 283 }, |
297 | 284 |
| 285 /** |
| 286 * Reset all the printer data in the Add printer flow. |
| 287 * @private |
| 288 */ |
| 289 resetData_: function() { |
| 290 if (this.selectedPrinter) |
| 291 this.selectedPrinter = this.getEmptyPrinter_(); |
| 292 if (this.newPrinter) |
| 293 this.newPrinter = this.getEmptyPrinter_(); |
| 294 this.setupFailed = false; |
| 295 }, |
| 296 |
| 297 /** |
| 298 * @return {!CupsPrinterInfo} |
| 299 * @private |
| 300 */ |
| 301 getEmptyPrinter_: function() { |
| 302 return { |
| 303 printerAddress: '', |
| 304 printerDescription: '', |
| 305 printerId: '', |
| 306 printerManufacturer: '', |
| 307 printerModel: '', |
| 308 printerName: '', |
| 309 printerPPDPath: '', |
| 310 printerProtocol: 'ipp', |
| 311 printerQueue: '', |
| 312 printerStatus: '', |
| 313 }; |
| 314 }, |
| 315 |
298 /** @private */ | 316 /** @private */ |
299 openManuallyAddPrinterDialog_: function() { | 317 openManuallyAddPrinterDialog_: function() { |
300 this.switchDialog_(this.currentDialog_, AddPrinterDialogs.MANUALLY, | 318 this.switchDialog_(this.currentDialog_, AddPrinterDialogs.MANUALLY, |
301 'showManuallyAddDialog_'); | 319 'showManuallyAddDialog_'); |
302 }, | 320 }, |
303 | 321 |
304 /** @private */ | 322 /** @private */ |
305 openDiscoveryPrintersDialog_: function() { | 323 openDiscoveryPrintersDialog_: function() { |
306 this.switchDialog_(this.currentDialog_, AddPrinterDialogs.DISCOVERY, | 324 this.switchDialog_(this.currentDialog_, AddPrinterDialogs.DISCOVERY, |
307 'showDiscoveryDialog_'); | 325 'showDiscoveryDialog_'); |
308 }, | 326 }, |
309 | 327 |
310 /** @private */ | 328 /** @private */ |
311 openConfiguringPrinterDialog_: function() { | 329 openConfiguringPrinterDialog_: function() { |
312 this.switchDialog_(this.currentDialog_, AddPrinterDialogs.CONFIGURING, | 330 this.switchDialog_(this.currentDialog_, AddPrinterDialogs.CONFIGURING, |
313 'showConfiguringDialog_'); | 331 'showConfiguringDialog_'); |
| 332 settings.CupsPrintersBrowserProxyImpl.getInstance(). |
| 333 addCupsPrinter(this.newPrinter); |
314 }, | 334 }, |
315 | 335 |
316 /** @private */ | 336 /** @private */ |
317 openManufacturerModelDialog_: function() { | 337 openManufacturerModelDialog_: function() { |
318 this.switchDialog_(this.currentDialog_, AddPrinterDialogs.MANUFACTURER, | 338 this.switchDialog_(this.currentDialog_, AddPrinterDialogs.MANUFACTURER, |
319 'showManufacturerDialog_'); | 339 'showManufacturerDialog_'); |
320 }, | 340 }, |
321 | 341 |
322 /** @private */ | 342 /** @private */ |
323 configuringDialogClosed_: function() { | 343 configuringDialogClosed_: function() { |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
360 */ | 380 */ |
361 getConfiguringPrinterName_: function() { | 381 getConfiguringPrinterName_: function() { |
362 if (this.previousDialog_ == AddPrinterDialogs.DISCOVERY) | 382 if (this.previousDialog_ == AddPrinterDialogs.DISCOVERY) |
363 return this.selectedPrinter.printerName; | 383 return this.selectedPrinter.printerName; |
364 if (this.previousDialog_ == AddPrinterDialogs.MANUALLY || | 384 if (this.previousDialog_ == AddPrinterDialogs.MANUALLY || |
365 this.previousDialog_ == AddPrinterDialogs.MANUFACTURER) { | 385 this.previousDialog_ == AddPrinterDialogs.MANUFACTURER) { |
366 return this.newPrinter.printerName; | 386 return this.newPrinter.printerName; |
367 } | 387 } |
368 return ''; | 388 return ''; |
369 }, | 389 }, |
| 390 |
| 391 /** |
| 392 * @param {boolean} success |
| 393 * @param {string} printerName |
| 394 * @private |
| 395 */ |
| 396 onAddPrinter_: function(success, printerName) { |
| 397 this.$$('add-printer-configuring-dialog').close(); |
| 398 if (success) |
| 399 return; |
| 400 |
| 401 if (this.previousDialog_ == AddPrinterDialogs.MANUFACTURER) |
| 402 this.setupFailed = true; |
| 403 this.switchDialog_(this.currentDialog_, AddPrinterDialogs.MANUFACTURER, |
| 404 'showManufacturerDialog_'); |
| 405 }, |
370 }); | 406 }); |
OLD | NEW |