diff options
author | glotov@chromium.org <glotov@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-06-04 15:22:08 +0000 |
---|---|---|
committer | glotov@chromium.org <glotov@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-06-04 15:22:08 +0000 |
commit | a06e1a5dff0d8b971e738ed53be7e5dd945a894e (patch) | |
tree | ee75a8e668df869684caadfa2ddc3238fec903a0 /chrome/browser/chromeos | |
parent | f0a0660a161b414af46becf128a9044785c75631 (diff) | |
download | chromium_src-a06e1a5dff0d8b971e738ed53be7e5dd945a894e.zip chromium_src-a06e1a5dff0d8b971e738ed53be7e5dd945a894e.tar.gz chromium_src-a06e1a5dff0d8b971e738ed53be7e5dd945a894e.tar.bz2 |
Update OOBE welcome screen based on latest mocks.
BUG=http://crosbug.com/3279
TEST=none
Review URL: http://codereview.chromium.org/2590001
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@48927 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/chromeos')
4 files changed, 91 insertions, 23 deletions
diff --git a/chrome/browser/chromeos/login/language_switch_model.cc b/chrome/browser/chromeos/login/language_switch_model.cc index 896a2c9..ec552c7 100644 --- a/chrome/browser/chromeos/login/language_switch_model.cc +++ b/chrome/browser/chromeos/login/language_switch_model.cc @@ -27,7 +27,9 @@ namespace chromeos { LanguageSwitchModel::LanguageSwitchModel() : ALLOW_THIS_IN_INITIALIZER_LIST(menu_model_(this)), - ALLOW_THIS_IN_INITIALIZER_LIST(menu_model_submenu_(this)) { + ALLOW_THIS_IN_INITIALIZER_LIST(menu_model_submenu_(this)), + delta_x_(0), + delta_y_(0) { } void LanguageSwitchModel::InitLanguageMenu() { @@ -65,12 +67,28 @@ std::wstring LanguageSwitchModel::GetCurrentLocaleName() const { language_list_->GetIndexFromLocale(locale)); }; +// Currently, views::Menu is implemented directly with the Gtk +// widgets. So we use native gtk callbacks to get its future size. +int LanguageSwitchModel::GetFirstLevelMenuWidth() const { + DCHECK(menu_ != NULL); + GtkRequisition box_size; + gtk_widget_size_request(menu_->GetNativeMenu(), &box_size); + return box_size.width; +} + +void LanguageSwitchModel::SetFirstLevelMenuWidth(int width) { + DCHECK(menu_ != NULL); + gtk_widget_set_size_request(menu_->GetNativeMenu(), width, -1); +} + //////////////////////////////////////////////////////////////////////////////// // views::ViewMenuDelegate implementation. void LanguageSwitchModel::RunMenu(views::View* source, const gfx::Point& pt) { DCHECK(menu_ != NULL); - menu_->RunMenuAt(pt, views::Menu2::ALIGN_TOPRIGHT); + gfx::Point point(pt); + point.Offset(delta_x_, delta_y_); + menu_->RunMenuAt(point, views::Menu2::ALIGN_TOPRIGHT); } //////////////////////////////////////////////////////////////////////////////// diff --git a/chrome/browser/chromeos/login/language_switch_model.h b/chrome/browser/chromeos/login/language_switch_model.h index 09155c5..882999a 100644 --- a/chrome/browser/chromeos/login/language_switch_model.h +++ b/chrome/browser/chromeos/login/language_switch_model.h @@ -32,6 +32,15 @@ class LanguageSwitchModel : public views::ViewMenuDelegate, // Returns current locale name to be placed on the language menu-button. std::wstring GetCurrentLocaleName() const; + // Returns original width of the first level menu to be shown when called. + int GetFirstLevelMenuWidth() const; + void SetFirstLevelMenuWidth(int width); + + void set_menu_offset(int delta_x, int delta_y) { + delta_x_ = delta_x; + delta_y_ = delta_y; + } + private: // views::ViewMenuDelegate implementation. virtual void RunMenu(views::View* source, const gfx::Point& pt); @@ -54,6 +63,8 @@ class LanguageSwitchModel : public views::ViewMenuDelegate, // Language locale name storage. scoped_ptr<LanguageList> language_list_; + int delta_x_, delta_y_; + FRIEND_TEST(::WizardControllerTest, SwitchLanguage); DISALLOW_COPY_AND_ASSIGN(LanguageSwitchModel); }; diff --git a/chrome/browser/chromeos/login/network_selection_view.cc b/chrome/browser/chromeos/login/network_selection_view.cc index 891612d..7ef902c 100644 --- a/chrome/browser/chromeos/login/network_selection_view.cc +++ b/chrome/browser/chromeos/login/network_selection_view.cc @@ -40,10 +40,19 @@ const int kWelcomeLabelY = 150; const int kContinueButtonSpacingX = 30; const int kSpacing = 25; const int kHorizontalSpacing = 25; -const int kNetworkComboboxWidth = 250; -const int kNetworkComboboxHeight = 30; -const int kLanguagesMenuWidth = 200; -const int kLanguagesMenuHeight = 30; +const int kSelectionBoxWidthMin = 200; +const int kSelectionBoxHeight = 29; +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; + +// Vertical addition to the menu window to make it appear exactly below +// MenuButton. +const int kMenuButtonVerticalOffset = 3; + const SkColor kWelcomeColor = 0xFF1D6AB1; const int kThrobberFrameMs = 60; @@ -57,6 +66,7 @@ NetworkSelectionView::NetworkSelectionView(NetworkScreenDelegate* delegate) : network_combobox_(NULL), languages_menubutton_(NULL), welcome_label_(NULL), + select_language_label_(NULL), select_network_label_(NULL), connecting_network_label_(NULL), continue_button_(NULL), @@ -86,6 +96,9 @@ void NetworkSelectionView::Init() { welcome_label_->SetColor(kWelcomeColor); welcome_label_->SetFont(welcome_label_font); + select_language_label_ = new views::Label(); + select_language_label_->SetFont(rb.GetFont(ResourceBundle::MediumFont)); + select_network_label_ = new views::Label(); select_network_label_->SetFont(rb.GetFont(ResourceBundle::MediumFont)); @@ -104,8 +117,12 @@ void NetworkSelectionView::Init() { languages_menubutton_ = new views::MenuButton( NULL, std::wstring(), delegate_->language_switch_model(), true); + languages_menubutton_->SetNormalHasBorder(true); + delegate_->language_switch_model()->set_menu_offset( + kMenuButtonHorizontalOffset, kMenuButtonVerticalOffset); AddChildView(welcome_label_); + AddChildView(select_language_label_); AddChildView(select_network_label_); AddChildView(connecting_network_label_); AddChildView(network_combobox_); @@ -120,6 +137,8 @@ void NetworkSelectionView::UpdateLocalizedStrings() { delegate_->language_switch_model()->GetCurrentLocaleName()); welcome_label_->SetText(l10n_util::GetStringF(IDS_NETWORK_SELECTION_TITLE, l10n_util::GetString(IDS_PRODUCT_OS_NAME))); + select_language_label_->SetText( + l10n_util::GetString(IDS_LANGUAGE_SELECTION_SELECT)); select_network_label_->SetText( l10n_util::GetString(IDS_NETWORK_SELECTION_SELECT)); continue_button_->SetLabel( @@ -158,16 +177,42 @@ void NetworkSelectionView::Layout() { y, welcome_label_->GetPreferredSize().width(), welcome_label_->GetPreferredSize().height()); - - int select_network_x = (width() - - select_network_label_->GetPreferredSize().width() - - kNetworkComboboxWidth) / 2; y += welcome_label_->GetPreferredSize().height() + kSpacing; + + // Use menu preffered size to calculate boxes width accordingly. + int box_width = delegate_->language_switch_model()->GetFirstLevelMenuWidth() + + kMenuButtonHorizontalOffset * 2; + 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_model()->SetFirstLevelMenuWidth( + box_width - kMenuButtonHorizontalOffset * 2); + } else if (widest_label + box_width + 2 * kHorizontalSpacing > width()) { + box_width = width() - widest_label - 2 * kHorizontalSpacing; + } + const int labels_x = (width() - widest_label - box_width) / 2; + select_language_label_->SetBounds( + labels_x, + y, + select_language_label_->GetPreferredSize().width(), + select_language_label_->GetPreferredSize().height()); + + const int selection_box_x = labels_x + widest_label + kHorizontalSpacing; + const int label_y_offset = + (kSelectionBoxHeight - + select_language_label_->GetPreferredSize().height()) / 2; + languages_menubutton_->SetBounds(selection_box_x, y - label_y_offset, + box_width, kSelectionBoxHeight); + + y += kSelectionBoxHeight + kSelectionBoxSpacing; select_network_label_->SetBounds( - select_network_x, + labels_x, y, select_network_label_->GetPreferredSize().width(), select_network_label_->GetPreferredSize().height()); + connecting_network_label_->SetBounds( kHorizontalSpacing, y, @@ -178,16 +223,12 @@ void NetworkSelectionView::Layout() { width() / 2 + connecting_network_label_->GetPreferredSize().width() / 2 + kHorizontalSpacing, y + (connecting_network_label_->GetPreferredSize().height() - - throbber_->GetPreferredSize().height()) / 2, + throbber_->GetPreferredSize().height()) / 2, throbber_->GetPreferredSize().width(), throbber_->GetPreferredSize().height()); - select_network_x += - select_network_label_->GetPreferredSize().width() + kHorizontalSpacing; - y += (select_network_label_->GetPreferredSize().height() - - network_combobox_->GetPreferredSize().height()) / 2; - network_combobox_->SetBounds(select_network_x, y, - kNetworkComboboxWidth, kNetworkComboboxHeight); + network_combobox_->SetBounds(selection_box_x, y - label_y_offset, + box_width, kSelectionBoxHeight); y = height() - continue_button_->GetPreferredSize().height() - kSpacing; continue_button_->SetBounds( @@ -197,11 +238,6 @@ void NetworkSelectionView::Layout() { continue_button_->GetPreferredSize().width(), continue_button_->GetPreferredSize().height()); - int x = width() - kLanguagesMenuWidth - kHorizontalSpacing; - y = kSpacing; - languages_menubutton_->SetBounds(x, y, - kLanguagesMenuWidth, kLanguagesMenuHeight); - // Need to refresh combobox layout explicitly. network_combobox_->Layout(); continue_button_->Layout(); @@ -230,6 +266,8 @@ void NetworkSelectionView::ShowConnectingStatus(bool connecting, const string16& network_id) { network_id_ = network_id; UpdateConnectingNetworkLabel(); + select_language_label_->SetVisible(!connecting); + languages_menubutton_->SetVisible(!connecting); select_network_label_->SetVisible(!connecting); network_combobox_->SetVisible(!connecting); connecting_network_label_->SetVisible(connecting); diff --git a/chrome/browser/chromeos/login/network_selection_view.h b/chrome/browser/chromeos/login/network_selection_view.h index c72fd4f..5843e33 100644 --- a/chrome/browser/chromeos/login/network_selection_view.h +++ b/chrome/browser/chromeos/login/network_selection_view.h @@ -72,6 +72,7 @@ class NetworkSelectionView : public views::View { views::Combobox* network_combobox_; views::MenuButton* languages_menubutton_; views::Label* welcome_label_; + views::Label* select_language_label_; views::Label* select_network_label_; views::Label* connecting_network_label_; views::NativeButton* continue_button_; |