Index: third_party/google_input_tools/src/chrome/os/inputview/elements/content/voiceview.js |
diff --git a/third_party/google_input_tools/src/chrome/os/inputview/elements/content/voiceview.js b/third_party/google_input_tools/src/chrome/os/inputview/elements/content/voiceview.js |
index 7a8907eb24a2c2b10b0c8e1e0915f2646029c09b..4a36a989aba41391e645570cbce4ee27bad1999b 100644 |
--- a/third_party/google_input_tools/src/chrome/os/inputview/elements/content/voiceview.js |
+++ b/third_party/google_input_tools/src/chrome/os/inputview/elements/content/voiceview.js |
@@ -13,17 +13,17 @@ |
// |
goog.provide('i18n.input.chrome.inputview.elements.content.VoiceView'); |
+goog.require('goog.array'); |
goog.require('goog.asserts'); |
goog.require('goog.async.Delay'); |
goog.require('goog.dom.TagName'); |
goog.require('goog.dom.classlist'); |
+goog.require('goog.events.EventType'); |
goog.require('goog.style'); |
goog.require('i18n.input.chrome.inputview.Css'); |
goog.require('i18n.input.chrome.inputview.elements.Element'); |
goog.require('i18n.input.chrome.inputview.elements.ElementType'); |
-goog.require('i18n.input.chrome.inputview.elements.content.FunctionalKey'); |
goog.require('i18n.input.chrome.message.Name'); |
-goog.require('i18n.input.chrome.message.Type'); |
goog.require('i18n.input.chrome.sounds.Sounds'); |
@@ -107,11 +107,11 @@ VoiceView.prototype.privacyDiv_; |
/** |
- * The confirm button of privacy information. |
+ * The "got it" confirm span for privacy info. |
* |
- * @private {!FunctionalKey} |
+ * @private {!Element} |
*/ |
-VoiceView.prototype.confirmBtn_; |
+VoiceView.prototype.confirmSpan_; |
/** @override */ |
@@ -136,13 +136,14 @@ VoiceView.prototype.createDom = function() { |
this.privacyDiv_ = dom.createDom(TagName.DIV, |
Css.VOICE_PRIVACY_INFO); |
- var textDiv = dom.createDom(TagName.DIV, Css.VOICE_PRIVACY_TEXT); |
+ var textDiv = dom.createDom(TagName.SPAN); |
dom.setTextContent(textDiv, |
chrome.i18n.getMessage('VOICE_PRIVACY_INFO')); |
dom.appendChild(this.privacyDiv_, textDiv); |
- this.confirmBtn_ = new FunctionalKey('', ElementType.VOICE_PRIVACY_GOT_IT, |
- chrome.i18n.getMessage('GOT_IT'), ''); |
- this.confirmBtn_.render(this.privacyDiv_); |
+ this.confirmSpan_ = dom.createDom(goog.dom.TagName.SPAN, |
+ Css.VOICE_GOT_IT); |
+ dom.setTextContent(this.confirmSpan_, chrome.i18n.getMessage('GOT_IT')); |
+ dom.appendChild(this.privacyDiv_, this.confirmSpan_); |
dom.appendChild(elem, this.privacyDiv_); |
// Shows or hides the privacy information. |
@@ -158,10 +159,9 @@ VoiceView.prototype.createDom = function() { |
/** @override */ |
VoiceView.prototype.enterDocument = function() { |
goog.base(this, 'enterDocument'); |
- this.getHandler().listen(this.adapter_, Type.VOICE_PRIVACY_GOT_IT, |
+ this.getHandler().listen(this.confirmSpan_, |
+ [goog.events.EventType.CLICK, goog.events.EventType.TOUCHEND], |
this.onConfirmPrivacyInfo_); |
- |
- |
}; |
@@ -175,7 +175,7 @@ VoiceView.prototype.start = function() { |
} |
if (this.isPrivacyAllowed_) { |
this.adapter_.sendVoiceViewStateChange(true); |
- this.animator_.start(); |
+ this.animator_.start(600); |
} |
this.setVisible(true); |
}; |
@@ -185,6 +185,12 @@ VoiceView.prototype.start = function() { |
* Stop recognition. |
*/ |
VoiceView.prototype.stop = function() { |
+ // TODO(wuyingbing) This is a hack. Since "got it" link is a raw element. |
+ // Click it will fire touch event then pass to controller to call stop. |
+ // So stop it here. In future, should wrap "got it" link as content.Element. |
+ if (!this.isPrivacyAllowed_) { |
+ return; |
+ } |
// invisible -> visible |
if (this.isVisible()) { |
this.soundController_.playSound(Sounds.VOICE_RECOG_END, true); |
@@ -197,15 +203,27 @@ VoiceView.prototype.stop = function() { |
/** @override */ |
VoiceView.prototype.setVisible = function(visible) { |
VoiceView.base(this, 'setVisible', visible); |
+ var elem = this.getElement(); |
+ goog.style.setElementShown(elem, true); |
+ elem.style.visibility = visible ? 'visible' : 'hidden'; |
+ elem.style.transition = visible ? '' : 'visibility 0.1s ease 0.4s'; |
if (visible) { |
- goog.style.setElementShown(this.voicePanel_, true); |
+ this.voicePanel_.style.transform = 'scale(1)'; |
+ this.voicePanel_.style.transition = 'transform 0.4s ease'; |
goog.dom.classlist.add(this.maskElem_, Css.VOICE_MASK_OPACITY); |
goog.style.setElementShown(this.privacyDiv_, true); |
} else { |
goog.dom.classlist.remove(this.maskElem_, Css.VOICE_MASK_OPACITY); |
- goog.style.setElementShown(this.voicePanel_, false); |
+ this.voicePanel_.style.transform = 'scale(0)'; |
+ this.voicePanel_.style.transition = 'transform 0.4s ease'; |
+ this.levelElement_.style.transform = 'scale(0)'; |
goog.style.setElementShown(this.privacyDiv_, false); |
} |
+ var enterKeys = this.getDomHelper().getElementsByClass(Css.ENTER_ICON); |
+ var stylestr = 'grayscale(' + (visible ? 1 : 0) + ')'; |
+ goog.array.forEach(enterKeys, function(key) { |
+ key.style.webkitFilter = stylestr; |
+ }); |
this.resize(this.width, this.height); |
}; |
@@ -220,7 +238,6 @@ VoiceView.prototype.resize = function(width, height) { |
Math.round((height - size.height) / 2) + 'px'; |
this.privacyDiv_.style.left = |
Math.round((width - size.width) / 2) + 'px'; |
- this.confirmBtn_.resize(100, 60); |
}; |
@@ -251,7 +268,7 @@ VoiceView.prototype.onConfirmPrivacyInfo_ = function() { |
localStorage.setItem(Name.VOICE_PRIVACY_INFO, 'true'); |
this.isPrivacyAllowed_ = true; |
this.adapter_.sendVoiceViewStateChange(true); |
- this.animator_.start(); |
+ this.animator_.start(200); |
this.soundController_.playSound(Sounds.VOICE_RECOG_START, true); |
goog.dom.classlist.add(this.privacyDiv_, Css.HANDWRITING_PRIVACY_INFO_HIDDEN); |
goog.dom.classlist.remove(this.maskElem_, Css.VOICE_OPACITY_NONE); |