OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "chrome/browser/ui/views/website_settings/chooser_bubble_ui_view.h" | 5 #include "chrome/browser/ui/views/website_settings/chooser_bubble_ui_view.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/macros.h" | 9 #include "base/macros.h" |
10 #include "base/prefs/pref_service.h" | 10 #include "base/prefs/pref_service.h" |
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
115 class ChooserTableModel : public ui::TableModel, | 115 class ChooserTableModel : public ui::TableModel, |
116 public ChooserBubbleDelegate::Observer { | 116 public ChooserBubbleDelegate::Observer { |
117 public: | 117 public: |
118 explicit ChooserTableModel(ChooserBubbleDelegate* chooser_bubble_delegate) | 118 explicit ChooserTableModel(ChooserBubbleDelegate* chooser_bubble_delegate) |
119 : observer_(nullptr), chooser_bubble_delegate_(chooser_bubble_delegate) { | 119 : observer_(nullptr), chooser_bubble_delegate_(chooser_bubble_delegate) { |
120 chooser_bubble_delegate_->set_observer(this); | 120 chooser_bubble_delegate_->set_observer(this); |
121 } | 121 } |
122 | 122 |
123 // ui::TableModel: | 123 // ui::TableModel: |
124 int RowCount() override { | 124 int RowCount() override { |
125 const std::vector<base::string16>& device_names = | 125 size_t num_options = chooser_bubble_delegate_->NumOptions(); |
126 chooser_bubble_delegate_->GetOptions(); | 126 // Here it returns 1 when there is no device. In this case, the |
127 if (device_names.empty()) { | 127 // table view still needs to display a text message saying no |
128 // Here it returns 1 when there is no device. In this case, the | 128 // devices found, so the number of rows is 1. |
129 // table view still needs to display a text message saying no | 129 return num_options == 0 ? 1 : static_cast<int>(num_options); |
130 // devices found, so the number of rows is 1. | |
131 return 1; | |
132 } else { | |
133 return static_cast<int>(device_names.size()); | |
134 } | |
135 } | 130 } |
136 | 131 |
137 // ui::TableModel: | 132 // ui::TableModel: |
138 base::string16 GetText(int row, int column_id) override { | 133 base::string16 GetText(int row, int column_id) override { |
139 const std::vector<base::string16>& device_names = | 134 size_t num_options = chooser_bubble_delegate_->NumOptions(); |
140 chooser_bubble_delegate_->GetOptions(); | 135 if (num_options == 0) { |
141 if (device_names.empty()) { | |
142 DCHECK(row == 0); | 136 DCHECK(row == 0); |
143 return l10n_util::GetStringUTF16( | 137 return l10n_util::GetStringUTF16( |
144 IDS_CHOOSER_BUBBLE_NO_DEVICES_FOUND_PROMPT); | 138 IDS_CHOOSER_BUBBLE_NO_DEVICES_FOUND_PROMPT); |
145 } else if (row >= 0 && row < static_cast<int>(device_names.size())) { | 139 } else if (row >= 0 && row < static_cast<int>(num_options)) { |
146 return device_names[row]; | 140 return chooser_bubble_delegate_->GetOption(static_cast<size_t>(row)); |
147 } else { | 141 } else { |
148 NOTREACHED(); | 142 NOTREACHED(); |
149 return base::string16(); | 143 return base::string16(); |
150 } | 144 } |
151 } | 145 } |
152 | 146 |
153 // ui::TableModel: | 147 // ui::TableModel: |
154 void SetObserver(ui::TableModelObserver* observer) override { | 148 void SetObserver(ui::TableModelObserver* observer) override { |
155 observer_ = observer; | 149 observer_ = observer; |
156 } | 150 } |
157 | 151 |
158 // ChooserOptions::Observer: | 152 // ChooserOptions::Observer: |
159 void OnOptionsInitialized() override { | 153 void OnOptionsInitialized() override { |
160 if (observer_) { | 154 if (observer_) { |
161 observer_->OnModelChanged(); | 155 observer_->OnModelChanged(); |
162 Update(); | 156 Update(); |
163 } | 157 } |
164 } | 158 } |
165 | 159 |
166 // ChooserOptions::Observer: | 160 // ChooserOptions::Observer: |
167 void OnOptionAdded(int index) override { | 161 void OnOptionAdded(size_t index) override { |
168 if (observer_) { | 162 if (observer_) { |
169 observer_->OnItemsAdded(index, 1); | 163 observer_->OnItemsAdded(static_cast<int>(index), 1); |
170 Update(); | 164 Update(); |
171 } | 165 } |
172 } | 166 } |
173 | 167 |
174 // ChooserOptions::Observer: | 168 // ChooserOptions::Observer: |
175 void OnOptionRemoved(int index) override { | 169 void OnOptionRemoved(size_t index) override { |
176 if (observer_) { | 170 if (observer_) { |
177 observer_->OnItemsRemoved(index, 1); | 171 observer_->OnItemsRemoved(static_cast<int>(index), 1); |
178 Update(); | 172 Update(); |
179 } | 173 } |
180 } | 174 } |
181 | 175 |
182 void Update() { | 176 void Update() { |
183 views::TableView* table_view = static_cast<views::TableView*>(observer_); | 177 views::TableView* table_view = static_cast<views::TableView*>(observer_); |
184 | 178 |
185 if (chooser_bubble_delegate_->GetOptions().empty()) { | 179 if (chooser_bubble_delegate_->NumOptions() == 0) { |
186 observer_->OnModelChanged(); | 180 observer_->OnModelChanged(); |
187 table_view->SetEnabled(false); | 181 table_view->SetEnabled(false); |
188 } else { | 182 } else { |
189 table_view->SetEnabled(true); | 183 table_view->SetEnabled(true); |
190 } | 184 } |
191 } | 185 } |
192 | 186 |
193 void SetConnectButton(views::LabelButton* connect_button) { | 187 void SetConnectButton(views::LabelButton* connect_button) { |
194 connect_button_ = connect_button; | 188 connect_button_ = connect_button; |
195 } | 189 } |
(...skipping 29 matching lines...) Expand all Loading... |
225 chooser_table_model_ = new ChooserTableModel(chooser_bubble_delegate_); | 219 chooser_table_model_ = new ChooserTableModel(chooser_bubble_delegate_); |
226 table_view_ = new views::TableView(chooser_table_model_, table_columns, | 220 table_view_ = new views::TableView(chooser_table_model_, table_columns, |
227 views::TEXT_ONLY, true); | 221 views::TEXT_ONLY, true); |
228 table_view_->set_select_on_remove(false); | 222 table_view_->set_select_on_remove(false); |
229 chooser_table_model_->SetObserver(table_view_); | 223 chooser_table_model_->SetObserver(table_view_); |
230 table_view_->SetObserver(this); | 224 table_view_->SetObserver(this); |
231 layout->AddView(table_view_->CreateParentIfNecessary(), 1, 1, | 225 layout->AddView(table_view_->CreateParentIfNecessary(), 1, 1, |
232 views::GridLayout::FILL, views::GridLayout::FILL, | 226 views::GridLayout::FILL, views::GridLayout::FILL, |
233 kChooserPermissionBubbleWidth, | 227 kChooserPermissionBubbleWidth, |
234 kChooserPermissionBubbleHeight); | 228 kChooserPermissionBubbleHeight); |
235 if (chooser_bubble_delegate_->GetOptions().empty()) { | 229 if (chooser_bubble_delegate_->NumOptions() == 0) { |
236 table_view_->SetEnabled(false); | 230 table_view_->SetEnabled(false); |
237 } | 231 } |
238 | 232 |
239 layout->AddPaddingRow(0, kItemMajorSpacing); | 233 layout->AddPaddingRow(0, kItemMajorSpacing); |
240 | 234 |
241 views::View* button_row = new views::View(); | 235 views::View* button_row = new views::View(); |
242 views::GridLayout* button_layout = new views::GridLayout(button_row); | 236 views::GridLayout* button_layout = new views::GridLayout(button_row); |
243 views::ColumnSet* button_columns = button_layout->AddColumnSet(0); | 237 views::ColumnSet* button_columns = button_layout->AddColumnSet(0); |
244 button_row->SetLayoutManager(button_layout); | 238 button_row->SetLayoutManager(button_layout); |
245 layout->StartRow(1, 0); | 239 layout->StartRow(1, 0); |
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
398 return browser_view->exclusive_access_bubble()->GetView(); | 392 return browser_view->exclusive_access_bubble()->GetView(); |
399 | 393 |
400 return browser_view->top_container(); | 394 return browser_view->top_container(); |
401 } | 395 } |
402 | 396 |
403 views::BubbleBorder::Arrow ChooserBubbleUiView::GetAnchorArrow() { | 397 views::BubbleBorder::Arrow ChooserBubbleUiView::GetAnchorArrow() { |
404 if (browser_->SupportsWindowFeature(Browser::FEATURE_LOCATIONBAR)) | 398 if (browser_->SupportsWindowFeature(Browser::FEATURE_LOCATIONBAR)) |
405 return views::BubbleBorder::TOP_LEFT; | 399 return views::BubbleBorder::TOP_LEFT; |
406 return views::BubbleBorder::NONE; | 400 return views::BubbleBorder::NONE; |
407 } | 401 } |
OLD | NEW |