OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 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 #include "ash/system/tray_caps_lock.h" | 5 #include "ash/system/tray_caps_lock.h" |
6 | 6 |
7 #include "ash/shell.h" | 7 #include "ash/shell.h" |
8 #include "ash/system/tray/system_tray_delegate.h" | 8 #include "ash/system/tray/system_tray_delegate.h" |
9 #include "ash/system/tray/tray_constants.h" | 9 #include "ash/system/tray/tray_constants.h" |
10 #include "ash/system/tray/tray_views.h" | 10 #include "ash/system/tray/tray_views.h" |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
91 } | 91 } |
92 | 92 |
93 views::Label* text_label_; | 93 views::Label* text_label_; |
94 views::Label* shortcut_label_; | 94 views::Label* shortcut_label_; |
95 | 95 |
96 DISALLOW_COPY_AND_ASSIGN(CapsLockDefaultView); | 96 DISALLOW_COPY_AND_ASSIGN(CapsLockDefaultView); |
97 }; | 97 }; |
98 | 98 |
99 TrayCapsLock::TrayCapsLock() | 99 TrayCapsLock::TrayCapsLock() |
100 : TrayImageItem(IDR_AURA_UBER_TRAY_CAPS_LOCK), | 100 : TrayImageItem(IDR_AURA_UBER_TRAY_CAPS_LOCK), |
| 101 default_(NULL), |
| 102 detailed_(NULL), |
101 search_mapped_to_caps_lock_(false), | 103 search_mapped_to_caps_lock_(false), |
102 caps_lock_enabled_( | 104 caps_lock_enabled_( |
103 Shell::GetInstance()->tray_delegate()->IsCapsLockOn()) { | 105 Shell::GetInstance()->tray_delegate()->IsCapsLockOn()) { |
104 } | 106 } |
105 | 107 |
106 TrayCapsLock::~TrayCapsLock() {} | 108 TrayCapsLock::~TrayCapsLock() {} |
107 | 109 |
108 bool TrayCapsLock::GetInitialVisibility() { | 110 bool TrayCapsLock::GetInitialVisibility() { |
109 return Shell::GetInstance()->tray_delegate()->IsCapsLockOn(); | 111 return Shell::GetInstance()->tray_delegate()->IsCapsLockOn(); |
110 } | 112 } |
111 | 113 |
112 views::View* TrayCapsLock::CreateDefaultView(user::LoginStatus status) { | 114 views::View* TrayCapsLock::CreateDefaultView(user::LoginStatus status) { |
113 if (!caps_lock_enabled_) | 115 if (!caps_lock_enabled_) |
114 return NULL; | 116 return NULL; |
115 default_.reset(new CapsLockDefaultView); | 117 DCHECK(default_ == NULL); |
| 118 default_ = new CapsLockDefaultView; |
116 default_->Update(caps_lock_enabled_, search_mapped_to_caps_lock_); | 119 default_->Update(caps_lock_enabled_, search_mapped_to_caps_lock_); |
117 return default_.get(); | 120 return default_; |
118 } | 121 } |
119 | 122 |
120 views::View* TrayCapsLock::CreateDetailedView(user::LoginStatus status) { | 123 views::View* TrayCapsLock::CreateDetailedView(user::LoginStatus status) { |
121 detailed_.reset(new views::View); | 124 DCHECK(detailed_ == NULL); |
| 125 detailed_ = new views::View; |
122 | 126 |
123 detailed_->SetLayoutManager(new | 127 detailed_->SetLayoutManager(new |
124 views::BoxLayout(views::BoxLayout::kHorizontal, | 128 views::BoxLayout(views::BoxLayout::kHorizontal, |
125 kTrayPopupPaddingHorizontal, 10, kTrayPopupPaddingBetweenItems)); | 129 kTrayPopupPaddingHorizontal, 10, kTrayPopupPaddingBetweenItems)); |
126 | 130 |
127 ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance(); | 131 ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance(); |
128 views::ImageView* image = new views::ImageView; | 132 views::ImageView* image = new views::ImageView; |
129 image->SetImage(bundle.GetImageNamed(IDR_AURA_UBER_TRAY_CAPS_LOCK_DARK). | 133 image->SetImage(bundle.GetImageNamed(IDR_AURA_UBER_TRAY_CAPS_LOCK_DARK). |
130 ToSkBitmap()); | 134 ToSkBitmap()); |
131 | 135 |
132 detailed_->AddChildView(image); | 136 detailed_->AddChildView(image); |
133 | 137 |
134 const int string_id = search_mapped_to_caps_lock_ ? | 138 const int string_id = search_mapped_to_caps_lock_ ? |
135 IDS_ASH_STATUS_TRAY_CAPS_LOCK_ENABLED_PRESS_SEARCH : | 139 IDS_ASH_STATUS_TRAY_CAPS_LOCK_ENABLED_PRESS_SEARCH : |
136 IDS_ASH_STATUS_TRAY_CAPS_LOCK_ENABLED_PRESS_SHIFT_AND_SEARCH_KEYS; | 140 IDS_ASH_STATUS_TRAY_CAPS_LOCK_ENABLED_PRESS_SHIFT_AND_SEARCH_KEYS; |
137 detailed_->AddChildView( | 141 detailed_->AddChildView( |
138 new views::Label(bundle.GetLocalizedString(string_id))); | 142 new views::Label(bundle.GetLocalizedString(string_id))); |
139 | 143 |
140 return detailed_.get(); | 144 return detailed_; |
141 } | 145 } |
142 | 146 |
143 void TrayCapsLock::DestroyDefaultView() { | 147 void TrayCapsLock::DestroyDefaultView() { |
144 default_.reset(); | 148 default_ = NULL; |
145 } | 149 } |
146 | 150 |
147 void TrayCapsLock::DestroyDetailedView() { | 151 void TrayCapsLock::DestroyDetailedView() { |
148 detailed_.reset(); | 152 detailed_ = NULL; |
149 } | 153 } |
150 | 154 |
151 void TrayCapsLock::OnCapsLockChanged(bool enabled, | 155 void TrayCapsLock::OnCapsLockChanged(bool enabled, |
152 bool search_mapped_to_caps_lock) { | 156 bool search_mapped_to_caps_lock) { |
153 if (tray_view()) | 157 if (tray_view()) |
154 tray_view()->SetVisible(enabled); | 158 tray_view()->SetVisible(enabled); |
155 | 159 |
156 caps_lock_enabled_ = enabled; | 160 caps_lock_enabled_ = enabled; |
157 search_mapped_to_caps_lock_ = search_mapped_to_caps_lock; | 161 search_mapped_to_caps_lock_ = search_mapped_to_caps_lock; |
158 | 162 |
159 if (default_.get()) { | 163 if (default_) { |
160 default_->Update(enabled, search_mapped_to_caps_lock); | 164 default_->Update(enabled, search_mapped_to_caps_lock); |
161 } else { | 165 } else { |
162 if (enabled) | 166 if (enabled) |
163 PopupDetailedView(kTrayPopupAutoCloseDelayForTextInSeconds, false); | 167 PopupDetailedView(kTrayPopupAutoCloseDelayForTextInSeconds, false); |
164 else if (detailed_.get()) | 168 else if (detailed_) |
165 detailed_->GetWidget()->Close(); | 169 detailed_->GetWidget()->Close(); |
166 } | 170 } |
167 } | 171 } |
168 | 172 |
169 } // namespace internal | 173 } // namespace internal |
170 } // namespace ash | 174 } // namespace ash |
OLD | NEW |