1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
/**
* @fileoverview
* 'settings-manage-profile' is the settings subpage containing controls to
* edit a profile's name, icon, and desktop shortcut.
*/
Polymer({
is: 'settings-manage-profile',
behaviors: [WebUIListenerBehavior, settings.RouteObserverBehavior],
properties: {
/**
* The currently selected profile icon URL. May be a data URL.
*/
profileIconUrl: String,
/**
* The current profile name.
*/
profileName: String,
/**
* The available icons for selection.
* @type {!Array<string>}
*/
availableIcons: {
type: Array,
value: function() { return []; },
},
/**
* The current sync status.
* @type {?settings.SyncStatus}
*/
syncStatus: Object,
/**
* @private {!settings.ManageProfileBrowserProxy}
*/
browserProxy_: {
type: Object,
value: function() {
return settings.ManageProfileBrowserProxyImpl.getInstance();
},
},
},
/** @override */
attached: function() {
var setIcons = function(icons) {
this.availableIcons = icons;
}.bind(this);
this.addWebUIListener('available-icons-changed', setIcons);
this.browserProxy_.getAvailableIcons().then(setIcons);
},
/** @protected */
currentRouteChanged: function() {
if (settings.getCurrentRoute() == settings.Route.MANAGE_PROFILE)
this.$.name.value = this.profileName;
},
/**
* Handler for when the profile name field is changed, then blurred.
* @private
* @param {!Event} event
*/
onProfileNameChanged_: function(event) {
if (event.target.invalid)
return;
this.browserProxy_.setProfileIconAndName(this.profileIconUrl,
event.target.value);
},
/**
* Handler for when an avatar is activated.
* @param {!Event} event
* @private
*/
onIconActivate_: function(event) {
this.browserProxy_.setProfileIconAndName(event.detail.selected,
this.profileName);
},
/**
* @param {?settings.SyncStatus} syncStatus
* @return {boolean} Whether the profile name field is disabled.
* @private
*/
isProfileNameDisabled_: function(syncStatus) {
return !!syncStatus.supervisedUser && !syncStatus.childUser;
},
});
|