| Index: chrome/browser/chromeos/login/network_selection_view.cc
|
| diff --git a/chrome/browser/chromeos/login/network_selection_view.cc b/chrome/browser/chromeos/login/network_selection_view.cc
|
| index 453e2cc1985a332c7344fd2a676ac5646c6c6197..7e0dd88e9c18793dca2b68d2acb4f0c06b88e026 100644
|
| --- a/chrome/browser/chromeos/login/network_selection_view.cc
|
| +++ b/chrome/browser/chromeos/login/network_selection_view.cc
|
| @@ -14,6 +14,7 @@
|
| #include "chrome/browser/chromeos/login/network_screen_delegate.h"
|
| #include "chrome/browser/chromeos/login/rounded_rect_painter.h"
|
| #include "chrome/browser/chromeos/login/language_switch_menu.h"
|
| +#include "chrome/browser/chromeos/status/network_dropdown_button.h"
|
| #include "grit/chromium_strings.h"
|
| #include "grit/generated_resources.h"
|
| #include "grit/theme_resources.h"
|
| @@ -47,11 +48,15 @@ const int kSelectionBoxSpacing = 7;
|
| // Menu button is drawn using our custom icons in resources. See
|
| // TextButtonBorder::Paint() for details. So this offset compensate
|
| // horizontal size, eaten by those icons.
|
| -const int kMenuButtonHorizontalOffset = 1;
|
| +const int kMenuHorizontalOffset = -1;
|
|
|
| // Vertical addition to the menu window to make it appear exactly below
|
| // MenuButton.
|
| -const int kMenuButtonVerticalOffset = 3;
|
| +const int kMenuVerticalOffset = 3;
|
| +
|
| +// Offset that compensates menu width so that it matches
|
| +// menu button visual width when being in pushed state.
|
| +const int kMenuWidthOffset = 6;
|
|
|
| const SkColor kWelcomeColor = 0xFF1D6AB1;
|
|
|
| @@ -63,8 +68,7 @@ const int kThrobberStartDelayMs = 500;
|
| namespace chromeos {
|
|
|
| NetworkSelectionView::NetworkSelectionView(NetworkScreenDelegate* delegate)
|
| - : network_combobox_(NULL),
|
| - languages_menubutton_(NULL),
|
| + : languages_menubutton_(NULL),
|
| welcome_label_(NULL),
|
| select_language_label_(NULL),
|
| select_network_label_(NULL),
|
| @@ -72,12 +76,11 @@ NetworkSelectionView::NetworkSelectionView(NetworkScreenDelegate* delegate)
|
| continue_button_(NULL),
|
| throbber_(NULL),
|
| continue_button_order_index_(-1),
|
| + network_dropdown_(NULL),
|
| delegate_(delegate) {
|
| }
|
|
|
| NetworkSelectionView::~NetworkSelectionView() {
|
| - network_combobox_->set_listener(NULL);
|
| - network_combobox_ = NULL;
|
| throbber_->Stop();
|
| throbber_ = NULL;
|
| }
|
| @@ -114,22 +117,24 @@ void NetworkSelectionView::Init() {
|
| throbber_->set_start_delay_ms(kThrobberStartDelayMs);
|
| AddChildView(throbber_);
|
|
|
| - network_combobox_ = new views::Combobox(delegate_);
|
| - network_combobox_->set_listener(delegate_);
|
| -
|
| languages_menubutton_ = new views::MenuButton(
|
| NULL, std::wstring(), delegate_->language_switch_menu(), true);
|
| languages_menubutton_->SetFocusable(true);
|
| languages_menubutton_->SetNormalHasBorder(true);
|
| - delegate_->language_switch_menu()->set_menu_offset(
|
| - kMenuButtonHorizontalOffset, kMenuButtonVerticalOffset);
|
| + // Menu is positioned by bottom right corner of the MenuButton.
|
| + delegate_->language_switch_menu()->set_menu_offset(kMenuHorizontalOffset,
|
| + kMenuVerticalOffset);
|
|
|
| AddChildView(welcome_label_);
|
| AddChildView(select_language_label_);
|
| AddChildView(select_network_label_);
|
| AddChildView(connecting_network_label_);
|
| AddChildView(languages_menubutton_);
|
| - AddChildView(network_combobox_);
|
| +
|
| + network_dropdown_ = new NetworkDropdownButton(false, GetNativeWindow());
|
| + network_dropdown_->SetNormalHasBorder(true);
|
| + network_dropdown_->SetFocusable(true);
|
| + AddChildView(network_dropdown_);
|
|
|
| UpdateLocalizedStrings();
|
| }
|
| @@ -157,18 +162,6 @@ void NetworkSelectionView::ChildPreferredSizeChanged(View* child) {
|
|
|
| void NetworkSelectionView::OnLocaleChanged() {
|
| UpdateLocalizedStrings();
|
| -
|
| - int index_to_restore = GetSelectedNetworkItem();
|
| - NetworkModelChanged();
|
| - index_to_restore = std::max(index_to_restore, 0);
|
| - index_to_restore = std::min<int>(index_to_restore,
|
| - delegate_->GetItemCount() - 1);
|
| - if (index_to_restore >= 0) {
|
| - // Only localized names of networking options has changed
|
| - // so we should restore networking option selected previously.
|
| - SetSelectedNetworkItem(index_to_restore);
|
| - }
|
| -
|
| Layout();
|
| SchedulePaint();
|
| }
|
| @@ -193,14 +186,14 @@ void NetworkSelectionView::Layout() {
|
|
|
| // Use menu preffered size to calculate boxes width accordingly.
|
| int box_width = delegate_->language_switch_menu()->GetFirstLevelMenuWidth() +
|
| - kMenuButtonHorizontalOffset * 2;
|
| + kMenuWidthOffset;
|
| const int widest_label = std::max(
|
| select_language_label_->GetPreferredSize().width(),
|
| select_network_label_->GetPreferredSize().width());
|
| if (box_width < kSelectionBoxWidthMin) {
|
| box_width = kSelectionBoxWidthMin;
|
| delegate_->language_switch_menu()->SetFirstLevelMenuWidth(
|
| - box_width - kMenuButtonHorizontalOffset * 2);
|
| + box_width - kMenuWidthOffset);
|
| } else if (widest_label + box_width + 2 * kHorizontalSpacing > width()) {
|
| box_width = width() - widest_label - 2 * kHorizontalSpacing;
|
| }
|
| @@ -239,7 +232,7 @@ void NetworkSelectionView::Layout() {
|
| throbber_->GetPreferredSize().width(),
|
| throbber_->GetPreferredSize().height());
|
|
|
| - network_combobox_->SetBounds(selection_box_x, y - label_y_offset,
|
| + network_dropdown_->SetBounds(selection_box_x, y - label_y_offset,
|
| box_width, kSelectionBoxHeight);
|
|
|
| y = height() - continue_button_->GetPreferredSize().height() - kSpacing;
|
| @@ -251,29 +244,16 @@ void NetworkSelectionView::Layout() {
|
| continue_button_->GetPreferredSize().height());
|
|
|
| // Need to refresh combobox layout explicitly.
|
| - network_combobox_->Layout();
|
| continue_button_->Layout();
|
| }
|
|
|
| ////////////////////////////////////////////////////////////////////////////////
|
| // NetworkSelectionView, public:
|
|
|
| -int NetworkSelectionView::GetSelectedNetworkItem() const {
|
| - return network_combobox_->selected_item();
|
| -}
|
| -
|
| -void NetworkSelectionView::SetSelectedNetworkItem(int index) {
|
| - network_combobox_->SetSelectedItem(index);
|
| -}
|
| -
|
| gfx::NativeWindow NetworkSelectionView::GetNativeWindow() {
|
| return GTK_WINDOW(static_cast<WidgetGtk*>(GetWidget())->GetNativeView());
|
| }
|
|
|
| -void NetworkSelectionView::NetworkModelChanged() {
|
| - network_combobox_->ModelChanged();
|
| -}
|
| -
|
| void NetworkSelectionView::ShowConnectingStatus(bool connecting,
|
| const string16& network_id) {
|
| network_id_ = network_id;
|
| @@ -281,12 +261,13 @@ void NetworkSelectionView::ShowConnectingStatus(bool connecting,
|
| select_language_label_->SetVisible(!connecting);
|
| languages_menubutton_->SetVisible(!connecting);
|
| select_network_label_->SetVisible(!connecting);
|
| - network_combobox_->SetVisible(!connecting);
|
| + network_dropdown_->SetVisible(!connecting);
|
| continue_button_->SetVisible(!connecting);
|
| connecting_network_label_->SetVisible(connecting);
|
| Layout();
|
| if (connecting) {
|
| throbber_->Start();
|
| + network_dropdown_->CancelMenu();
|
| } else {
|
| throbber_->Stop();
|
| }
|
|
|