| 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 "ash/system/cast/tray_cast.h" | 5 #include "ash/system/cast/tray_cast.h" |
| 6 | 6 |
| 7 #include "ash/cast_config_delegate.h" | 7 #include "ash/cast_config_delegate.h" |
| 8 #include "ash/session/session_state_delegate.h" | 8 #include "ash/session/session_state_delegate.h" |
| 9 #include "ash/shelf/shelf_types.h" | 9 #include "ash/shelf/shelf_types.h" |
| 10 #include "ash/shell.h" | 10 #include "ash/shell.h" |
| (...skipping 20 matching lines...) Expand all Loading... |
| 31 #include "ui/views/controls/button/button.h" | 31 #include "ui/views/controls/button/button.h" |
| 32 #include "ui/views/controls/image_view.h" | 32 #include "ui/views/controls/image_view.h" |
| 33 #include "ui/views/controls/label.h" | 33 #include "ui/views/controls/label.h" |
| 34 #include "ui/views/layout/box_layout.h" | 34 #include "ui/views/layout/box_layout.h" |
| 35 #include "ui/views/layout/fill_layout.h" | 35 #include "ui/views/layout/fill_layout.h" |
| 36 | 36 |
| 37 namespace ash { | 37 namespace ash { |
| 38 | 38 |
| 39 namespace { | 39 namespace { |
| 40 const int kStopButtonRightPadding = 18; | 40 const int kStopButtonRightPadding = 18; |
| 41 | |
| 42 // Callback helper for StopCast(). | |
| 43 void StopCastCallback( | |
| 44 CastConfigDelegate* cast_config, | |
| 45 const CastConfigDelegate::ReceiversAndActivites& receivers_activities) { | |
| 46 for (auto& item : receivers_activities) { | |
| 47 CastConfigDelegate::Activity activity = item.second.activity; | |
| 48 if (activity.allow_stop && activity.id.empty() == false) | |
| 49 cast_config->StopCasting(activity.id); | |
| 50 } | |
| 51 } | |
| 52 | |
| 53 // Stops currently casting device. | |
| 54 void StopCast() { | |
| 55 CastConfigDelegate* cast_config = | |
| 56 Shell::GetInstance()->system_tray_delegate()->GetCastConfigDelegate(); | |
| 57 if (cast_config && cast_config->HasCastExtension()) { | |
| 58 cast_config->GetReceiversAndActivities( | |
| 59 base::Bind(&StopCastCallback, cast_config)); | |
| 60 } | |
| 61 } | |
| 62 | |
| 63 } // namespace | 41 } // namespace |
| 64 | 42 |
| 65 namespace tray { | 43 namespace tray { |
| 66 | 44 |
| 67 // This view is displayed in the system tray when the cast extension is active. | 45 // This view is displayed in the system tray when the cast extension is active. |
| 68 // It asks the user if they want to cast the desktop. If they click on the | 46 // It asks the user if they want to cast the desktop. If they click on the |
| 69 // chevron, then a detail view will replace this view where the user will | 47 // chevron, then a detail view will replace this view where the user will |
| 70 // actually pick the cast receiver. | 48 // actually pick the cast receiver. |
| 71 class CastSelectDefaultView : public TrayItemMore { | 49 class CastSelectDefaultView : public TrayItemMore { |
| 72 public: | 50 public: |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 175 // The view has two labels, one above the other. The top label (|title_|) | 153 // The view has two labels, one above the other. The top label (|title_|) |
| 176 // specifies that we are, say, "Casting desktop". The bottom label | 154 // specifies that we are, say, "Casting desktop". The bottom label |
| 177 // (|details_|) specifies where we are casting to, ie, "SomeRandom cast" | 155 // (|details_|) specifies where we are casting to, ie, "SomeRandom cast" |
| 178 label_container_ = new views::View; | 156 label_container_ = new views::View; |
| 179 label_container_->SetLayoutManager( | 157 label_container_->SetLayoutManager( |
| 180 new views::BoxLayout(views::BoxLayout::kVertical, 0, 0, 0)); | 158 new views::BoxLayout(views::BoxLayout::kVertical, 0, 0, 0)); |
| 181 | 159 |
| 182 title_ = new views::Label; | 160 title_ = new views::Label; |
| 183 title_->SetHorizontalAlignment(gfx::ALIGN_LEFT); | 161 title_->SetHorizontalAlignment(gfx::ALIGN_LEFT); |
| 184 title_->SetFontList(bundle.GetFontList(ui::ResourceBundle::BoldFont)); | 162 title_->SetFontList(bundle.GetFontList(ui::ResourceBundle::BoldFont)); |
| 163 title_->SetText( |
| 164 bundle.GetLocalizedString(IDS_ASH_STATUS_TRAY_CAST_UNKNOWN_CAST_TYPE)); |
| 185 label_container_->AddChildView(title_); | 165 label_container_->AddChildView(title_); |
| 186 | 166 |
| 187 details_ = new views::Label; | 167 details_ = new views::Label; |
| 188 details_->SetHorizontalAlignment(gfx::ALIGN_LEFT); | 168 details_->SetHorizontalAlignment(gfx::ALIGN_LEFT); |
| 189 details_->SetMultiLine(false); | 169 details_->SetMultiLine(false); |
| 190 details_->SetEnabledColor(kHeaderTextColorNormal); | 170 details_->SetEnabledColor(kHeaderTextColorNormal); |
| 171 details_->SetText( |
| 172 bundle.GetLocalizedString(IDS_ASH_STATUS_TRAY_CAST_UNKNOWN_RECEIVER)); |
| 191 label_container_->AddChildView(details_); | 173 label_container_->AddChildView(details_); |
| 192 | 174 |
| 193 AddChildView(label_container_); | 175 AddChildView(label_container_); |
| 194 | 176 |
| 195 // Add the stop bottom on the far-right. We customize how this stop button is | 177 // Add the stop bottom on the far-right. We customize how this stop button is |
| 196 // displayed inside of |Layout()|. | 178 // displayed inside of |Layout()|. |
| 197 base::string16 stop_button_text = | 179 base::string16 stop_button_text = |
| 198 ui::ResourceBundle::GetSharedInstance().GetLocalizedString( | 180 ui::ResourceBundle::GetSharedInstance().GetLocalizedString( |
| 199 IDS_ASH_STATUS_TRAY_CAST_STOP); | 181 IDS_ASH_STATUS_TRAY_CAST_STOP); |
| 200 stop_button_ = new TrayPopupLabelButton(this, stop_button_text); | 182 stop_button_ = new TrayPopupLabelButton(this, stop_button_text); |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 263 details_->SetText(receiver.name); | 245 details_->SetText(receiver.name); |
| 264 Layout(); | 246 Layout(); |
| 265 break; | 247 break; |
| 266 } | 248 } |
| 267 } | 249 } |
| 268 } | 250 } |
| 269 | 251 |
| 270 void CastCastView::ButtonPressed(views::Button* sender, | 252 void CastCastView::ButtonPressed(views::Button* sender, |
| 271 const ui::Event& event) { | 253 const ui::Event& event) { |
| 272 DCHECK(sender == stop_button_); | 254 DCHECK(sender == stop_button_); |
| 273 StopCast(); | 255 cast_config_delegate_->StopCasting(); |
| 274 } | 256 } |
| 275 | 257 |
| 276 // This view by itself does very little. It acts as a front-end for managing | 258 // This view by itself does very little. It acts as a front-end for managing |
| 277 // which of the two child views (|CastSelectDefaultView| and |CastCastView|) | 259 // which of the two child views (|CastSelectDefaultView| and |CastCastView|) |
| 278 // is active. | 260 // is active. |
| 279 class CastDuplexView : public views::View { | 261 class CastDuplexView : public views::View { |
| 280 public: | 262 public: |
| 281 CastDuplexView(SystemTrayItem* owner, | 263 CastDuplexView(SystemTrayItem* owner, |
| 282 CastConfigDelegate* config_delegate, | 264 CastConfigDelegate* config_delegate, |
| 283 bool show_more); | 265 bool show_more); |
| (...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 618 is_casting_ = started; | 600 is_casting_ = started; |
| 619 UpdatePrimaryView(); | 601 UpdatePrimaryView(); |
| 620 } | 602 } |
| 621 | 603 |
| 622 void TrayCast::UpdateAfterShelfAlignmentChange(ShelfAlignment alignment) { | 604 void TrayCast::UpdateAfterShelfAlignmentChange(ShelfAlignment alignment) { |
| 623 if (tray_) | 605 if (tray_) |
| 624 tray_->UpdateAlignment(alignment); | 606 tray_->UpdateAlignment(alignment); |
| 625 } | 607 } |
| 626 | 608 |
| 627 } // namespace ash | 609 } // namespace ash |
| OLD | NEW |