diff options
author | davemoore@chromium.org <davemoore@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-01-27 19:47:38 +0000 |
---|---|---|
committer | davemoore@chromium.org <davemoore@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-01-27 19:47:38 +0000 |
commit | 00ad5cd4580cb8184a641d771a113abb0ab7ef4c (patch) | |
tree | 13d80c6a831e0338ec21d094ebed2b87cb725f20 | |
parent | b890f39cbd99e6825dabe86f69a2ae2db3ce3247 (diff) | |
download | chromium_src-00ad5cd4580cb8184a641d771a113abb0ab7ef4c.zip chromium_src-00ad5cd4580cb8184a641d771a113abb0ab7ef4c.tar.gz chromium_src-00ad5cd4580cb8184a641d771a113abb0ab7ef4c.tar.bz2 |
Add version to login
Review URL: http://codereview.chromium.org/549180
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@37292 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/chromeos/login_manager_view.cc | 102 | ||||
-rw-r--r-- | chrome/browser/chromeos/login_manager_view.h | 13 |
2 files changed, 57 insertions, 58 deletions
diff --git a/chrome/browser/chromeos/login_manager_view.cc b/chrome/browser/chromeos/login_manager_view.cc index c547d4b..829d00c 100644 --- a/chrome/browser/chromeos/login_manager_view.cc +++ b/chrome/browser/chromeos/login_manager_view.cc @@ -19,27 +19,22 @@ #include "grit/generated_resources.h" #include "grit/theme_resources.h" #include "views/controls/label.h" -#include "views/focus/accelerator_handler.h" -#include "views/grid_layout.h" #include "views/widget/widget.h" #include "views/window/non_client_view.h" #include "views/window/window.h" #include "views/window/window_gtk.h" using views::Background; -using views::ColumnSet; -using views::GridLayout; using views::Label; using views::Textfield; using views::View; using views::Widget; -using views::Accelerator; -const int kPanelY = 0; const int kUsernameY = 386; const int kPanelSpacing = 36; +const int kVersionPad = 4; const int kTextfieldWidth = 286; -const int kBottomPadding = 112; +const SkColor kVersionColor = 0xFF7691DA; namespace browser { @@ -116,21 +111,29 @@ LoginManagerView::~LoginManagerView() { void LoginManagerView::Init() { username_field_ = new views::Textfield; + username_field_->RemoveBorder(); password_field_ = new views::Textfield(views::Textfield::STYLE_PASSWORD); + password_field_->RemoveBorder(); + os_version_label_ = new views::Label(); + os_version_label_->SetColor(kVersionColor); + os_version_label_->SetHorizontalAlignment(views::Label::ALIGN_LEFT); // Creates the main window BuildWindow(); // Controller to handle events from textfields username_field_->SetController(this); password_field_->SetController(this); + if (chromeos::LoginLibrary::EnsureLoaded()) { + loader_.GetVersion( + &consumer_, NewCallback(this, &LoginManagerView::OnOSVersion)); + } } gfx::Size LoginManagerView::GetPreferredSize() { return dialog_dimensions_; } - void LoginManagerView::BuildWindow() { ResourceBundle& rb = ResourceBundle::GetSharedInstance(); panel_pixbuf_ = rb.GetPixbufNamed(IDR_LOGIN_PANEL); @@ -146,58 +149,35 @@ void LoginManagerView::BuildWindow() { // ---------------------- Set up root View ------------------------------ set_background(new views::ImageBackground(background_pixbuf_)); - // Set layout - GridLayout* layout = new GridLayout(this); - SetLayoutManager(layout); - - ColumnSet* column_set = layout->AddColumnSet(0); - column_set->AddPaddingColumn(1, 0); - column_set->AddColumn(GridLayout::CENTER, GridLayout::FILL, 0, - GridLayout::FIXED, panel_width, panel_width); - column_set->AddPaddingColumn(1, 0); - - // Row is resized with window (panel page) - layout->AddPaddingRow(0, kPanelY); - - layout->StartRow(1, 0); - { - // Create login_prompt view - View* login_prompt = new View(); - // TODO(cmasone): determine if it's more performant to do the background - // by creating an BackgroundPainter directly, like so: - // Background::CreateBackgroundPainter(true, - // Painter::CreateImagePainter(image, ...)) - login_prompt->set_background(new views::ImageBackground(panel_pixbuf_)); - - // Set layout - GridLayout* prompt_layout = new GridLayout(login_prompt); - login_prompt->SetLayoutManager(prompt_layout); - ColumnSet* prompt_column_set = prompt_layout->AddColumnSet(0); - prompt_column_set->AddPaddingColumn(1, 0); - prompt_column_set->AddColumn(GridLayout::FILL, GridLayout::FILL, 0, - GridLayout::FIXED, - kTextfieldWidth, kTextfieldWidth); - prompt_column_set->AddPaddingColumn(1, 0); - - prompt_layout->AddPaddingRow(0, kUsernameY); - prompt_layout->StartRow(1, 0); - prompt_layout->AddView(username_field_); - prompt_layout->AddPaddingRow(0, kPanelSpacing); - prompt_layout->StartRow(1, 0); - prompt_layout->AddView(password_field_); - prompt_layout->AddPaddingRow(0, kBottomPadding); - - if (!chromeos::LoginLibrary::EnsureLoaded()) { - username_field_->SetText( - l10n_util::GetStringUTF16(IDS_LOGIN_DISABLED_NO_LIBCROS)); - username_field_->SetReadOnly(true); - password_field_->SetReadOnly(true); - } - layout->AddView(login_prompt, 1, 1, GridLayout::CENTER, GridLayout::CENTER, - panel_width, panel_height); + View* login_prompt = new View(); + login_prompt->set_background(new views::ImageBackground(panel_pixbuf_)); + login_prompt->SetBounds(0, 0, panel_width, panel_height); + + int x = (panel_width - kTextfieldWidth) / 2; + int y = kUsernameY; + username_field_->SetBounds(x, y, kTextfieldWidth, kPanelSpacing); + y += 2 * kPanelSpacing; + password_field_->SetBounds(x, y, kTextfieldWidth, kPanelSpacing); + y += 2 * kPanelSpacing; + os_version_label_->SetBounds( + x, + y, + panel_width - (x + kVersionPad), + os_version_label_->GetPreferredSize().height()); + + login_prompt->AddChildView(username_field_); + login_prompt->AddChildView(password_field_); + login_prompt->AddChildView(os_version_label_); + AddChildView(login_prompt); + + if (!chromeos::LoginLibrary::EnsureLoaded()) { + username_field_->SetText( + l10n_util::GetStringUTF16(IDS_LOGIN_DISABLED_NO_LIBCROS)); + username_field_->SetReadOnly(true); + password_field_->SetReadOnly(true); } - layout->AddPaddingRow(1, 0); + return; } views::View* LoginManagerView::GetContentsView() { @@ -268,3 +248,9 @@ bool LoginManagerView::HandleKeystroke(views::Textfield* s, // Return false so that processing does not end return false; } + +void LoginManagerView::OnOSVersion( + chromeos::VersionLoader::Handle handle, + std::string version) { + os_version_label_->SetText(ASCIIToWide(version)); +} diff --git a/chrome/browser/chromeos/login_manager_view.h b/chrome/browser/chromeos/login_manager_view.h index 49ebbbe..dc64d45 100644 --- a/chrome/browser/chromeos/login_manager_view.h +++ b/chrome/browser/chromeos/login_manager_view.h @@ -4,7 +4,9 @@ #include <string> #include "chrome/browser/chromeos/ipc_message.h" +#include "chrome/browser/chromeos/version_loader.h" #include "views/accelerator.h" +#include "views/controls/label.h" #include "views/controls/textfield/textfield.h" #include "views/view.h" #include "views/widget/widget_gtk.h" @@ -44,6 +46,7 @@ class LoginManagerView : public views::View, private: views::Textfield* username_field_; views::Textfield* password_field_; + views::Label* os_version_label_; // The dialog dimensions. gfx::Size dialog_dimensions_; @@ -51,6 +54,12 @@ class LoginManagerView : public views::View, GdkPixbuf* background_pixbuf_; GdkPixbuf* panel_pixbuf_; + // Handles asynchronously loading the version. + chromeos::VersionLoader loader_; + + // Used to request the version. + CancelableRequestConsumer consumer_; + // Helper functions to modularize class void BuildWindow(); @@ -71,6 +80,10 @@ class LoginManagerView : public views::View, // that'd be A Good Thing (tm). void SetupSession(const std::string& username); + // Callback from chromeos::VersionLoader giving the version. + void OnOSVersion(chromeos::VersionLoader::Handle handle, + std::string version); + DISALLOW_COPY_AND_ASSIGN(LoginManagerView); }; |