Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2329)

Unified Diff: ash/system/network/tray_network.cc

Issue 11039034: Move ash/system/network to ash/system/chromeos (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ash/system/network/tray_network.h ('k') | ash/system/network/tray_sms.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ash/system/network/tray_network.cc
diff --git a/ash/system/network/tray_network.cc b/ash/system/network/tray_network.cc
deleted file mode 100644
index 7769e54fa4f8a8ddd586363a3a5b511ae416106b..0000000000000000000000000000000000000000
--- a/ash/system/network/tray_network.cc
+++ /dev/null
@@ -1,959 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "ash/system/network/tray_network.h"
-
-#include "ash/shell.h"
-#include "ash/shell_window_ids.h"
-#include "ash/system/tray/system_tray.h"
-#include "ash/system/tray/system_tray_delegate.h"
-#include "ash/system/tray/tray_constants.h"
-#include "ash/system/tray/tray_details_view.h"
-#include "ash/system/tray/tray_item_more.h"
-#include "ash/system/tray/tray_item_view.h"
-#include "ash/system/tray/tray_notification_view.h"
-#include "ash/system/tray/tray_views.h"
-#include "base/utf_string_conversions.h"
-#include "grit/ash_resources.h"
-#include "grit/ash_strings.h"
-#include "third_party/skia/include/core/SkColor.h"
-#include "ui/aura/window.h"
-#include "ui/base/l10n/l10n_util.h"
-#include "ui/base/resource/resource_bundle.h"
-#include "ui/gfx/canvas.h"
-#include "ui/gfx/font.h"
-#include "ui/gfx/image/image.h"
-#include "ui/gfx/skia_util.h"
-#include "ui/views/bubble/bubble_border.h"
-#include "ui/views/bubble/bubble_delegate.h"
-#include "ui/views/controls/button/button.h"
-#include "ui/views/controls/button/image_button.h"
-#include "ui/views/controls/image_view.h"
-#include "ui/views/controls/label.h"
-#include "ui/views/controls/link.h"
-#include "ui/views/controls/link_listener.h"
-#include "ui/views/controls/scroll_view.h"
-#include "ui/views/layout/box_layout.h"
-#include "ui/views/layout/fill_layout.h"
-#include "ui/views/view.h"
-#include "ui/views/widget/widget.h"
-
-namespace {
-
-// Height of the list of networks in the popup.
-const int kNetworkListHeight = 203;
-
-// Create a label with the font size and color used in the network info bubble.
-views::Label* CreateInfoBubbleLabel(const string16& text) {
- const SkColor text_color = SkColorSetARGB(127, 0, 0, 0);
- views::Label* label = new views::Label(text);
- label->SetFont(label->font().DeriveFont(-1));
- label->SetEnabledColor(text_color);
- return label;
-}
-
-// Create a row of labels for the network info bubble.
-views::View* CreateInfoBubbleLine(const string16& text_label,
- const std::string& text_string) {
- views::View* view = new views::View;
- view->SetLayoutManager(
- new views::BoxLayout(views::BoxLayout::kHorizontal, 0, 0, 1));
- view->AddChildView(CreateInfoBubbleLabel(text_label));
- view->AddChildView(CreateInfoBubbleLabel(UTF8ToUTF16(": ")));
- view->AddChildView(CreateInfoBubbleLabel(UTF8ToUTF16(text_string)));
- return view;
-}
-
-// A bubble that cannot be activated.
-class NonActivatableSettingsBubble : public views::BubbleDelegateView {
- public:
- NonActivatableSettingsBubble(views::View* anchor, views::View* content)
- : views::BubbleDelegateView(anchor, views::BubbleBorder::TOP_RIGHT) {
- set_use_focusless(true);
- set_parent_window(ash::Shell::GetContainer(
- anchor->GetWidget()->GetNativeWindow()->GetRootWindow(),
- ash::internal::kShellWindowId_SettingBubbleContainer));
- SetLayoutManager(new views::FillLayout());
- AddChildView(content);
- }
-
- virtual ~NonActivatableSettingsBubble() {}
-
- virtual bool CanActivate() const OVERRIDE {
- return false;
- }
-
- private:
- DISALLOW_COPY_AND_ASSIGN(NonActivatableSettingsBubble);
-};
-
-using ash::internal::TrayNetwork;
-
-int GetMessageIcon(TrayNetwork::MessageType message_type) {
- switch(message_type) {
- case TrayNetwork::ERROR_CONNECT_FAILED:
- return IDR_AURA_UBER_TRAY_NETWORK_FAILED;
- case TrayNetwork::MESSAGE_DATA_LOW:
- return IDR_AURA_UBER_TRAY_NETWORK_DATA_LOW;
- case TrayNetwork::MESSAGE_DATA_NONE:
- return IDR_AURA_UBER_TRAY_NETWORK_DATA_NONE;
- case TrayNetwork::MESSAGE_DATA_PROMO:
- return IDR_AURA_UBER_TRAY_NOTIFICATION_3G;
- }
- NOTREACHED();
- return 0;
-}
-
-} // namespace
-
-namespace ash {
-namespace internal {
-
-namespace tray {
-
-enum ColorTheme {
- LIGHT,
- DARK,
-};
-
-class NetworkMessages {
- public:
- struct Message {
- Message() : delegate(NULL) {}
- Message(NetworkTrayDelegate* in_delegate,
- const string16& in_title,
- const string16& in_message,
- const std::vector<string16>& in_links) :
- delegate(in_delegate),
- title(in_title),
- message(in_message),
- links(in_links) {}
- NetworkTrayDelegate* delegate;
- string16 title;
- string16 message;
- std::vector<string16> links;
- };
- typedef std::map<TrayNetwork::MessageType, Message> MessageMap;
-
- MessageMap& messages() { return messages_; }
- const MessageMap& messages() const { return messages_; }
-
- private:
- MessageMap messages_;
-};
-
-class NetworkTrayView : public TrayItemView {
- public:
- NetworkTrayView(ColorTheme size, bool tray_icon)
- : color_theme_(size), tray_icon_(tray_icon) {
- SetLayoutManager(
- new views::BoxLayout(views::BoxLayout::kHorizontal, 0, 0, 0));
-
- image_view_ = color_theme_ == DARK ?
- new FixedSizedImageView(0, kTrayPopupItemHeight) :
- new views::ImageView;
- AddChildView(image_view_);
-
- NetworkIconInfo info;
- Shell::GetInstance()->tray_delegate()->
- GetMostRelevantNetworkIcon(&info, false);
- Update(info);
- }
-
- virtual ~NetworkTrayView() {}
-
- void Update(const NetworkIconInfo& info) {
- image_view_->SetImage(info.image);
- if (tray_icon_)
- SetVisible(info.tray_icon_visible);
- SchedulePaint();
- }
-
- private:
- views::ImageView* image_view_;
- ColorTheme color_theme_;
- bool tray_icon_;
-
- DISALLOW_COPY_AND_ASSIGN(NetworkTrayView);
-};
-
-class NetworkDefaultView : public TrayItemMore {
- public:
- explicit NetworkDefaultView(SystemTrayItem* owner)
- : TrayItemMore(owner) {
- Update();
- }
-
- virtual ~NetworkDefaultView() {}
-
- void Update() {
- NetworkIconInfo info;
- Shell::GetInstance()->tray_delegate()->
- GetMostRelevantNetworkIcon(&info, true);
- SetImage(&info.image);
- SetLabel(info.description);
- SetAccessibleName(info.description);
- }
-
- private:
- DISALLOW_COPY_AND_ASSIGN(NetworkDefaultView);
-};
-
-class NetworkDetailedView : public TrayDetailsView {
- public:
- NetworkDetailedView() {}
-
- virtual ~NetworkDetailedView() {}
-
- virtual TrayNetwork::DetailedViewType GetViewType() const = 0;
-
- virtual void Update() = 0;
-};
-
-class NetworkListDetailedView : public NetworkDetailedView,
- public views::ButtonListener,
- public ViewClickListener {
- public:
- NetworkListDetailedView(user::LoginStatus login)
- : login_(login),
- airplane_(NULL),
- info_icon_(NULL),
- button_wifi_(NULL),
- button_mobile_(NULL),
- view_mobile_account_(NULL),
- setup_mobile_account_(NULL),
- other_wifi_(NULL),
- turn_on_wifi_(NULL),
- other_mobile_(NULL),
- settings_(NULL),
- proxy_settings_(NULL),
- info_bubble_(NULL) {
- SystemTrayDelegate* delegate = Shell::GetInstance()->tray_delegate();
- delegate->RequestNetworkScan();
- CreateItems();
- Update();
- }
-
- virtual ~NetworkListDetailedView() {
- if (info_bubble_)
- info_bubble_->GetWidget()->CloseNow();
- }
-
- void CreateItems() {
- RemoveAllChildViews(true);
-
- airplane_ = NULL;
- info_icon_ = NULL;
- button_wifi_ = NULL;
- button_mobile_ = NULL;
- view_mobile_account_ = NULL;
- setup_mobile_account_ = NULL;
- other_wifi_ = NULL;
- turn_on_wifi_ = NULL;
- other_mobile_ = NULL;
- settings_ = NULL;
- proxy_settings_ = NULL;
-
- AppendNetworkEntries();
- AppendNetworkExtra();
- AppendHeaderEntry();
- AppendHeaderButtons();
-
- Update();
- }
-
- // Overridden from NetworkDetailedView:
- virtual TrayNetwork::DetailedViewType GetViewType() const OVERRIDE {
- return TrayNetwork::LIST_VIEW;
- }
-
- virtual void Update() OVERRIDE {
- UpdateAvailableNetworkList();
- UpdateHeaderButtons();
- UpdateNetworkEntries();
- UpdateNetworkExtra();
-
- Layout();
- }
-
- private:
- void AppendHeaderEntry() {
- CreateSpecialRow(IDS_ASH_STATUS_TRAY_NETWORK, this);
- }
-
- void AppendHeaderButtons() {
- button_wifi_ = new TrayPopupHeaderButton(this,
- IDR_AURA_UBER_TRAY_WIFI_ENABLED,
- IDR_AURA_UBER_TRAY_WIFI_DISABLED,
- IDR_AURA_UBER_TRAY_WIFI_ENABLED_HOVER,
- IDR_AURA_UBER_TRAY_WIFI_DISABLED_HOVER,
- IDS_ASH_STATUS_TRAY_WIFI);
- button_wifi_->SetTooltipText(
- l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_DISABLE_WIFI));
- button_wifi_->SetToggledTooltipText(
- l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_ENABLE_WIFI));
- footer()->AddButton(button_wifi_);
-
- button_mobile_ = new TrayPopupHeaderButton(this,
- IDR_AURA_UBER_TRAY_CELLULAR_ENABLED,
- IDR_AURA_UBER_TRAY_CELLULAR_DISABLED,
- IDR_AURA_UBER_TRAY_CELLULAR_ENABLED_HOVER,
- IDR_AURA_UBER_TRAY_CELLULAR_DISABLED_HOVER,
- IDS_ASH_STATUS_TRAY_CELLULAR);
- button_mobile_->SetTooltipText(
- l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_DISABLE_MOBILE));
- button_mobile_->SetToggledTooltipText(
- l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_ENABLE_MOBILE));
- footer()->AddButton(button_mobile_);
-
- info_icon_ = new TrayPopupHeaderButton(this,
- IDR_AURA_UBER_TRAY_NETWORK_INFO,
- IDR_AURA_UBER_TRAY_NETWORK_INFO,
- IDR_AURA_UBER_TRAY_NETWORK_INFO_HOVER,
- IDR_AURA_UBER_TRAY_NETWORK_INFO_HOVER,
- IDS_ASH_STATUS_TRAY_NETWORK_INFO);
- info_icon_->SetTooltipText(
- l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_NETWORK_INFO));
- footer()->AddButton(info_icon_);
- }
-
- void UpdateHeaderButtons() {
- SystemTrayDelegate* delegate = Shell::GetInstance()->tray_delegate();
- button_wifi_->SetToggled(!delegate->GetWifiEnabled());
- button_mobile_->SetToggled(!delegate->GetMobileEnabled());
- button_mobile_->SetVisible(delegate->GetMobileAvailable());
- if (proxy_settings_)
- proxy_settings_->SetEnabled(delegate->IsNetworkConnected());
- }
-
- void AppendNetworkEntries() {
- CreateScrollableList();
-
- HoverHighlightView* container = new HoverHighlightView(this);
- container->set_fixed_height(kTrayPopupItemHeight);
- container->AddLabel(ui::ResourceBundle::GetSharedInstance().
- GetLocalizedString(IDS_ASH_STATUS_TRAY_MOBILE_VIEW_ACCOUNT),
- gfx::Font::NORMAL);
- AddChildView(container);
- view_mobile_account_ = container;
-
- container = new HoverHighlightView(this);
- container->set_fixed_height(kTrayPopupItemHeight);
- container->AddLabel(ui::ResourceBundle::GetSharedInstance().
- GetLocalizedString(IDS_ASH_STATUS_TRAY_SETUP_MOBILE),
- gfx::Font::NORMAL);
- AddChildView(container);
- setup_mobile_account_ = container;
- }
-
- void UpdateAvailableNetworkList() {
- network_list_.clear();
- Shell::GetInstance()->tray_delegate()->GetAvailableNetworks(&network_list_);
- }
-
- void RefreshNetworkScrollWithUpdatedNetworkList() {
- network_map_.clear();
- std::set<std::string> new_service_paths;
-
- bool needs_relayout = false;
- views::View* highlighted_view = NULL;
-
- if (service_path_map_.empty())
- scroll_content()->RemoveAllChildViews(true);
-
- for (size_t i = 0; i < network_list_.size(); ++i) {
- std::map<std::string, HoverHighlightView*>::const_iterator it =
- service_path_map_.find(network_list_[i].service_path);
- HoverHighlightView* container = NULL;
- if (it == service_path_map_.end()) {
- // Create a new view.
- container = new HoverHighlightView(this);
- container->set_fixed_height(kTrayPopupItemHeight);
- container->AddIconAndLabel(network_list_[i].image,
- network_list_[i].description.empty() ?
- network_list_[i].name : network_list_[i].description,
- network_list_[i].highlight ?
- gfx::Font::BOLD : gfx::Font::NORMAL);
- scroll_content()->AddChildViewAt(container, i);
- container->set_border(views::Border::CreateEmptyBorder(0,
- kTrayPopupPaddingHorizontal, 0, 0));
- needs_relayout = true;
- } else {
- container = it->second;
- container->RemoveAllChildViews(true);
- container->AddIconAndLabel(network_list_[i].image,
- network_list_[i].description.empty() ?
- network_list_[i].name : network_list_[i].description,
- network_list_[i].highlight ? gfx::Font::BOLD : gfx::Font::NORMAL);
- container->Layout();
- container->SchedulePaint();
-
- // Reordering the view if necessary.
- views::View* child = scroll_content()->child_at(i);
- if (child != container) {
- scroll_content()->ReorderChildView(container, i);
- needs_relayout = true;
- }
- }
-
- if (network_list_[i].highlight)
- highlighted_view = container;
- network_map_[container] = network_list_[i].service_path;
- service_path_map_[network_list_[i].service_path] = container;
- new_service_paths.insert(network_list_[i].service_path);
- }
-
- std::set<std::string> remove_service_paths;
- for (std::map<std::string, HoverHighlightView*>::const_iterator it =
- service_path_map_.begin(); it != service_path_map_.end(); ++it) {
- if (new_service_paths.find(it->first) == new_service_paths.end()) {
- remove_service_paths.insert(it->first);
- scroll_content()->RemoveChildView(it->second);
- needs_relayout = true;
- }
- }
-
- for (std::set<std::string>::const_iterator remove_it =
- remove_service_paths.begin();
- remove_it != remove_service_paths.end(); ++remove_it) {
- service_path_map_.erase(*remove_it);
- }
-
- if (needs_relayout) {
- scroll_content()->SizeToPreferredSize();
- static_cast<views::View*>(scroller())->Layout();
- if (highlighted_view)
- scroll_content()->ScrollRectToVisible(highlighted_view->bounds());
- }
- }
-
- void RefreshNetworkScrollWithEmptyNetworkList() {
- service_path_map_.clear();
- network_map_.clear();
- scroll_content()->RemoveAllChildViews(true);
- HoverHighlightView* container = new HoverHighlightView(this);
- container->set_fixed_height(kTrayPopupItemHeight);
-
- if (Shell::GetInstance()->tray_delegate()->GetWifiEnabled()) {
- NetworkIconInfo info;
- Shell::GetInstance()->tray_delegate()->
- GetMostRelevantNetworkIcon(&info, true);
- container->AddIconAndLabel(info.image,
- info.description,
- gfx::Font::NORMAL);
- container->set_border(views::Border::CreateEmptyBorder(0,
- kTrayPopupPaddingHorizontal, 0, 0));
-
- } else {
- container->AddLabel(ui::ResourceBundle::GetSharedInstance().
- GetLocalizedString(IDS_ASH_STATUS_TRAY_NETWORK_WIFI_DISABLED),
- gfx::Font::NORMAL);
- }
-
- scroll_content()->AddChildViewAt(container, 0);
- scroll_content()->SizeToPreferredSize();
- static_cast<views::View*>(scroller())->Layout();
- }
-
- void UpdateNetworkEntries() {
- if (network_list_.size() > 0 )
- RefreshNetworkScrollWithUpdatedNetworkList();
- else
- RefreshNetworkScrollWithEmptyNetworkList();
-
- view_mobile_account_->SetVisible(false);
- setup_mobile_account_->SetVisible(false);
-
- if (login_ == user::LOGGED_IN_NONE)
- return;
-
- std::string carrier_id, topup_url, setup_url;
- if (Shell::GetInstance()->tray_delegate()->
- GetCellularCarrierInfo(&carrier_id,
- &topup_url,
- &setup_url)) {
- if (carrier_id != carrier_id_) {
- carrier_id_ = carrier_id;
- if (!topup_url.empty())
- topup_url_ = topup_url;
- }
-
- if (!setup_url.empty())
- setup_url_ = setup_url;
-
- if (!topup_url_.empty())
- view_mobile_account_->SetVisible(true);
- if (!setup_url_.empty())
- setup_mobile_account_->SetVisible(true);
- }
- }
-
- void AppendNetworkExtra() {
- if (login_ == user::LOGGED_IN_LOCKED)
- return;
-
- ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
-
- TrayPopupTextButtonContainer* bottom_row =
- new TrayPopupTextButtonContainer;
-
- other_wifi_ = new TrayPopupTextButton(this,
- rb.GetLocalizedString(IDS_ASH_STATUS_TRAY_OTHER_WIFI));
- bottom_row->AddTextButton(other_wifi_);
-
- turn_on_wifi_ = new TrayPopupTextButton(this,
- rb.GetLocalizedString(IDS_ASH_STATUS_TRAY_TURN_ON_WIFI));
- bottom_row->AddTextButton(turn_on_wifi_);
-
- other_mobile_ = new TrayPopupTextButton(this,
- rb.GetLocalizedString(IDS_ASH_STATUS_TRAY_OTHER_MOBILE));
- bottom_row->AddTextButton(other_mobile_);
-
- CreateSettingsEntry();
- DCHECK(settings_ || proxy_settings_);
- bottom_row->AddTextButton(settings_ ? settings_ : proxy_settings_);
-
- AddChildView(bottom_row);
- }
-
- void UpdateNetworkExtra() {
- if (login_ == user::LOGGED_IN_LOCKED)
- return;
-
- SystemTrayDelegate* delegate = Shell::GetInstance()->tray_delegate();
- if (network_list_.size() == 0 && !delegate->GetWifiEnabled()) {
- turn_on_wifi_->SetVisible(true);
- other_wifi_->SetVisible(false);
- } else {
- turn_on_wifi_->SetVisible(false);
- other_wifi_->SetVisible(true);
- other_wifi_->SetEnabled(delegate->GetWifiEnabled());
- }
- other_mobile_->SetVisible(delegate->GetMobileAvailable() &&
- delegate->GetMobileScanSupported());
- if (other_mobile_->visible())
- other_mobile_->SetEnabled(delegate->GetMobileEnabled());
-
- turn_on_wifi_->parent()->Layout();
- }
-
- // Adds a settings entry when logged in, and an entry for changing proxy
- // settings otherwise.
- void CreateSettingsEntry() {
- ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
- if (login_ != user::LOGGED_IN_NONE) {
- // Settings, only if logged in.
- settings_ = new TrayPopupTextButton(this,
- rb.GetLocalizedString(IDS_ASH_STATUS_TRAY_NETWORK_SETTINGS));
- } else {
- proxy_settings_ = new TrayPopupTextButton(this,
- rb.GetLocalizedString(IDS_ASH_STATUS_TRAY_NETWORK_PROXY_SETTINGS));
- }
- }
-
- views::View* CreateNetworkInfoView() {
- ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance();
- std::string ip_address, ethernet_address, wifi_address;
- Shell::GetInstance()->tray_delegate()->GetNetworkAddresses(&ip_address,
- &ethernet_address, &wifi_address);
-
- views::View* container = new views::View;
- container->SetLayoutManager(new
- views::BoxLayout(views::BoxLayout::kVertical, 0, 0, 1));
- container->set_border(views::Border::CreateEmptyBorder(0, 5, 0, 5));
-
- // GetNetworkAddresses returns empty strings if no information is available.
- if (!ip_address.empty()) {
- container->AddChildView(CreateInfoBubbleLine(bundle.GetLocalizedString(
- IDS_ASH_STATUS_TRAY_IP), ip_address));
- }
- if (!ethernet_address.empty()) {
- container->AddChildView(CreateInfoBubbleLine(bundle.GetLocalizedString(
- IDS_ASH_STATUS_TRAY_ETHERNET), ethernet_address));
- }
- if (!wifi_address.empty()) {
- container->AddChildView(CreateInfoBubbleLine(bundle.GetLocalizedString(
- IDS_ASH_STATUS_TRAY_WIFI), wifi_address));
- }
-
- // Avoid an empty bubble in the unlikely event that there is no network
- // information at all.
- if (!container->has_children()) {
- container->AddChildView(CreateInfoBubbleLabel(bundle.GetLocalizedString(
- IDS_ASH_STATUS_TRAY_NO_NETWORKS)));
- }
-
- return container;
- }
-
- void ToggleInfoBubble() {
- if (ResetInfoBubble())
- return;
-
- info_bubble_ = new NonActivatableSettingsBubble(
- info_icon_, CreateNetworkInfoView());
- views::BubbleDelegateView::CreateBubble(info_bubble_);
- info_bubble_->Show();
- }
-
- // Returns whether an existing info-bubble was closed.
- bool ResetInfoBubble() {
- if (!info_bubble_)
- return false;
- info_bubble_->GetWidget()->Close();
- info_bubble_ = NULL;
- return true;
- }
-
- // Overridden from ButtonListener.
- virtual void ButtonPressed(views::Button* sender,
- const ui::Event& event) OVERRIDE {
- ash::SystemTrayDelegate* delegate =
- ash::Shell::GetInstance()->tray_delegate();
- if (sender == info_icon_) {
- ToggleInfoBubble();
- return;
- }
-
- // If the info bubble was visible, close it when some other item is clicked
- // on.
- ResetInfoBubble();
- if (sender == button_wifi_)
- delegate->ToggleWifi();
- else if (sender == button_mobile_)
- delegate->ToggleMobile();
- else if (sender == settings_)
- delegate->ShowNetworkSettings();
- else if (sender == proxy_settings_)
- delegate->ChangeProxySettings();
- else if (sender == other_mobile_)
- delegate->ShowOtherCellular();
- else if (sender == other_wifi_)
- delegate->ShowOtherWifi();
- else if (sender == turn_on_wifi_)
- delegate->ToggleWifi();
- else
- NOTREACHED();
- }
-
- // Overridden from ViewClickListener.
- virtual void ClickedOn(views::View* sender) OVERRIDE {
- ash::SystemTrayDelegate* delegate =
- ash::Shell::GetInstance()->tray_delegate();
- // If the info bubble was visible, close it when some other item is clicked
- // on.
- ResetInfoBubble();
-
- if (sender == footer()->content()) {
- Shell::GetInstance()->system_tray()->ShowDefaultView(BUBBLE_USE_EXISTING);
- return;
- }
-
- if (login_ == user::LOGGED_IN_LOCKED)
- return;
-
- if (sender == view_mobile_account_) {
- delegate->ShowCellularURL(topup_url_);
- } else if (sender == setup_mobile_account_) {
- delegate->ShowCellularURL(setup_url_);
- } else if (sender == airplane_) {
- delegate->ToggleAirplaneMode();
- } else {
- std::map<views::View*, std::string>::iterator find;
- find = network_map_.find(sender);
- if (find != network_map_.end()) {
- std::string network_id = find->second;
- delegate->ConnectToNetwork(network_id);
- }
- }
- }
-
- std::string carrier_id_;
- std::string topup_url_;
- std::string setup_url_;
-
- user::LoginStatus login_;
- std::map<views::View*, std::string> network_map_;
- std::map<std::string, HoverHighlightView*> service_path_map_;
- std::vector<NetworkIconInfo> network_list_;
- views::View* airplane_;
- TrayPopupHeaderButton* info_icon_;
- TrayPopupHeaderButton* button_wifi_;
- TrayPopupHeaderButton* button_mobile_;
- views::View* view_mobile_account_;
- views::View* setup_mobile_account_;
- TrayPopupTextButton* other_wifi_;
- TrayPopupTextButton* turn_on_wifi_;
- TrayPopupTextButton* other_mobile_;
- TrayPopupTextButton* settings_;
- TrayPopupTextButton* proxy_settings_;
-
- views::BubbleDelegateView* info_bubble_;
-
- DISALLOW_COPY_AND_ASSIGN(NetworkListDetailedView);
-};
-
-class NetworkWifiDetailedView : public NetworkDetailedView {
- 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() {}
-
- // Overridden from NetworkDetailedView:
- virtual TrayNetwork::DetailedViewType GetViewType() const OVERRIDE {
- return TrayNetwork::WIFI_VIEW;
- }
-
- virtual void Update() OVERRIDE {}
-
- private:
- DISALLOW_COPY_AND_ASSIGN(NetworkWifiDetailedView);
-};
-
-class NetworkMessageView : public views::View,
- public views::LinkListener {
- public:
- NetworkMessageView(TrayNetwork* tray,
- TrayNetwork::MessageType message_type,
- const NetworkMessages::Message& network_msg)
- : tray_(tray),
- message_type_(message_type) {
- SetLayoutManager(
- new views::BoxLayout(views::BoxLayout::kVertical, 0, 0, 1));
-
- if (!network_msg.title.empty()) {
- views::Label* title = new views::Label(network_msg.title);
- title->SetHorizontalAlignment(views::Label::ALIGN_LEFT);
- title->SetFont(title->font().DeriveFont(0, gfx::Font::BOLD));
- AddChildView(title);
- }
-
- if (!network_msg.message.empty()) {
- views::Label* message = new views::Label(network_msg.message);
- message->SetHorizontalAlignment(views::Label::ALIGN_LEFT);
- message->SetMultiLine(true);
- message->SizeToFit(kTrayNotificationContentsWidth);
- AddChildView(message);
- }
-
- if (!network_msg.links.empty()) {
- for (size_t i = 0; i < network_msg.links.size(); ++i) {
- views::Link* link = new views::Link(network_msg.links[i]);
- link->set_id(i);
- link->set_listener(this);
- link->SetHorizontalAlignment(views::Label::ALIGN_LEFT);
- link->SetMultiLine(true);
- link->SizeToFit(kTrayNotificationContentsWidth);
- AddChildView(link);
- }
- }
- }
-
- virtual ~NetworkMessageView() {
- }
-
- // Overridden from views::LinkListener.
- virtual void LinkClicked(views::Link* source, int event_flags) OVERRIDE {
- tray_->LinkClicked(message_type_, source->id());
- }
-
- TrayNetwork::MessageType message_type() const { return message_type_; }
-
- private:
- TrayNetwork* tray_;
- TrayNetwork::MessageType message_type_;
-
- DISALLOW_COPY_AND_ASSIGN(NetworkMessageView);
-};
-
-class NetworkNotificationView : public TrayNotificationView {
- public:
- explicit NetworkNotificationView(TrayNetwork* tray)
- : TrayNotificationView(tray, 0) {
- CreateMessageView();
- InitView(network_message_view_);
- SetIconImage(*ResourceBundle::GetSharedInstance().GetImageSkiaNamed(
- GetMessageIcon(network_message_view_->message_type())));
- }
-
- // Overridden from TrayNotificationView.
- virtual void OnClose() OVERRIDE {
- tray_network()->ClearNetworkMessage(network_message_view_->message_type());
- }
-
- virtual void OnClickAction() OVERRIDE {
- if (network_message_view_->message_type() !=
- TrayNetwork::MESSAGE_DATA_PROMO)
- tray()->PopupDetailedView(0, true);
- }
-
- void Update() {
- CreateMessageView();
- UpdateViewAndImage(network_message_view_,
- *ResourceBundle::GetSharedInstance().GetImageSkiaNamed(
- GetMessageIcon(network_message_view_->message_type())));
- }
-
- private:
- TrayNetwork* tray_network() {
- return static_cast<TrayNetwork*>(tray());
- }
-
- void CreateMessageView() {
- // Display the first (highest priority) message.
- CHECK(!tray_network()->messages()->messages().empty());
- NetworkMessages::MessageMap::const_iterator iter =
- tray_network()->messages()->messages().begin();
- network_message_view_ =
- new NetworkMessageView(tray_network(), iter->first, iter->second);
- }
-
- tray::NetworkMessageView* network_message_view_;
-
- DISALLOW_COPY_AND_ASSIGN(NetworkNotificationView);
-};
-
-} // namespace tray
-
-TrayNetwork::TrayNetwork()
- : tray_(NULL),
- default_(NULL),
- detailed_(NULL),
- notification_(NULL),
- messages_(new tray::NetworkMessages()),
- request_wifi_view_(false) {
-}
-
-TrayNetwork::~TrayNetwork() {
-}
-
-views::View* TrayNetwork::CreateTrayView(user::LoginStatus status) {
- CHECK(tray_ == NULL);
- tray_ = new tray::NetworkTrayView(tray::LIGHT, true /*tray_icon*/);
- return tray_;
-}
-
-views::View* TrayNetwork::CreateDefaultView(user::LoginStatus status) {
- CHECK(default_ == NULL);
- default_ = new tray::NetworkDefaultView(this);
- return default_;
-}
-
-views::View* TrayNetwork::CreateDetailedView(user::LoginStatus status) {
- CHECK(detailed_ == NULL);
- // Clear any notifications when showing the detailed view.
- messages_->messages().clear();
- HideNotificationView();
- if (request_wifi_view_) {
- SystemTrayDelegate* delegate = Shell::GetInstance()->tray_delegate();
- // The Wi-Fi state is not toggled yet at this point.
- detailed_ = new tray::NetworkWifiDetailedView(!delegate->GetWifiEnabled());
- request_wifi_view_ = false;
- } else {
- detailed_ = new tray::NetworkListDetailedView(status);
- }
- return detailed_;
-}
-
-views::View* TrayNetwork::CreateNotificationView(user::LoginStatus status) {
- CHECK(notification_ == NULL);
- if (messages_->messages().empty())
- return NULL; // Message has already been cleared.
- notification_ = new tray::NetworkNotificationView(this);
- return notification_;
-}
-
-void TrayNetwork::DestroyTrayView() {
- tray_ = NULL;
-}
-
-void TrayNetwork::DestroyDefaultView() {
- default_ = NULL;
-}
-
-void TrayNetwork::DestroyDetailedView() {
- detailed_ = NULL;
-}
-
-void TrayNetwork::DestroyNotificationView() {
- notification_ = NULL;
-}
-
-void TrayNetwork::UpdateAfterLoginStatusChange(user::LoginStatus status) {
-}
-
-void TrayNetwork::UpdateAfterShelfAlignmentChange(ShelfAlignment alignment) {
- SetTrayImageItemBorder(tray_, alignment);
-}
-
-void TrayNetwork::OnNetworkRefresh(const NetworkIconInfo& info) {
- if (tray_)
- tray_->Update(info);
- if (default_)
- default_->Update();
- if (detailed_)
- detailed_->Update();
-}
-
-void TrayNetwork::SetNetworkMessage(NetworkTrayDelegate* delegate,
- MessageType message_type,
- const string16& title,
- const string16& message,
- const std::vector<string16>& links) {
- messages_->messages()[message_type] =
- tray::NetworkMessages::Message(delegate, title, message, links);
- if (notification_)
- notification_->Update();
- else
- ShowNotificationView();
-}
-
-void TrayNetwork::ClearNetworkMessage(MessageType message_type) {
- messages_->messages().erase(message_type);
- if (messages_->messages().empty()) {
- HideNotificationView();
- return;
- }
- if (notification_)
- notification_->Update();
- else
- ShowNotificationView();
-}
-
-void TrayNetwork::OnWillToggleWifi() {
- if (!detailed_ || detailed_->GetViewType() == WIFI_VIEW) {
- request_wifi_view_ = true;
- PopupDetailedView(kTrayPopupAutoCloseDelayForTextInSeconds, false);
- }
-}
-
-void TrayNetwork::LinkClicked(MessageType message_type, int link_id) {
- tray::NetworkMessages::MessageMap::const_iterator iter =
- messages()->messages().find(message_type);
- if (iter != messages()->messages().end() && iter->second.delegate)
- iter->second.delegate->NotificationLinkClicked(link_id);
-}
-
-} // namespace internal
-} // namespace ash
« no previous file with comments | « ash/system/network/tray_network.h ('k') | ash/system/network/tray_sms.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698