• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "ui/app_list/search_box_model.h"
6 
7 #include "base/metrics/histogram.h"
8 #include "ui/app_list/search_box_model_observer.h"
9 
10 namespace app_list {
11 
SpeechButtonProperty(const gfx::ImageSkia & on_icon,const base::string16 & on_tooltip,const gfx::ImageSkia & off_icon,const base::string16 & off_tooltip)12 SearchBoxModel::SpeechButtonProperty::SpeechButtonProperty(
13     const gfx::ImageSkia& on_icon,
14     const base::string16& on_tooltip,
15     const gfx::ImageSkia& off_icon,
16     const base::string16& off_tooltip)
17     : on_icon(on_icon),
18       on_tooltip(on_tooltip),
19       off_icon(off_icon),
20       off_tooltip(off_tooltip) {
21 }
22 
~SpeechButtonProperty()23 SearchBoxModel::SpeechButtonProperty::~SpeechButtonProperty() {
24 }
25 
SearchBoxModel()26 SearchBoxModel::SearchBoxModel() {
27 }
28 
~SearchBoxModel()29 SearchBoxModel::~SearchBoxModel() {
30 }
31 
SetIcon(const gfx::ImageSkia & icon)32 void SearchBoxModel::SetIcon(const gfx::ImageSkia& icon) {
33   icon_ = icon;
34   FOR_EACH_OBSERVER(SearchBoxModelObserver, observers_, IconChanged());
35 }
36 
SetSpeechRecognitionButton(scoped_ptr<SearchBoxModel::SpeechButtonProperty> speech_button)37 void SearchBoxModel::SetSpeechRecognitionButton(
38     scoped_ptr<SearchBoxModel::SpeechButtonProperty> speech_button) {
39   speech_button_ = speech_button.Pass();
40   FOR_EACH_OBSERVER(SearchBoxModelObserver,
41                     observers_,
42                     SpeechRecognitionButtonPropChanged());
43 }
44 
SetHintText(const base::string16 & hint_text)45 void SearchBoxModel::SetHintText(const base::string16& hint_text) {
46   if (hint_text_ == hint_text)
47     return;
48 
49   hint_text_ = hint_text;
50   FOR_EACH_OBSERVER(SearchBoxModelObserver, observers_, HintTextChanged());
51 }
52 
SetSelectionModel(const gfx::SelectionModel & sel)53 void SearchBoxModel::SetSelectionModel(const gfx::SelectionModel& sel) {
54   if (selection_model_ == sel)
55     return;
56 
57   selection_model_ = sel;
58   FOR_EACH_OBSERVER(SearchBoxModelObserver,
59                     observers_,
60                     SelectionModelChanged());
61 }
62 
SetText(const base::string16 & text)63 void SearchBoxModel::SetText(const base::string16& text) {
64   if (text_ == text)
65     return;
66 
67   // Log that a new search has been commenced whenever the text box text
68   // transitions from empty to non-empty.
69   if (text_.empty() && !text.empty()) {
70     UMA_HISTOGRAM_ENUMERATION("Apps.AppListSearchCommenced", 1, 2);
71   }
72   text_ = text;
73   FOR_EACH_OBSERVER(SearchBoxModelObserver, observers_, TextChanged());
74 }
75 
AddObserver(SearchBoxModelObserver * observer)76 void SearchBoxModel::AddObserver(SearchBoxModelObserver* observer) {
77   observers_.AddObserver(observer);
78 }
79 
RemoveObserver(SearchBoxModelObserver * observer)80 void SearchBoxModel::RemoveObserver(SearchBoxModelObserver* observer) {
81   observers_.RemoveObserver(observer);
82 }
83 
84 }  // namespace app_list
85