| Index: ash/system/network/tray_network.cc
|
| diff --git a/ash/system/network/tray_network.cc b/ash/system/network/tray_network.cc
|
| index 86ee617ffed63baa9f0a86d824c17afafe9710db..142e43225d6346e90450ca29300004512aa93f63 100644
|
| --- a/ash/system/network/tray_network.cc
|
| +++ b/ash/system/network/tray_network.cc
|
| @@ -705,12 +705,44 @@ class NetworkNotificationView : public TrayNotificationView {
|
| DISALLOW_COPY_AND_ASSIGN(NetworkNotificationView);
|
| };
|
|
|
| +class NetworkWifiDetailedView : public TrayDetailsView {
|
| + public:
|
| + explicit NetworkWifiDetailedView(bool wifi_enabled) {
|
| + SetLayoutManager(new views::BoxLayout(views::BoxLayout::kHorizontal,
|
| + kTrayPopupPaddingHorizontal,
|
| + 10,
|
| + kTrayPopupPaddingBetweenItems));
|
| +
|
| + ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance();
|
| + views::ImageView* image = new views::ImageView;
|
| + const int image_id = wifi_enabled ?
|
| + IDR_AURA_UBER_TRAY_WIFI_ENABLED : IDR_AURA_UBER_TRAY_WIFI_DISABLED;
|
| + image->SetImage(bundle.GetImageNamed(image_id).ToImageSkia());
|
| + AddChildView(image);
|
| +
|
| + const int string_id = wifi_enabled ?
|
| + IDS_ASH_STATUS_TRAY_NETWORK_WIFI_ENABLED:
|
| + IDS_ASH_STATUS_TRAY_NETWORK_WIFI_DISABLED;
|
| + views::Label* label =
|
| + new views::Label(bundle.GetLocalizedString(string_id));
|
| + label->SetMultiLine(true);
|
| + label->SetHorizontalAlignment(views::Label::ALIGN_LEFT);
|
| + AddChildView(label);
|
| + }
|
| +
|
| + virtual ~NetworkWifiDetailedView() {}
|
| +
|
| + private:
|
| + DISALLOW_COPY_AND_ASSIGN(NetworkWifiDetailedView);
|
| +};
|
| +
|
| } // namespace tray
|
|
|
| TrayNetwork::TrayNetwork()
|
| : tray_(NULL),
|
| default_(NULL),
|
| detailed_(NULL),
|
| + wifi_view_(NULL),
|
| notification_(NULL),
|
| errors_(new tray::NetworkErrors()) {
|
| }
|
| @@ -731,6 +763,12 @@ views::View* TrayNetwork::CreateDefaultView(user::LoginStatus status) {
|
| }
|
|
|
| views::View* TrayNetwork::CreateDetailedView(user::LoginStatus status) {
|
| + if (wifi_view_) {
|
| + views::View* returned_view = wifi_view_;
|
| + wifi_view_ = NULL;
|
| + return returned_view;
|
| + }
|
| +
|
| CHECK(detailed_ == NULL);
|
| detailed_ = new tray::NetworkDetailedView(status);
|
| return detailed_;
|
| @@ -802,6 +840,13 @@ void TrayNetwork::ClearNetworkError(ErrorType error_type) {
|
| ShowNotificationView();
|
| }
|
|
|
| +void TrayNetwork::OnWifiToggled(bool wifi_enabled) {
|
| + if (!detailed_) {
|
| + wifi_view_ = new tray::NetworkWifiDetailedView(wifi_enabled);
|
| + PopupDetailedView(kTrayPopupAutoCloseDelayForTextInSeconds, false);
|
| + }
|
| +}
|
| +
|
| void TrayNetwork::LinkClicked(ErrorType error_type) {
|
| tray::NetworkErrors::ErrorMap::const_iterator iter =
|
| errors()->messages().find(error_type);
|
|
|